DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00275_AAD_S_000016_PKG

Source


1 PACKAGE BODY XLA_00275_AAD_S_000016_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_00275_AAD_S_000016_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : China Projects Standard Accounting                     |
14 |      Code    : JA_CN_PA_DEFAULT_ACCRUAL                               |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 06-11-2008 at 02:11:02 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_00275_AAD_S_000016_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_00275_AAD_S_000016_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_00275_AAD_S_000016_PKG.ValidateLookupMeaning');
204        --
205 END ValidateLookupMeaning;
206 --
207 --
208 
209 --
210 ---------------------------------------
211 --
212 -- PUBLIC FUNCTION
213 --         GetMeaning
214 --
215 ---------------------------------------
216 FUNCTION GetMeaning (
217   p_flex_value_set_id               IN INTEGER
218 , p_flex_value                      IN VARCHAR2
219 , p_source_code                     IN VARCHAR2
220 , p_source_type_code                IN VARCHAR2
221 , p_source_application_id           IN INTEGER
222 )
223 RETURN VARCHAR2
224 IS
225 l_meaning_meaning                     VARCHAR2(4000);
226 l_array_meaning                        xla_ae_sources_pkg.t_array_meaning;
227 l_Idx                                 INTEGER;
228 l_log_module                          VARCHAR2(240);
229 --
230 BEGIN
231 IF g_log_enabled THEN
232       l_log_module := C_DEFAULT_MODULE||'.GetMeaning';
233 END IF;
234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
235       trace
236          (p_msg      => 'BEGIN of GetMeaning'||
237                         'p_flex_value_set_id = '||p_flex_value_set_id||
238                         'p_flex_value = '||p_flex_value
239          ,p_level    => C_LEVEL_PROCEDURE
240          ,p_module   => l_log_module);
241 END IF;
242 --
243 l_array_meaning := xla_ae_sources_pkg.g_array_meaning;
244 --
245 IF p_flex_value IS NULL THEN
246 
247   l_meaning_meaning := NULL;
248 
249 ELSE
250 
251  CASE p_flex_value_set_id
252       
253    WHEN 103371 THEN
254 
255     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256 
257       trace
258          (p_msg      => '-> CALL  DBMS_UTILITY.get_hash_value'
259          ,p_level    => C_LEVEL_PROCEDURE
260          ,p_module   => l_log_module);
261 
262     END IF;
263 
264     l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
265 
266     IF l_array_meaning.EXISTS(103371) AND
267        l_array_meaning(103371).array_flex_value.EXISTS(l_Idx) AND
268        l_array_meaning(103371).array_flex_value(l_Idx)   = p_flex_value        THEN
269 
270        l_meaning_meaning    := l_array_meaning(103371).array_meaning(l_Idx);
271 
272     ELSE
273 
274      SELECT MEANING
275      INTO   l_meaning_meaning
276      FROM   FND_LOOKUPS
277      WHERE  LOOKUP_CODE = p_flex_value      AND  LOOKUP_TYPE = 'YES_NO'
278   ORDER BY MEANING     ;
279 
280      l_array_meaning(103371).array_flex_value(l_Idx)       := p_flex_value;
281      l_array_meaning(103371).array_meaning(l_Idx)          := l_meaning_meaning;
282 
283     END IF;
284 
285    WHEN 103371 THEN
286 
287     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
288 
289       trace
290          (p_msg      => '-> CALL  DBMS_UTILITY.get_hash_value'
291          ,p_level    => C_LEVEL_PROCEDURE
292          ,p_module   => l_log_module);
293 
294     END IF;
295 
296     l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
297 
298     IF l_array_meaning.EXISTS(103371) AND
299        l_array_meaning(103371).array_flex_value.EXISTS(l_Idx) AND
300        l_array_meaning(103371).array_flex_value(l_Idx)   = p_flex_value        THEN
301 
305 
302        l_meaning_meaning    := l_array_meaning(103371).array_meaning(l_Idx);
303 
304     ELSE
306      SELECT MEANING
307      INTO   l_meaning_meaning
308      FROM   FND_LOOKUPS
309      WHERE  LOOKUP_CODE = p_flex_value      AND  LOOKUP_TYPE = 'YES_NO'
310   ORDER BY MEANING     ;
311 
312      l_array_meaning(103371).array_flex_value(l_Idx)       := p_flex_value;
313      l_array_meaning(103371).array_meaning(l_Idx)          := l_meaning_meaning;
314 
315     END IF;
316 
317    WHEN 103371 THEN
318 
319     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
320 
321       trace
322          (p_msg      => '-> CALL  DBMS_UTILITY.get_hash_value'
323          ,p_level    => C_LEVEL_PROCEDURE
324          ,p_module   => l_log_module);
325 
326     END IF;
327 
328     l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
329 
330     IF l_array_meaning.EXISTS(103371) AND
331        l_array_meaning(103371).array_flex_value.EXISTS(l_Idx) AND
332        l_array_meaning(103371).array_flex_value(l_Idx)   = p_flex_value        THEN
333 
334        l_meaning_meaning    := l_array_meaning(103371).array_meaning(l_Idx);
335 
336     ELSE
337 
338      SELECT MEANING
339      INTO   l_meaning_meaning
340      FROM   FND_LOOKUPS
341      WHERE  LOOKUP_CODE = p_flex_value      AND  LOOKUP_TYPE = 'YES_NO'
342   ORDER BY MEANING     ;
343 
344      l_array_meaning(103371).array_flex_value(l_Idx)       := p_flex_value;
345      l_array_meaning(103371).array_meaning(l_Idx)          := l_meaning_meaning;
346 
347     END IF;
348 
349  ELSE
350          l_meaning_meaning  := NULL;
351          xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
352          xla_accounting_err_pkg.build_message
353                         (p_appli_s_name            => 'XLA'
354                         ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
355                         ,p_token_1                 => 'VALUE_SET_NAME'
356                         ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
357                         ,p_token_2                 => 'FLEX_VALUE'
358                         ,p_value_2                 =>  p_flex_value
359                         ,p_token_3                 => 'SOURCE_NAME'
360                         ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
361                                                      p_source_code
362                                                    , p_source_type_code
363                                                    , p_source_application_id
364                                                      )
365                         ,p_token_4                 => 'PRODUCT_NAME'
366                         ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
367                         ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
368                         ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
369                         ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
370         );
371       IF (C_LEVEL_ERROR >= g_log_level) THEN
372                          trace
373                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
374                             ,p_level    => C_LEVEL_ERROR
375                             ,p_module   => l_log_module);
376      END IF;
377  END CASE;
378 --
379 END IF;
380 --
381 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
382 
383       trace
384          (p_msg      => 'return value. meaning = '||l_meaning_meaning
385          ,p_level    => C_LEVEL_PROCEDURE
386          ,p_module   => l_log_module);
387 
388       trace
389          (p_msg      => 'END of GetMeaning'
390          ,p_level    => C_LEVEL_PROCEDURE
391          ,p_module   => l_log_module);
392 END IF;
393 --
394 xla_ae_sources_pkg.g_array_meaning := l_array_meaning ;
395 --
396 RETURN l_meaning_meaning ;
397 --
398 EXCEPTION
399 WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
400  --
401       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
402       xla_accounting_err_pkg.build_message
403                 (p_appli_s_name            => 'XLA'
404                 ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
405                 ,p_token_1                 => 'VALUE_SET_NAME'
406                 ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
407                 ,p_token_2                 => 'FLEX_VALUE'
408                 ,p_value_2                 =>  p_flex_value
409                 ,p_token_3                 => 'SOURCE_NAME'
410                 ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
411                                                      p_source_code
412                                                    , p_source_type_code
413                                                    , p_source_application_id
414                                                      )
415                 ,p_token_4                 => 'PRODUCT_NAME'
416                 ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
417                 ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
418                 ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
419                 ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
420         );
421 
422      IF (C_LEVEL_ERROR >= g_log_level) THEN
423                          trace
424                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
425                             ,p_level    => C_LEVEL_ERROR
429      RETURN NULL;
426                             ,p_module   => l_log_module);
427      END IF;
428 
430   WHEN xla_exceptions_pkg.application_exception THEN
431       RAISE;
432   WHEN OTHERS THEN
433        xla_exceptions_pkg.raise_message
434            (p_location => 'XLA_00275_AAD_S_000016_PKG.GetMeaning');
435 END GetMeaning;
436 --
437 
438 ---------------------------------------
439 --
440 -- PRIVATE FUNCTION
441 --         AcctDerRule_1
442 --
443 ---------------------------------------
444 FUNCTION AcctDerRule_1 (
445   p_application_id              IN NUMBER
446 , p_ae_header_id                IN NUMBER
447 , p_side                        IN VARCHAR2 
448 --Event Revenue CCID
449  , p_source_1            IN NUMBER
450 , x_transaction_coa_id         OUT NOCOPY NUMBER
451 , x_accounting_coa_id          OUT NOCOPY NUMBER
452 , x_value_type_code            OUT NOCOPY VARCHAR2
453 )
454 RETURN NUMBER
455 IS
456 l_component_type       VARCHAR2(80)  ;
457 l_component_code       VARCHAR2(30)  ;
458 l_component_type_code  VARCHAR2(1)   ;
459 l_component_appl_id    INTEGER       ;
460 l_amb_context_code     VARCHAR2(30)  ;
461 l_log_module           VARCHAR2(240) ;
462 l_output_value         NUMBER        ;
463 BEGIN
464 IF g_log_enabled THEN
465       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
466 END IF;
467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
468       trace
469          (p_msg      => 'BEGIN of AcctDerRule_1'
470          ,p_level    => C_LEVEL_PROCEDURE
471          ,p_module   => l_log_module);
472 END IF;
473 --
474 l_component_type         := 'AMB_ADR';
475 l_component_code         := 'EVENT_REVENUE_RULE';
476 l_component_type_code    := 'S';
477 l_component_appl_id      :=  275;
478 l_amb_context_code       := 'DEFAULT';
479 x_transaction_coa_id     :=  null;
480 x_accounting_coa_id      :=  null;
481 --
482 
483  --
484   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
485       trace
486          (p_msg      => 'END of AcctDerRule_1'
487          ,p_level    => C_LEVEL_PROCEDURE
488          ,p_module   => l_log_module);
489   END IF;
490   x_value_type_code := 'S';
491   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
492   RETURN l_output_value;
493 
494 --
495 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
496       trace
497          (p_msg      => 'END of AcctDerRule_1(invalid)'
498          ,p_level    => C_LEVEL_PROCEDURE
499          ,p_module   => l_log_module);
500 END IF;
501 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
502 x_value_type_code := null;
503 l_output_value    := null;
504 xla_accounting_err_pkg.build_message
505                  (p_appli_s_name            => 'XLA'
506                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
507                  ,p_token_1                 => 'COMPONENT_NAME'
508                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
509                                                             l_component_type
510                                                           , l_component_code
511                                                           , l_component_type_code
512                                                           , l_component_appl_id
513                                                           , l_amb_context_code
514                                                           )
515                  ,p_token_2                 => 'OWNER'
516                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
517                                                         'XLA_OWNER_TYPE'
518                                                         ,l_component_type_code
519                                                         )
520                  ,p_token_3                 => 'PAD_NAME'
521                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
522                  ,p_token_4                 => 'PAD_OWNER'
523                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
524                                                         'XLA_OWNER_TYPE'
525                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
526                                                         )
527                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
528                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
529                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
530                  ,p_ae_header_id            => NULL
531 );
532 RETURN l_output_value;
533 EXCEPTION
534   WHEN xla_exceptions_pkg.application_exception THEN
535       RAISE;
536   WHEN OTHERS THEN
537        xla_exceptions_pkg.raise_message
538            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_1');
539 END AcctDerRule_1;
540 --
541 
542 ---------------------------------------
543 --
544 -- PRIVATE FUNCTION
545 --         AcctDerRule_2
546 --
547 ---------------------------------------
548 FUNCTION AcctDerRule_2 (
549   p_application_id              IN NUMBER
550 , p_ae_header_id                IN NUMBER
551 , p_side                        IN VARCHAR2 
552 --Budget Code Combination ID
553  , p_source_2            IN NUMBER
554 , x_transaction_coa_id         OUT NOCOPY NUMBER
555 , x_accounting_coa_id          OUT NOCOPY NUMBER
556 , x_value_type_code            OUT NOCOPY VARCHAR2
557 )
558 RETURN NUMBER
559 IS
560 l_component_type       VARCHAR2(80)  ;
561 l_component_code       VARCHAR2(30)  ;
562 l_component_type_code  VARCHAR2(1)   ;
563 l_component_appl_id    INTEGER       ;
567 BEGIN
564 l_amb_context_code     VARCHAR2(30)  ;
565 l_log_module           VARCHAR2(240) ;
566 l_output_value         NUMBER        ;
568 IF g_log_enabled THEN
569       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
570 END IF;
571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
572       trace
573          (p_msg      => 'BEGIN of AcctDerRule_2'
574          ,p_level    => C_LEVEL_PROCEDURE
575          ,p_module   => l_log_module);
576 END IF;
577 --
578 l_component_type         := 'AMB_ADR';
579 l_component_code         := 'PA_BUDGET_ACCT_RULE';
580 l_component_type_code    := 'S';
581 l_component_appl_id      :=  275;
582 l_amb_context_code       := 'DEFAULT';
583 x_transaction_coa_id     :=  null;
584 x_accounting_coa_id      :=  null;
585 --
586 
587  --
588   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
589       trace
590          (p_msg      => 'END of AcctDerRule_2'
591          ,p_level    => C_LEVEL_PROCEDURE
592          ,p_module   => l_log_module);
593   END IF;
594   x_value_type_code := 'S';
595   l_output_value    := TO_NUMBER(p_source_2);
596   RETURN l_output_value;
597 
598 --
599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
600       trace
601          (p_msg      => 'END of AcctDerRule_2(invalid)'
602          ,p_level    => C_LEVEL_PROCEDURE
603          ,p_module   => l_log_module);
604 END IF;
605 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
606 x_value_type_code := null;
607 l_output_value    := null;
608 xla_accounting_err_pkg.build_message
609                  (p_appli_s_name            => 'XLA'
610                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
611                  ,p_token_1                 => 'COMPONENT_NAME'
612                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
613                                                             l_component_type
614                                                           , l_component_code
615                                                           , l_component_type_code
616                                                           , l_component_appl_id
617                                                           , l_amb_context_code
618                                                           )
619                  ,p_token_2                 => 'OWNER'
620                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
621                                                         'XLA_OWNER_TYPE'
622                                                         ,l_component_type_code
623                                                         )
624                  ,p_token_3                 => 'PAD_NAME'
625                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
626                  ,p_token_4                 => 'PAD_OWNER'
627                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
628                                                         'XLA_OWNER_TYPE'
629                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
630                                                         )
631                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
632                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
633                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
634                  ,p_ae_header_id            => NULL
635 );
636 RETURN l_output_value;
637 EXCEPTION
638   WHEN xla_exceptions_pkg.application_exception THEN
639       RAISE;
640   WHEN OTHERS THEN
641        xla_exceptions_pkg.raise_message
642            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_2');
643 END AcctDerRule_2;
644 --
645 
646 ---------------------------------------
647 --
648 -- PRIVATE FUNCTION
649 --         AcctDerRule_3
650 --
651 ---------------------------------------
652 FUNCTION AcctDerRule_3 (
653   p_application_id              IN NUMBER
654 , p_ae_header_id                IN NUMBER
655 , p_side                        IN VARCHAR2 
656 --Cost CCID
657  , p_source_3            IN NUMBER
658 --Allow Account Override Flag
659  , p_source_4            IN VARCHAR2
660 --Adjustment Cost CCID
661  , p_source_5            IN NUMBER
662 , x_transaction_coa_id         OUT NOCOPY NUMBER
663 , x_accounting_coa_id          OUT NOCOPY NUMBER
664 , x_value_type_code            OUT NOCOPY VARCHAR2
665 )
666 RETURN NUMBER
667 IS
668 l_component_type       VARCHAR2(80)  ;
669 l_component_code       VARCHAR2(30)  ;
670 l_component_type_code  VARCHAR2(1)   ;
671 l_component_appl_id    INTEGER       ;
672 l_amb_context_code     VARCHAR2(30)  ;
673 l_log_module           VARCHAR2(240) ;
674 l_output_value         NUMBER        ;
675 BEGIN
676 IF g_log_enabled THEN
677       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
678 END IF;
679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
680       trace
681          (p_msg      => 'BEGIN of AcctDerRule_3'
682          ,p_level    => C_LEVEL_PROCEDURE
683          ,p_module   => l_log_module);
684 END IF;
685 --
686 l_component_type         := 'AMB_ADR';
687 l_component_code         := 'PA_COST_ACCT_RULE';
688 l_component_type_code    := 'S';
689 l_component_appl_id      :=  275;
690 l_amb_context_code       := 'DEFAULT';
691 x_transaction_coa_id     :=  null;
692 x_accounting_coa_id      :=  null;
693 --
694 
695  IF NVL(p_source_4,'
696 ') =  'Y'
697  THEN 
698  --
699   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
700       trace
701          (p_msg      => 'END of AcctDerRule_3'
702          ,p_level    => C_LEVEL_PROCEDURE
706   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_3));
703          ,p_module   => l_log_module);
704   END IF;
705   x_value_type_code := 'S';
707   RETURN l_output_value;
708 
709  ELSIF NVL(p_source_4,'
710 ') =  'N'
711  THEN 
712  --
713   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
714       trace
715          (p_msg      => 'END of AcctDerRule_3'
716          ,p_level    => C_LEVEL_PROCEDURE
717          ,p_module   => l_log_module);
718   END IF;
719   x_value_type_code := 'S';
720   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_5));
721   RETURN l_output_value;
722 
723  END IF;
724 --
725 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
726       trace
727          (p_msg      => 'END of AcctDerRule_3(invalid)'
728          ,p_level    => C_LEVEL_PROCEDURE
729          ,p_module   => l_log_module);
730 END IF;
731 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
732 x_value_type_code := null;
733 l_output_value    := null;
734 xla_accounting_err_pkg.build_message
735                  (p_appli_s_name            => 'XLA'
736                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
737                  ,p_token_1                 => 'COMPONENT_NAME'
738                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
739                                                             l_component_type
740                                                           , l_component_code
741                                                           , l_component_type_code
742                                                           , l_component_appl_id
743                                                           , l_amb_context_code
744                                                           )
745                  ,p_token_2                 => 'OWNER'
746                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
747                                                         'XLA_OWNER_TYPE'
748                                                         ,l_component_type_code
749                                                         )
750                  ,p_token_3                 => 'PAD_NAME'
751                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
752                  ,p_token_4                 => 'PAD_OWNER'
753                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
754                                                         'XLA_OWNER_TYPE'
755                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
756                                                         )
757                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
758                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
759                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
760                  ,p_ae_header_id            => NULL
761 );
762 RETURN l_output_value;
763 EXCEPTION
764   WHEN xla_exceptions_pkg.application_exception THEN
765       RAISE;
766   WHEN OTHERS THEN
767        xla_exceptions_pkg.raise_message
768            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_3');
769 END AcctDerRule_3;
770 --
771 
772 ---------------------------------------
773 --
774 -- PRIVATE FUNCTION
775 --         AcctDerRule_4
776 --
777 ---------------------------------------
778 FUNCTION AcctDerRule_4 (
779   p_application_id              IN NUMBER
780 , p_ae_header_id                IN NUMBER
781 , p_side                        IN VARCHAR2 
782 --Allow Account Override Flag
783  , p_source_4            IN VARCHAR2
784 --Adjustment Cost CCID
785  , p_source_5            IN NUMBER
786 , x_transaction_coa_id         OUT NOCOPY NUMBER
787 , x_accounting_coa_id          OUT NOCOPY NUMBER
788 , x_value_type_code            OUT NOCOPY VARCHAR2
789 )
790 RETURN NUMBER
791 IS
792 l_component_type       VARCHAR2(80)  ;
793 l_component_code       VARCHAR2(30)  ;
794 l_component_type_code  VARCHAR2(1)   ;
795 l_component_appl_id    INTEGER       ;
796 l_amb_context_code     VARCHAR2(30)  ;
797 l_log_module           VARCHAR2(240) ;
798 l_output_value         NUMBER        ;
799 BEGIN
800 IF g_log_enabled THEN
801       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
802 END IF;
803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
804       trace
805          (p_msg      => 'BEGIN of AcctDerRule_4'
806          ,p_level    => C_LEVEL_PROCEDURE
807          ,p_module   => l_log_module);
808 END IF;
809 --
810 l_component_type         := 'AMB_ADR';
811 l_component_code         := 'PA_COST_ACC_ADJ_RULE';
812 l_component_type_code    := 'S';
813 l_component_appl_id      :=  275;
814 l_amb_context_code       := 'DEFAULT';
815 x_transaction_coa_id     :=  null;
816 x_accounting_coa_id      :=  null;
817 --
818 
819  IF NVL(p_source_4,'
820 ') =  'N'
821  THEN 
822  --
823   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
824       trace
825          (p_msg      => 'END of AcctDerRule_4'
826          ,p_level    => C_LEVEL_PROCEDURE
827          ,p_module   => l_log_module);
828   END IF;
829   x_value_type_code := 'S';
830   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_5));
831   RETURN l_output_value;
832 
833  END IF;
834 --
835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
836       trace
837          (p_msg      => 'END of AcctDerRule_4(invalid)'
838          ,p_level    => C_LEVEL_PROCEDURE
839          ,p_module   => l_log_module);
840 END IF;
841 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
845                  (p_appli_s_name            => 'XLA'
842 x_value_type_code := null;
843 l_output_value    := null;
844 xla_accounting_err_pkg.build_message
846                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
847                  ,p_token_1                 => 'COMPONENT_NAME'
848                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
849                                                             l_component_type
850                                                           , l_component_code
851                                                           , l_component_type_code
852                                                           , l_component_appl_id
853                                                           , l_amb_context_code
854                                                           )
855                  ,p_token_2                 => 'OWNER'
856                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
857                                                         'XLA_OWNER_TYPE'
858                                                         ,l_component_type_code
859                                                         )
860                  ,p_token_3                 => 'PAD_NAME'
861                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
862                  ,p_token_4                 => 'PAD_OWNER'
863                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
864                                                         'XLA_OWNER_TYPE'
865                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
866                                                         )
867                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
868                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
869                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
870                  ,p_ae_header_id            => NULL
871 );
872 RETURN l_output_value;
873 EXCEPTION
874   WHEN xla_exceptions_pkg.application_exception THEN
875       RAISE;
876   WHEN OTHERS THEN
877        xla_exceptions_pkg.raise_message
878            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_4');
879 END AcctDerRule_4;
880 --
881 
882 ---------------------------------------
883 --
884 -- PRIVATE FUNCTION
885 --         AcctDerRule_5
886 --
887 ---------------------------------------
888 FUNCTION AcctDerRule_5 (
889   p_application_id              IN NUMBER
890 , p_ae_header_id                IN NUMBER
891 , p_side                        IN VARCHAR2 
892 --Allow Account Override Flag
893  , p_source_4            IN VARCHAR2
894 --Cost Clearing CCID
895  , p_source_6            IN NUMBER
896 --Adjustment Cost Clearing CCID
897  , p_source_7            IN NUMBER
898 , x_transaction_coa_id         OUT NOCOPY NUMBER
899 , x_accounting_coa_id          OUT NOCOPY NUMBER
900 , x_value_type_code            OUT NOCOPY VARCHAR2
901 )
902 RETURN NUMBER
903 IS
904 l_component_type       VARCHAR2(80)  ;
905 l_component_code       VARCHAR2(30)  ;
906 l_component_type_code  VARCHAR2(1)   ;
907 l_component_appl_id    INTEGER       ;
908 l_amb_context_code     VARCHAR2(30)  ;
909 l_log_module           VARCHAR2(240) ;
910 l_output_value         NUMBER        ;
911 BEGIN
912 IF g_log_enabled THEN
913       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
914 END IF;
915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
916       trace
917          (p_msg      => 'BEGIN of AcctDerRule_5'
918          ,p_level    => C_LEVEL_PROCEDURE
919          ,p_module   => l_log_module);
920 END IF;
921 --
922 l_component_type         := 'AMB_ADR';
923 l_component_code         := 'PA_COST_CLEARING_ACCT_RULE';
924 l_component_type_code    := 'S';
925 l_component_appl_id      :=  275;
926 l_amb_context_code       := 'DEFAULT';
927 x_transaction_coa_id     :=  null;
928 x_accounting_coa_id      :=  null;
929 --
930 
931  IF NVL(p_source_4,'
932 ') =  'Y'
933  THEN 
934  --
935   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
936       trace
937          (p_msg      => 'END of AcctDerRule_5'
938          ,p_level    => C_LEVEL_PROCEDURE
939          ,p_module   => l_log_module);
940   END IF;
941   x_value_type_code := 'S';
942   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_6));
943   RETURN l_output_value;
944 
945  ELSIF NVL(p_source_4,'
946 ') =  'N'
947  THEN 
948  --
949   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
950       trace
951          (p_msg      => 'END of AcctDerRule_5'
952          ,p_level    => C_LEVEL_PROCEDURE
953          ,p_module   => l_log_module);
954   END IF;
955   x_value_type_code := 'S';
956   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_7));
957   RETURN l_output_value;
958 
959  END IF;
960 --
961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
962       trace
963          (p_msg      => 'END of AcctDerRule_5(invalid)'
964          ,p_level    => C_LEVEL_PROCEDURE
965          ,p_module   => l_log_module);
966 END IF;
967 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
968 x_value_type_code := null;
969 l_output_value    := null;
970 xla_accounting_err_pkg.build_message
971                  (p_appli_s_name            => 'XLA'
972                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
973                  ,p_token_1                 => 'COMPONENT_NAME'
974                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
975                                                             l_component_type
979                                                           , l_amb_context_code
976                                                           , l_component_code
977                                                           , l_component_type_code
978                                                           , l_component_appl_id
980                                                           )
981                  ,p_token_2                 => 'OWNER'
982                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
983                                                         'XLA_OWNER_TYPE'
984                                                         ,l_component_type_code
985                                                         )
986                  ,p_token_3                 => 'PAD_NAME'
987                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
988                  ,p_token_4                 => 'PAD_OWNER'
989                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
990                                                         'XLA_OWNER_TYPE'
991                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
992                                                         )
993                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
994                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
995                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
996                  ,p_ae_header_id            => NULL
997 );
998 RETURN l_output_value;
999 EXCEPTION
1000   WHEN xla_exceptions_pkg.application_exception THEN
1001       RAISE;
1002   WHEN OTHERS THEN
1003        xla_exceptions_pkg.raise_message
1004            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_5');
1005 END AcctDerRule_5;
1006 --
1007 
1008 ---------------------------------------
1009 --
1010 -- PRIVATE FUNCTION
1011 --         AcctDerRule_6
1012 --
1013 ---------------------------------------
1014 FUNCTION AcctDerRule_6 (
1015   p_application_id              IN NUMBER
1016 , p_ae_header_id                IN NUMBER
1017 , p_side                        IN VARCHAR2 
1018 --Allow Account Override Flag
1019  , p_source_4            IN VARCHAR2
1020 --Adjustment Cost Clearing CCID
1021  , p_source_7            IN NUMBER
1022 , x_transaction_coa_id         OUT NOCOPY NUMBER
1023 , x_accounting_coa_id          OUT NOCOPY NUMBER
1024 , x_value_type_code            OUT NOCOPY VARCHAR2
1025 )
1026 RETURN NUMBER
1027 IS
1028 l_component_type       VARCHAR2(80)  ;
1029 l_component_code       VARCHAR2(30)  ;
1030 l_component_type_code  VARCHAR2(1)   ;
1031 l_component_appl_id    INTEGER       ;
1032 l_amb_context_code     VARCHAR2(30)  ;
1033 l_log_module           VARCHAR2(240) ;
1034 l_output_value         NUMBER        ;
1035 BEGIN
1036 IF g_log_enabled THEN
1037       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
1038 END IF;
1039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1040       trace
1041          (p_msg      => 'BEGIN of AcctDerRule_6'
1042          ,p_level    => C_LEVEL_PROCEDURE
1043          ,p_module   => l_log_module);
1044 END IF;
1045 --
1046 l_component_type         := 'AMB_ADR';
1047 l_component_code         := 'PA_COST_CLEARING_ADJ_ACC';
1048 l_component_type_code    := 'S';
1049 l_component_appl_id      :=  275;
1050 l_amb_context_code       := 'DEFAULT';
1051 x_transaction_coa_id     :=  null;
1052 x_accounting_coa_id      :=  null;
1053 --
1054 
1055  IF NVL(p_source_4,'
1056 ') =  'N'
1057  THEN 
1058  --
1059   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1060       trace
1061          (p_msg      => 'END of AcctDerRule_6'
1062          ,p_level    => C_LEVEL_PROCEDURE
1063          ,p_module   => l_log_module);
1064   END IF;
1065   x_value_type_code := 'S';
1066   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_7));
1067   RETURN l_output_value;
1068 
1069  END IF;
1070 --
1071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1072       trace
1073          (p_msg      => 'END of AcctDerRule_6(invalid)'
1074          ,p_level    => C_LEVEL_PROCEDURE
1075          ,p_module   => l_log_module);
1076 END IF;
1077 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1078 x_value_type_code := null;
1079 l_output_value    := null;
1080 xla_accounting_err_pkg.build_message
1081                  (p_appli_s_name            => 'XLA'
1082                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1083                  ,p_token_1                 => 'COMPONENT_NAME'
1084                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1085                                                             l_component_type
1086                                                           , l_component_code
1087                                                           , l_component_type_code
1088                                                           , l_component_appl_id
1089                                                           , l_amb_context_code
1090                                                           )
1091                  ,p_token_2                 => 'OWNER'
1092                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1093                                                         'XLA_OWNER_TYPE'
1094                                                         ,l_component_type_code
1095                                                         )
1096                  ,p_token_3                 => 'PAD_NAME'
1097                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1098                  ,p_token_4                 => 'PAD_OWNER'
1099                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1103                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1100                                                         'XLA_OWNER_TYPE'
1101                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1102                                                         )
1104                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1105                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1106                  ,p_ae_header_id            => NULL
1107 );
1108 RETURN l_output_value;
1109 EXCEPTION
1110   WHEN xla_exceptions_pkg.application_exception THEN
1111       RAISE;
1112   WHEN OTHERS THEN
1113        xla_exceptions_pkg.raise_message
1114            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_6');
1115 END AcctDerRule_6;
1116 --
1117 
1118 ---------------------------------------
1119 --
1120 -- PRIVATE FUNCTION
1121 --         AcctDerRule_7
1122 --
1123 ---------------------------------------
1124 FUNCTION AcctDerRule_7 (
1125   p_application_id              IN NUMBER
1126 , p_ae_header_id                IN NUMBER
1127 , p_side                        IN VARCHAR2 
1128 --Allow Account Override Flag
1129  , p_source_4            IN VARCHAR2
1130 --Provider Cost/ Revenue CCID
1131  , p_source_8            IN NUMBER
1132 --Adjustment Provider Cost/ Revenue CCID
1133  , p_source_9            IN NUMBER
1134 , x_transaction_coa_id         OUT NOCOPY NUMBER
1135 , x_accounting_coa_id          OUT NOCOPY NUMBER
1136 , x_value_type_code            OUT NOCOPY VARCHAR2
1137 )
1138 RETURN NUMBER
1139 IS
1140 l_component_type       VARCHAR2(80)  ;
1141 l_component_code       VARCHAR2(30)  ;
1142 l_component_type_code  VARCHAR2(1)   ;
1143 l_component_appl_id    INTEGER       ;
1144 l_amb_context_code     VARCHAR2(30)  ;
1145 l_log_module           VARCHAR2(240) ;
1146 l_output_value         NUMBER        ;
1147 BEGIN
1148 IF g_log_enabled THEN
1149       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
1150 END IF;
1151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1152       trace
1153          (p_msg      => 'BEGIN of AcctDerRule_7'
1154          ,p_level    => C_LEVEL_PROCEDURE
1155          ,p_module   => l_log_module);
1156 END IF;
1157 --
1158 l_component_type         := 'AMB_ADR';
1159 l_component_code         := 'PA_PROV_COST_REV_ACCT_RULE';
1160 l_component_type_code    := 'S';
1161 l_component_appl_id      :=  275;
1162 l_amb_context_code       := 'DEFAULT';
1163 x_transaction_coa_id     :=  null;
1164 x_accounting_coa_id      :=  null;
1165 --
1166 
1167  IF NVL(p_source_4,'
1168 ') =  'Y'
1169  THEN 
1170  --
1171   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1172       trace
1173          (p_msg      => 'END of AcctDerRule_7'
1174          ,p_level    => C_LEVEL_PROCEDURE
1175          ,p_module   => l_log_module);
1176   END IF;
1177   x_value_type_code := 'S';
1178   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_8));
1179   RETURN l_output_value;
1180 
1181  ELSIF NVL(p_source_4,'
1182 ') =  'N'
1183  THEN 
1184  --
1185   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1186       trace
1187          (p_msg      => 'END of AcctDerRule_7'
1188          ,p_level    => C_LEVEL_PROCEDURE
1189          ,p_module   => l_log_module);
1190   END IF;
1191   x_value_type_code := 'S';
1192   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_9));
1193   RETURN l_output_value;
1194 
1195  END IF;
1196 --
1197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1198       trace
1199          (p_msg      => 'END of AcctDerRule_7(invalid)'
1200          ,p_level    => C_LEVEL_PROCEDURE
1201          ,p_module   => l_log_module);
1202 END IF;
1203 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1204 x_value_type_code := null;
1205 l_output_value    := null;
1206 xla_accounting_err_pkg.build_message
1207                  (p_appli_s_name            => 'XLA'
1208                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1209                  ,p_token_1                 => 'COMPONENT_NAME'
1210                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1211                                                             l_component_type
1212                                                           , l_component_code
1213                                                           , l_component_type_code
1214                                                           , l_component_appl_id
1215                                                           , l_amb_context_code
1216                                                           )
1217                  ,p_token_2                 => 'OWNER'
1218                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1219                                                         'XLA_OWNER_TYPE'
1220                                                         ,l_component_type_code
1221                                                         )
1222                  ,p_token_3                 => 'PAD_NAME'
1223                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1224                  ,p_token_4                 => 'PAD_OWNER'
1225                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1226                                                         'XLA_OWNER_TYPE'
1227                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1228                                                         )
1229                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1230                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1234 RETURN l_output_value;
1231                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1232                  ,p_ae_header_id            => NULL
1233 );
1235 EXCEPTION
1236   WHEN xla_exceptions_pkg.application_exception THEN
1237       RAISE;
1238   WHEN OTHERS THEN
1239        xla_exceptions_pkg.raise_message
1240            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_7');
1241 END AcctDerRule_7;
1242 --
1243 
1244 ---------------------------------------
1245 --
1246 -- PRIVATE FUNCTION
1247 --         AcctDerRule_8
1248 --
1249 ---------------------------------------
1250 FUNCTION AcctDerRule_8 (
1251   p_application_id              IN NUMBER
1252 , p_ae_header_id                IN NUMBER
1253 , p_side                        IN VARCHAR2 
1254 --Allow Account Override Flag
1255  , p_source_4            IN VARCHAR2
1256 --Adjustment Provider Cost/ Revenue CCID
1257  , p_source_9            IN NUMBER
1258 , x_transaction_coa_id         OUT NOCOPY NUMBER
1259 , x_accounting_coa_id          OUT NOCOPY NUMBER
1260 , x_value_type_code            OUT NOCOPY VARCHAR2
1261 )
1262 RETURN NUMBER
1263 IS
1264 l_component_type       VARCHAR2(80)  ;
1265 l_component_code       VARCHAR2(30)  ;
1266 l_component_type_code  VARCHAR2(1)   ;
1267 l_component_appl_id    INTEGER       ;
1268 l_amb_context_code     VARCHAR2(30)  ;
1269 l_log_module           VARCHAR2(240) ;
1270 l_output_value         NUMBER        ;
1271 BEGIN
1272 IF g_log_enabled THEN
1273       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1274 END IF;
1275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1276       trace
1277          (p_msg      => 'BEGIN of AcctDerRule_8'
1278          ,p_level    => C_LEVEL_PROCEDURE
1279          ,p_module   => l_log_module);
1280 END IF;
1281 --
1282 l_component_type         := 'AMB_ADR';
1283 l_component_code         := 'PA_PROV_COST_REV_ADJ_ACCT_RULE';
1284 l_component_type_code    := 'S';
1285 l_component_appl_id      :=  275;
1286 l_amb_context_code       := 'DEFAULT';
1287 x_transaction_coa_id     :=  null;
1288 x_accounting_coa_id      :=  null;
1289 --
1290 
1291  IF NVL(p_source_4,'
1292 ') =  'N'
1293  THEN 
1294  --
1295   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1296       trace
1297          (p_msg      => 'END of AcctDerRule_8'
1298          ,p_level    => C_LEVEL_PROCEDURE
1299          ,p_module   => l_log_module);
1300   END IF;
1301   x_value_type_code := 'S';
1302   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_9));
1303   RETURN l_output_value;
1304 
1305  END IF;
1306 --
1307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1308       trace
1309          (p_msg      => 'END of AcctDerRule_8(invalid)'
1310          ,p_level    => C_LEVEL_PROCEDURE
1311          ,p_module   => l_log_module);
1312 END IF;
1313 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1314 x_value_type_code := null;
1315 l_output_value    := null;
1316 xla_accounting_err_pkg.build_message
1317                  (p_appli_s_name            => 'XLA'
1318                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1319                  ,p_token_1                 => 'COMPONENT_NAME'
1320                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1321                                                             l_component_type
1322                                                           , l_component_code
1323                                                           , l_component_type_code
1324                                                           , l_component_appl_id
1325                                                           , l_amb_context_code
1326                                                           )
1327                  ,p_token_2                 => 'OWNER'
1328                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1329                                                         'XLA_OWNER_TYPE'
1330                                                         ,l_component_type_code
1331                                                         )
1332                  ,p_token_3                 => 'PAD_NAME'
1333                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1334                  ,p_token_4                 => 'PAD_OWNER'
1335                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1336                                                         'XLA_OWNER_TYPE'
1337                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1338                                                         )
1339                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1340                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1341                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1342                  ,p_ae_header_id            => NULL
1343 );
1344 RETURN l_output_value;
1345 EXCEPTION
1346   WHEN xla_exceptions_pkg.application_exception THEN
1347       RAISE;
1348   WHEN OTHERS THEN
1349        xla_exceptions_pkg.raise_message
1350            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_8');
1351 END AcctDerRule_8;
1352 --
1353 
1354 ---------------------------------------
1355 --
1356 -- PRIVATE FUNCTION
1357 --         AcctDerRule_9
1358 --
1359 ---------------------------------------
1360 FUNCTION AcctDerRule_9 (
1361   p_application_id              IN NUMBER
1362 , p_ae_header_id                IN NUMBER
1363 , p_side                        IN VARCHAR2 
1364 --Allow Account Override Flag
1365  , p_source_4            IN VARCHAR2
1366 --Adjustment Receiver Cost/ Revenue CCID
1367  , p_source_10            IN NUMBER
1371 )
1368 , x_transaction_coa_id         OUT NOCOPY NUMBER
1369 , x_accounting_coa_id          OUT NOCOPY NUMBER
1370 , x_value_type_code            OUT NOCOPY VARCHAR2
1372 RETURN NUMBER
1373 IS
1374 l_component_type       VARCHAR2(80)  ;
1375 l_component_code       VARCHAR2(30)  ;
1376 l_component_type_code  VARCHAR2(1)   ;
1377 l_component_appl_id    INTEGER       ;
1378 l_amb_context_code     VARCHAR2(30)  ;
1379 l_log_module           VARCHAR2(240) ;
1380 l_output_value         NUMBER        ;
1381 BEGIN
1382 IF g_log_enabled THEN
1383       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_9';
1384 END IF;
1385 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1386       trace
1387          (p_msg      => 'BEGIN of AcctDerRule_9'
1388          ,p_level    => C_LEVEL_PROCEDURE
1389          ,p_module   => l_log_module);
1390 END IF;
1391 --
1392 l_component_type         := 'AMB_ADR';
1393 l_component_code         := 'PA_RCVR_COST_REV_ADJ_ACCT_RULE';
1394 l_component_type_code    := 'S';
1395 l_component_appl_id      :=  275;
1396 l_amb_context_code       := 'DEFAULT';
1397 x_transaction_coa_id     :=  null;
1398 x_accounting_coa_id      :=  null;
1399 --
1400 
1401  IF NVL(p_source_4,'
1402 ') =  'N'
1403  THEN 
1404  --
1405   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1406       trace
1407          (p_msg      => 'END of AcctDerRule_9'
1408          ,p_level    => C_LEVEL_PROCEDURE
1409          ,p_module   => l_log_module);
1410   END IF;
1411   x_value_type_code := 'S';
1412   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_10));
1413   RETURN l_output_value;
1414 
1415  END IF;
1416 --
1417 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1418       trace
1419          (p_msg      => 'END of AcctDerRule_9(invalid)'
1420          ,p_level    => C_LEVEL_PROCEDURE
1421          ,p_module   => l_log_module);
1422 END IF;
1423 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1424 x_value_type_code := null;
1425 l_output_value    := null;
1426 xla_accounting_err_pkg.build_message
1427                  (p_appli_s_name            => 'XLA'
1428                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1429                  ,p_token_1                 => 'COMPONENT_NAME'
1430                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1431                                                             l_component_type
1432                                                           , l_component_code
1433                                                           , l_component_type_code
1434                                                           , l_component_appl_id
1435                                                           , l_amb_context_code
1436                                                           )
1437                  ,p_token_2                 => 'OWNER'
1438                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1439                                                         'XLA_OWNER_TYPE'
1440                                                         ,l_component_type_code
1441                                                         )
1442                  ,p_token_3                 => 'PAD_NAME'
1443                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1444                  ,p_token_4                 => 'PAD_OWNER'
1445                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1446                                                         'XLA_OWNER_TYPE'
1447                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1448                                                         )
1449                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1450                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1451                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1452                  ,p_ae_header_id            => NULL
1453 );
1454 RETURN l_output_value;
1455 EXCEPTION
1456   WHEN xla_exceptions_pkg.application_exception THEN
1457       RAISE;
1458   WHEN OTHERS THEN
1459        xla_exceptions_pkg.raise_message
1460            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_9');
1461 END AcctDerRule_9;
1462 --
1463 
1464 ---------------------------------------
1465 --
1466 -- PRIVATE FUNCTION
1467 --         AcctDerRule_10
1468 --
1469 ---------------------------------------
1470 FUNCTION AcctDerRule_10 (
1471   p_application_id              IN NUMBER
1472 , p_ae_header_id                IN NUMBER
1473 , p_side                        IN VARCHAR2 
1474 --Allow Account Override Flag
1475  , p_source_4            IN VARCHAR2
1476 --Provider Cost Destination CCID
1477  , p_source_11            IN NUMBER
1478 --Adjustment Provider Cost Destination CCID
1479  , p_source_12            IN NUMBER
1480 , x_transaction_coa_id         OUT NOCOPY NUMBER
1481 , x_accounting_coa_id          OUT NOCOPY NUMBER
1482 , x_value_type_code            OUT NOCOPY VARCHAR2
1483 )
1484 RETURN NUMBER
1485 IS
1486 l_component_type       VARCHAR2(80)  ;
1487 l_component_code       VARCHAR2(30)  ;
1488 l_component_type_code  VARCHAR2(1)   ;
1489 l_component_appl_id    INTEGER       ;
1490 l_amb_context_code     VARCHAR2(30)  ;
1491 l_log_module           VARCHAR2(240) ;
1492 l_output_value         NUMBER        ;
1493 BEGIN
1494 IF g_log_enabled THEN
1495       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_10';
1496 END IF;
1497 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1498       trace
1499          (p_msg      => 'BEGIN of AcctDerRule_10'
1500          ,p_level    => C_LEVEL_PROCEDURE
1501          ,p_module   => l_log_module);
1502 END IF;
1503 --
1504 l_component_type         := 'AMB_ADR';
1508 l_amb_context_code       := 'DEFAULT';
1505 l_component_code         := 'PA_RECLASS_DEST_ACCT_RULE';
1506 l_component_type_code    := 'S';
1507 l_component_appl_id      :=  275;
1509 x_transaction_coa_id     :=  null;
1510 x_accounting_coa_id      :=  null;
1511 --
1512 
1513  IF NVL(p_source_4,'
1514 ') =  'Y'
1515  THEN 
1516  --
1517   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1518       trace
1519          (p_msg      => 'END of AcctDerRule_10'
1520          ,p_level    => C_LEVEL_PROCEDURE
1521          ,p_module   => l_log_module);
1522   END IF;
1523   x_value_type_code := 'S';
1524   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
1525   RETURN l_output_value;
1526 
1527  ELSIF NVL(p_source_4,'
1528 ') =  'N'
1529  THEN 
1530  --
1531   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1532       trace
1533          (p_msg      => 'END of AcctDerRule_10'
1534          ,p_level    => C_LEVEL_PROCEDURE
1535          ,p_module   => l_log_module);
1536   END IF;
1537   x_value_type_code := 'S';
1538   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_12));
1539   RETURN l_output_value;
1540 
1541  END IF;
1542 --
1543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1544       trace
1545          (p_msg      => 'END of AcctDerRule_10(invalid)'
1546          ,p_level    => C_LEVEL_PROCEDURE
1547          ,p_module   => l_log_module);
1548 END IF;
1549 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1550 x_value_type_code := null;
1551 l_output_value    := null;
1552 xla_accounting_err_pkg.build_message
1553                  (p_appli_s_name            => 'XLA'
1554                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1555                  ,p_token_1                 => 'COMPONENT_NAME'
1556                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1557                                                             l_component_type
1558                                                           , l_component_code
1559                                                           , l_component_type_code
1560                                                           , l_component_appl_id
1561                                                           , l_amb_context_code
1562                                                           )
1563                  ,p_token_2                 => 'OWNER'
1564                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1565                                                         'XLA_OWNER_TYPE'
1566                                                         ,l_component_type_code
1567                                                         )
1568                  ,p_token_3                 => 'PAD_NAME'
1569                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1570                  ,p_token_4                 => 'PAD_OWNER'
1571                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1572                                                         'XLA_OWNER_TYPE'
1573                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1574                                                         )
1575                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1576                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1577                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1578                  ,p_ae_header_id            => NULL
1579 );
1580 RETURN l_output_value;
1581 EXCEPTION
1582   WHEN xla_exceptions_pkg.application_exception THEN
1583       RAISE;
1584   WHEN OTHERS THEN
1585        xla_exceptions_pkg.raise_message
1586            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_10');
1587 END AcctDerRule_10;
1588 --
1589 
1590 ---------------------------------------
1591 --
1592 -- PRIVATE FUNCTION
1593 --         AcctDerRule_11
1594 --
1595 ---------------------------------------
1596 FUNCTION AcctDerRule_11 (
1597   p_application_id              IN NUMBER
1598 , p_ae_header_id                IN NUMBER
1599 , p_side                        IN VARCHAR2 
1600 --Allow Account Override Flag
1601  , p_source_4            IN VARCHAR2
1602 --Adjustment Provider Cost Destination CCID
1603  , p_source_12            IN NUMBER
1604 , x_transaction_coa_id         OUT NOCOPY NUMBER
1605 , x_accounting_coa_id          OUT NOCOPY NUMBER
1606 , x_value_type_code            OUT NOCOPY VARCHAR2
1607 )
1608 RETURN NUMBER
1609 IS
1610 l_component_type       VARCHAR2(80)  ;
1611 l_component_code       VARCHAR2(30)  ;
1612 l_component_type_code  VARCHAR2(1)   ;
1613 l_component_appl_id    INTEGER       ;
1614 l_amb_context_code     VARCHAR2(30)  ;
1615 l_log_module           VARCHAR2(240) ;
1616 l_output_value         NUMBER        ;
1617 BEGIN
1618 IF g_log_enabled THEN
1619       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_11';
1620 END IF;
1621 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1622       trace
1623          (p_msg      => 'BEGIN of AcctDerRule_11'
1624          ,p_level    => C_LEVEL_PROCEDURE
1625          ,p_module   => l_log_module);
1626 END IF;
1627 --
1628 l_component_type         := 'AMB_ADR';
1629 l_component_code         := 'PA_RECLASS_DEST_ADJ_ACCT_RULE';
1630 l_component_type_code    := 'S';
1631 l_component_appl_id      :=  275;
1632 l_amb_context_code       := 'DEFAULT';
1633 x_transaction_coa_id     :=  null;
1634 x_accounting_coa_id      :=  null;
1635 --
1636 
1637  IF NVL(p_source_4,'
1638 ') =  'N'
1639  THEN 
1640  --
1641   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1642       trace
1643          (p_msg      => 'END of AcctDerRule_11'
1644          ,p_level    => C_LEVEL_PROCEDURE
1648   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_12));
1645          ,p_module   => l_log_module);
1646   END IF;
1647   x_value_type_code := 'S';
1649   RETURN l_output_value;
1650 
1651  END IF;
1652 --
1653 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1654       trace
1655          (p_msg      => 'END of AcctDerRule_11(invalid)'
1656          ,p_level    => C_LEVEL_PROCEDURE
1657          ,p_module   => l_log_module);
1658 END IF;
1659 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1660 x_value_type_code := null;
1661 l_output_value    := null;
1662 xla_accounting_err_pkg.build_message
1663                  (p_appli_s_name            => 'XLA'
1664                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1665                  ,p_token_1                 => 'COMPONENT_NAME'
1666                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1667                                                             l_component_type
1668                                                           , l_component_code
1669                                                           , l_component_type_code
1670                                                           , l_component_appl_id
1671                                                           , l_amb_context_code
1672                                                           )
1673                  ,p_token_2                 => 'OWNER'
1674                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1675                                                         'XLA_OWNER_TYPE'
1676                                                         ,l_component_type_code
1677                                                         )
1678                  ,p_token_3                 => 'PAD_NAME'
1679                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1680                  ,p_token_4                 => 'PAD_OWNER'
1681                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1682                                                         'XLA_OWNER_TYPE'
1683                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1684                                                         )
1685                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1686                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1687                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1688                  ,p_ae_header_id            => NULL
1689 );
1690 RETURN l_output_value;
1691 EXCEPTION
1692   WHEN xla_exceptions_pkg.application_exception THEN
1693       RAISE;
1694   WHEN OTHERS THEN
1695        xla_exceptions_pkg.raise_message
1696            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_11');
1697 END AcctDerRule_11;
1698 --
1699 
1700 ---------------------------------------
1701 --
1702 -- PRIVATE FUNCTION
1703 --         AcctDerRule_12
1704 --
1705 ---------------------------------------
1706 FUNCTION AcctDerRule_12 (
1707   p_application_id              IN NUMBER
1708 , p_ae_header_id                IN NUMBER
1709 , p_side                        IN VARCHAR2 
1710 --Allow Account Override Flag
1711  , p_source_4            IN VARCHAR2
1712 --Provider Cost Source CCID
1713  , p_source_13            IN NUMBER
1714 --Adjustment Provider Cost Source CCID
1715  , p_source_14            IN NUMBER
1716 , x_transaction_coa_id         OUT NOCOPY NUMBER
1717 , x_accounting_coa_id          OUT NOCOPY NUMBER
1718 , x_value_type_code            OUT NOCOPY VARCHAR2
1719 )
1720 RETURN NUMBER
1721 IS
1722 l_component_type       VARCHAR2(80)  ;
1723 l_component_code       VARCHAR2(30)  ;
1724 l_component_type_code  VARCHAR2(1)   ;
1725 l_component_appl_id    INTEGER       ;
1726 l_amb_context_code     VARCHAR2(30)  ;
1727 l_log_module           VARCHAR2(240) ;
1728 l_output_value         NUMBER        ;
1729 BEGIN
1730 IF g_log_enabled THEN
1731       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1732 END IF;
1733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1734       trace
1735          (p_msg      => 'BEGIN of AcctDerRule_12'
1736          ,p_level    => C_LEVEL_PROCEDURE
1737          ,p_module   => l_log_module);
1738 END IF;
1739 --
1740 l_component_type         := 'AMB_ADR';
1741 l_component_code         := 'PA_RECLASS_SOURCE_ACCT_RULE';
1742 l_component_type_code    := 'S';
1743 l_component_appl_id      :=  275;
1744 l_amb_context_code       := 'DEFAULT';
1745 x_transaction_coa_id     :=  null;
1746 x_accounting_coa_id      :=  null;
1747 --
1748 
1749  IF NVL(p_source_4,'
1750 ') =  'Y'
1751  THEN 
1752  --
1753   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1754       trace
1755          (p_msg      => 'END of AcctDerRule_12'
1756          ,p_level    => C_LEVEL_PROCEDURE
1757          ,p_module   => l_log_module);
1758   END IF;
1759   x_value_type_code := 'S';
1760   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_13));
1761   RETURN l_output_value;
1762 
1763  ELSIF NVL(p_source_4,'
1764 ') =  'N'
1765  THEN 
1766  --
1767   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1768       trace
1769          (p_msg      => 'END of AcctDerRule_12'
1770          ,p_level    => C_LEVEL_PROCEDURE
1771          ,p_module   => l_log_module);
1772   END IF;
1773   x_value_type_code := 'S';
1774   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_14));
1775   RETURN l_output_value;
1776 
1777  END IF;
1778 --
1779 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1780       trace
1781          (p_msg      => 'END of AcctDerRule_12(invalid)'
1782          ,p_level    => C_LEVEL_PROCEDURE
1783          ,p_module   => l_log_module);
1784 END IF;
1788 xla_accounting_err_pkg.build_message
1785 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1786 x_value_type_code := null;
1787 l_output_value    := null;
1789                  (p_appli_s_name            => 'XLA'
1790                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1791                  ,p_token_1                 => 'COMPONENT_NAME'
1792                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1793                                                             l_component_type
1794                                                           , l_component_code
1795                                                           , l_component_type_code
1796                                                           , l_component_appl_id
1797                                                           , l_amb_context_code
1798                                                           )
1799                  ,p_token_2                 => 'OWNER'
1800                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1801                                                         'XLA_OWNER_TYPE'
1802                                                         ,l_component_type_code
1803                                                         )
1804                  ,p_token_3                 => 'PAD_NAME'
1805                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1806                  ,p_token_4                 => 'PAD_OWNER'
1807                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1808                                                         'XLA_OWNER_TYPE'
1809                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1810                                                         )
1811                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1812                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1813                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1814                  ,p_ae_header_id            => NULL
1815 );
1816 RETURN l_output_value;
1817 EXCEPTION
1818   WHEN xla_exceptions_pkg.application_exception THEN
1819       RAISE;
1820   WHEN OTHERS THEN
1821        xla_exceptions_pkg.raise_message
1822            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_12');
1823 END AcctDerRule_12;
1824 --
1825 
1826 ---------------------------------------
1827 --
1828 -- PRIVATE FUNCTION
1829 --         AcctDerRule_13
1830 --
1831 ---------------------------------------
1832 FUNCTION AcctDerRule_13 (
1833   p_application_id              IN NUMBER
1834 , p_ae_header_id                IN NUMBER
1835 , p_side                        IN VARCHAR2 
1836 --Allow Account Override Flag
1837  , p_source_4            IN VARCHAR2
1838 --Adjustment Provider Cost Source CCID
1839  , p_source_14            IN NUMBER
1840 , x_transaction_coa_id         OUT NOCOPY NUMBER
1841 , x_accounting_coa_id          OUT NOCOPY NUMBER
1842 , x_value_type_code            OUT NOCOPY VARCHAR2
1843 )
1844 RETURN NUMBER
1845 IS
1846 l_component_type       VARCHAR2(80)  ;
1847 l_component_code       VARCHAR2(30)  ;
1848 l_component_type_code  VARCHAR2(1)   ;
1849 l_component_appl_id    INTEGER       ;
1850 l_amb_context_code     VARCHAR2(30)  ;
1851 l_log_module           VARCHAR2(240) ;
1852 l_output_value         NUMBER        ;
1853 BEGIN
1854 IF g_log_enabled THEN
1855       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1856 END IF;
1857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1858       trace
1859          (p_msg      => 'BEGIN of AcctDerRule_13'
1860          ,p_level    => C_LEVEL_PROCEDURE
1861          ,p_module   => l_log_module);
1862 END IF;
1863 --
1864 l_component_type         := 'AMB_ADR';
1865 l_component_code         := 'PA_RECLASS_SRC_ADJ_ACCT_RULE';
1866 l_component_type_code    := 'S';
1867 l_component_appl_id      :=  275;
1868 l_amb_context_code       := 'DEFAULT';
1869 x_transaction_coa_id     :=  null;
1870 x_accounting_coa_id      :=  null;
1871 --
1872 
1873  IF NVL(p_source_4,'
1874 ') =  'N'
1875  THEN 
1876  --
1877   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1878       trace
1879          (p_msg      => 'END of AcctDerRule_13'
1880          ,p_level    => C_LEVEL_PROCEDURE
1881          ,p_module   => l_log_module);
1882   END IF;
1883   x_value_type_code := 'S';
1884   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_14));
1885   RETURN l_output_value;
1886 
1887  END IF;
1888 --
1889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1890       trace
1891          (p_msg      => 'END of AcctDerRule_13(invalid)'
1892          ,p_level    => C_LEVEL_PROCEDURE
1893          ,p_module   => l_log_module);
1894 END IF;
1895 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1896 x_value_type_code := null;
1897 l_output_value    := null;
1898 xla_accounting_err_pkg.build_message
1899                  (p_appli_s_name            => 'XLA'
1900                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1901                  ,p_token_1                 => 'COMPONENT_NAME'
1902                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1903                                                             l_component_type
1904                                                           , l_component_code
1905                                                           , l_component_type_code
1906                                                           , l_component_appl_id
1907                                                           , l_amb_context_code
1908                                                           )
1909                  ,p_token_2                 => 'OWNER'
1913                                                         )
1910                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1911                                                         'XLA_OWNER_TYPE'
1912                                                         ,l_component_type_code
1914                  ,p_token_3                 => 'PAD_NAME'
1915                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1916                  ,p_token_4                 => 'PAD_OWNER'
1917                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1918                                                         'XLA_OWNER_TYPE'
1919                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1920                                                         )
1921                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1922                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1923                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1924                  ,p_ae_header_id            => NULL
1925 );
1926 RETURN l_output_value;
1927 EXCEPTION
1928   WHEN xla_exceptions_pkg.application_exception THEN
1929       RAISE;
1930   WHEN OTHERS THEN
1931        xla_exceptions_pkg.raise_message
1932            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_13');
1933 END AcctDerRule_13;
1934 --
1935 
1936 ---------------------------------------
1937 --
1938 -- PRIVATE FUNCTION
1939 --         AcctDerRule_14
1940 --
1941 ---------------------------------------
1942 FUNCTION AcctDerRule_14 (
1943   p_application_id              IN NUMBER
1944 , p_ae_header_id                IN NUMBER
1945 , p_side                        IN VARCHAR2 
1946 --Allow Account Override Flag
1947  , p_source_4            IN VARCHAR2
1948 --Adjustment Receiver Cost/ Revenue CCID
1949  , p_source_10            IN NUMBER
1950 --Receiver Cost/ Revenue CCID
1951  , p_source_15            IN NUMBER
1952 , x_transaction_coa_id         OUT NOCOPY NUMBER
1953 , x_accounting_coa_id          OUT NOCOPY NUMBER
1954 , x_value_type_code            OUT NOCOPY VARCHAR2
1955 )
1956 RETURN NUMBER
1957 IS
1958 l_component_type       VARCHAR2(80)  ;
1959 l_component_code       VARCHAR2(30)  ;
1960 l_component_type_code  VARCHAR2(1)   ;
1961 l_component_appl_id    INTEGER       ;
1962 l_amb_context_code     VARCHAR2(30)  ;
1963 l_log_module           VARCHAR2(240) ;
1964 l_output_value         NUMBER        ;
1965 BEGIN
1966 IF g_log_enabled THEN
1967       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_14';
1968 END IF;
1969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1970       trace
1971          (p_msg      => 'BEGIN of AcctDerRule_14'
1972          ,p_level    => C_LEVEL_PROCEDURE
1973          ,p_module   => l_log_module);
1974 END IF;
1975 --
1976 l_component_type         := 'AMB_ADR';
1977 l_component_code         := 'PA_RECVR_COST_REV_ACCT_RULE';
1978 l_component_type_code    := 'S';
1979 l_component_appl_id      :=  275;
1980 l_amb_context_code       := 'DEFAULT';
1981 x_transaction_coa_id     :=  null;
1982 x_accounting_coa_id      :=  null;
1983 --
1984 
1985  IF NVL(p_source_4,'
1986 ') =  'Y'
1987  THEN 
1988  --
1989   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1990       trace
1991          (p_msg      => 'END of AcctDerRule_14'
1992          ,p_level    => C_LEVEL_PROCEDURE
1993          ,p_module   => l_log_module);
1994   END IF;
1995   x_value_type_code := 'S';
1996   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_15));
1997   RETURN l_output_value;
1998 
1999  ELSIF NVL(p_source_4,'
2000 ') =  'N'
2001  THEN 
2002  --
2003   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2004       trace
2005          (p_msg      => 'END of AcctDerRule_14'
2006          ,p_level    => C_LEVEL_PROCEDURE
2007          ,p_module   => l_log_module);
2008   END IF;
2009   x_value_type_code := 'S';
2010   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_10));
2011   RETURN l_output_value;
2012 
2013  END IF;
2014 --
2015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2016       trace
2017          (p_msg      => 'END of AcctDerRule_14(invalid)'
2018          ,p_level    => C_LEVEL_PROCEDURE
2019          ,p_module   => l_log_module);
2020 END IF;
2021 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2022 x_value_type_code := null;
2023 l_output_value    := null;
2024 xla_accounting_err_pkg.build_message
2025                  (p_appli_s_name            => 'XLA'
2026                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2027                  ,p_token_1                 => 'COMPONENT_NAME'
2028                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2029                                                             l_component_type
2030                                                           , l_component_code
2031                                                           , l_component_type_code
2032                                                           , l_component_appl_id
2033                                                           , l_amb_context_code
2034                                                           )
2035                  ,p_token_2                 => 'OWNER'
2036                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2037                                                         'XLA_OWNER_TYPE'
2038                                                         ,l_component_type_code
2039                                                         )
2040                  ,p_token_3                 => 'PAD_NAME'
2041                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2045                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2042                  ,p_token_4                 => 'PAD_OWNER'
2043                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2044                                                         'XLA_OWNER_TYPE'
2046                                                         )
2047                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2048                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2049                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2050                  ,p_ae_header_id            => NULL
2051 );
2052 RETURN l_output_value;
2053 EXCEPTION
2054   WHEN xla_exceptions_pkg.application_exception THEN
2055       RAISE;
2056   WHEN OTHERS THEN
2057        xla_exceptions_pkg.raise_message
2058            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_14');
2059 END AcctDerRule_14;
2060 --
2061 
2062 ---------------------------------------
2063 --
2064 -- PRIVATE FUNCTION
2065 --         AcctDerRule_15
2066 --
2067 ---------------------------------------
2068 FUNCTION AcctDerRule_15 (
2069   p_application_id              IN NUMBER
2070 , p_ae_header_id                IN NUMBER
2071 , p_side                        IN VARCHAR2 
2072 --Realized Gains CCID
2073  , p_source_16            IN NUMBER
2074 , x_transaction_coa_id         OUT NOCOPY NUMBER
2075 , x_accounting_coa_id          OUT NOCOPY NUMBER
2076 , x_value_type_code            OUT NOCOPY VARCHAR2
2077 )
2078 RETURN NUMBER
2079 IS
2080 l_component_type       VARCHAR2(80)  ;
2081 l_component_code       VARCHAR2(30)  ;
2082 l_component_type_code  VARCHAR2(1)   ;
2083 l_component_appl_id    INTEGER       ;
2084 l_amb_context_code     VARCHAR2(30)  ;
2085 l_log_module           VARCHAR2(240) ;
2086 l_output_value         NUMBER        ;
2087 BEGIN
2088 IF g_log_enabled THEN
2089       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
2090 END IF;
2091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2092       trace
2093          (p_msg      => 'BEGIN of AcctDerRule_15'
2094          ,p_level    => C_LEVEL_PROCEDURE
2095          ,p_module   => l_log_module);
2096 END IF;
2097 --
2098 l_component_type         := 'AMB_ADR';
2099 l_component_code         := 'REALIZED_GAINS_RULE';
2100 l_component_type_code    := 'S';
2101 l_component_appl_id      :=  275;
2102 l_amb_context_code       := 'DEFAULT';
2103 x_transaction_coa_id     :=  null;
2104 x_accounting_coa_id      :=  null;
2105 --
2106 
2107  --
2108   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2109       trace
2110          (p_msg      => 'END of AcctDerRule_15'
2111          ,p_level    => C_LEVEL_PROCEDURE
2112          ,p_module   => l_log_module);
2113   END IF;
2114   x_value_type_code := 'S';
2115   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_16));
2116   RETURN l_output_value;
2117 
2118 --
2119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2120       trace
2121          (p_msg      => 'END of AcctDerRule_15(invalid)'
2122          ,p_level    => C_LEVEL_PROCEDURE
2123          ,p_module   => l_log_module);
2124 END IF;
2125 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2126 x_value_type_code := null;
2127 l_output_value    := null;
2128 xla_accounting_err_pkg.build_message
2129                  (p_appli_s_name            => 'XLA'
2130                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2131                  ,p_token_1                 => 'COMPONENT_NAME'
2132                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2133                                                             l_component_type
2134                                                           , l_component_code
2135                                                           , l_component_type_code
2136                                                           , l_component_appl_id
2137                                                           , l_amb_context_code
2138                                                           )
2139                  ,p_token_2                 => 'OWNER'
2140                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2141                                                         'XLA_OWNER_TYPE'
2142                                                         ,l_component_type_code
2143                                                         )
2144                  ,p_token_3                 => 'PAD_NAME'
2145                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2146                  ,p_token_4                 => 'PAD_OWNER'
2147                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2148                                                         'XLA_OWNER_TYPE'
2149                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2150                                                         )
2151                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2152                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2153                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2154                  ,p_ae_header_id            => NULL
2155 );
2156 RETURN l_output_value;
2157 EXCEPTION
2158   WHEN xla_exceptions_pkg.application_exception THEN
2159       RAISE;
2160   WHEN OTHERS THEN
2161        xla_exceptions_pkg.raise_message
2162            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_15');
2163 END AcctDerRule_15;
2164 --
2165 
2166 ---------------------------------------
2167 --
2168 -- PRIVATE FUNCTION
2169 --         AcctDerRule_16
2170 --
2174 , p_ae_header_id                IN NUMBER
2171 ---------------------------------------
2172 FUNCTION AcctDerRule_16 (
2173   p_application_id              IN NUMBER
2175 , p_side                        IN VARCHAR2 
2176 --Realized Losses CCID
2177  , p_source_17            IN NUMBER
2178 , x_transaction_coa_id         OUT NOCOPY NUMBER
2179 , x_accounting_coa_id          OUT NOCOPY NUMBER
2180 , x_value_type_code            OUT NOCOPY VARCHAR2
2181 )
2182 RETURN NUMBER
2183 IS
2184 l_component_type       VARCHAR2(80)  ;
2185 l_component_code       VARCHAR2(30)  ;
2186 l_component_type_code  VARCHAR2(1)   ;
2187 l_component_appl_id    INTEGER       ;
2188 l_amb_context_code     VARCHAR2(30)  ;
2189 l_log_module           VARCHAR2(240) ;
2190 l_output_value         NUMBER        ;
2191 BEGIN
2192 IF g_log_enabled THEN
2193       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_16';
2194 END IF;
2195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2196       trace
2197          (p_msg      => 'BEGIN of AcctDerRule_16'
2198          ,p_level    => C_LEVEL_PROCEDURE
2199          ,p_module   => l_log_module);
2200 END IF;
2201 --
2202 l_component_type         := 'AMB_ADR';
2203 l_component_code         := 'REALIZED_LOSSES_RULE';
2204 l_component_type_code    := 'S';
2205 l_component_appl_id      :=  275;
2206 l_amb_context_code       := 'DEFAULT';
2207 x_transaction_coa_id     :=  null;
2208 x_accounting_coa_id      :=  null;
2209 --
2210 
2211  --
2212   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2213       trace
2214          (p_msg      => 'END of AcctDerRule_16'
2215          ,p_level    => C_LEVEL_PROCEDURE
2216          ,p_module   => l_log_module);
2217   END IF;
2218   x_value_type_code := 'S';
2219   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_17));
2220   RETURN l_output_value;
2221 
2222 --
2223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2224       trace
2225          (p_msg      => 'END of AcctDerRule_16(invalid)'
2226          ,p_level    => C_LEVEL_PROCEDURE
2227          ,p_module   => l_log_module);
2228 END IF;
2229 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2230 x_value_type_code := null;
2231 l_output_value    := null;
2232 xla_accounting_err_pkg.build_message
2233                  (p_appli_s_name            => 'XLA'
2234                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2235                  ,p_token_1                 => 'COMPONENT_NAME'
2236                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2237                                                             l_component_type
2238                                                           , l_component_code
2239                                                           , l_component_type_code
2240                                                           , l_component_appl_id
2241                                                           , l_amb_context_code
2242                                                           )
2243                  ,p_token_2                 => 'OWNER'
2244                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2245                                                         'XLA_OWNER_TYPE'
2246                                                         ,l_component_type_code
2247                                                         )
2248                  ,p_token_3                 => 'PAD_NAME'
2249                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2250                  ,p_token_4                 => 'PAD_OWNER'
2251                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2252                                                         'XLA_OWNER_TYPE'
2253                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2254                                                         )
2255                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2256                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2257                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2258                  ,p_ae_header_id            => NULL
2259 );
2260 RETURN l_output_value;
2261 EXCEPTION
2262   WHEN xla_exceptions_pkg.application_exception THEN
2263       RAISE;
2264   WHEN OTHERS THEN
2265        xla_exceptions_pkg.raise_message
2266            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_16');
2267 END AcctDerRule_16;
2268 --
2269 
2270 ---------------------------------------
2271 --
2272 -- PRIVATE FUNCTION
2273 --         AcctDerRule_17
2274 --
2275 ---------------------------------------
2276 FUNCTION AcctDerRule_17 (
2277   p_application_id              IN NUMBER
2278 , p_ae_header_id                IN NUMBER
2279 , p_side                        IN VARCHAR2 
2280 --Revenue CCID
2281  , p_source_18            IN NUMBER
2282 , x_transaction_coa_id         OUT NOCOPY NUMBER
2283 , x_accounting_coa_id          OUT NOCOPY NUMBER
2284 , x_value_type_code            OUT NOCOPY VARCHAR2
2285 )
2286 RETURN NUMBER
2287 IS
2288 l_component_type       VARCHAR2(80)  ;
2289 l_component_code       VARCHAR2(30)  ;
2290 l_component_type_code  VARCHAR2(1)   ;
2291 l_component_appl_id    INTEGER       ;
2292 l_amb_context_code     VARCHAR2(30)  ;
2293 l_log_module           VARCHAR2(240) ;
2294 l_output_value         NUMBER        ;
2295 BEGIN
2296 IF g_log_enabled THEN
2297       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_17';
2298 END IF;
2299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2300       trace
2301          (p_msg      => 'BEGIN of AcctDerRule_17'
2302          ,p_level    => C_LEVEL_PROCEDURE
2303          ,p_module   => l_log_module);
2304 END IF;
2305 --
2309 l_component_appl_id      :=  275;
2306 l_component_type         := 'AMB_ADR';
2307 l_component_code         := 'REVENUE_RULE';
2308 l_component_type_code    := 'S';
2310 l_amb_context_code       := 'DEFAULT';
2311 x_transaction_coa_id     :=  null;
2312 x_accounting_coa_id      :=  null;
2313 --
2314 
2315  --
2316   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2317       trace
2318          (p_msg      => 'END of AcctDerRule_17'
2319          ,p_level    => C_LEVEL_PROCEDURE
2320          ,p_module   => l_log_module);
2321   END IF;
2322   x_value_type_code := 'S';
2323   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_18));
2324   RETURN l_output_value;
2325 
2326 --
2327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2328       trace
2329          (p_msg      => 'END of AcctDerRule_17(invalid)'
2330          ,p_level    => C_LEVEL_PROCEDURE
2331          ,p_module   => l_log_module);
2332 END IF;
2333 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2334 x_value_type_code := null;
2335 l_output_value    := null;
2336 xla_accounting_err_pkg.build_message
2337                  (p_appli_s_name            => 'XLA'
2338                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2339                  ,p_token_1                 => 'COMPONENT_NAME'
2340                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2341                                                             l_component_type
2342                                                           , l_component_code
2343                                                           , l_component_type_code
2344                                                           , l_component_appl_id
2345                                                           , l_amb_context_code
2346                                                           )
2347                  ,p_token_2                 => 'OWNER'
2348                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2349                                                         'XLA_OWNER_TYPE'
2350                                                         ,l_component_type_code
2351                                                         )
2352                  ,p_token_3                 => 'PAD_NAME'
2353                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2354                  ,p_token_4                 => 'PAD_OWNER'
2355                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2356                                                         'XLA_OWNER_TYPE'
2357                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2358                                                         )
2359                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2360                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2361                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2362                  ,p_ae_header_id            => NULL
2363 );
2364 RETURN l_output_value;
2365 EXCEPTION
2366   WHEN xla_exceptions_pkg.application_exception THEN
2367       RAISE;
2368   WHEN OTHERS THEN
2369        xla_exceptions_pkg.raise_message
2370            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_17');
2371 END AcctDerRule_17;
2372 --
2373 
2374 ---------------------------------------
2375 --
2376 -- PRIVATE FUNCTION
2377 --         AcctDerRule_18
2378 --
2379 ---------------------------------------
2380 FUNCTION AcctDerRule_18 (
2381   p_application_id              IN NUMBER
2382 , p_ae_header_id                IN NUMBER
2383 , p_side                        IN VARCHAR2 
2384 --Unbilled Receivables CCID
2385  , p_source_19            IN NUMBER
2386 , x_transaction_coa_id         OUT NOCOPY NUMBER
2387 , x_accounting_coa_id          OUT NOCOPY NUMBER
2388 , x_value_type_code            OUT NOCOPY VARCHAR2
2389 )
2390 RETURN NUMBER
2391 IS
2392 l_component_type       VARCHAR2(80)  ;
2393 l_component_code       VARCHAR2(30)  ;
2394 l_component_type_code  VARCHAR2(1)   ;
2395 l_component_appl_id    INTEGER       ;
2396 l_amb_context_code     VARCHAR2(30)  ;
2397 l_log_module           VARCHAR2(240) ;
2398 l_output_value         NUMBER        ;
2399 BEGIN
2400 IF g_log_enabled THEN
2401       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_18';
2402 END IF;
2403 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2404       trace
2405          (p_msg      => 'BEGIN of AcctDerRule_18'
2406          ,p_level    => C_LEVEL_PROCEDURE
2407          ,p_module   => l_log_module);
2408 END IF;
2409 --
2410 l_component_type         := 'AMB_ADR';
2411 l_component_code         := 'UBR_RULE';
2412 l_component_type_code    := 'S';
2413 l_component_appl_id      :=  275;
2414 l_amb_context_code       := 'DEFAULT';
2415 x_transaction_coa_id     :=  null;
2416 x_accounting_coa_id      :=  null;
2417 --
2418 
2419  --
2420   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2421       trace
2422          (p_msg      => 'END of AcctDerRule_18'
2423          ,p_level    => C_LEVEL_PROCEDURE
2424          ,p_module   => l_log_module);
2425   END IF;
2426   x_value_type_code := 'S';
2427   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_19));
2428   RETURN l_output_value;
2429 
2430 --
2431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2432       trace
2433          (p_msg      => 'END of AcctDerRule_18(invalid)'
2434          ,p_level    => C_LEVEL_PROCEDURE
2435          ,p_module   => l_log_module);
2436 END IF;
2437 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2438 x_value_type_code := null;
2439 l_output_value    := null;
2440 xla_accounting_err_pkg.build_message
2444                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2441                  (p_appli_s_name            => 'XLA'
2442                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2443                  ,p_token_1                 => 'COMPONENT_NAME'
2445                                                             l_component_type
2446                                                           , l_component_code
2447                                                           , l_component_type_code
2448                                                           , l_component_appl_id
2449                                                           , l_amb_context_code
2450                                                           )
2451                  ,p_token_2                 => 'OWNER'
2452                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2453                                                         'XLA_OWNER_TYPE'
2454                                                         ,l_component_type_code
2455                                                         )
2456                  ,p_token_3                 => 'PAD_NAME'
2457                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2458                  ,p_token_4                 => 'PAD_OWNER'
2459                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2460                                                         'XLA_OWNER_TYPE'
2461                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2462                                                         )
2463                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2464                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2465                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2466                  ,p_ae_header_id            => NULL
2467 );
2468 RETURN l_output_value;
2469 EXCEPTION
2470   WHEN xla_exceptions_pkg.application_exception THEN
2471       RAISE;
2472   WHEN OTHERS THEN
2473        xla_exceptions_pkg.raise_message
2474            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_18');
2475 END AcctDerRule_18;
2476 --
2477 
2478 ---------------------------------------
2479 --
2480 -- PRIVATE FUNCTION
2481 --         AcctDerRule_19
2482 --
2483 ---------------------------------------
2484 FUNCTION AcctDerRule_19 (
2485   p_application_id              IN NUMBER
2486 , p_ae_header_id                IN NUMBER
2487 , p_side                        IN VARCHAR2 
2488 --Unearned Revenue CCID
2489  , p_source_20            IN NUMBER
2490 , x_transaction_coa_id         OUT NOCOPY NUMBER
2491 , x_accounting_coa_id          OUT NOCOPY NUMBER
2492 , x_value_type_code            OUT NOCOPY VARCHAR2
2493 )
2494 RETURN NUMBER
2495 IS
2496 l_component_type       VARCHAR2(80)  ;
2497 l_component_code       VARCHAR2(30)  ;
2498 l_component_type_code  VARCHAR2(1)   ;
2499 l_component_appl_id    INTEGER       ;
2500 l_amb_context_code     VARCHAR2(30)  ;
2501 l_log_module           VARCHAR2(240) ;
2502 l_output_value         NUMBER        ;
2503 BEGIN
2504 IF g_log_enabled THEN
2505       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_19';
2506 END IF;
2507 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2508       trace
2509          (p_msg      => 'BEGIN of AcctDerRule_19'
2510          ,p_level    => C_LEVEL_PROCEDURE
2511          ,p_module   => l_log_module);
2512 END IF;
2513 --
2514 l_component_type         := 'AMB_ADR';
2515 l_component_code         := 'UER_RULE';
2516 l_component_type_code    := 'S';
2517 l_component_appl_id      :=  275;
2518 l_amb_context_code       := 'DEFAULT';
2519 x_transaction_coa_id     :=  null;
2520 x_accounting_coa_id      :=  null;
2521 --
2522 
2523  --
2524   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2525       trace
2526          (p_msg      => 'END of AcctDerRule_19'
2527          ,p_level    => C_LEVEL_PROCEDURE
2528          ,p_module   => l_log_module);
2529   END IF;
2530   x_value_type_code := 'S';
2531   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_20));
2532   RETURN l_output_value;
2533 
2534 --
2535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2536       trace
2537          (p_msg      => 'END of AcctDerRule_19(invalid)'
2538          ,p_level    => C_LEVEL_PROCEDURE
2539          ,p_module   => l_log_module);
2540 END IF;
2541 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2542 x_value_type_code := null;
2543 l_output_value    := null;
2544 xla_accounting_err_pkg.build_message
2545                  (p_appli_s_name            => 'XLA'
2546                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2547                  ,p_token_1                 => 'COMPONENT_NAME'
2548                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2549                                                             l_component_type
2550                                                           , l_component_code
2551                                                           , l_component_type_code
2552                                                           , l_component_appl_id
2553                                                           , l_amb_context_code
2554                                                           )
2555                  ,p_token_2                 => 'OWNER'
2556                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2557                                                         'XLA_OWNER_TYPE'
2558                                                         ,l_component_type_code
2559                                                         )
2560                  ,p_token_3                 => 'PAD_NAME'
2561                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2565                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2562                  ,p_token_4                 => 'PAD_OWNER'
2563                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2564                                                         'XLA_OWNER_TYPE'
2566                                                         )
2567                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2568                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2569                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2570                  ,p_ae_header_id            => NULL
2571 );
2572 RETURN l_output_value;
2573 EXCEPTION
2574   WHEN xla_exceptions_pkg.application_exception THEN
2575       RAISE;
2576   WHEN OTHERS THEN
2577        xla_exceptions_pkg.raise_message
2578            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctDerRule_19');
2579 END AcctDerRule_19;
2580 --
2581 
2582 ---------------------------------------
2583 --
2584 -- PRIVATE FUNCTION
2585 --         AcctLineType_20
2586 --
2587 ---------------------------------------
2588 PROCEDURE AcctLineType_20 (
2589   p_application_id        IN NUMBER
2590  ,p_event_id              IN NUMBER
2591  ,p_calculate_acctd_flag  IN VARCHAR2
2592  ,p_calculate_g_l_flag    IN VARCHAR2
2593  ,p_actual_flag           IN OUT VARCHAR2
2594  ,p_balance_type_code     OUT VARCHAR2
2595  ,p_gain_or_loss_ref      OUT VARCHAR2
2596  
2597 --Cost CCID
2598  , p_source_3            IN NUMBER
2599 --Allow Account Override Flag
2600  , p_source_4            IN VARCHAR2
2601 --Adjustment Cost CCID
2602  , p_source_5            IN NUMBER
2603 --Cost Clearing CCID
2604  , p_source_6            IN NUMBER
2605 --Exchange Rate Variance Flag
2606  , p_source_21            IN VARCHAR2
2607 --Reversing Line Flag
2608  , p_source_22            IN VARCHAR2
2609 --Actual Upgrade Credit Accounting Class
2610  , p_source_23            IN VARCHAR2
2611 --Entered Raw Cost
2612  , p_source_24            IN NUMBER
2613 --Entered Currency Code
2614  , p_source_25            IN VARCHAR2
2615 --Accounted Raw Cost
2616  , p_source_26            IN NUMBER
2617 --Exchange Rate Date
2618  , p_source_27            IN DATE
2619 --Exchange Rate
2620  , p_source_28            IN NUMBER
2621 --Exchange Rate Type
2622  , p_source_29            IN VARCHAR2
2623 --Actual Upgrade Debit Accounting Class
2624  , p_source_30            IN VARCHAR2
2625 --Use Actuals Upgrade Attributes Flag
2626  , p_source_31            IN VARCHAR2
2627 --Expenditure Item ID
2628  , p_source_32            IN NUMBER
2629 --Cost Distribution Line Number
2630  , p_source_33            IN NUMBER
2631 --Line Type
2632  , p_source_34            IN VARCHAR2
2633  , p_source_34_meaning    IN VARCHAR2
2634 --Reversed Line Number
2635  , p_source_35            IN NUMBER
2636 )
2637 IS
2638 
2639 l_component_type              VARCHAR2(80);
2640 l_component_code              VARCHAR2(30);
2641 l_component_type_code         VARCHAR2(1);
2642 l_component_appl_id           INTEGER;
2643 l_amb_context_code            VARCHAR2(30);
2644 l_entity_code                 VARCHAR2(30);
2645 l_event_class_code            VARCHAR2(30);
2646 l_ae_header_id                NUMBER;
2647 l_event_type_code             VARCHAR2(30);
2648 l_line_definition_code        VARCHAR2(30);
2649 l_line_definition_owner_code  VARCHAR2(1);
2650 --
2651 -- adr variables
2652 l_segment                     VARCHAR2(30);
2653 l_ccid                        NUMBER;
2654 l_adr_transaction_coa_id      NUMBER;
2655 l_adr_accounting_coa_id       NUMBER;
2656 l_adr_flexfield_segment_code  VARCHAR2(30);
2657 l_adr_flex_value_set_id       NUMBER;
2658 l_adr_value_type_code         VARCHAR2(30);
2659 l_adr_value_combination_id    NUMBER;
2660 l_adr_value_segment_code      VARCHAR2(30);
2661 
2662 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2663 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2664 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2665 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2666 
2667 -- 4262811 Variables ------------------------------------------------------------------------------------------
2668 l_entered_amt_idx             NUMBER;
2669 l_accted_amt_idx              NUMBER;
2670 l_acc_rev_flag                VARCHAR2(1);
2671 l_accrual_line_num            NUMBER;
2672 l_tmp_amt                     NUMBER;
2673 l_acc_rev_natural_side_code   VARCHAR2(1);
2674 
2675 l_num_entries                 NUMBER;
2676 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2677 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2678 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2679 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2680 l_recog_line_1                NUMBER;
2681 l_recog_line_2                NUMBER;
2682 
2683 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2684 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2685 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2686 
2687 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2688 
2689 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2690 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2691 
2692 ---------------------------------------------------------------------------------------------------------------
2693 
2694 
2695 --
2696 -- bulk performance
2697 --
2698 l_balance_type_code           VARCHAR2(1);
2702 --
2699 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2700 l_log_module                  VARCHAR2(240);
2701 
2703 -- Upgrade strategy
2704 --
2705 l_actual_upg_option           VARCHAR2(1);
2706 l_enc_upg_option           VARCHAR2(1);
2707 
2708 --
2709 BEGIN
2710 --
2711 IF g_log_enabled THEN
2712       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
2713 END IF;
2714 --
2715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2716 
2717       trace
2718          (p_msg      => 'BEGIN of AcctLineType_20'
2719          ,p_level    => C_LEVEL_PROCEDURE
2720          ,p_module   => l_log_module);
2721 
2722 END IF;
2723 --
2724 l_component_type             := 'AMB_JLT';
2725 l_component_code             := 'EXCHANGE_RATE_VARIANCE';
2726 l_component_type_code        := 'S';
2727 l_component_appl_id          :=  275;
2728 l_amb_context_code           := 'DEFAULT';
2729 l_entity_code                := 'EXPENDITURES';
2730 l_event_class_code           := 'SUPPLIER_COST';
2731 l_event_type_code            := 'SUPPLIER_COST_ALL';
2732 l_line_definition_owner_code := 'S';
2733 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
2734 --
2735 l_balance_type_code          := 'A';
2736 l_segment                     := NULL;
2737 l_ccid                        := NULL;
2738 l_adr_transaction_coa_id      := NULL;
2739 l_adr_accounting_coa_id       := NULL;
2740 l_adr_flexfield_segment_code  := NULL;
2741 l_adr_flex_value_set_id       := NULL;
2742 l_adr_value_type_code         := NULL;
2743 l_adr_value_combination_id    := NULL;
2744 l_adr_value_segment_code      := NULL;
2745 
2746 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2747 l_bflow_class_code           := '';    -- 4219869 Business Flow
2748 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2749 l_budgetary_control_flag     := 'N';
2750 
2751 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2752 l_bflow_applied_to_amt       := NULL; -- 5132302
2753 l_entered_amt_idx            := NULL;          -- 4262811
2754 l_accted_amt_idx             := NULL;          -- 4262811
2755 l_acc_rev_flag               := NULL;          -- 4262811
2756 l_accrual_line_num           := NULL;          -- 4262811
2757 l_tmp_amt                    := NULL;          -- 4262811
2758 --
2759 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
2760             (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
2761                return;
2762   END IF;
2763   
2764 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2765     l_balance_type_code <> 'B' THEN
2766 IF NVL(p_source_21,'
2767 ') =  'Y'
2768  THEN 
2769 
2770    --
2771    XLA_AE_LINES_PKG.SetNewLine;
2772 
2773    p_balance_type_code          := l_balance_type_code;
2774    -- set the flag so later we will know whether the gain loss line needs to be created
2775    
2776    IF(l_balance_type_code = 'A' ) THEN
2777      p_actual_flag :='G';
2778    END IF;
2779 
2780    --
2781    -- bulk performance
2782    --
2783    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2784                                       p_header_num   => 0); -- 4262811
2785    --
2786    -- set accounting line options
2787    --
2788    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2789            p_natural_side_code          => 'D'
2790          , p_gain_or_loss_flag          => 'Y'
2791          , p_gl_transfer_mode_code      => 'S'
2792          , p_acct_entry_type_code       => 'A'
2793          , p_switch_side_flag           => 'Y'
2794          , p_merge_duplicate_code       => 'N'
2795          );
2796    --
2797    l_acc_rev_natural_side_code := 'C';  -- 4262811
2798    -- 
2799    --
2800    -- set accounting line type info
2801    --
2802    xla_ae_lines_pkg.SetAcctLineType
2803       (p_component_type             => l_component_type
2804       ,p_event_type_code            => l_event_type_code
2805       ,p_line_definition_owner_code => l_line_definition_owner_code
2806       ,p_line_definition_code       => l_line_definition_code
2807       ,p_accounting_line_code       => l_component_code
2808       ,p_accounting_line_type_code  => l_component_type_code
2809       ,p_accounting_line_appl_id    => l_component_appl_id
2810       ,p_amb_context_code           => l_amb_context_code
2811       ,p_entity_code                => l_entity_code
2812       ,p_event_class_code           => l_event_class_code);
2813    --
2814    -- set accounting class
2815    --
2816    xla_ae_lines_pkg.SetAcctClass(
2817            p_accounting_class_code  => 'EXCHANGE_RATE_VARIANCE'
2818          , p_ae_header_id           => l_ae_header_id
2819          );
2820 
2821    --
2822    -- set rounding class
2823    --
2824    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2825                       'EXCHANGE_RATE_VARIANCE';
2826 
2827    --
2828    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2829    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2830    --
2831    -- bulk performance
2832    --
2833    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2834 
2835    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2836       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2837 
2838    -- 4955764
2839    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2843    
2840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2841 
2842    -- 4458381 Public Sector Enh
2844    --
2845    -- set accounting attributes for the line type
2846    --
2847    l_entered_amt_idx := 22;
2848    l_accted_amt_idx  := 27;
2849    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2850    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2851    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
2852    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
2853    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
2854    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
2855    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
2856    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
2857    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
2858    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
2859    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
2860    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
2861    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
2862    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
2863    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
2864    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
2865    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
2866    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
2867    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
2868    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
2869    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
2870    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
2871    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
2872    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
2873    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
2874    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
2875    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
2876    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
2877    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
2878    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
2879    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
2880    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
2881    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
2882    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
2883    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
2884    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
2885    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
2886    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
2887    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
2888    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
2889    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
2890    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
2891    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
2892    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
2893    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
2894    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
2895    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
2896    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
2897    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
2898    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
2899    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
2900    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
2901    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
2902    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
2903    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
2904    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
2905    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
2906    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
2907    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
2908    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
2909    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
2910 
2911    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2912    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2913 
2914    ---------------------------------------------------------------------------------------------------------------
2915    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2916    ---------------------------------------------------------------------------------------------------------------
2917    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2918 
2919    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2920    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2921 
2922    IF xla_accounting_cache_pkg.GetValueChar
2923          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2924          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2925    AND l_bflow_method_code = 'PRIOR_ENTRY'
2926 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2927    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2928          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2929        )
2930    THEN
2931          xla_ae_lines_pkg.BflowUpgEntry
2932            (p_business_method_code    => l_bflow_method_code
2933            ,p_business_class_code     => l_bflow_class_code
2934            ,p_balance_type            => l_balance_type_code);
2935    ELSE
2936       NULL;
2940    --
2937 -- No business flow processing for business flow method of NONE.
2938    END IF;
2939 
2941    -- call analytical criteria
2942    --
2943    
2944    --
2945    -- call description
2946    --
2947    -- No description or it is inherited.
2948    --
2949    -- call ADRs
2950    -- Bug 4922099
2951    --
2952    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2953         (NVL(l_actual_upg_option, 'N') = 'O') OR
2954         (NVL(l_enc_upg_option, 'N') = 'O')
2955       )
2956    THEN
2957    NULL;
2958    --
2959    --
2960    
2961   l_ccid := AcctDerRule_3(
2962            p_application_id           => p_application_id
2963          , p_ae_header_id             => l_ae_header_id 
2964 , p_source_3 => p_source_3
2965 , p_source_4 => p_source_4
2966 , p_source_5 => p_source_5
2967          , x_transaction_coa_id       => l_adr_transaction_coa_id
2968          , x_accounting_coa_id        => l_adr_accounting_coa_id
2969          , x_value_type_code          => l_adr_value_type_code
2970          , p_side                     => 'NA'
2971    );
2972 
2973    xla_ae_lines_pkg.set_ccid(
2974     p_code_combination_id          => l_ccid
2975   , p_value_type_code              => l_adr_value_type_code
2976   , p_transaction_coa_id           => l_adr_transaction_coa_id
2977   , p_accounting_coa_id            => l_adr_accounting_coa_id
2978   , p_adr_code                     => 'PA_COST_ACCT_RULE'
2979   , p_adr_type_code                => 'S'
2980   , p_component_type               => l_component_type
2981   , p_component_code               => l_component_code
2982   , p_component_type_code          => l_component_type_code
2983   , p_component_appl_id            => l_component_appl_id
2984   , p_amb_context_code             => l_amb_context_code
2985   , p_side                         => 'NA'
2986   );
2987 
2988 
2989    --
2990    --
2991    END IF;
2992    --
2993    -- Bug 4922099
2994    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2995           (NVL(l_enc_upg_option, 'N') = 'O')
2996         ) AND
2997         (l_bflow_method_code = 'PRIOR_ENTRY')
2998       )
2999    THEN
3000       IF
3001       --
3002       1 = 2
3003       --
3004       THEN
3005       xla_accounting_err_pkg.build_message
3006                                     (p_appli_s_name            => 'XLA'
3007                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3008                                     ,p_token_1                 => 'LINE_NUMBER'
3009                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3010                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3011                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3012                                                                              l_component_type
3013                                                                             ,l_component_code
3014                                                                             ,l_component_type_code
3015                                                                             ,l_component_appl_id
3016                                                                             ,l_amb_context_code
3017                                                                             ,l_entity_code
3018                                                                             ,l_event_class_code
3019                                                                            )
3020                                     ,p_token_3                 => 'OWNER'
3021                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3022                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3023                                                                           ,p_lookup_code    => l_component_type_code
3024                                                                          )
3025                                     ,p_token_4                 => 'PRODUCT_NAME'
3026                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3027                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3028                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3029                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3030                                     ,p_ae_header_id            =>  NULL
3031                                        );
3032 
3033         IF (C_LEVEL_ERROR>= g_log_level) THEN
3034                  trace
3035                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3036                       ,p_level    => C_LEVEL_ERROR
3037                       ,p_module   => l_log_module);
3038         END IF;
3039       END IF;
3040    END IF;
3041    --
3042    --
3043    ------------------------------------------------------------------------------------------------
3044    -- 4219869 Business Flow
3045    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3046    -- Prior Entry.  Currently, the following code is always generated.
3047    ------------------------------------------------------------------------------------------------
3048    XLA_AE_LINES_PKG.ValidateCurrentLine;
3049 
3050    ------------------------------------------------------------------------------------
3051    -- 4219869 Business Flow
3052    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3053    ------------------------------------------------------------------------------------
3054    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3055 
3056    ----------------------------------------------------------------------------------
3060    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3057    -- 4219869 Business Flow
3058    -- Update journal entry status -- Need to generate this within IF <condition>
3059    ----------------------------------------------------------------------------------
3061          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3062          ,p_balance_type_code => l_balance_type_code
3063          );
3064 
3065    -------------------------------------------------------------------------------------------
3066    -- 4262811 - Generate the Accrual Reversal lines
3067    -------------------------------------------------------------------------------------------
3068    BEGIN
3069       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3070                               (g_array_event(p_event_id).array_value_num('header_index'));
3071       IF l_acc_rev_flag IS NULL THEN
3072          l_acc_rev_flag := 'N';
3073       END IF;
3074    EXCEPTION
3075       WHEN OTHERS THEN
3076          l_acc_rev_flag := 'N';
3077    END;
3078    --
3079    IF (l_acc_rev_flag = 'Y') THEN
3080 
3081        -- 4645092  ------------------------------------------------------------------------------
3082        -- To allow MPA report to determine if it should generate report process
3083        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3084        ------------------------------------------------------------------------------------------
3085 
3086        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3087        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3088 
3089        --
3090        -- Update the line information that should be overwritten
3091        --
3092        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3093                                          p_header_num   => 1);
3094        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3095 
3096        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3097 
3098        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3099           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3100        END IF;
3101 
3102       --
3103       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3104       --
3105       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3106           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3107       ELSE
3108           ---------------------------------------------------------------------------------------------------
3109           -- 4262811a Switch Sign
3110           ---------------------------------------------------------------------------------------------------
3111           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3112           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3113                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3114           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3115                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3116           -- 5132302
3117           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3118                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3119 
3120       END IF;
3121 
3122       -- 4955764
3123       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3124       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3125 
3126 
3127       XLA_AE_LINES_PKG.ValidateCurrentLine;
3128       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3129 
3130       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3131                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3132                ,p_balance_type_code => l_balance_type_code);
3133 
3134    END IF;
3135 
3136    -----------------------------------------------------------------------------------------
3137    -- 4262811 Multiperiod Accounting
3138    -----------------------------------------------------------------------------------------
3139      -- No MPA option is assigned.
3140 
3141 
3142 END IF;
3143 END IF;
3144 --
3145 
3146 --
3147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3148    trace
3149       (p_msg      => 'END of AcctLineType_20'
3150       ,p_level    => C_LEVEL_PROCEDURE
3151       ,p_module   => l_log_module);
3152 END IF;
3153 --
3154 EXCEPTION
3155   WHEN xla_exceptions_pkg.application_exception THEN
3156       RAISE;
3157   WHEN OTHERS THEN
3158        xla_exceptions_pkg.raise_message
3159            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_20');
3160 END AcctLineType_20;
3161 --
3162 
3163 ---------------------------------------
3164 --
3165 -- PRIVATE FUNCTION
3166 --         AcctLineType_21
3167 --
3168 ---------------------------------------
3169 PROCEDURE AcctLineType_21 (
3170   p_application_id        IN NUMBER
3171  ,p_event_id              IN NUMBER
3172  ,p_calculate_acctd_flag  IN VARCHAR2
3173  ,p_calculate_g_l_flag    IN VARCHAR2
3174  ,p_actual_flag           IN OUT VARCHAR2
3175  ,p_balance_type_code     OUT VARCHAR2
3176  ,p_gain_or_loss_ref      OUT VARCHAR2
3177  
3178 --Cost CCID
3179  , p_source_3            IN NUMBER
3180 --Allow Account Override Flag
3181  , p_source_4            IN VARCHAR2
3182 --Adjustment Cost CCID
3183  , p_source_5            IN NUMBER
3184 --Cost Clearing CCID
3188 --Reversing Line Flag
3185  , p_source_6            IN NUMBER
3186 --Exchange Rate Variance Flag
3187  , p_source_21            IN VARCHAR2
3189  , p_source_22            IN VARCHAR2
3190 --Actual Upgrade Credit Accounting Class
3191  , p_source_23            IN VARCHAR2
3192 --Entered Raw Cost
3193  , p_source_24            IN NUMBER
3194 --Entered Currency Code
3195  , p_source_25            IN VARCHAR2
3196 --Accounted Raw Cost
3197  , p_source_26            IN NUMBER
3198 --Exchange Rate Date
3199  , p_source_27            IN DATE
3200 --Exchange Rate
3201  , p_source_28            IN NUMBER
3202 --Exchange Rate Type
3203  , p_source_29            IN VARCHAR2
3204 --Actual Upgrade Debit Accounting Class
3205  , p_source_30            IN VARCHAR2
3206 --Use Actuals Upgrade Attributes Flag
3207  , p_source_31            IN VARCHAR2
3208 --Expenditure Item ID
3209  , p_source_32            IN NUMBER
3210 --Cost Distribution Line Number
3211  , p_source_33            IN NUMBER
3212 --Line Type
3213  , p_source_34            IN VARCHAR2
3214  , p_source_34_meaning    IN VARCHAR2
3215 --Reversed Line Number
3216  , p_source_35            IN NUMBER
3217 )
3218 IS
3219 
3220 l_component_type              VARCHAR2(80);
3221 l_component_code              VARCHAR2(30);
3222 l_component_type_code         VARCHAR2(1);
3223 l_component_appl_id           INTEGER;
3224 l_amb_context_code            VARCHAR2(30);
3225 l_entity_code                 VARCHAR2(30);
3226 l_event_class_code            VARCHAR2(30);
3227 l_ae_header_id                NUMBER;
3228 l_event_type_code             VARCHAR2(30);
3229 l_line_definition_code        VARCHAR2(30);
3230 l_line_definition_owner_code  VARCHAR2(1);
3231 --
3232 -- adr variables
3233 l_segment                     VARCHAR2(30);
3234 l_ccid                        NUMBER;
3235 l_adr_transaction_coa_id      NUMBER;
3236 l_adr_accounting_coa_id       NUMBER;
3237 l_adr_flexfield_segment_code  VARCHAR2(30);
3238 l_adr_flex_value_set_id       NUMBER;
3239 l_adr_value_type_code         VARCHAR2(30);
3240 l_adr_value_combination_id    NUMBER;
3241 l_adr_value_segment_code      VARCHAR2(30);
3242 
3243 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3244 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3245 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3246 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3247 
3248 -- 4262811 Variables ------------------------------------------------------------------------------------------
3249 l_entered_amt_idx             NUMBER;
3250 l_accted_amt_idx              NUMBER;
3251 l_acc_rev_flag                VARCHAR2(1);
3252 l_accrual_line_num            NUMBER;
3253 l_tmp_amt                     NUMBER;
3254 l_acc_rev_natural_side_code   VARCHAR2(1);
3255 
3256 l_num_entries                 NUMBER;
3257 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3258 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3259 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3260 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3261 l_recog_line_1                NUMBER;
3262 l_recog_line_2                NUMBER;
3263 
3264 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3265 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3266 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3267 
3268 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3269 
3270 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3271 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3272 
3273 ---------------------------------------------------------------------------------------------------------------
3274 
3275 
3276 --
3277 -- bulk performance
3278 --
3279 l_balance_type_code           VARCHAR2(1);
3280 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3281 l_log_module                  VARCHAR2(240);
3282 
3283 --
3284 -- Upgrade strategy
3285 --
3286 l_actual_upg_option           VARCHAR2(1);
3287 l_enc_upg_option           VARCHAR2(1);
3288 
3289 --
3290 BEGIN
3291 --
3292 IF g_log_enabled THEN
3293       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
3294 END IF;
3295 --
3296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3297 
3298       trace
3299          (p_msg      => 'BEGIN of AcctLineType_21'
3300          ,p_level    => C_LEVEL_PROCEDURE
3301          ,p_module   => l_log_module);
3302 
3303 END IF;
3304 --
3305 l_component_type             := 'AMB_JLT';
3306 l_component_code             := 'EXCHANGE_RATE_VARIANCE';
3307 l_component_type_code        := 'S';
3308 l_component_appl_id          :=  275;
3309 l_amb_context_code           := 'DEFAULT';
3310 l_entity_code                := 'EXPENDITURES';
3311 l_event_class_code           := 'SUPPLIER_COST_ADJ';
3312 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
3313 l_line_definition_owner_code := 'S';
3314 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
3315 --
3316 l_balance_type_code          := 'A';
3317 l_segment                     := NULL;
3318 l_ccid                        := NULL;
3319 l_adr_transaction_coa_id      := NULL;
3320 l_adr_accounting_coa_id       := NULL;
3321 l_adr_flexfield_segment_code  := NULL;
3322 l_adr_flex_value_set_id       := NULL;
3323 l_adr_value_type_code         := NULL;
3324 l_adr_value_combination_id    := NULL;
3325 l_adr_value_segment_code      := NULL;
3326 
3327 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3328 l_bflow_class_code           := '';    -- 4219869 Business Flow
3332 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3329 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3330 l_budgetary_control_flag     := 'N';
3331 
3333 l_bflow_applied_to_amt       := NULL; -- 5132302
3334 l_entered_amt_idx            := NULL;          -- 4262811
3335 l_accted_amt_idx             := NULL;          -- 4262811
3336 l_acc_rev_flag               := NULL;          -- 4262811
3337 l_accrual_line_num           := NULL;          -- 4262811
3338 l_tmp_amt                    := NULL;          -- 4262811
3339 --
3340 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
3341             (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
3342                return;
3343   END IF;
3344   
3345 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3346     l_balance_type_code <> 'B' THEN
3347 IF NVL(p_source_21,'
3348 ') =  'Y'
3349  THEN 
3350 
3351    --
3352    XLA_AE_LINES_PKG.SetNewLine;
3353 
3354    p_balance_type_code          := l_balance_type_code;
3355    -- set the flag so later we will know whether the gain loss line needs to be created
3356    
3357    IF(l_balance_type_code = 'A' ) THEN
3358      p_actual_flag :='G';
3359    END IF;
3360 
3361    --
3362    -- bulk performance
3363    --
3364    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3365                                       p_header_num   => 0); -- 4262811
3366    --
3367    -- set accounting line options
3368    --
3369    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3370            p_natural_side_code          => 'D'
3371          , p_gain_or_loss_flag          => 'Y'
3372          , p_gl_transfer_mode_code      => 'S'
3373          , p_acct_entry_type_code       => 'A'
3374          , p_switch_side_flag           => 'Y'
3375          , p_merge_duplicate_code       => 'N'
3376          );
3377    --
3378    l_acc_rev_natural_side_code := 'C';  -- 4262811
3379    -- 
3380    --
3381    -- set accounting line type info
3382    --
3383    xla_ae_lines_pkg.SetAcctLineType
3384       (p_component_type             => l_component_type
3385       ,p_event_type_code            => l_event_type_code
3386       ,p_line_definition_owner_code => l_line_definition_owner_code
3387       ,p_line_definition_code       => l_line_definition_code
3388       ,p_accounting_line_code       => l_component_code
3389       ,p_accounting_line_type_code  => l_component_type_code
3390       ,p_accounting_line_appl_id    => l_component_appl_id
3391       ,p_amb_context_code           => l_amb_context_code
3392       ,p_entity_code                => l_entity_code
3393       ,p_event_class_code           => l_event_class_code);
3394    --
3395    -- set accounting class
3396    --
3397    xla_ae_lines_pkg.SetAcctClass(
3398            p_accounting_class_code  => 'EXCHANGE_RATE_VARIANCE'
3399          , p_ae_header_id           => l_ae_header_id
3400          );
3401 
3402    --
3403    -- set rounding class
3404    --
3405    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3406                       'EXCHANGE_RATE_VARIANCE';
3407 
3408    --
3409    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3410    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3411    --
3412    -- bulk performance
3413    --
3414    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3415 
3416    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3417       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3418 
3419    -- 4955764
3420    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3421       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3422 
3423    -- 4458381 Public Sector Enh
3424    
3425    --
3426    -- set accounting attributes for the line type
3427    --
3428    l_entered_amt_idx := 22;
3429    l_accted_amt_idx  := 27;
3430    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3431    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3432    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
3433    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
3434    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
3435    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
3436    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
3437    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
3438    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
3439    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
3440    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
3441    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
3442    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
3443    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
3444    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
3445    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
3446    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
3447    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
3448    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
3449    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
3450    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
3451    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
3452    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
3456    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
3453    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
3454    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
3455    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
3457    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
3458    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
3459    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
3460    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
3461    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
3462    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
3463    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
3464    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
3465    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
3466    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
3467    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
3468    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
3469    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
3470    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
3471    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
3472    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
3473    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
3474    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
3475    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
3476    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
3477    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
3478    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
3479    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
3480    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
3481    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
3482    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
3483    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
3484    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
3485    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
3486    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
3487    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
3488    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
3489    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
3490    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
3491 
3492    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3493    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3494 
3495    ---------------------------------------------------------------------------------------------------------------
3496    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3497    ---------------------------------------------------------------------------------------------------------------
3498    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3499 
3500    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3501    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3502 
3503    IF xla_accounting_cache_pkg.GetValueChar
3504          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3505          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3506    AND l_bflow_method_code = 'PRIOR_ENTRY'
3507 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3508    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3509          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3510        )
3511    THEN
3512          xla_ae_lines_pkg.BflowUpgEntry
3513            (p_business_method_code    => l_bflow_method_code
3514            ,p_business_class_code     => l_bflow_class_code
3515            ,p_balance_type            => l_balance_type_code);
3516    ELSE
3517       NULL;
3518 -- No business flow processing for business flow method of NONE.
3519    END IF;
3520 
3521    --
3522    -- call analytical criteria
3523    --
3524    
3525    --
3526    -- call description
3527    --
3528    -- No description or it is inherited.
3529    --
3530    -- call ADRs
3531    -- Bug 4922099
3532    --
3533    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3534         (NVL(l_actual_upg_option, 'N') = 'O') OR
3535         (NVL(l_enc_upg_option, 'N') = 'O')
3536       )
3537    THEN
3538    NULL;
3539    --
3540    --
3541    
3542   l_ccid := AcctDerRule_4(
3543            p_application_id           => p_application_id
3544          , p_ae_header_id             => l_ae_header_id 
3545 , p_source_4 => p_source_4
3546 , p_source_5 => p_source_5
3547          , x_transaction_coa_id       => l_adr_transaction_coa_id
3548          , x_accounting_coa_id        => l_adr_accounting_coa_id
3549          , x_value_type_code          => l_adr_value_type_code
3550          , p_side                     => 'NA'
3551    );
3552 
3553    xla_ae_lines_pkg.set_ccid(
3554     p_code_combination_id          => l_ccid
3555   , p_value_type_code              => l_adr_value_type_code
3556   , p_transaction_coa_id           => l_adr_transaction_coa_id
3557   , p_accounting_coa_id            => l_adr_accounting_coa_id
3558   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
3559   , p_adr_type_code                => 'S'
3560   , p_component_type               => l_component_type
3561   , p_component_code               => l_component_code
3562   , p_component_type_code          => l_component_type_code
3563   , p_component_appl_id            => l_component_appl_id
3564   , p_amb_context_code             => l_amb_context_code
3568 
3565   , p_side                         => 'NA'
3566   );
3567 
3569    --
3570    --
3571    END IF;
3572    --
3573    -- Bug 4922099
3574    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3575           (NVL(l_enc_upg_option, 'N') = 'O')
3576         ) AND
3577         (l_bflow_method_code = 'PRIOR_ENTRY')
3578       )
3579    THEN
3580       IF
3581       --
3582       1 = 2
3583       --
3584       THEN
3585       xla_accounting_err_pkg.build_message
3586                                     (p_appli_s_name            => 'XLA'
3587                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3588                                     ,p_token_1                 => 'LINE_NUMBER'
3589                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3590                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3591                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3592                                                                              l_component_type
3593                                                                             ,l_component_code
3594                                                                             ,l_component_type_code
3595                                                                             ,l_component_appl_id
3596                                                                             ,l_amb_context_code
3597                                                                             ,l_entity_code
3598                                                                             ,l_event_class_code
3599                                                                            )
3600                                     ,p_token_3                 => 'OWNER'
3601                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3602                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3603                                                                           ,p_lookup_code    => l_component_type_code
3604                                                                          )
3605                                     ,p_token_4                 => 'PRODUCT_NAME'
3606                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3607                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3608                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3609                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3610                                     ,p_ae_header_id            =>  NULL
3611                                        );
3612 
3613         IF (C_LEVEL_ERROR>= g_log_level) THEN
3614                  trace
3615                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3616                       ,p_level    => C_LEVEL_ERROR
3617                       ,p_module   => l_log_module);
3618         END IF;
3619       END IF;
3620    END IF;
3621    --
3622    --
3623    ------------------------------------------------------------------------------------------------
3624    -- 4219869 Business Flow
3625    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3626    -- Prior Entry.  Currently, the following code is always generated.
3627    ------------------------------------------------------------------------------------------------
3628    XLA_AE_LINES_PKG.ValidateCurrentLine;
3629 
3630    ------------------------------------------------------------------------------------
3631    -- 4219869 Business Flow
3632    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3633    ------------------------------------------------------------------------------------
3634    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3635 
3636    ----------------------------------------------------------------------------------
3637    -- 4219869 Business Flow
3638    -- Update journal entry status -- Need to generate this within IF <condition>
3639    ----------------------------------------------------------------------------------
3640    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3641          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3642          ,p_balance_type_code => l_balance_type_code
3643          );
3644 
3645    -------------------------------------------------------------------------------------------
3646    -- 4262811 - Generate the Accrual Reversal lines
3647    -------------------------------------------------------------------------------------------
3648    BEGIN
3649       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3650                               (g_array_event(p_event_id).array_value_num('header_index'));
3651       IF l_acc_rev_flag IS NULL THEN
3652          l_acc_rev_flag := 'N';
3653       END IF;
3654    EXCEPTION
3655       WHEN OTHERS THEN
3656          l_acc_rev_flag := 'N';
3657    END;
3658    --
3659    IF (l_acc_rev_flag = 'Y') THEN
3660 
3661        -- 4645092  ------------------------------------------------------------------------------
3662        -- To allow MPA report to determine if it should generate report process
3663        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3664        ------------------------------------------------------------------------------------------
3665 
3666        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3667        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3668 
3669        --
3670        -- Update the line information that should be overwritten
3671        --
3672        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3673                                          p_header_num   => 1);
3677 
3674        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3675 
3676        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3678        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3679           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3680        END IF;
3681 
3682       --
3683       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3684       --
3685       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3686           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3687       ELSE
3688           ---------------------------------------------------------------------------------------------------
3689           -- 4262811a Switch Sign
3690           ---------------------------------------------------------------------------------------------------
3691           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3692           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3693                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3694           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3695                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3696           -- 5132302
3697           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3698                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3699 
3700       END IF;
3701 
3702       -- 4955764
3703       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3704       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3705 
3706 
3707       XLA_AE_LINES_PKG.ValidateCurrentLine;
3708       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3709 
3710       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3711                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3712                ,p_balance_type_code => l_balance_type_code);
3713 
3714    END IF;
3715 
3716    -----------------------------------------------------------------------------------------
3717    -- 4262811 Multiperiod Accounting
3718    -----------------------------------------------------------------------------------------
3719      -- No MPA option is assigned.
3720 
3721 
3722 END IF;
3723 END IF;
3724 --
3725 
3726 --
3727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3728    trace
3729       (p_msg      => 'END of AcctLineType_21'
3730       ,p_level    => C_LEVEL_PROCEDURE
3731       ,p_module   => l_log_module);
3732 END IF;
3733 --
3734 EXCEPTION
3735   WHEN xla_exceptions_pkg.application_exception THEN
3736       RAISE;
3737   WHEN OTHERS THEN
3738        xla_exceptions_pkg.raise_message
3739            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_21');
3740 END AcctLineType_21;
3741 --
3742 
3743 ---------------------------------------
3744 --
3745 -- PRIVATE FUNCTION
3746 --         AcctLineType_22
3747 --
3748 ---------------------------------------
3749 PROCEDURE AcctLineType_22 (
3750   p_application_id        IN NUMBER
3751  ,p_event_id              IN NUMBER
3752  ,p_calculate_acctd_flag  IN VARCHAR2
3753  ,p_calculate_g_l_flag    IN VARCHAR2
3754  ,p_actual_flag           IN OUT VARCHAR2
3755  ,p_balance_type_code     OUT VARCHAR2
3756  ,p_gain_or_loss_ref      OUT VARCHAR2
3757  
3758 --Cost CCID
3759  , p_source_3            IN NUMBER
3760 --Allow Account Override Flag
3761  , p_source_4            IN VARCHAR2
3762 --Cost Clearing CCID
3763  , p_source_6            IN NUMBER
3764 --Adjustment Cost Clearing CCID
3765  , p_source_7            IN NUMBER
3766 --Exchange Rate Variance Flag
3767  , p_source_21            IN VARCHAR2
3768 --Reversing Line Flag
3769  , p_source_22            IN VARCHAR2
3770 --Actual Upgrade Credit Accounting Class
3771  , p_source_23            IN VARCHAR2
3772 --Entered Raw Cost
3773  , p_source_24            IN NUMBER
3774 --Entered Currency Code
3775  , p_source_25            IN VARCHAR2
3776 --Accounted Raw Cost
3777  , p_source_26            IN NUMBER
3778 --Exchange Rate Date
3779  , p_source_27            IN DATE
3780 --Exchange Rate
3781  , p_source_28            IN NUMBER
3782 --Exchange Rate Type
3783  , p_source_29            IN VARCHAR2
3784 --Actual Upgrade Debit Accounting Class
3785  , p_source_30            IN VARCHAR2
3786 --Use Actuals Upgrade Attributes Flag
3787  , p_source_31            IN VARCHAR2
3788 --Expenditure Item ID
3789  , p_source_32            IN NUMBER
3790 --Cost Distribution Line Number
3791  , p_source_33            IN NUMBER
3792 --Line Type
3793  , p_source_34            IN VARCHAR2
3794  , p_source_34_meaning    IN VARCHAR2
3795 --Reversed Line Number
3796  , p_source_35            IN NUMBER
3797 )
3798 IS
3799 
3800 l_component_type              VARCHAR2(80);
3801 l_component_code              VARCHAR2(30);
3802 l_component_type_code         VARCHAR2(1);
3803 l_component_appl_id           INTEGER;
3804 l_amb_context_code            VARCHAR2(30);
3805 l_entity_code                 VARCHAR2(30);
3806 l_event_class_code            VARCHAR2(30);
3807 l_ae_header_id                NUMBER;
3808 l_event_type_code             VARCHAR2(30);
3809 l_line_definition_code        VARCHAR2(30);
3810 l_line_definition_owner_code  VARCHAR2(1);
3811 --
3812 -- adr variables
3816 l_adr_accounting_coa_id       NUMBER;
3813 l_segment                     VARCHAR2(30);
3814 l_ccid                        NUMBER;
3815 l_adr_transaction_coa_id      NUMBER;
3817 l_adr_flexfield_segment_code  VARCHAR2(30);
3818 l_adr_flex_value_set_id       NUMBER;
3819 l_adr_value_type_code         VARCHAR2(30);
3820 l_adr_value_combination_id    NUMBER;
3821 l_adr_value_segment_code      VARCHAR2(30);
3822 
3823 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3824 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3825 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3826 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3827 
3828 -- 4262811 Variables ------------------------------------------------------------------------------------------
3829 l_entered_amt_idx             NUMBER;
3830 l_accted_amt_idx              NUMBER;
3831 l_acc_rev_flag                VARCHAR2(1);
3832 l_accrual_line_num            NUMBER;
3833 l_tmp_amt                     NUMBER;
3834 l_acc_rev_natural_side_code   VARCHAR2(1);
3835 
3836 l_num_entries                 NUMBER;
3837 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3838 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3839 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3840 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3841 l_recog_line_1                NUMBER;
3842 l_recog_line_2                NUMBER;
3843 
3844 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3845 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3846 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3847 
3848 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3849 
3850 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3851 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3852 
3853 ---------------------------------------------------------------------------------------------------------------
3854 
3855 
3856 --
3857 -- bulk performance
3858 --
3859 l_balance_type_code           VARCHAR2(1);
3860 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3861 l_log_module                  VARCHAR2(240);
3862 
3863 --
3864 -- Upgrade strategy
3865 --
3866 l_actual_upg_option           VARCHAR2(1);
3867 l_enc_upg_option           VARCHAR2(1);
3868 
3869 --
3870 BEGIN
3871 --
3872 IF g_log_enabled THEN
3873       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
3874 END IF;
3875 --
3876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3877 
3878       trace
3879          (p_msg      => 'BEGIN of AcctLineType_22'
3880          ,p_level    => C_LEVEL_PROCEDURE
3881          ,p_module   => l_log_module);
3882 
3883 END IF;
3884 --
3885 l_component_type             := 'AMB_JLT';
3886 l_component_code             := 'EXCHANGE_RATE_VAR_CLEARING';
3887 l_component_type_code        := 'S';
3888 l_component_appl_id          :=  275;
3889 l_amb_context_code           := 'DEFAULT';
3890 l_entity_code                := 'EXPENDITURES';
3891 l_event_class_code           := 'SUPPLIER_COST_ADJ';
3892 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
3893 l_line_definition_owner_code := 'S';
3894 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
3895 --
3896 l_balance_type_code          := 'A';
3897 l_segment                     := NULL;
3898 l_ccid                        := NULL;
3899 l_adr_transaction_coa_id      := NULL;
3900 l_adr_accounting_coa_id       := NULL;
3901 l_adr_flexfield_segment_code  := NULL;
3902 l_adr_flex_value_set_id       := NULL;
3903 l_adr_value_type_code         := NULL;
3904 l_adr_value_combination_id    := NULL;
3905 l_adr_value_segment_code      := NULL;
3906 
3907 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3908 l_bflow_class_code           := '';    -- 4219869 Business Flow
3909 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3910 l_budgetary_control_flag     := 'N';
3911 
3912 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3913 l_bflow_applied_to_amt       := NULL; -- 5132302
3914 l_entered_amt_idx            := NULL;          -- 4262811
3915 l_accted_amt_idx             := NULL;          -- 4262811
3916 l_acc_rev_flag               := NULL;          -- 4262811
3917 l_accrual_line_num           := NULL;          -- 4262811
3918 l_tmp_amt                    := NULL;          -- 4262811
3919 --
3920 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
3921             (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
3922                return;
3923   END IF;
3924   
3925 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3926     l_balance_type_code <> 'B' THEN
3927 IF NVL(p_source_21,'
3928 ') =  'Y'
3929  THEN 
3930 
3931    --
3932    XLA_AE_LINES_PKG.SetNewLine;
3933 
3934    p_balance_type_code          := l_balance_type_code;
3935    -- set the flag so later we will know whether the gain loss line needs to be created
3936    
3937    IF(l_balance_type_code = 'A' ) THEN
3938      p_actual_flag :='G';
3939    END IF;
3940 
3941    --
3942    -- bulk performance
3943    --
3944    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3945                                       p_header_num   => 0); -- 4262811
3946    --
3947    -- set accounting line options
3948    --
3949    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3953          , p_acct_entry_type_code       => 'A'
3950            p_natural_side_code          => 'C'
3951          , p_gain_or_loss_flag          => 'Y'
3952          , p_gl_transfer_mode_code      => 'S'
3954          , p_switch_side_flag           => 'Y'
3955          , p_merge_duplicate_code       => 'N'
3956          );
3957    --
3958    l_acc_rev_natural_side_code := 'D';  -- 4262811
3959    -- 
3960    --
3961    -- set accounting line type info
3962    --
3963    xla_ae_lines_pkg.SetAcctLineType
3964       (p_component_type             => l_component_type
3965       ,p_event_type_code            => l_event_type_code
3966       ,p_line_definition_owner_code => l_line_definition_owner_code
3967       ,p_line_definition_code       => l_line_definition_code
3968       ,p_accounting_line_code       => l_component_code
3969       ,p_accounting_line_type_code  => l_component_type_code
3970       ,p_accounting_line_appl_id    => l_component_appl_id
3971       ,p_amb_context_code           => l_amb_context_code
3972       ,p_entity_code                => l_entity_code
3973       ,p_event_class_code           => l_event_class_code);
3974    --
3975    -- set accounting class
3976    --
3977    xla_ae_lines_pkg.SetAcctClass(
3978            p_accounting_class_code  => 'COST_CLEARING'
3979          , p_ae_header_id           => l_ae_header_id
3980          );
3981 
3982    --
3983    -- set rounding class
3984    --
3985    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3986                       'COST_CLEARING';
3987 
3988    --
3989    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3990    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3991    --
3992    -- bulk performance
3993    --
3994    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3995 
3996    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3997       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3998 
3999    -- 4955764
4000    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4001       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4002 
4003    -- 4458381 Public Sector Enh
4004    
4005    --
4006    -- set accounting attributes for the line type
4007    --
4008    l_entered_amt_idx := 22;
4009    l_accted_amt_idx  := 27;
4010    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4011    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4012    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
4013    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
4014    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
4015    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
4016    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
4017    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
4018    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
4019    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
4020    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
4021    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
4022    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
4023    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
4024    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
4025    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
4026    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
4027    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
4028    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
4029    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
4030    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
4031    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
4032    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
4033    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
4034    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
4035    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
4036    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
4037    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
4038    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
4039    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
4040    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
4041    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
4042    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
4043    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
4044    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
4045    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
4046    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
4047    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
4048    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
4049    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
4050    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
4051    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
4052    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
4053    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
4054    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
4055    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
4056    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
4057    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
4058    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
4059    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
4063    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
4060    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
4061    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
4062    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
4064    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
4065    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
4066    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
4067    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
4068    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
4069    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
4070    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
4071 
4072    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4073    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4074 
4075    ---------------------------------------------------------------------------------------------------------------
4076    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4077    ---------------------------------------------------------------------------------------------------------------
4078    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4079 
4080    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4081    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4082 
4083    IF xla_accounting_cache_pkg.GetValueChar
4084          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4085          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4086    AND l_bflow_method_code = 'PRIOR_ENTRY'
4087 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4088    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4089          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4090        )
4091    THEN
4092          xla_ae_lines_pkg.BflowUpgEntry
4093            (p_business_method_code    => l_bflow_method_code
4094            ,p_business_class_code     => l_bflow_class_code
4095            ,p_balance_type            => l_balance_type_code);
4096    ELSE
4097       NULL;
4098 -- No business flow processing for business flow method of NONE.
4099    END IF;
4100 
4101    --
4102    -- call analytical criteria
4103    --
4104    
4105    --
4106    -- call description
4107    --
4108    -- No description or it is inherited.
4109    --
4110    -- call ADRs
4111    -- Bug 4922099
4112    --
4113    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4114         (NVL(l_actual_upg_option, 'N') = 'O') OR
4115         (NVL(l_enc_upg_option, 'N') = 'O')
4116       )
4117    THEN
4118    NULL;
4119    --
4120    --
4121    
4122   l_ccid := AcctDerRule_6(
4123            p_application_id           => p_application_id
4124          , p_ae_header_id             => l_ae_header_id 
4125 , p_source_4 => p_source_4
4126 , p_source_7 => p_source_7
4127          , x_transaction_coa_id       => l_adr_transaction_coa_id
4128          , x_accounting_coa_id        => l_adr_accounting_coa_id
4129          , x_value_type_code          => l_adr_value_type_code
4130          , p_side                     => 'NA'
4131    );
4132 
4133    xla_ae_lines_pkg.set_ccid(
4134     p_code_combination_id          => l_ccid
4135   , p_value_type_code              => l_adr_value_type_code
4136   , p_transaction_coa_id           => l_adr_transaction_coa_id
4137   , p_accounting_coa_id            => l_adr_accounting_coa_id
4138   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
4139   , p_adr_type_code                => 'S'
4140   , p_component_type               => l_component_type
4141   , p_component_code               => l_component_code
4142   , p_component_type_code          => l_component_type_code
4143   , p_component_appl_id            => l_component_appl_id
4144   , p_amb_context_code             => l_amb_context_code
4145   , p_side                         => 'NA'
4146   );
4147 
4148 
4149    --
4150    --
4151    END IF;
4152    --
4153    -- Bug 4922099
4154    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4155           (NVL(l_enc_upg_option, 'N') = 'O')
4156         ) AND
4157         (l_bflow_method_code = 'PRIOR_ENTRY')
4158       )
4159    THEN
4160       IF
4161       --
4162       1 = 2
4163       --
4164       THEN
4165       xla_accounting_err_pkg.build_message
4166                                     (p_appli_s_name            => 'XLA'
4167                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4168                                     ,p_token_1                 => 'LINE_NUMBER'
4169                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4170                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4171                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4172                                                                              l_component_type
4173                                                                             ,l_component_code
4174                                                                             ,l_component_type_code
4175                                                                             ,l_component_appl_id
4176                                                                             ,l_amb_context_code
4177                                                                             ,l_entity_code
4178                                                                             ,l_event_class_code
4179                                                                            )
4183                                                                           ,p_lookup_code    => l_component_type_code
4180                                     ,p_token_3                 => 'OWNER'
4181                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4182                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4184                                                                          )
4185                                     ,p_token_4                 => 'PRODUCT_NAME'
4186                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4187                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4188                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4189                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4190                                     ,p_ae_header_id            =>  NULL
4191                                        );
4192 
4193         IF (C_LEVEL_ERROR>= g_log_level) THEN
4194                  trace
4195                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4196                       ,p_level    => C_LEVEL_ERROR
4197                       ,p_module   => l_log_module);
4198         END IF;
4199       END IF;
4200    END IF;
4201    --
4202    --
4203    ------------------------------------------------------------------------------------------------
4204    -- 4219869 Business Flow
4205    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4206    -- Prior Entry.  Currently, the following code is always generated.
4207    ------------------------------------------------------------------------------------------------
4208    XLA_AE_LINES_PKG.ValidateCurrentLine;
4209 
4210    ------------------------------------------------------------------------------------
4211    -- 4219869 Business Flow
4212    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4213    ------------------------------------------------------------------------------------
4214    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4215 
4216    ----------------------------------------------------------------------------------
4217    -- 4219869 Business Flow
4218    -- Update journal entry status -- Need to generate this within IF <condition>
4219    ----------------------------------------------------------------------------------
4220    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4221          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4222          ,p_balance_type_code => l_balance_type_code
4223          );
4224 
4225    -------------------------------------------------------------------------------------------
4226    -- 4262811 - Generate the Accrual Reversal lines
4227    -------------------------------------------------------------------------------------------
4228    BEGIN
4229       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4230                               (g_array_event(p_event_id).array_value_num('header_index'));
4231       IF l_acc_rev_flag IS NULL THEN
4232          l_acc_rev_flag := 'N';
4233       END IF;
4234    EXCEPTION
4235       WHEN OTHERS THEN
4236          l_acc_rev_flag := 'N';
4237    END;
4238    --
4239    IF (l_acc_rev_flag = 'Y') THEN
4240 
4241        -- 4645092  ------------------------------------------------------------------------------
4242        -- To allow MPA report to determine if it should generate report process
4243        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4244        ------------------------------------------------------------------------------------------
4245 
4246        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4247        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4248 
4249        --
4250        -- Update the line information that should be overwritten
4251        --
4252        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4253                                          p_header_num   => 1);
4254        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4255 
4256        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4257 
4258        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4259           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4260        END IF;
4261 
4262       --
4263       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4264       --
4265       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4266           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4267       ELSE
4268           ---------------------------------------------------------------------------------------------------
4269           -- 4262811a Switch Sign
4270           ---------------------------------------------------------------------------------------------------
4271           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4272           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4273                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4274           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4275                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4276           -- 5132302
4277           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4278                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4279 
4283       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4280       END IF;
4281 
4282       -- 4955764
4284       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4285 
4286 
4287       XLA_AE_LINES_PKG.ValidateCurrentLine;
4288       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4289 
4290       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4291                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4292                ,p_balance_type_code => l_balance_type_code);
4293 
4294    END IF;
4295 
4296    -----------------------------------------------------------------------------------------
4297    -- 4262811 Multiperiod Accounting
4298    -----------------------------------------------------------------------------------------
4299      -- No MPA option is assigned.
4300 
4301 
4302 END IF;
4303 END IF;
4304 --
4305 
4306 --
4307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4308    trace
4309       (p_msg      => 'END of AcctLineType_22'
4310       ,p_level    => C_LEVEL_PROCEDURE
4311       ,p_module   => l_log_module);
4312 END IF;
4313 --
4314 EXCEPTION
4315   WHEN xla_exceptions_pkg.application_exception THEN
4316       RAISE;
4317   WHEN OTHERS THEN
4318        xla_exceptions_pkg.raise_message
4319            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_22');
4320 END AcctLineType_22;
4321 --
4322 
4323 ---------------------------------------
4324 --
4325 -- PRIVATE FUNCTION
4326 --         AcctLineType_23
4327 --
4328 ---------------------------------------
4329 PROCEDURE AcctLineType_23 (
4330   p_application_id        IN NUMBER
4331  ,p_event_id              IN NUMBER
4332  ,p_calculate_acctd_flag  IN VARCHAR2
4333  ,p_calculate_g_l_flag    IN VARCHAR2
4334  ,p_actual_flag           IN OUT VARCHAR2
4335  ,p_balance_type_code     OUT VARCHAR2
4336  ,p_gain_or_loss_ref      OUT VARCHAR2
4337  
4338 --Cost CCID
4339  , p_source_3            IN NUMBER
4340 --Allow Account Override Flag
4341  , p_source_4            IN VARCHAR2
4342 --Cost Clearing CCID
4343  , p_source_6            IN NUMBER
4344 --Adjustment Cost Clearing CCID
4345  , p_source_7            IN NUMBER
4346 --Exchange Rate Variance Flag
4347  , p_source_21            IN VARCHAR2
4348 --Reversing Line Flag
4349  , p_source_22            IN VARCHAR2
4350 --Actual Upgrade Credit Accounting Class
4351  , p_source_23            IN VARCHAR2
4352 --Entered Raw Cost
4353  , p_source_24            IN NUMBER
4354 --Entered Currency Code
4355  , p_source_25            IN VARCHAR2
4356 --Accounted Raw Cost
4357  , p_source_26            IN NUMBER
4358 --Exchange Rate Date
4359  , p_source_27            IN DATE
4360 --Exchange Rate
4361  , p_source_28            IN NUMBER
4362 --Exchange Rate Type
4363  , p_source_29            IN VARCHAR2
4364 --Actual Upgrade Debit Accounting Class
4365  , p_source_30            IN VARCHAR2
4366 --Use Actuals Upgrade Attributes Flag
4367  , p_source_31            IN VARCHAR2
4368 --Expenditure Item ID
4369  , p_source_32            IN NUMBER
4370 --Cost Distribution Line Number
4371  , p_source_33            IN NUMBER
4372 --Line Type
4373  , p_source_34            IN VARCHAR2
4374  , p_source_34_meaning    IN VARCHAR2
4375 --Reversed Line Number
4376  , p_source_35            IN NUMBER
4377 )
4378 IS
4379 
4380 l_component_type              VARCHAR2(80);
4381 l_component_code              VARCHAR2(30);
4382 l_component_type_code         VARCHAR2(1);
4383 l_component_appl_id           INTEGER;
4384 l_amb_context_code            VARCHAR2(30);
4385 l_entity_code                 VARCHAR2(30);
4386 l_event_class_code            VARCHAR2(30);
4387 l_ae_header_id                NUMBER;
4388 l_event_type_code             VARCHAR2(30);
4389 l_line_definition_code        VARCHAR2(30);
4390 l_line_definition_owner_code  VARCHAR2(1);
4391 --
4392 -- adr variables
4393 l_segment                     VARCHAR2(30);
4394 l_ccid                        NUMBER;
4395 l_adr_transaction_coa_id      NUMBER;
4396 l_adr_accounting_coa_id       NUMBER;
4397 l_adr_flexfield_segment_code  VARCHAR2(30);
4398 l_adr_flex_value_set_id       NUMBER;
4399 l_adr_value_type_code         VARCHAR2(30);
4400 l_adr_value_combination_id    NUMBER;
4401 l_adr_value_segment_code      VARCHAR2(30);
4402 
4403 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4404 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4405 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4406 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4407 
4408 -- 4262811 Variables ------------------------------------------------------------------------------------------
4409 l_entered_amt_idx             NUMBER;
4410 l_accted_amt_idx              NUMBER;
4411 l_acc_rev_flag                VARCHAR2(1);
4412 l_accrual_line_num            NUMBER;
4413 l_tmp_amt                     NUMBER;
4414 l_acc_rev_natural_side_code   VARCHAR2(1);
4415 
4416 l_num_entries                 NUMBER;
4417 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4418 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4419 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4420 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4421 l_recog_line_1                NUMBER;
4422 l_recog_line_2                NUMBER;
4423 
4424 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4425 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4426 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4427 
4431 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4428 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4429 
4430 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4432 
4433 ---------------------------------------------------------------------------------------------------------------
4434 
4435 
4436 --
4437 -- bulk performance
4438 --
4439 l_balance_type_code           VARCHAR2(1);
4440 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4441 l_log_module                  VARCHAR2(240);
4442 
4443 --
4444 -- Upgrade strategy
4445 --
4446 l_actual_upg_option           VARCHAR2(1);
4447 l_enc_upg_option           VARCHAR2(1);
4448 
4449 --
4450 BEGIN
4451 --
4452 IF g_log_enabled THEN
4453       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
4454 END IF;
4455 --
4456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4457 
4458       trace
4459          (p_msg      => 'BEGIN of AcctLineType_23'
4460          ,p_level    => C_LEVEL_PROCEDURE
4461          ,p_module   => l_log_module);
4462 
4463 END IF;
4464 --
4465 l_component_type             := 'AMB_JLT';
4466 l_component_code             := 'EXCHANGE_RATE_VAR_CLEARING';
4467 l_component_type_code        := 'S';
4468 l_component_appl_id          :=  275;
4469 l_amb_context_code           := 'DEFAULT';
4470 l_entity_code                := 'EXPENDITURES';
4471 l_event_class_code           := 'SUPPLIER_COST';
4472 l_event_type_code            := 'SUPPLIER_COST_ALL';
4473 l_line_definition_owner_code := 'S';
4474 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
4475 --
4476 l_balance_type_code          := 'A';
4477 l_segment                     := NULL;
4478 l_ccid                        := NULL;
4479 l_adr_transaction_coa_id      := NULL;
4480 l_adr_accounting_coa_id       := NULL;
4481 l_adr_flexfield_segment_code  := NULL;
4482 l_adr_flex_value_set_id       := NULL;
4483 l_adr_value_type_code         := NULL;
4484 l_adr_value_combination_id    := NULL;
4485 l_adr_value_segment_code      := NULL;
4486 
4487 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4488 l_bflow_class_code           := '';    -- 4219869 Business Flow
4489 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4490 l_budgetary_control_flag     := 'N';
4491 
4492 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4493 l_bflow_applied_to_amt       := NULL; -- 5132302
4494 l_entered_amt_idx            := NULL;          -- 4262811
4495 l_accted_amt_idx             := NULL;          -- 4262811
4496 l_acc_rev_flag               := NULL;          -- 4262811
4497 l_accrual_line_num           := NULL;          -- 4262811
4498 l_tmp_amt                    := NULL;          -- 4262811
4499 --
4500 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
4501             (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
4502                return;
4503   END IF;
4504   
4505 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4506     l_balance_type_code <> 'B' THEN
4507 IF NVL(p_source_21,'
4508 ') =  'Y'
4509  THEN 
4510 
4511    --
4512    XLA_AE_LINES_PKG.SetNewLine;
4513 
4514    p_balance_type_code          := l_balance_type_code;
4515    -- set the flag so later we will know whether the gain loss line needs to be created
4516    
4517    IF(l_balance_type_code = 'A' ) THEN
4518      p_actual_flag :='G';
4519    END IF;
4520 
4521    --
4522    -- bulk performance
4523    --
4524    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4525                                       p_header_num   => 0); -- 4262811
4526    --
4527    -- set accounting line options
4528    --
4529    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4530            p_natural_side_code          => 'C'
4531          , p_gain_or_loss_flag          => 'Y'
4532          , p_gl_transfer_mode_code      => 'S'
4533          , p_acct_entry_type_code       => 'A'
4534          , p_switch_side_flag           => 'Y'
4535          , p_merge_duplicate_code       => 'N'
4536          );
4537    --
4538    l_acc_rev_natural_side_code := 'D';  -- 4262811
4539    -- 
4540    --
4541    -- set accounting line type info
4542    --
4543    xla_ae_lines_pkg.SetAcctLineType
4544       (p_component_type             => l_component_type
4545       ,p_event_type_code            => l_event_type_code
4546       ,p_line_definition_owner_code => l_line_definition_owner_code
4547       ,p_line_definition_code       => l_line_definition_code
4548       ,p_accounting_line_code       => l_component_code
4549       ,p_accounting_line_type_code  => l_component_type_code
4550       ,p_accounting_line_appl_id    => l_component_appl_id
4551       ,p_amb_context_code           => l_amb_context_code
4552       ,p_entity_code                => l_entity_code
4553       ,p_event_class_code           => l_event_class_code);
4554    --
4555    -- set accounting class
4556    --
4557    xla_ae_lines_pkg.SetAcctClass(
4558            p_accounting_class_code  => 'COST_CLEARING'
4559          , p_ae_header_id           => l_ae_header_id
4560          );
4561 
4562    --
4563    -- set rounding class
4564    --
4565    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4566                       'COST_CLEARING';
4567 
4568    --
4569    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4573    --
4570    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4571    --
4572    -- bulk performance
4574    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4575 
4576    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4577       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4578 
4579    -- 4955764
4580    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4581       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4582 
4583    -- 4458381 Public Sector Enh
4584    
4585    --
4586    -- set accounting attributes for the line type
4587    --
4588    l_entered_amt_idx := 22;
4589    l_accted_amt_idx  := 27;
4590    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4591    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4592    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
4593    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
4594    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
4595    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
4596    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
4597    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
4598    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
4599    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
4600    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
4601    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
4602    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
4603    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
4604    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
4605    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
4606    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
4607    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
4608    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
4609    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
4610    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
4611    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
4612    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
4613    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
4614    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
4615    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
4616    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
4617    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
4618    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
4619    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
4620    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
4621    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
4622    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
4623    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
4624    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
4625    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
4626    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
4627    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
4628    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
4629    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
4630    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
4631    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
4632    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
4633    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
4634    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
4635    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
4636    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
4637    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
4638    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
4639    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
4640    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
4641    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
4642    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
4643    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
4644    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
4645    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
4646    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
4647    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
4648    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
4649    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
4650    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
4651 
4652    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4653    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4654 
4655    ---------------------------------------------------------------------------------------------------------------
4656    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4657    ---------------------------------------------------------------------------------------------------------------
4658    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4659 
4660    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4661    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4662 
4663    IF xla_accounting_cache_pkg.GetValueChar
4664          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4665          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4669          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4666    AND l_bflow_method_code = 'PRIOR_ENTRY'
4667 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4668    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4670        )
4671    THEN
4672          xla_ae_lines_pkg.BflowUpgEntry
4673            (p_business_method_code    => l_bflow_method_code
4674            ,p_business_class_code     => l_bflow_class_code
4675            ,p_balance_type            => l_balance_type_code);
4676    ELSE
4677       NULL;
4678 -- No business flow processing for business flow method of NONE.
4679    END IF;
4680 
4681    --
4682    -- call analytical criteria
4683    --
4684    
4685    --
4686    -- call description
4687    --
4688    -- No description or it is inherited.
4689    --
4690    -- call ADRs
4691    -- Bug 4922099
4692    --
4693    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4694         (NVL(l_actual_upg_option, 'N') = 'O') OR
4695         (NVL(l_enc_upg_option, 'N') = 'O')
4696       )
4697    THEN
4698    NULL;
4699    --
4700    --
4701    
4702   l_ccid := AcctDerRule_5(
4703            p_application_id           => p_application_id
4704          , p_ae_header_id             => l_ae_header_id 
4705 , p_source_4 => p_source_4
4706 , p_source_6 => p_source_6
4707 , p_source_7 => p_source_7
4708          , x_transaction_coa_id       => l_adr_transaction_coa_id
4709          , x_accounting_coa_id        => l_adr_accounting_coa_id
4710          , x_value_type_code          => l_adr_value_type_code
4711          , p_side                     => 'NA'
4712    );
4713 
4714    xla_ae_lines_pkg.set_ccid(
4715     p_code_combination_id          => l_ccid
4716   , p_value_type_code              => l_adr_value_type_code
4717   , p_transaction_coa_id           => l_adr_transaction_coa_id
4718   , p_accounting_coa_id            => l_adr_accounting_coa_id
4719   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
4720   , p_adr_type_code                => 'S'
4721   , p_component_type               => l_component_type
4722   , p_component_code               => l_component_code
4723   , p_component_type_code          => l_component_type_code
4724   , p_component_appl_id            => l_component_appl_id
4725   , p_amb_context_code             => l_amb_context_code
4726   , p_side                         => 'NA'
4727   );
4728 
4729 
4730    --
4731    --
4732    END IF;
4733    --
4734    -- Bug 4922099
4735    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4736           (NVL(l_enc_upg_option, 'N') = 'O')
4737         ) AND
4738         (l_bflow_method_code = 'PRIOR_ENTRY')
4739       )
4740    THEN
4741       IF
4742       --
4743       1 = 2
4744       --
4745       THEN
4746       xla_accounting_err_pkg.build_message
4747                                     (p_appli_s_name            => 'XLA'
4748                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4749                                     ,p_token_1                 => 'LINE_NUMBER'
4750                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4751                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4752                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4753                                                                              l_component_type
4754                                                                             ,l_component_code
4755                                                                             ,l_component_type_code
4756                                                                             ,l_component_appl_id
4757                                                                             ,l_amb_context_code
4758                                                                             ,l_entity_code
4759                                                                             ,l_event_class_code
4760                                                                            )
4761                                     ,p_token_3                 => 'OWNER'
4762                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4763                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4764                                                                           ,p_lookup_code    => l_component_type_code
4765                                                                          )
4766                                     ,p_token_4                 => 'PRODUCT_NAME'
4767                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4768                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4769                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4770                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4771                                     ,p_ae_header_id            =>  NULL
4772                                        );
4773 
4774         IF (C_LEVEL_ERROR>= g_log_level) THEN
4775                  trace
4776                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4777                       ,p_level    => C_LEVEL_ERROR
4778                       ,p_module   => l_log_module);
4779         END IF;
4780       END IF;
4781    END IF;
4782    --
4783    --
4784    ------------------------------------------------------------------------------------------------
4785    -- 4219869 Business Flow
4786    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4787    -- Prior Entry.  Currently, the following code is always generated.
4791    ------------------------------------------------------------------------------------
4788    ------------------------------------------------------------------------------------------------
4789    XLA_AE_LINES_PKG.ValidateCurrentLine;
4790 
4792    -- 4219869 Business Flow
4793    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4794    ------------------------------------------------------------------------------------
4795    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4796 
4797    ----------------------------------------------------------------------------------
4798    -- 4219869 Business Flow
4799    -- Update journal entry status -- Need to generate this within IF <condition>
4800    ----------------------------------------------------------------------------------
4801    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4802          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4803          ,p_balance_type_code => l_balance_type_code
4804          );
4805 
4806    -------------------------------------------------------------------------------------------
4807    -- 4262811 - Generate the Accrual Reversal lines
4808    -------------------------------------------------------------------------------------------
4809    BEGIN
4810       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4811                               (g_array_event(p_event_id).array_value_num('header_index'));
4812       IF l_acc_rev_flag IS NULL THEN
4813          l_acc_rev_flag := 'N';
4814       END IF;
4815    EXCEPTION
4816       WHEN OTHERS THEN
4817          l_acc_rev_flag := 'N';
4818    END;
4819    --
4820    IF (l_acc_rev_flag = 'Y') THEN
4821 
4822        -- 4645092  ------------------------------------------------------------------------------
4823        -- To allow MPA report to determine if it should generate report process
4824        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4825        ------------------------------------------------------------------------------------------
4826 
4827        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4828        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4829 
4830        --
4831        -- Update the line information that should be overwritten
4832        --
4833        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4834                                          p_header_num   => 1);
4835        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4836 
4837        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4838 
4839        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4840           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4841        END IF;
4842 
4843       --
4844       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4845       --
4846       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4847           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4848       ELSE
4849           ---------------------------------------------------------------------------------------------------
4850           -- 4262811a Switch Sign
4851           ---------------------------------------------------------------------------------------------------
4852           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4853           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4854                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4855           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4856                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4857           -- 5132302
4858           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4859                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4860 
4861       END IF;
4862 
4863       -- 4955764
4864       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4865       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4866 
4867 
4868       XLA_AE_LINES_PKG.ValidateCurrentLine;
4869       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4870 
4871       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4872                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4873                ,p_balance_type_code => l_balance_type_code);
4874 
4875    END IF;
4876 
4877    -----------------------------------------------------------------------------------------
4878    -- 4262811 Multiperiod Accounting
4879    -----------------------------------------------------------------------------------------
4880      -- No MPA option is assigned.
4881 
4882 
4883 END IF;
4884 END IF;
4885 --
4886 
4887 --
4888 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4889    trace
4890       (p_msg      => 'END of AcctLineType_23'
4891       ,p_level    => C_LEVEL_PROCEDURE
4892       ,p_module   => l_log_module);
4893 END IF;
4894 --
4895 EXCEPTION
4896   WHEN xla_exceptions_pkg.application_exception THEN
4897       RAISE;
4898   WHEN OTHERS THEN
4899        xla_exceptions_pkg.raise_message
4900            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_23');
4901 END AcctLineType_23;
4902 --
4903 
4904 ---------------------------------------
4905 --
4906 -- PRIVATE FUNCTION
4907 --         AcctLineType_24
4908 --
4909 ---------------------------------------
4913  ,p_calculate_acctd_flag  IN VARCHAR2
4910 PROCEDURE AcctLineType_24 (
4911   p_application_id        IN NUMBER
4912  ,p_event_id              IN NUMBER
4914  ,p_calculate_g_l_flag    IN VARCHAR2
4915  ,p_actual_flag           IN OUT VARCHAR2
4916  ,p_balance_type_code     OUT VARCHAR2
4917  ,p_gain_or_loss_ref      OUT VARCHAR2
4918  
4919 --Revenue CCID
4920  , p_source_18            IN NUMBER
4921 --Entered Currency Code
4922  , p_source_25            IN VARCHAR2
4923 --Exchange Rate Date
4924  , p_source_27            IN DATE
4925 --Exchange Rate
4926  , p_source_28            IN NUMBER
4927 --Exchange Rate Type
4928  , p_source_29            IN VARCHAR2
4929 --Revenue Distribution Type
4930  , p_source_36            IN VARCHAR2
4931 --System Linkage Function
4932  , p_source_37            IN VARCHAR2
4933 --Crediting Revenue Flag
4934  , p_source_38            IN VARCHAR2
4935 --Revenue First Distribution ID
4936  , p_source_39            IN NUMBER
4937 --Revenue Second Distribution ID
4938  , p_source_40            IN NUMBER
4939 --Entered Amount
4940  , p_source_41            IN NUMBER
4941 --Event ID
4942  , p_source_42            IN NUMBER
4943 --Accounted Amount
4944  , p_source_43            IN NUMBER
4945 )
4946 IS
4947 
4948 l_component_type              VARCHAR2(80);
4949 l_component_code              VARCHAR2(30);
4950 l_component_type_code         VARCHAR2(1);
4951 l_component_appl_id           INTEGER;
4952 l_amb_context_code            VARCHAR2(30);
4953 l_entity_code                 VARCHAR2(30);
4954 l_event_class_code            VARCHAR2(30);
4955 l_ae_header_id                NUMBER;
4956 l_event_type_code             VARCHAR2(30);
4957 l_line_definition_code        VARCHAR2(30);
4958 l_line_definition_owner_code  VARCHAR2(1);
4959 --
4960 -- adr variables
4961 l_segment                     VARCHAR2(30);
4962 l_ccid                        NUMBER;
4963 l_adr_transaction_coa_id      NUMBER;
4964 l_adr_accounting_coa_id       NUMBER;
4965 l_adr_flexfield_segment_code  VARCHAR2(30);
4966 l_adr_flex_value_set_id       NUMBER;
4967 l_adr_value_type_code         VARCHAR2(30);
4968 l_adr_value_combination_id    NUMBER;
4969 l_adr_value_segment_code      VARCHAR2(30);
4970 
4971 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4972 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4973 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4974 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4975 
4976 -- 4262811 Variables ------------------------------------------------------------------------------------------
4977 l_entered_amt_idx             NUMBER;
4978 l_accted_amt_idx              NUMBER;
4979 l_acc_rev_flag                VARCHAR2(1);
4980 l_accrual_line_num            NUMBER;
4981 l_tmp_amt                     NUMBER;
4982 l_acc_rev_natural_side_code   VARCHAR2(1);
4983 
4984 l_num_entries                 NUMBER;
4985 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4986 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4987 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4988 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4989 l_recog_line_1                NUMBER;
4990 l_recog_line_2                NUMBER;
4991 
4992 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4993 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4994 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4995 
4996 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4997 
4998 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4999 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5000 
5001 ---------------------------------------------------------------------------------------------------------------
5002 
5003 
5004 --
5005 -- bulk performance
5006 --
5007 l_balance_type_code           VARCHAR2(1);
5008 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5009 l_log_module                  VARCHAR2(240);
5010 
5011 --
5012 -- Upgrade strategy
5013 --
5014 l_actual_upg_option           VARCHAR2(1);
5015 l_enc_upg_option           VARCHAR2(1);
5016 
5017 --
5018 BEGIN
5019 --
5020 IF g_log_enabled THEN
5021       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
5022 END IF;
5023 --
5024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5025 
5026       trace
5027          (p_msg      => 'BEGIN of AcctLineType_24'
5028          ,p_level    => C_LEVEL_PROCEDURE
5029          ,p_module   => l_log_module);
5030 
5031 END IF;
5032 --
5033 l_component_type             := 'AMB_JLT';
5034 l_component_code             := 'PA_BTC_REV';
5035 l_component_type_code        := 'S';
5036 l_component_appl_id          :=  275;
5037 l_amb_context_code           := 'DEFAULT';
5038 l_entity_code                := 'REVENUE';
5039 l_event_class_code           := 'REVENUE';
5040 l_event_type_code            := 'REVENUE_ALL';
5041 l_line_definition_owner_code := 'S';
5042 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
5043 --
5044 l_balance_type_code          := 'A';
5045 l_segment                     := NULL;
5046 l_ccid                        := NULL;
5047 l_adr_transaction_coa_id      := NULL;
5048 l_adr_accounting_coa_id       := NULL;
5049 l_adr_flexfield_segment_code  := NULL;
5050 l_adr_flex_value_set_id       := NULL;
5051 l_adr_value_type_code         := NULL;
5052 l_adr_value_combination_id    := NULL;
5053 l_adr_value_segment_code      := NULL;
5054 
5055 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5059 
5056 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
5057 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5058 l_budgetary_control_flag     := 'N';
5060 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5061 l_bflow_applied_to_amt       := NULL; -- 5132302
5062 l_entered_amt_idx            := NULL;          -- 4262811
5063 l_accted_amt_idx             := NULL;          -- 4262811
5064 l_acc_rev_flag               := NULL;          -- 4262811
5065 l_accrual_line_num           := NULL;          -- 4262811
5066 l_tmp_amt                    := NULL;          -- 4262811
5067 --
5068  
5069 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5070     l_balance_type_code <> 'B' THEN
5071 IF NVL(p_source_36,'
5072 ') =  'Revenue - Normal Revenue' AND 
5073 NVL(p_source_37,'
5074 ') =  'BTC' AND 
5075 NVL(p_source_38,'
5076 ') =  'N'
5077  THEN 
5078 
5079    --
5080    XLA_AE_LINES_PKG.SetNewLine;
5081 
5082    p_balance_type_code          := l_balance_type_code;
5083    -- set the flag so later we will know whether the gain loss line needs to be created
5084    
5085    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5086      p_actual_flag :='A';
5087    END IF;
5088 
5089    --
5090    -- bulk performance
5091    --
5092    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5093                                       p_header_num   => 0); -- 4262811
5094    --
5095    -- set accounting line options
5096    --
5097    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5098            p_natural_side_code          => 'C'
5099          , p_gain_or_loss_flag          => 'N'
5100          , p_gl_transfer_mode_code      => 'S'
5101          , p_acct_entry_type_code       => 'A'
5102          , p_switch_side_flag           => 'Y'
5103          , p_merge_duplicate_code       => 'N'
5104          );
5105    --
5106    l_acc_rev_natural_side_code := 'D';  -- 4262811
5107    -- 
5108    --
5109    -- set accounting line type info
5110    --
5111    xla_ae_lines_pkg.SetAcctLineType
5112       (p_component_type             => l_component_type
5113       ,p_event_type_code            => l_event_type_code
5114       ,p_line_definition_owner_code => l_line_definition_owner_code
5115       ,p_line_definition_code       => l_line_definition_code
5116       ,p_accounting_line_code       => l_component_code
5117       ,p_accounting_line_type_code  => l_component_type_code
5118       ,p_accounting_line_appl_id    => l_component_appl_id
5119       ,p_amb_context_code           => l_amb_context_code
5120       ,p_entity_code                => l_entity_code
5121       ,p_event_class_code           => l_event_class_code);
5122    --
5123    -- set accounting class
5124    --
5125    xla_ae_lines_pkg.SetAcctClass(
5126            p_accounting_class_code  => 'REVENUE'
5127          , p_ae_header_id           => l_ae_header_id
5128          );
5129 
5130    --
5131    -- set rounding class
5132    --
5133    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5134                       'REVENUE';
5135 
5136    --
5137    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5138    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5139    --
5140    -- bulk performance
5141    --
5142    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5143 
5144    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5145       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5146 
5147    -- 4955764
5148    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5149       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5150 
5151    -- 4458381 Public Sector Enh
5152    
5153    --
5154    -- set accounting attributes for the line type
5155    --
5156    l_entered_amt_idx := 4;
5157    l_accted_amt_idx  := 10;
5158    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5159    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5160    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
5161    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
5162    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
5163    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
5164    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
5165    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
5166    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
5167    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
5168    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
5169    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
5170    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
5171    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
5172    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
5173    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
5174    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
5175    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
5176    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
5177    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
5178    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
5179 
5180    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5181    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5182 
5183    ---------------------------------------------------------------------------------------------------------------
5187 
5184    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5185    ---------------------------------------------------------------------------------------------------------------
5186    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5188    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5189    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5190 
5191    IF xla_accounting_cache_pkg.GetValueChar
5192          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5193          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5194    AND l_bflow_method_code = 'PRIOR_ENTRY'
5195 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5196    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5197          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5198        )
5199    THEN
5200          xla_ae_lines_pkg.BflowUpgEntry
5201            (p_business_method_code    => l_bflow_method_code
5202            ,p_business_class_code     => l_bflow_class_code
5203            ,p_balance_type            => l_balance_type_code);
5204    ELSE
5205       NULL;
5206 -- No business flow processing for business flow method of NONE.
5207    END IF;
5208 
5209    --
5210    -- call analytical criteria
5211    --
5212    
5213    --
5214    -- call description
5215    --
5216    -- No description or it is inherited.
5217    --
5218    -- call ADRs
5219    -- Bug 4922099
5220    --
5221    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5222         (NVL(l_actual_upg_option, 'N') = 'O') OR
5223         (NVL(l_enc_upg_option, 'N') = 'O')
5224       )
5225    THEN
5226    NULL;
5227    --
5228    --
5229    
5230   l_ccid := AcctDerRule_17(
5231            p_application_id           => p_application_id
5232          , p_ae_header_id             => l_ae_header_id 
5233 , p_source_18 => p_source_18
5234          , x_transaction_coa_id       => l_adr_transaction_coa_id
5235          , x_accounting_coa_id        => l_adr_accounting_coa_id
5236          , x_value_type_code          => l_adr_value_type_code
5237          , p_side                     => 'NA'
5238    );
5239 
5240    xla_ae_lines_pkg.set_ccid(
5241     p_code_combination_id          => l_ccid
5242   , p_value_type_code              => l_adr_value_type_code
5243   , p_transaction_coa_id           => l_adr_transaction_coa_id
5244   , p_accounting_coa_id            => l_adr_accounting_coa_id
5245   , p_adr_code                     => 'REVENUE_RULE'
5246   , p_adr_type_code                => 'S'
5247   , p_component_type               => l_component_type
5248   , p_component_code               => l_component_code
5249   , p_component_type_code          => l_component_type_code
5250   , p_component_appl_id            => l_component_appl_id
5251   , p_amb_context_code             => l_amb_context_code
5252   , p_side                         => 'NA'
5253   );
5254 
5255 
5256    --
5257    --
5258    END IF;
5259    --
5260    -- Bug 4922099
5261    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5262           (NVL(l_enc_upg_option, 'N') = 'O')
5263         ) AND
5264         (l_bflow_method_code = 'PRIOR_ENTRY')
5265       )
5266    THEN
5267       IF
5268       --
5269       1 = 2
5270       --
5271       THEN
5272       xla_accounting_err_pkg.build_message
5273                                     (p_appli_s_name            => 'XLA'
5274                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5275                                     ,p_token_1                 => 'LINE_NUMBER'
5276                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5277                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5278                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5279                                                                              l_component_type
5280                                                                             ,l_component_code
5281                                                                             ,l_component_type_code
5282                                                                             ,l_component_appl_id
5283                                                                             ,l_amb_context_code
5284                                                                             ,l_entity_code
5285                                                                             ,l_event_class_code
5286                                                                            )
5287                                     ,p_token_3                 => 'OWNER'
5288                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5289                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5290                                                                           ,p_lookup_code    => l_component_type_code
5291                                                                          )
5292                                     ,p_token_4                 => 'PRODUCT_NAME'
5293                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5294                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5295                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5296                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5297                                     ,p_ae_header_id            =>  NULL
5298                                        );
5299 
5303                       ,p_level    => C_LEVEL_ERROR
5300         IF (C_LEVEL_ERROR>= g_log_level) THEN
5301                  trace
5302                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5304                       ,p_module   => l_log_module);
5305         END IF;
5306       END IF;
5307    END IF;
5308    --
5309    --
5310    ------------------------------------------------------------------------------------------------
5311    -- 4219869 Business Flow
5312    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5313    -- Prior Entry.  Currently, the following code is always generated.
5314    ------------------------------------------------------------------------------------------------
5315    XLA_AE_LINES_PKG.ValidateCurrentLine;
5316 
5317    ------------------------------------------------------------------------------------
5318    -- 4219869 Business Flow
5319    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5320    ------------------------------------------------------------------------------------
5321    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5322 
5323    ----------------------------------------------------------------------------------
5324    -- 4219869 Business Flow
5325    -- Update journal entry status -- Need to generate this within IF <condition>
5326    ----------------------------------------------------------------------------------
5327    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5328          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5329          ,p_balance_type_code => l_balance_type_code
5330          );
5331 
5332    -------------------------------------------------------------------------------------------
5333    -- 4262811 - Generate the Accrual Reversal lines
5334    -------------------------------------------------------------------------------------------
5335    BEGIN
5336       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5337                               (g_array_event(p_event_id).array_value_num('header_index'));
5338       IF l_acc_rev_flag IS NULL THEN
5339          l_acc_rev_flag := 'N';
5340       END IF;
5341    EXCEPTION
5342       WHEN OTHERS THEN
5343          l_acc_rev_flag := 'N';
5344    END;
5345    --
5346    IF (l_acc_rev_flag = 'Y') THEN
5347 
5348        -- 4645092  ------------------------------------------------------------------------------
5349        -- To allow MPA report to determine if it should generate report process
5350        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5351        ------------------------------------------------------------------------------------------
5352 
5353        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5354        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5355 
5356        --
5357        -- Update the line information that should be overwritten
5358        --
5359        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5360                                          p_header_num   => 1);
5361        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5362 
5363        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5364 
5365        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5366           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5367        END IF;
5368 
5369       --
5370       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5371       --
5372       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5373           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5374       ELSE
5375           ---------------------------------------------------------------------------------------------------
5376           -- 4262811a Switch Sign
5377           ---------------------------------------------------------------------------------------------------
5378           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5379           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5380                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5381           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5382                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5383           -- 5132302
5384           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5385                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5386 
5387       END IF;
5388 
5389       -- 4955764
5390       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5391       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5392 
5393 
5394       XLA_AE_LINES_PKG.ValidateCurrentLine;
5395       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5396 
5397       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5398                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5399                ,p_balance_type_code => l_balance_type_code);
5400 
5401    END IF;
5402 
5403    -----------------------------------------------------------------------------------------
5404    -- 4262811 Multiperiod Accounting
5405    -----------------------------------------------------------------------------------------
5406      -- No MPA option is assigned.
5407 
5408 
5409 END IF;
5410 END IF;
5411 --
5412 
5413 --
5414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5415    trace
5419 END IF;
5416       (p_msg      => 'END of AcctLineType_24'
5417       ,p_level    => C_LEVEL_PROCEDURE
5418       ,p_module   => l_log_module);
5420 --
5421 EXCEPTION
5422   WHEN xla_exceptions_pkg.application_exception THEN
5423       RAISE;
5424   WHEN OTHERS THEN
5425        xla_exceptions_pkg.raise_message
5426            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_24');
5427 END AcctLineType_24;
5428 --
5429 
5430 ---------------------------------------
5431 --
5432 -- PRIVATE FUNCTION
5433 --         AcctLineType_25
5434 --
5435 ---------------------------------------
5436 PROCEDURE AcctLineType_25 (
5437   p_application_id        IN NUMBER
5438  ,p_event_id              IN NUMBER
5439  ,p_calculate_acctd_flag  IN VARCHAR2
5440  ,p_calculate_g_l_flag    IN VARCHAR2
5441  ,p_actual_flag           IN OUT VARCHAR2
5442  ,p_balance_type_code     OUT VARCHAR2
5443  ,p_gain_or_loss_ref      OUT VARCHAR2
5444  
5445 --Budget Code Combination ID
5446  , p_source_2            IN NUMBER
5447 --Cost CCID
5448  , p_source_3            IN NUMBER
5449 --Allow Account Override Flag
5450  , p_source_4            IN VARCHAR2
5451 --Adjustment Cost CCID
5452  , p_source_5            IN NUMBER
5453 --Cost Clearing CCID
5454  , p_source_6            IN NUMBER
5455 --Reversing Line Flag
5456  , p_source_22            IN VARCHAR2
5457 --Actual Upgrade Credit Accounting Class
5458  , p_source_23            IN VARCHAR2
5459 --Entered Currency Code
5460  , p_source_25            IN VARCHAR2
5461 --Exchange Rate Date
5462  , p_source_27            IN DATE
5463 --Exchange Rate
5464  , p_source_28            IN NUMBER
5465 --Exchange Rate Type
5466  , p_source_29            IN VARCHAR2
5467 --Actual Upgrade Debit Accounting Class
5468  , p_source_30            IN VARCHAR2
5469 --Use Actuals Upgrade Attributes Flag
5470  , p_source_31            IN VARCHAR2
5471 --Expenditure Item ID
5472  , p_source_32            IN NUMBER
5473 --Cost Distribution Line Number
5474  , p_source_33            IN NUMBER
5475 --Line Type
5476  , p_source_34            IN VARCHAR2
5477  , p_source_34_meaning    IN VARCHAR2
5478 --Reversed Line Number
5479  , p_source_35            IN NUMBER
5480 --Entered Burdened Cost
5481  , p_source_44            IN NUMBER
5482 --Accounted Burdened Cost
5483  , p_source_45            IN NUMBER
5484 --Encumbrance Amount
5485  , p_source_46            IN NUMBER
5486 --Project Encumbrance Applied to Application Identifier
5487  , p_source_47            IN NUMBER
5488 --Project Encumbrance Applied to Distribution Type
5489  , p_source_48            IN VARCHAR2
5490 --Project Encumbrance Applied to Entity Code
5491  , p_source_49            IN VARCHAR2
5492 --Project Encumbrance Applied to First Distribution ID
5493  , p_source_50            IN NUMBER
5494 --Project Encumbrance Applied to First System Transaction ID
5495  , p_source_51            IN NUMBER
5496 --Project Encumbrance Applied to Second Distribution ID
5497  , p_source_52            IN VARCHAR2
5498 --Encumbrance Upgrade Credit Accounting Class
5499  , p_source_53            IN VARCHAR2
5500 --Encumbrance Upgrade Debit Accounting Class
5501  , p_source_54            IN VARCHAR2
5502 --Use Encumbrance Upgrade Attributes Flag
5503  , p_source_55            IN VARCHAR2
5504 --Encumbrance Type ID
5505  , p_source_56            IN NUMBER
5506 --Project Encumbrance Type ID
5507  , p_source_57            IN NUMBER
5508 )
5509 IS
5510 
5511 l_component_type              VARCHAR2(80);
5512 l_component_code              VARCHAR2(30);
5513 l_component_type_code         VARCHAR2(1);
5514 l_component_appl_id           INTEGER;
5515 l_amb_context_code            VARCHAR2(30);
5516 l_entity_code                 VARCHAR2(30);
5517 l_event_class_code            VARCHAR2(30);
5518 l_ae_header_id                NUMBER;
5519 l_event_type_code             VARCHAR2(30);
5520 l_line_definition_code        VARCHAR2(30);
5521 l_line_definition_owner_code  VARCHAR2(1);
5522 --
5523 -- adr variables
5524 l_segment                     VARCHAR2(30);
5525 l_ccid                        NUMBER;
5526 l_adr_transaction_coa_id      NUMBER;
5527 l_adr_accounting_coa_id       NUMBER;
5528 l_adr_flexfield_segment_code  VARCHAR2(30);
5529 l_adr_flex_value_set_id       NUMBER;
5530 l_adr_value_type_code         VARCHAR2(30);
5531 l_adr_value_combination_id    NUMBER;
5532 l_adr_value_segment_code      VARCHAR2(30);
5533 
5534 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5535 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5536 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5537 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5538 
5539 -- 4262811 Variables ------------------------------------------------------------------------------------------
5540 l_entered_amt_idx             NUMBER;
5541 l_accted_amt_idx              NUMBER;
5542 l_acc_rev_flag                VARCHAR2(1);
5543 l_accrual_line_num            NUMBER;
5544 l_tmp_amt                     NUMBER;
5545 l_acc_rev_natural_side_code   VARCHAR2(1);
5546 
5547 l_num_entries                 NUMBER;
5548 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5549 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5550 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5551 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5552 l_recog_line_1                NUMBER;
5553 l_recog_line_2                NUMBER;
5554 
5555 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5556 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5557 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5558 
5562 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5559 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5560 
5561 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5563 
5564 ---------------------------------------------------------------------------------------------------------------
5565 
5566 
5567 --
5568 -- bulk performance
5569 --
5570 l_balance_type_code           VARCHAR2(1);
5571 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5572 l_log_module                  VARCHAR2(240);
5573 
5574 --
5575 -- Upgrade strategy
5576 --
5577 l_actual_upg_option           VARCHAR2(1);
5578 l_enc_upg_option           VARCHAR2(1);
5579 
5580 --
5581 BEGIN
5582 --
5583 IF g_log_enabled THEN
5584       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
5585 END IF;
5586 --
5587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5588 
5589       trace
5590          (p_msg      => 'BEGIN of AcctLineType_25'
5591          ,p_level    => C_LEVEL_PROCEDURE
5592          ,p_module   => l_log_module);
5593 
5594 END IF;
5595 --
5596 l_component_type             := 'AMB_JLT';
5597 l_component_code             := 'PA_BURDEN_COST';
5598 l_component_type_code        := 'S';
5599 l_component_appl_id          :=  275;
5600 l_amb_context_code           := 'DEFAULT';
5601 l_entity_code                := 'EXPENDITURES';
5602 l_event_class_code           := 'BURDEN_COST';
5603 l_event_type_code            := 'BURDEN_COST_ALL';
5604 l_line_definition_owner_code := 'S';
5605 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
5606 --
5607 l_balance_type_code          := 'A';
5608 l_segment                     := NULL;
5609 l_ccid                        := NULL;
5610 l_adr_transaction_coa_id      := NULL;
5611 l_adr_accounting_coa_id       := NULL;
5612 l_adr_flexfield_segment_code  := NULL;
5613 l_adr_flex_value_set_id       := NULL;
5614 l_adr_value_type_code         := NULL;
5615 l_adr_value_combination_id    := NULL;
5616 l_adr_value_segment_code      := NULL;
5617 
5618 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5619 l_bflow_class_code           := '';    -- 4219869 Business Flow
5620 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5621 l_budgetary_control_flag     := 'N';
5622 
5623 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5624 l_bflow_applied_to_amt       := NULL; -- 5132302
5625 l_entered_amt_idx            := NULL;          -- 4262811
5626 l_accted_amt_idx             := NULL;          -- 4262811
5627 l_acc_rev_flag               := NULL;          -- 4262811
5628 l_accrual_line_num           := NULL;          -- 4262811
5629 l_tmp_amt                    := NULL;          -- 4262811
5630 --
5631  
5632 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5633     l_balance_type_code <> 'B' THEN
5634 IF NVL(p_source_34,'
5635 ') =  'R'
5636  THEN 
5637 
5638    --
5639    XLA_AE_LINES_PKG.SetNewLine;
5640 
5641    p_balance_type_code          := l_balance_type_code;
5642    -- set the flag so later we will know whether the gain loss line needs to be created
5643    
5644    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5645      p_actual_flag :='A';
5646    END IF;
5647 
5648    --
5649    -- bulk performance
5650    --
5651    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5652                                       p_header_num   => 0); -- 4262811
5653    --
5654    -- set accounting line options
5655    --
5656    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5657            p_natural_side_code          => 'D'
5658          , p_gain_or_loss_flag          => 'N'
5659          , p_gl_transfer_mode_code      => 'S'
5660          , p_acct_entry_type_code       => 'A'
5661          , p_switch_side_flag           => 'Y'
5662          , p_merge_duplicate_code       => 'N'
5663          );
5664    --
5665    l_acc_rev_natural_side_code := 'C';  -- 4262811
5666    -- 
5667    --
5668    -- set accounting line type info
5669    --
5670    xla_ae_lines_pkg.SetAcctLineType
5671       (p_component_type             => l_component_type
5672       ,p_event_type_code            => l_event_type_code
5673       ,p_line_definition_owner_code => l_line_definition_owner_code
5674       ,p_line_definition_code       => l_line_definition_code
5675       ,p_accounting_line_code       => l_component_code
5676       ,p_accounting_line_type_code  => l_component_type_code
5677       ,p_accounting_line_appl_id    => l_component_appl_id
5678       ,p_amb_context_code           => l_amb_context_code
5679       ,p_entity_code                => l_entity_code
5680       ,p_event_class_code           => l_event_class_code);
5681    --
5682    -- set accounting class
5683    --
5684    xla_ae_lines_pkg.SetAcctClass(
5685            p_accounting_class_code  => 'COST'
5686          , p_ae_header_id           => l_ae_header_id
5687          );
5688 
5689    --
5690    -- set rounding class
5691    --
5692    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5693                       'COST';
5694 
5695    --
5696    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5697    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5698    --
5699    -- bulk performance
5700    --
5701    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5702 
5703    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5707    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5704       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5705 
5706    -- 4955764
5708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5709 
5710    -- 4458381 Public Sector Enh
5711    
5712    --
5713    -- set accounting attributes for the line type
5714    --
5715    l_entered_amt_idx := 40;
5716    l_accted_amt_idx  := 45;
5717    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
5718    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5719    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
5720    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
5721    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
5722    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
5723    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
5724    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
5725    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
5726    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
5727    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
5728    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
5729    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
5730    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
5731    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
5732    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
5733    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
5734    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
5735    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
5736    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
5737    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
5738    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
5739    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
5740    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
5741    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
5742    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
5743    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
5744    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
5745    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
5746    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
5747    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
5748    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
5749    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
5750    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
5751    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
5752    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
5753    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
5754    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
5755    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
5756    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
5757    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
5758    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5759    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
5760    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
5761    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
5762    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
5763    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
5764    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5765    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
5766    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
5767    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
5768    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
5769    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
5770    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
5771    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
5772    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
5773    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
5774    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
5775    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
5776    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
5777    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
5778    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
5779    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
5780    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
5781    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
5782    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
5783    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
5784    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
5785    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
5786    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
5787    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
5788    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
5789    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
5790    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
5791    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
5792    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
5793    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
5794    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
5795    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
5796    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
5797    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
5798    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
5802    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
5799    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
5800    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
5801    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
5803    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
5804    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
5805    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
5806    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
5807    l_rec_acct_attrs.array_num_value(45)  := p_source_45;
5808    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
5809    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
5810    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
5811    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
5812    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
5813    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
5814    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
5815    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
5816    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
5817    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
5818 
5819    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5820    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5821 
5822    ---------------------------------------------------------------------------------------------------------------
5823    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5824    ---------------------------------------------------------------------------------------------------------------
5825    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5826 
5827    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5828    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5829 
5830    IF xla_accounting_cache_pkg.GetValueChar
5831          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5832          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5833    AND l_bflow_method_code = 'PRIOR_ENTRY'
5834 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5835    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5836          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5837        )
5838    THEN
5839          xla_ae_lines_pkg.BflowUpgEntry
5840            (p_business_method_code    => l_bflow_method_code
5841            ,p_business_class_code     => l_bflow_class_code
5842            ,p_balance_type            => l_balance_type_code);
5843    ELSE
5844       NULL;
5845 -- No business flow processing for business flow method of NONE.
5846    END IF;
5847 
5848    --
5849    -- call analytical criteria
5850    --
5851    
5852    --
5853    -- call description
5854    --
5855    -- No description or it is inherited.
5856    --
5857    -- call ADRs
5858    -- Bug 4922099
5859    --
5860    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5861         (NVL(l_actual_upg_option, 'N') = 'O') OR
5862         (NVL(l_enc_upg_option, 'N') = 'O')
5863       )
5864    THEN
5865    NULL;
5866    --
5867    --
5868    
5869   l_ccid := AcctDerRule_3(
5870            p_application_id           => p_application_id
5871          , p_ae_header_id             => l_ae_header_id 
5872 , p_source_3 => p_source_3
5873 , p_source_4 => p_source_4
5874 , p_source_5 => p_source_5
5875          , x_transaction_coa_id       => l_adr_transaction_coa_id
5876          , x_accounting_coa_id        => l_adr_accounting_coa_id
5877          , x_value_type_code          => l_adr_value_type_code
5878          , p_side                     => 'NA'
5879    );
5880 
5881    xla_ae_lines_pkg.set_ccid(
5882     p_code_combination_id          => l_ccid
5883   , p_value_type_code              => l_adr_value_type_code
5884   , p_transaction_coa_id           => l_adr_transaction_coa_id
5885   , p_accounting_coa_id            => l_adr_accounting_coa_id
5886   , p_adr_code                     => 'PA_COST_ACCT_RULE'
5887   , p_adr_type_code                => 'S'
5888   , p_component_type               => l_component_type
5889   , p_component_code               => l_component_code
5890   , p_component_type_code          => l_component_type_code
5891   , p_component_appl_id            => l_component_appl_id
5892   , p_amb_context_code             => l_amb_context_code
5893   , p_side                         => 'NA'
5894   );
5895 
5896 
5897    --
5898    --
5899    END IF;
5900    --
5901    -- Bug 4922099
5902    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5903           (NVL(l_enc_upg_option, 'N') = 'O')
5904         ) AND
5905         (l_bflow_method_code = 'PRIOR_ENTRY')
5906       )
5907    THEN
5908       IF
5909       --
5910       1 = 2
5911       --
5912       THEN
5913       xla_accounting_err_pkg.build_message
5914                                     (p_appli_s_name            => 'XLA'
5915                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5916                                     ,p_token_1                 => 'LINE_NUMBER'
5917                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5918                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5919                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5920                                                                              l_component_type
5921                                                                             ,l_component_code
5925                                                                             ,l_entity_code
5922                                                                             ,l_component_type_code
5923                                                                             ,l_component_appl_id
5924                                                                             ,l_amb_context_code
5926                                                                             ,l_event_class_code
5927                                                                            )
5928                                     ,p_token_3                 => 'OWNER'
5929                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5930                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5931                                                                           ,p_lookup_code    => l_component_type_code
5932                                                                          )
5933                                     ,p_token_4                 => 'PRODUCT_NAME'
5934                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5935                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5936                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5937                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5938                                     ,p_ae_header_id            =>  NULL
5939                                        );
5940 
5941         IF (C_LEVEL_ERROR>= g_log_level) THEN
5942                  trace
5943                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5944                       ,p_level    => C_LEVEL_ERROR
5945                       ,p_module   => l_log_module);
5946         END IF;
5947       END IF;
5948    END IF;
5949    --
5950    --
5951    ------------------------------------------------------------------------------------------------
5952    -- 4219869 Business Flow
5953    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5954    -- Prior Entry.  Currently, the following code is always generated.
5955    ------------------------------------------------------------------------------------------------
5956    XLA_AE_LINES_PKG.ValidateCurrentLine;
5957 
5958    ------------------------------------------------------------------------------------
5959    -- 4219869 Business Flow
5960    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5961    ------------------------------------------------------------------------------------
5962    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5963 
5964    ----------------------------------------------------------------------------------
5965    -- 4219869 Business Flow
5966    -- Update journal entry status -- Need to generate this within IF <condition>
5967    ----------------------------------------------------------------------------------
5968    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5969          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5970          ,p_balance_type_code => l_balance_type_code
5971          );
5972 
5973    -------------------------------------------------------------------------------------------
5974    -- 4262811 - Generate the Accrual Reversal lines
5975    -------------------------------------------------------------------------------------------
5976    BEGIN
5977       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5978                               (g_array_event(p_event_id).array_value_num('header_index'));
5979       IF l_acc_rev_flag IS NULL THEN
5980          l_acc_rev_flag := 'N';
5981       END IF;
5982    EXCEPTION
5983       WHEN OTHERS THEN
5984          l_acc_rev_flag := 'N';
5985    END;
5986    --
5987    IF (l_acc_rev_flag = 'Y') THEN
5988 
5989        -- 4645092  ------------------------------------------------------------------------------
5990        -- To allow MPA report to determine if it should generate report process
5991        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5992        ------------------------------------------------------------------------------------------
5993 
5994        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5995        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5996 
5997        --
5998        -- Update the line information that should be overwritten
5999        --
6000        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6001                                          p_header_num   => 1);
6002        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6003 
6004        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6005 
6006        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6007           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6008        END IF;
6009 
6010       --
6011       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6012       --
6013       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6014           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6015       ELSE
6016           ---------------------------------------------------------------------------------------------------
6017           -- 4262811a Switch Sign
6018           ---------------------------------------------------------------------------------------------------
6019           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6020           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6024           -- 5132302
6021                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6022           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6023                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6025           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6026                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6027 
6028       END IF;
6029 
6030       -- 4955764
6031       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6032       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6033 
6034 
6035       XLA_AE_LINES_PKG.ValidateCurrentLine;
6036       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6037 
6038       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6039                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6040                ,p_balance_type_code => l_balance_type_code);
6041 
6042    END IF;
6043 
6044    -----------------------------------------------------------------------------------------
6045    -- 4262811 Multiperiod Accounting
6046    -----------------------------------------------------------------------------------------
6047      -- No MPA option is assigned.
6048 
6049 
6050 END IF;
6051 END IF;
6052 --
6053 
6054 --
6055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6056    trace
6057       (p_msg      => 'END of AcctLineType_25'
6058       ,p_level    => C_LEVEL_PROCEDURE
6059       ,p_module   => l_log_module);
6060 END IF;
6061 --
6062 EXCEPTION
6063   WHEN xla_exceptions_pkg.application_exception THEN
6064       RAISE;
6065   WHEN OTHERS THEN
6066        xla_exceptions_pkg.raise_message
6067            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_25');
6068 END AcctLineType_25;
6069 --
6070 
6071 ---------------------------------------
6072 --
6073 -- PRIVATE FUNCTION
6074 --         AcctLineType_26
6075 --
6076 ---------------------------------------
6077 PROCEDURE AcctLineType_26 (
6078   p_application_id        IN NUMBER
6079  ,p_event_id              IN NUMBER
6080  ,p_calculate_acctd_flag  IN VARCHAR2
6081  ,p_calculate_g_l_flag    IN VARCHAR2
6082  ,p_actual_flag           IN OUT VARCHAR2
6083  ,p_balance_type_code     OUT VARCHAR2
6084  ,p_gain_or_loss_ref      OUT VARCHAR2
6085  
6086 --Budget Code Combination ID
6087  , p_source_2            IN NUMBER
6088 --Cost CCID
6089  , p_source_3            IN NUMBER
6090 --Allow Account Override Flag
6091  , p_source_4            IN VARCHAR2
6092 --Adjustment Cost CCID
6093  , p_source_5            IN NUMBER
6094 --Cost Clearing CCID
6095  , p_source_6            IN NUMBER
6096 --Reversing Line Flag
6097  , p_source_22            IN VARCHAR2
6098 --Actual Upgrade Credit Accounting Class
6099  , p_source_23            IN VARCHAR2
6100 --Entered Currency Code
6101  , p_source_25            IN VARCHAR2
6102 --Exchange Rate Date
6103  , p_source_27            IN DATE
6104 --Exchange Rate
6105  , p_source_28            IN NUMBER
6106 --Exchange Rate Type
6107  , p_source_29            IN VARCHAR2
6108 --Actual Upgrade Debit Accounting Class
6109  , p_source_30            IN VARCHAR2
6110 --Use Actuals Upgrade Attributes Flag
6111  , p_source_31            IN VARCHAR2
6112 --Expenditure Item ID
6113  , p_source_32            IN NUMBER
6114 --Cost Distribution Line Number
6115  , p_source_33            IN NUMBER
6116 --Line Type
6117  , p_source_34            IN VARCHAR2
6118  , p_source_34_meaning    IN VARCHAR2
6119 --Reversed Line Number
6120  , p_source_35            IN NUMBER
6121 --Entered Burdened Cost
6122  , p_source_44            IN NUMBER
6123 --Accounted Burdened Cost
6124  , p_source_45            IN NUMBER
6125 --Encumbrance Amount
6126  , p_source_46            IN NUMBER
6127 --Project Encumbrance Applied to Application Identifier
6128  , p_source_47            IN NUMBER
6129 --Project Encumbrance Applied to Distribution Type
6130  , p_source_48            IN VARCHAR2
6131 --Project Encumbrance Applied to Entity Code
6132  , p_source_49            IN VARCHAR2
6133 --Project Encumbrance Applied to First Distribution ID
6134  , p_source_50            IN NUMBER
6135 --Project Encumbrance Applied to First System Transaction ID
6136  , p_source_51            IN NUMBER
6137 --Project Encumbrance Applied to Second Distribution ID
6138  , p_source_52            IN VARCHAR2
6139 --Encumbrance Upgrade Credit Accounting Class
6140  , p_source_53            IN VARCHAR2
6141 --Encumbrance Upgrade Debit Accounting Class
6142  , p_source_54            IN VARCHAR2
6143 --Use Encumbrance Upgrade Attributes Flag
6144  , p_source_55            IN VARCHAR2
6145 --Encumbrance Type ID
6146  , p_source_56            IN NUMBER
6147 --Project Encumbrance Type ID
6148  , p_source_57            IN NUMBER
6149 )
6150 IS
6151 
6152 l_component_type              VARCHAR2(80);
6153 l_component_code              VARCHAR2(30);
6154 l_component_type_code         VARCHAR2(1);
6155 l_component_appl_id           INTEGER;
6156 l_amb_context_code            VARCHAR2(30);
6157 l_entity_code                 VARCHAR2(30);
6158 l_event_class_code            VARCHAR2(30);
6159 l_ae_header_id                NUMBER;
6160 l_event_type_code             VARCHAR2(30);
6161 l_line_definition_code        VARCHAR2(30);
6162 l_line_definition_owner_code  VARCHAR2(1);
6163 --
6164 -- adr variables
6165 l_segment                     VARCHAR2(30);
6166 l_ccid                        NUMBER;
6167 l_adr_transaction_coa_id      NUMBER;
6171 l_adr_value_type_code         VARCHAR2(30);
6168 l_adr_accounting_coa_id       NUMBER;
6169 l_adr_flexfield_segment_code  VARCHAR2(30);
6170 l_adr_flex_value_set_id       NUMBER;
6172 l_adr_value_combination_id    NUMBER;
6173 l_adr_value_segment_code      VARCHAR2(30);
6174 
6175 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6176 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6177 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6178 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6179 
6180 -- 4262811 Variables ------------------------------------------------------------------------------------------
6181 l_entered_amt_idx             NUMBER;
6182 l_accted_amt_idx              NUMBER;
6183 l_acc_rev_flag                VARCHAR2(1);
6184 l_accrual_line_num            NUMBER;
6185 l_tmp_amt                     NUMBER;
6186 l_acc_rev_natural_side_code   VARCHAR2(1);
6187 
6188 l_num_entries                 NUMBER;
6189 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6190 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6191 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6192 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6193 l_recog_line_1                NUMBER;
6194 l_recog_line_2                NUMBER;
6195 
6196 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6197 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6198 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6199 
6200 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6201 
6202 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6203 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6204 
6205 ---------------------------------------------------------------------------------------------------------------
6206 
6207 
6208 --
6209 -- bulk performance
6210 --
6211 l_balance_type_code           VARCHAR2(1);
6212 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6213 l_log_module                  VARCHAR2(240);
6214 
6215 --
6216 -- Upgrade strategy
6217 --
6218 l_actual_upg_option           VARCHAR2(1);
6219 l_enc_upg_option           VARCHAR2(1);
6220 
6221 --
6222 BEGIN
6223 --
6224 IF g_log_enabled THEN
6225       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
6226 END IF;
6227 --
6228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6229 
6230       trace
6231          (p_msg      => 'BEGIN of AcctLineType_26'
6232          ,p_level    => C_LEVEL_PROCEDURE
6233          ,p_module   => l_log_module);
6234 
6235 END IF;
6236 --
6237 l_component_type             := 'AMB_JLT';
6238 l_component_code             := 'PA_BURDEN_COST_ADJ';
6239 l_component_type_code        := 'S';
6240 l_component_appl_id          :=  275;
6241 l_amb_context_code           := 'DEFAULT';
6242 l_entity_code                := 'EXPENDITURES';
6243 l_event_class_code           := 'BURDEN_COST_ADJ';
6244 l_event_type_code            := 'BURDEN_COST_ADJ_ALL';
6245 l_line_definition_owner_code := 'S';
6246 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
6247 --
6248 l_balance_type_code          := 'A';
6249 l_segment                     := NULL;
6250 l_ccid                        := NULL;
6251 l_adr_transaction_coa_id      := NULL;
6252 l_adr_accounting_coa_id       := NULL;
6253 l_adr_flexfield_segment_code  := NULL;
6254 l_adr_flex_value_set_id       := NULL;
6255 l_adr_value_type_code         := NULL;
6256 l_adr_value_combination_id    := NULL;
6257 l_adr_value_segment_code      := NULL;
6258 
6259 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6260 l_bflow_class_code           := '';    -- 4219869 Business Flow
6261 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6262 l_budgetary_control_flag     := 'N';
6263 
6264 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6265 l_bflow_applied_to_amt       := NULL; -- 5132302
6266 l_entered_amt_idx            := NULL;          -- 4262811
6267 l_accted_amt_idx             := NULL;          -- 4262811
6268 l_acc_rev_flag               := NULL;          -- 4262811
6269 l_accrual_line_num           := NULL;          -- 4262811
6270 l_tmp_amt                    := NULL;          -- 4262811
6271 --
6272  
6273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6274     l_balance_type_code <> 'B' THEN
6275 IF NVL(p_source_34,'
6276 ') =  'R'
6277  THEN 
6278 
6279    --
6280    XLA_AE_LINES_PKG.SetNewLine;
6281 
6282    p_balance_type_code          := l_balance_type_code;
6283    -- set the flag so later we will know whether the gain loss line needs to be created
6284    
6285    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6286      p_actual_flag :='A';
6287    END IF;
6288 
6289    --
6290    -- bulk performance
6291    --
6292    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6293                                       p_header_num   => 0); -- 4262811
6294    --
6295    -- set accounting line options
6296    --
6297    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6298            p_natural_side_code          => 'D'
6299          , p_gain_or_loss_flag          => 'N'
6300          , p_gl_transfer_mode_code      => 'S'
6301          , p_acct_entry_type_code       => 'A'
6302          , p_switch_side_flag           => 'Y'
6303          , p_merge_duplicate_code       => 'N'
6304          );
6305    --
6306    l_acc_rev_natural_side_code := 'C';  -- 4262811
6307    -- 
6308    --
6309    -- set accounting line type info
6310    --
6314       ,p_line_definition_owner_code => l_line_definition_owner_code
6311    xla_ae_lines_pkg.SetAcctLineType
6312       (p_component_type             => l_component_type
6313       ,p_event_type_code            => l_event_type_code
6315       ,p_line_definition_code       => l_line_definition_code
6316       ,p_accounting_line_code       => l_component_code
6317       ,p_accounting_line_type_code  => l_component_type_code
6318       ,p_accounting_line_appl_id    => l_component_appl_id
6319       ,p_amb_context_code           => l_amb_context_code
6320       ,p_entity_code                => l_entity_code
6321       ,p_event_class_code           => l_event_class_code);
6322    --
6323    -- set accounting class
6324    --
6325    xla_ae_lines_pkg.SetAcctClass(
6326            p_accounting_class_code  => 'COST'
6327          , p_ae_header_id           => l_ae_header_id
6328          );
6329 
6330    --
6331    -- set rounding class
6332    --
6333    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6334                       'COST';
6335 
6336    --
6337    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6338    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6339    --
6340    -- bulk performance
6341    --
6342    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6343 
6344    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6345       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6346 
6347    -- 4955764
6348    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6349       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6350 
6351    -- 4458381 Public Sector Enh
6352    
6353    --
6354    -- set accounting attributes for the line type
6355    --
6356    l_entered_amt_idx := 40;
6357    l_accted_amt_idx  := 45;
6358    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
6359    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6360    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
6361    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
6362    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
6363    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
6364    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
6365    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
6366    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
6367    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
6368    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
6369    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
6370    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
6371    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
6372    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
6373    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
6374    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
6375    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
6376    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
6377    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
6378    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
6379    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
6380    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
6381    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
6382    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
6383    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
6384    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
6385    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
6386    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
6387    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
6388    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
6389    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
6390    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
6391    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
6392    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
6393    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
6394    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
6395    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
6396    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
6397    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
6398    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
6399    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6400    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
6401    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
6402    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
6403    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
6404    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
6405    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6406    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
6407    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
6408    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
6409    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
6410    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
6411    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
6412    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
6413    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
6414    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
6418    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
6415    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
6416    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
6417    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
6419    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
6420    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
6421    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
6422    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
6423    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
6424    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
6425    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
6426    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
6427    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
6428    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
6429    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
6430    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
6431    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
6432    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
6433    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
6434    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
6435    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
6436    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
6437    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
6438    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
6439    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
6440    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
6441    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
6442    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
6443    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
6444    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
6445    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
6446    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
6447    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
6448    l_rec_acct_attrs.array_num_value(45)  := p_source_45;
6449    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
6450    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
6451    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
6452    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
6453    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
6454    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
6455    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
6456    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
6457    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
6458    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
6459 
6460    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6461    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6462 
6463    ---------------------------------------------------------------------------------------------------------------
6464    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6465    ---------------------------------------------------------------------------------------------------------------
6466    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6467 
6468    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6469    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6470 
6471    IF xla_accounting_cache_pkg.GetValueChar
6472          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6473          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6474    AND l_bflow_method_code = 'PRIOR_ENTRY'
6475 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6476    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6477          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6478        )
6479    THEN
6480          xla_ae_lines_pkg.BflowUpgEntry
6481            (p_business_method_code    => l_bflow_method_code
6482            ,p_business_class_code     => l_bflow_class_code
6483            ,p_balance_type            => l_balance_type_code);
6484    ELSE
6485       NULL;
6486 -- No business flow processing for business flow method of NONE.
6487    END IF;
6488 
6489    --
6490    -- call analytical criteria
6491    --
6492    
6493    --
6494    -- call description
6495    --
6496    -- No description or it is inherited.
6497    --
6498    -- call ADRs
6499    -- Bug 4922099
6500    --
6501    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6502         (NVL(l_actual_upg_option, 'N') = 'O') OR
6503         (NVL(l_enc_upg_option, 'N') = 'O')
6504       )
6505    THEN
6506    NULL;
6507    --
6508    --
6509    
6510   l_ccid := AcctDerRule_4(
6511            p_application_id           => p_application_id
6512          , p_ae_header_id             => l_ae_header_id 
6513 , p_source_4 => p_source_4
6514 , p_source_5 => p_source_5
6515          , x_transaction_coa_id       => l_adr_transaction_coa_id
6516          , x_accounting_coa_id        => l_adr_accounting_coa_id
6517          , x_value_type_code          => l_adr_value_type_code
6518          , p_side                     => 'NA'
6519    );
6520 
6521    xla_ae_lines_pkg.set_ccid(
6522     p_code_combination_id          => l_ccid
6523   , p_value_type_code              => l_adr_value_type_code
6524   , p_transaction_coa_id           => l_adr_transaction_coa_id
6525   , p_accounting_coa_id            => l_adr_accounting_coa_id
6526   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
6530   , p_component_type_code          => l_component_type_code
6527   , p_adr_type_code                => 'S'
6528   , p_component_type               => l_component_type
6529   , p_component_code               => l_component_code
6531   , p_component_appl_id            => l_component_appl_id
6532   , p_amb_context_code             => l_amb_context_code
6533   , p_side                         => 'NA'
6534   );
6535 
6536 
6537    --
6538    --
6539    END IF;
6540    --
6541    -- Bug 4922099
6542    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6543           (NVL(l_enc_upg_option, 'N') = 'O')
6544         ) AND
6545         (l_bflow_method_code = 'PRIOR_ENTRY')
6546       )
6547    THEN
6548       IF
6549       --
6550       1 = 2
6551       --
6552       THEN
6553       xla_accounting_err_pkg.build_message
6554                                     (p_appli_s_name            => 'XLA'
6555                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6556                                     ,p_token_1                 => 'LINE_NUMBER'
6557                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6558                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6559                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6560                                                                              l_component_type
6561                                                                             ,l_component_code
6562                                                                             ,l_component_type_code
6563                                                                             ,l_component_appl_id
6564                                                                             ,l_amb_context_code
6565                                                                             ,l_entity_code
6566                                                                             ,l_event_class_code
6567                                                                            )
6568                                     ,p_token_3                 => 'OWNER'
6569                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6570                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6571                                                                           ,p_lookup_code    => l_component_type_code
6572                                                                          )
6573                                     ,p_token_4                 => 'PRODUCT_NAME'
6574                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6575                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6576                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6577                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6578                                     ,p_ae_header_id            =>  NULL
6579                                        );
6580 
6581         IF (C_LEVEL_ERROR>= g_log_level) THEN
6582                  trace
6583                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6584                       ,p_level    => C_LEVEL_ERROR
6585                       ,p_module   => l_log_module);
6586         END IF;
6587       END IF;
6588    END IF;
6589    --
6590    --
6591    ------------------------------------------------------------------------------------------------
6592    -- 4219869 Business Flow
6593    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6594    -- Prior Entry.  Currently, the following code is always generated.
6595    ------------------------------------------------------------------------------------------------
6596    XLA_AE_LINES_PKG.ValidateCurrentLine;
6597 
6598    ------------------------------------------------------------------------------------
6599    -- 4219869 Business Flow
6600    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6601    ------------------------------------------------------------------------------------
6602    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6603 
6604    ----------------------------------------------------------------------------------
6605    -- 4219869 Business Flow
6606    -- Update journal entry status -- Need to generate this within IF <condition>
6607    ----------------------------------------------------------------------------------
6608    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6609          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6610          ,p_balance_type_code => l_balance_type_code
6611          );
6612 
6613    -------------------------------------------------------------------------------------------
6614    -- 4262811 - Generate the Accrual Reversal lines
6615    -------------------------------------------------------------------------------------------
6616    BEGIN
6617       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6618                               (g_array_event(p_event_id).array_value_num('header_index'));
6619       IF l_acc_rev_flag IS NULL THEN
6620          l_acc_rev_flag := 'N';
6621       END IF;
6622    EXCEPTION
6623       WHEN OTHERS THEN
6624          l_acc_rev_flag := 'N';
6625    END;
6626    --
6627    IF (l_acc_rev_flag = 'Y') THEN
6628 
6629        -- 4645092  ------------------------------------------------------------------------------
6630        -- To allow MPA report to determine if it should generate report process
6631        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6632        ------------------------------------------------------------------------------------------
6633 
6637        --
6634        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6635        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6636 
6638        -- Update the line information that should be overwritten
6639        --
6640        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6641                                          p_header_num   => 1);
6642        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6643 
6644        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6645 
6646        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6647           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6648        END IF;
6649 
6650       --
6651       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6652       --
6653       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6654           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6655       ELSE
6656           ---------------------------------------------------------------------------------------------------
6657           -- 4262811a Switch Sign
6658           ---------------------------------------------------------------------------------------------------
6659           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6660           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6661                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6662           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6663                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6664           -- 5132302
6665           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6666                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6667 
6668       END IF;
6669 
6670       -- 4955764
6671       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6672       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6673 
6674 
6675       XLA_AE_LINES_PKG.ValidateCurrentLine;
6676       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6677 
6678       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6679                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6680                ,p_balance_type_code => l_balance_type_code);
6681 
6682    END IF;
6683 
6684    -----------------------------------------------------------------------------------------
6685    -- 4262811 Multiperiod Accounting
6686    -----------------------------------------------------------------------------------------
6687      -- No MPA option is assigned.
6688 
6689 
6690 END IF;
6691 END IF;
6692 --
6693 
6694 --
6695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6696    trace
6697       (p_msg      => 'END of AcctLineType_26'
6698       ,p_level    => C_LEVEL_PROCEDURE
6699       ,p_module   => l_log_module);
6700 END IF;
6701 --
6702 EXCEPTION
6703   WHEN xla_exceptions_pkg.application_exception THEN
6704       RAISE;
6705   WHEN OTHERS THEN
6706        xla_exceptions_pkg.raise_message
6707            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_26');
6708 END AcctLineType_26;
6709 --
6710 
6711 ---------------------------------------
6712 --
6713 -- PRIVATE FUNCTION
6714 --         AcctLineType_27
6715 --
6716 ---------------------------------------
6717 PROCEDURE AcctLineType_27 (
6718   p_application_id        IN NUMBER
6719  ,p_event_id              IN NUMBER
6720  ,p_calculate_acctd_flag  IN VARCHAR2
6721  ,p_calculate_g_l_flag    IN VARCHAR2
6722  ,p_actual_flag           IN OUT VARCHAR2
6723  ,p_balance_type_code     OUT VARCHAR2
6724  ,p_gain_or_loss_ref      OUT VARCHAR2
6725  
6726 --Budget Code Combination ID
6727  , p_source_2            IN NUMBER
6728 --Cost CCID
6729  , p_source_3            IN NUMBER
6730 --Allow Account Override Flag
6731  , p_source_4            IN VARCHAR2
6732 --Cost Clearing CCID
6733  , p_source_6            IN NUMBER
6734 --Adjustment Cost Clearing CCID
6735  , p_source_7            IN NUMBER
6736 --Reversing Line Flag
6737  , p_source_22            IN VARCHAR2
6738 --Actual Upgrade Credit Accounting Class
6739  , p_source_23            IN VARCHAR2
6740 --Entered Currency Code
6741  , p_source_25            IN VARCHAR2
6742 --Exchange Rate Date
6743  , p_source_27            IN DATE
6744 --Exchange Rate
6745  , p_source_28            IN NUMBER
6746 --Exchange Rate Type
6747  , p_source_29            IN VARCHAR2
6748 --Actual Upgrade Debit Accounting Class
6749  , p_source_30            IN VARCHAR2
6750 --Use Actuals Upgrade Attributes Flag
6751  , p_source_31            IN VARCHAR2
6752 --Expenditure Item ID
6753  , p_source_32            IN NUMBER
6754 --Cost Distribution Line Number
6755  , p_source_33            IN NUMBER
6756 --Line Type
6757  , p_source_34            IN VARCHAR2
6758  , p_source_34_meaning    IN VARCHAR2
6759 --Reversed Line Number
6760  , p_source_35            IN NUMBER
6761 --Entered Burdened Cost
6762  , p_source_44            IN NUMBER
6763 --Accounted Burdened Cost
6764  , p_source_45            IN NUMBER
6765 --Encumbrance Amount
6766  , p_source_46            IN NUMBER
6767 --Project Encumbrance Applied to Application Identifier
6768  , p_source_47            IN NUMBER
6769 --Project Encumbrance Applied to Distribution Type
6773 --Project Encumbrance Applied to First Distribution ID
6770  , p_source_48            IN VARCHAR2
6771 --Project Encumbrance Applied to Entity Code
6772  , p_source_49            IN VARCHAR2
6774  , p_source_50            IN NUMBER
6775 --Project Encumbrance Applied to First System Transaction ID
6776  , p_source_51            IN NUMBER
6777 --Project Encumbrance Applied to Second Distribution ID
6778  , p_source_52            IN VARCHAR2
6779 --Encumbrance Upgrade Credit Accounting Class
6780  , p_source_53            IN VARCHAR2
6781 --Encumbrance Upgrade Debit Accounting Class
6782  , p_source_54            IN VARCHAR2
6783 --Use Encumbrance Upgrade Attributes Flag
6784  , p_source_55            IN VARCHAR2
6785 --Encumbrance Type ID
6786  , p_source_56            IN NUMBER
6787 --Project Encumbrance Type ID
6788  , p_source_57            IN NUMBER
6789 )
6790 IS
6791 
6792 l_component_type              VARCHAR2(80);
6793 l_component_code              VARCHAR2(30);
6794 l_component_type_code         VARCHAR2(1);
6795 l_component_appl_id           INTEGER;
6796 l_amb_context_code            VARCHAR2(30);
6797 l_entity_code                 VARCHAR2(30);
6798 l_event_class_code            VARCHAR2(30);
6799 l_ae_header_id                NUMBER;
6800 l_event_type_code             VARCHAR2(30);
6801 l_line_definition_code        VARCHAR2(30);
6802 l_line_definition_owner_code  VARCHAR2(1);
6803 --
6804 -- adr variables
6805 l_segment                     VARCHAR2(30);
6806 l_ccid                        NUMBER;
6807 l_adr_transaction_coa_id      NUMBER;
6808 l_adr_accounting_coa_id       NUMBER;
6809 l_adr_flexfield_segment_code  VARCHAR2(30);
6810 l_adr_flex_value_set_id       NUMBER;
6811 l_adr_value_type_code         VARCHAR2(30);
6812 l_adr_value_combination_id    NUMBER;
6813 l_adr_value_segment_code      VARCHAR2(30);
6814 
6815 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6816 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6817 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6818 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6819 
6820 -- 4262811 Variables ------------------------------------------------------------------------------------------
6821 l_entered_amt_idx             NUMBER;
6822 l_accted_amt_idx              NUMBER;
6823 l_acc_rev_flag                VARCHAR2(1);
6824 l_accrual_line_num            NUMBER;
6825 l_tmp_amt                     NUMBER;
6826 l_acc_rev_natural_side_code   VARCHAR2(1);
6827 
6828 l_num_entries                 NUMBER;
6829 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6830 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6831 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6832 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6833 l_recog_line_1                NUMBER;
6834 l_recog_line_2                NUMBER;
6835 
6836 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6837 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6838 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6839 
6840 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6841 
6842 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6843 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6844 
6845 ---------------------------------------------------------------------------------------------------------------
6846 
6847 
6848 --
6849 -- bulk performance
6850 --
6851 l_balance_type_code           VARCHAR2(1);
6852 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6853 l_log_module                  VARCHAR2(240);
6854 
6855 --
6856 -- Upgrade strategy
6857 --
6858 l_actual_upg_option           VARCHAR2(1);
6859 l_enc_upg_option           VARCHAR2(1);
6860 
6861 --
6862 BEGIN
6863 --
6864 IF g_log_enabled THEN
6865       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
6866 END IF;
6867 --
6868 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6869 
6870       trace
6871          (p_msg      => 'BEGIN of AcctLineType_27'
6872          ,p_level    => C_LEVEL_PROCEDURE
6873          ,p_module   => l_log_module);
6874 
6875 END IF;
6876 --
6877 l_component_type             := 'AMB_JLT';
6878 l_component_code             := 'PA_BURDEN_COST_ADJ_CLEARING';
6879 l_component_type_code        := 'S';
6880 l_component_appl_id          :=  275;
6881 l_amb_context_code           := 'DEFAULT';
6882 l_entity_code                := 'EXPENDITURES';
6883 l_event_class_code           := 'BURDEN_COST_ADJ';
6884 l_event_type_code            := 'BURDEN_COST_ADJ_ALL';
6885 l_line_definition_owner_code := 'S';
6886 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
6887 --
6888 l_balance_type_code          := 'A';
6889 l_segment                     := NULL;
6890 l_ccid                        := NULL;
6891 l_adr_transaction_coa_id      := NULL;
6892 l_adr_accounting_coa_id       := NULL;
6893 l_adr_flexfield_segment_code  := NULL;
6894 l_adr_flex_value_set_id       := NULL;
6895 l_adr_value_type_code         := NULL;
6896 l_adr_value_combination_id    := NULL;
6897 l_adr_value_segment_code      := NULL;
6898 
6899 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6900 l_bflow_class_code           := '';    -- 4219869 Business Flow
6901 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6902 l_budgetary_control_flag     := 'N';
6903 
6904 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6905 l_bflow_applied_to_amt       := NULL; -- 5132302
6906 l_entered_amt_idx            := NULL;          -- 4262811
6907 l_accted_amt_idx             := NULL;          -- 4262811
6911 --
6908 l_acc_rev_flag               := NULL;          -- 4262811
6909 l_accrual_line_num           := NULL;          -- 4262811
6910 l_tmp_amt                    := NULL;          -- 4262811
6912  
6913 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6914     l_balance_type_code <> 'B' THEN
6915 IF NVL(p_source_34,'
6916 ') =  'R'
6917  THEN 
6918 
6919    --
6920    XLA_AE_LINES_PKG.SetNewLine;
6921 
6922    p_balance_type_code          := l_balance_type_code;
6923    -- set the flag so later we will know whether the gain loss line needs to be created
6924    
6925    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6926      p_actual_flag :='A';
6927    END IF;
6928 
6929    --
6930    -- bulk performance
6931    --
6932    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6933                                       p_header_num   => 0); -- 4262811
6934    --
6935    -- set accounting line options
6936    --
6937    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6938            p_natural_side_code          => 'C'
6939          , p_gain_or_loss_flag          => 'N'
6940          , p_gl_transfer_mode_code      => 'S'
6941          , p_acct_entry_type_code       => 'A'
6942          , p_switch_side_flag           => 'Y'
6943          , p_merge_duplicate_code       => 'N'
6944          );
6945    --
6946    l_acc_rev_natural_side_code := 'D';  -- 4262811
6947    -- 
6948    --
6949    -- set accounting line type info
6950    --
6951    xla_ae_lines_pkg.SetAcctLineType
6952       (p_component_type             => l_component_type
6953       ,p_event_type_code            => l_event_type_code
6954       ,p_line_definition_owner_code => l_line_definition_owner_code
6955       ,p_line_definition_code       => l_line_definition_code
6956       ,p_accounting_line_code       => l_component_code
6957       ,p_accounting_line_type_code  => l_component_type_code
6958       ,p_accounting_line_appl_id    => l_component_appl_id
6959       ,p_amb_context_code           => l_amb_context_code
6960       ,p_entity_code                => l_entity_code
6961       ,p_event_class_code           => l_event_class_code);
6962    --
6963    -- set accounting class
6964    --
6965    xla_ae_lines_pkg.SetAcctClass(
6966            p_accounting_class_code  => 'COST_CLEARING'
6967          , p_ae_header_id           => l_ae_header_id
6968          );
6969 
6970    --
6971    -- set rounding class
6972    --
6973    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6974                       'COST_CLEARING';
6975 
6976    --
6977    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6978    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6979    --
6980    -- bulk performance
6981    --
6982    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6983 
6984    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6985       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6986 
6987    -- 4955764
6988    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6989       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6990 
6991    -- 4458381 Public Sector Enh
6992    
6993    --
6994    -- set accounting attributes for the line type
6995    --
6996    l_entered_amt_idx := 40;
6997    l_accted_amt_idx  := 45;
6998    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
6999    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7000    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
7001    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
7002    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
7003    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
7004    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
7005    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
7006    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
7007    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
7008    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
7009    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
7010    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
7011    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
7012    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
7013    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
7014    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
7015    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
7016    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
7017    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
7018    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
7019    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
7020    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
7021    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
7022    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
7023    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
7024    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
7025    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
7026    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
7027    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
7028    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
7029    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
7030    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
7034    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
7031    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
7032    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
7033    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
7035    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
7036    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
7037    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
7038    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
7039    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7040    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
7041    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
7042    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
7043    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
7044    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
7045    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7046    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
7047    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
7048    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
7049    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
7050    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
7051    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
7052    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
7053    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
7054    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
7055    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
7056    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
7057    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
7058    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
7059    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
7060    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
7061    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
7062    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
7063    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
7064    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
7065    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
7066    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
7067    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
7068    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
7069    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
7070    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
7071    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
7072    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
7073    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
7074    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
7075    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
7076    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
7077    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
7078    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
7079    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
7080    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
7081    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
7082    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
7083    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
7084    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
7085    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
7086    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
7087    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
7088    l_rec_acct_attrs.array_num_value(45)  := p_source_45;
7089    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
7090    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
7091    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
7092    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
7093    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
7094    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
7095    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
7096    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
7097    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
7098    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
7099 
7100    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7101    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7102 
7103    ---------------------------------------------------------------------------------------------------------------
7104    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7105    ---------------------------------------------------------------------------------------------------------------
7106    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7107 
7108    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7109    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7110 
7111    IF xla_accounting_cache_pkg.GetValueChar
7112          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7113          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7114    AND l_bflow_method_code = 'PRIOR_ENTRY'
7115 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7116    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7117          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7118        )
7119    THEN
7120          xla_ae_lines_pkg.BflowUpgEntry
7121            (p_business_method_code    => l_bflow_method_code
7125       NULL;
7122            ,p_business_class_code     => l_bflow_class_code
7123            ,p_balance_type            => l_balance_type_code);
7124    ELSE
7126 -- No business flow processing for business flow method of NONE.
7127    END IF;
7128 
7129    --
7130    -- call analytical criteria
7131    --
7132    
7133    --
7134    -- call description
7135    --
7136    -- No description or it is inherited.
7137    --
7138    -- call ADRs
7139    -- Bug 4922099
7140    --
7141    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7142         (NVL(l_actual_upg_option, 'N') = 'O') OR
7143         (NVL(l_enc_upg_option, 'N') = 'O')
7144       )
7145    THEN
7146    NULL;
7147    --
7148    --
7149    
7150   l_ccid := AcctDerRule_6(
7151            p_application_id           => p_application_id
7152          , p_ae_header_id             => l_ae_header_id 
7153 , p_source_4 => p_source_4
7154 , p_source_7 => p_source_7
7155          , x_transaction_coa_id       => l_adr_transaction_coa_id
7156          , x_accounting_coa_id        => l_adr_accounting_coa_id
7157          , x_value_type_code          => l_adr_value_type_code
7158          , p_side                     => 'NA'
7159    );
7160 
7161    xla_ae_lines_pkg.set_ccid(
7162     p_code_combination_id          => l_ccid
7163   , p_value_type_code              => l_adr_value_type_code
7164   , p_transaction_coa_id           => l_adr_transaction_coa_id
7165   , p_accounting_coa_id            => l_adr_accounting_coa_id
7166   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
7167   , p_adr_type_code                => 'S'
7168   , p_component_type               => l_component_type
7169   , p_component_code               => l_component_code
7170   , p_component_type_code          => l_component_type_code
7171   , p_component_appl_id            => l_component_appl_id
7172   , p_amb_context_code             => l_amb_context_code
7173   , p_side                         => 'NA'
7174   );
7175 
7176 
7177    --
7178    --
7179    END IF;
7180    --
7181    -- Bug 4922099
7182    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7183           (NVL(l_enc_upg_option, 'N') = 'O')
7184         ) AND
7185         (l_bflow_method_code = 'PRIOR_ENTRY')
7186       )
7187    THEN
7188       IF
7189       --
7190       1 = 2
7191       --
7192       THEN
7193       xla_accounting_err_pkg.build_message
7194                                     (p_appli_s_name            => 'XLA'
7195                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7196                                     ,p_token_1                 => 'LINE_NUMBER'
7197                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7198                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7199                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7200                                                                              l_component_type
7201                                                                             ,l_component_code
7202                                                                             ,l_component_type_code
7203                                                                             ,l_component_appl_id
7204                                                                             ,l_amb_context_code
7205                                                                             ,l_entity_code
7206                                                                             ,l_event_class_code
7207                                                                            )
7208                                     ,p_token_3                 => 'OWNER'
7209                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7210                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7211                                                                           ,p_lookup_code    => l_component_type_code
7212                                                                          )
7213                                     ,p_token_4                 => 'PRODUCT_NAME'
7214                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7215                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7216                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7217                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7218                                     ,p_ae_header_id            =>  NULL
7219                                        );
7220 
7221         IF (C_LEVEL_ERROR>= g_log_level) THEN
7222                  trace
7223                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7224                       ,p_level    => C_LEVEL_ERROR
7225                       ,p_module   => l_log_module);
7226         END IF;
7227       END IF;
7228    END IF;
7229    --
7230    --
7231    ------------------------------------------------------------------------------------------------
7232    -- 4219869 Business Flow
7233    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7234    -- Prior Entry.  Currently, the following code is always generated.
7235    ------------------------------------------------------------------------------------------------
7236    XLA_AE_LINES_PKG.ValidateCurrentLine;
7237 
7238    ------------------------------------------------------------------------------------
7239    -- 4219869 Business Flow
7240    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7241    ------------------------------------------------------------------------------------
7245    -- 4219869 Business Flow
7242    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7243 
7244    ----------------------------------------------------------------------------------
7246    -- Update journal entry status -- Need to generate this within IF <condition>
7247    ----------------------------------------------------------------------------------
7248    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7249          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7250          ,p_balance_type_code => l_balance_type_code
7251          );
7252 
7253    -------------------------------------------------------------------------------------------
7254    -- 4262811 - Generate the Accrual Reversal lines
7255    -------------------------------------------------------------------------------------------
7256    BEGIN
7257       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7258                               (g_array_event(p_event_id).array_value_num('header_index'));
7259       IF l_acc_rev_flag IS NULL THEN
7260          l_acc_rev_flag := 'N';
7261       END IF;
7262    EXCEPTION
7263       WHEN OTHERS THEN
7264          l_acc_rev_flag := 'N';
7265    END;
7266    --
7267    IF (l_acc_rev_flag = 'Y') THEN
7268 
7269        -- 4645092  ------------------------------------------------------------------------------
7270        -- To allow MPA report to determine if it should generate report process
7271        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7272        ------------------------------------------------------------------------------------------
7273 
7274        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7275        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7276 
7277        --
7278        -- Update the line information that should be overwritten
7279        --
7280        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7281                                          p_header_num   => 1);
7282        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7283 
7284        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7285 
7286        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7287           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7288        END IF;
7289 
7290       --
7291       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7292       --
7293       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7294           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7295       ELSE
7296           ---------------------------------------------------------------------------------------------------
7297           -- 4262811a Switch Sign
7298           ---------------------------------------------------------------------------------------------------
7299           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7300           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7301                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7302           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7303                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7304           -- 5132302
7305           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7306                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7307 
7308       END IF;
7309 
7310       -- 4955764
7311       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7312       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7313 
7314 
7315       XLA_AE_LINES_PKG.ValidateCurrentLine;
7316       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7317 
7318       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7319                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7320                ,p_balance_type_code => l_balance_type_code);
7321 
7322    END IF;
7323 
7324    -----------------------------------------------------------------------------------------
7325    -- 4262811 Multiperiod Accounting
7326    -----------------------------------------------------------------------------------------
7327      -- No MPA option is assigned.
7328 
7329 
7330 END IF;
7331 END IF;
7332 --
7333 
7334 --
7335 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7336    trace
7337       (p_msg      => 'END of AcctLineType_27'
7338       ,p_level    => C_LEVEL_PROCEDURE
7339       ,p_module   => l_log_module);
7340 END IF;
7341 --
7342 EXCEPTION
7343   WHEN xla_exceptions_pkg.application_exception THEN
7344       RAISE;
7345   WHEN OTHERS THEN
7346        xla_exceptions_pkg.raise_message
7347            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_27');
7348 END AcctLineType_27;
7349 --
7350 
7351 ---------------------------------------
7352 --
7353 -- PRIVATE FUNCTION
7354 --         AcctLineType_28
7355 --
7356 ---------------------------------------
7357 PROCEDURE AcctLineType_28 (
7358   p_application_id        IN NUMBER
7359  ,p_event_id              IN NUMBER
7360  ,p_calculate_acctd_flag  IN VARCHAR2
7361  ,p_calculate_g_l_flag    IN VARCHAR2
7362  ,p_actual_flag           IN OUT VARCHAR2
7363  ,p_balance_type_code     OUT VARCHAR2
7364  ,p_gain_or_loss_ref      OUT VARCHAR2
7365  
7366 --Budget Code Combination ID
7367  , p_source_2            IN NUMBER
7368 --Cost CCID
7372 --Cost Clearing CCID
7369  , p_source_3            IN NUMBER
7370 --Allow Account Override Flag
7371  , p_source_4            IN VARCHAR2
7373  , p_source_6            IN NUMBER
7374 --Adjustment Cost Clearing CCID
7375  , p_source_7            IN NUMBER
7376 --Reversing Line Flag
7377  , p_source_22            IN VARCHAR2
7378 --Actual Upgrade Credit Accounting Class
7379  , p_source_23            IN VARCHAR2
7380 --Entered Currency Code
7381  , p_source_25            IN VARCHAR2
7382 --Exchange Rate Date
7383  , p_source_27            IN DATE
7384 --Exchange Rate
7385  , p_source_28            IN NUMBER
7386 --Exchange Rate Type
7387  , p_source_29            IN VARCHAR2
7388 --Actual Upgrade Debit Accounting Class
7389  , p_source_30            IN VARCHAR2
7390 --Use Actuals Upgrade Attributes Flag
7391  , p_source_31            IN VARCHAR2
7392 --Expenditure Item ID
7393  , p_source_32            IN NUMBER
7394 --Cost Distribution Line Number
7395  , p_source_33            IN NUMBER
7396 --Line Type
7397  , p_source_34            IN VARCHAR2
7398  , p_source_34_meaning    IN VARCHAR2
7399 --Reversed Line Number
7400  , p_source_35            IN NUMBER
7401 --Entered Burdened Cost
7402  , p_source_44            IN NUMBER
7403 --Accounted Burdened Cost
7404  , p_source_45            IN NUMBER
7405 --Encumbrance Amount
7406  , p_source_46            IN NUMBER
7407 --Project Encumbrance Applied to Application Identifier
7408  , p_source_47            IN NUMBER
7409 --Project Encumbrance Applied to Distribution Type
7410  , p_source_48            IN VARCHAR2
7411 --Project Encumbrance Applied to Entity Code
7412  , p_source_49            IN VARCHAR2
7413 --Project Encumbrance Applied to First Distribution ID
7414  , p_source_50            IN NUMBER
7415 --Project Encumbrance Applied to First System Transaction ID
7416  , p_source_51            IN NUMBER
7417 --Project Encumbrance Applied to Second Distribution ID
7418  , p_source_52            IN VARCHAR2
7419 --Encumbrance Upgrade Credit Accounting Class
7420  , p_source_53            IN VARCHAR2
7421 --Encumbrance Upgrade Debit Accounting Class
7422  , p_source_54            IN VARCHAR2
7423 --Use Encumbrance Upgrade Attributes Flag
7424  , p_source_55            IN VARCHAR2
7425 --Encumbrance Type ID
7426  , p_source_56            IN NUMBER
7427 --Project Encumbrance Type ID
7428  , p_source_57            IN NUMBER
7429 )
7430 IS
7431 
7432 l_component_type              VARCHAR2(80);
7433 l_component_code              VARCHAR2(30);
7434 l_component_type_code         VARCHAR2(1);
7435 l_component_appl_id           INTEGER;
7436 l_amb_context_code            VARCHAR2(30);
7437 l_entity_code                 VARCHAR2(30);
7438 l_event_class_code            VARCHAR2(30);
7439 l_ae_header_id                NUMBER;
7440 l_event_type_code             VARCHAR2(30);
7441 l_line_definition_code        VARCHAR2(30);
7442 l_line_definition_owner_code  VARCHAR2(1);
7443 --
7444 -- adr variables
7445 l_segment                     VARCHAR2(30);
7446 l_ccid                        NUMBER;
7447 l_adr_transaction_coa_id      NUMBER;
7448 l_adr_accounting_coa_id       NUMBER;
7449 l_adr_flexfield_segment_code  VARCHAR2(30);
7450 l_adr_flex_value_set_id       NUMBER;
7451 l_adr_value_type_code         VARCHAR2(30);
7452 l_adr_value_combination_id    NUMBER;
7453 l_adr_value_segment_code      VARCHAR2(30);
7454 
7455 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7456 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7457 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7458 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7459 
7460 -- 4262811 Variables ------------------------------------------------------------------------------------------
7461 l_entered_amt_idx             NUMBER;
7462 l_accted_amt_idx              NUMBER;
7463 l_acc_rev_flag                VARCHAR2(1);
7464 l_accrual_line_num            NUMBER;
7465 l_tmp_amt                     NUMBER;
7466 l_acc_rev_natural_side_code   VARCHAR2(1);
7467 
7468 l_num_entries                 NUMBER;
7469 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7470 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7471 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7472 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7473 l_recog_line_1                NUMBER;
7474 l_recog_line_2                NUMBER;
7475 
7476 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7477 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7478 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7479 
7480 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7481 
7482 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7483 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7484 
7485 ---------------------------------------------------------------------------------------------------------------
7486 
7487 
7488 --
7489 -- bulk performance
7490 --
7491 l_balance_type_code           VARCHAR2(1);
7492 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7493 l_log_module                  VARCHAR2(240);
7494 
7495 --
7496 -- Upgrade strategy
7497 --
7498 l_actual_upg_option           VARCHAR2(1);
7499 l_enc_upg_option           VARCHAR2(1);
7500 
7501 --
7502 BEGIN
7503 --
7504 IF g_log_enabled THEN
7505       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
7506 END IF;
7507 --
7508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7509 
7510       trace
7511          (p_msg      => 'BEGIN of AcctLineType_28'
7515 END IF;
7512          ,p_level    => C_LEVEL_PROCEDURE
7513          ,p_module   => l_log_module);
7514 
7516 --
7517 l_component_type             := 'AMB_JLT';
7518 l_component_code             := 'PA_BURDEN_COST_CLEARING';
7519 l_component_type_code        := 'S';
7520 l_component_appl_id          :=  275;
7521 l_amb_context_code           := 'DEFAULT';
7522 l_entity_code                := 'EXPENDITURES';
7523 l_event_class_code           := 'BURDEN_COST';
7524 l_event_type_code            := 'BURDEN_COST_ALL';
7525 l_line_definition_owner_code := 'S';
7526 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
7527 --
7528 l_balance_type_code          := 'A';
7529 l_segment                     := NULL;
7530 l_ccid                        := NULL;
7531 l_adr_transaction_coa_id      := NULL;
7532 l_adr_accounting_coa_id       := NULL;
7533 l_adr_flexfield_segment_code  := NULL;
7534 l_adr_flex_value_set_id       := NULL;
7535 l_adr_value_type_code         := NULL;
7536 l_adr_value_combination_id    := NULL;
7537 l_adr_value_segment_code      := NULL;
7538 
7539 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7540 l_bflow_class_code           := '';    -- 4219869 Business Flow
7541 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7542 l_budgetary_control_flag     := 'N';
7543 
7544 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7545 l_bflow_applied_to_amt       := NULL; -- 5132302
7546 l_entered_amt_idx            := NULL;          -- 4262811
7547 l_accted_amt_idx             := NULL;          -- 4262811
7548 l_acc_rev_flag               := NULL;          -- 4262811
7549 l_accrual_line_num           := NULL;          -- 4262811
7550 l_tmp_amt                    := NULL;          -- 4262811
7551 --
7552  
7553 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7554     l_balance_type_code <> 'B' THEN
7555 IF NVL(p_source_34,'
7556 ') =  'R'
7557  THEN 
7558 
7559    --
7560    XLA_AE_LINES_PKG.SetNewLine;
7561 
7562    p_balance_type_code          := l_balance_type_code;
7563    -- set the flag so later we will know whether the gain loss line needs to be created
7564    
7565    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7566      p_actual_flag :='A';
7567    END IF;
7568 
7569    --
7570    -- bulk performance
7571    --
7572    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7573                                       p_header_num   => 0); -- 4262811
7574    --
7575    -- set accounting line options
7576    --
7577    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7578            p_natural_side_code          => 'C'
7579          , p_gain_or_loss_flag          => 'N'
7580          , p_gl_transfer_mode_code      => 'S'
7581          , p_acct_entry_type_code       => 'A'
7582          , p_switch_side_flag           => 'Y'
7583          , p_merge_duplicate_code       => 'N'
7584          );
7585    --
7586    l_acc_rev_natural_side_code := 'D';  -- 4262811
7587    -- 
7588    --
7589    -- set accounting line type info
7590    --
7591    xla_ae_lines_pkg.SetAcctLineType
7592       (p_component_type             => l_component_type
7593       ,p_event_type_code            => l_event_type_code
7594       ,p_line_definition_owner_code => l_line_definition_owner_code
7595       ,p_line_definition_code       => l_line_definition_code
7596       ,p_accounting_line_code       => l_component_code
7597       ,p_accounting_line_type_code  => l_component_type_code
7598       ,p_accounting_line_appl_id    => l_component_appl_id
7599       ,p_amb_context_code           => l_amb_context_code
7600       ,p_entity_code                => l_entity_code
7601       ,p_event_class_code           => l_event_class_code);
7602    --
7603    -- set accounting class
7604    --
7605    xla_ae_lines_pkg.SetAcctClass(
7606            p_accounting_class_code  => 'COST_CLEARING'
7607          , p_ae_header_id           => l_ae_header_id
7608          );
7609 
7610    --
7611    -- set rounding class
7612    --
7613    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7614                       'COST_CLEARING';
7615 
7616    --
7617    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7618    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7619    --
7620    -- bulk performance
7621    --
7622    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7623 
7624    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7625       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7626 
7627    -- 4955764
7628    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7629       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7630 
7631    -- 4458381 Public Sector Enh
7632    
7633    --
7634    -- set accounting attributes for the line type
7635    --
7636    l_entered_amt_idx := 40;
7637    l_accted_amt_idx  := 45;
7638    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
7639    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7640    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
7641    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
7642    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
7643    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
7644    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
7645    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
7646    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
7650    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
7647    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
7648    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
7649    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
7651    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
7652    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
7653    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
7654    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
7655    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
7656    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
7657    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
7658    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
7659    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
7660    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
7661    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
7662    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
7663    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
7664    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
7665    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
7666    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
7667    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
7668    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
7669    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
7670    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
7671    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
7672    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
7673    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
7674    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
7675    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
7676    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
7677    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
7678    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
7679    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7680    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
7681    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
7682    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
7683    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
7684    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
7685    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7686    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
7687    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
7688    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
7689    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
7690    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
7691    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
7692    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
7693    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
7694    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
7695    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
7696    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
7697    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
7698    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
7699    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
7700    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
7701    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
7702    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
7703    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
7704    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
7705    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
7706    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
7707    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
7708    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
7709    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
7710    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
7711    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
7712    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
7713    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
7714    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
7715    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
7716    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
7717    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
7718    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
7719    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
7720    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
7721    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
7722    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
7723    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
7724    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
7725    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
7726    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
7727    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
7728    l_rec_acct_attrs.array_num_value(45)  := p_source_45;
7729    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
7730    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
7731    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
7732    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
7733    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
7734    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
7735    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
7736    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
7740    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7737    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
7738    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
7739 
7741    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7742 
7743    ---------------------------------------------------------------------------------------------------------------
7744    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7745    ---------------------------------------------------------------------------------------------------------------
7746    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7747 
7748    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7749    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7750 
7751    IF xla_accounting_cache_pkg.GetValueChar
7752          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7753          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7754    AND l_bflow_method_code = 'PRIOR_ENTRY'
7755 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7756    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7757          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7758        )
7759    THEN
7760          xla_ae_lines_pkg.BflowUpgEntry
7761            (p_business_method_code    => l_bflow_method_code
7762            ,p_business_class_code     => l_bflow_class_code
7763            ,p_balance_type            => l_balance_type_code);
7764    ELSE
7765       NULL;
7766 -- No business flow processing for business flow method of NONE.
7767    END IF;
7768 
7769    --
7770    -- call analytical criteria
7771    --
7772    
7773    --
7774    -- call description
7775    --
7776    -- No description or it is inherited.
7777    --
7778    -- call ADRs
7779    -- Bug 4922099
7780    --
7781    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7782         (NVL(l_actual_upg_option, 'N') = 'O') OR
7783         (NVL(l_enc_upg_option, 'N') = 'O')
7784       )
7785    THEN
7786    NULL;
7787    --
7788    --
7789    
7790   l_ccid := AcctDerRule_5(
7791            p_application_id           => p_application_id
7792          , p_ae_header_id             => l_ae_header_id 
7793 , p_source_4 => p_source_4
7794 , p_source_6 => p_source_6
7795 , p_source_7 => p_source_7
7796          , x_transaction_coa_id       => l_adr_transaction_coa_id
7797          , x_accounting_coa_id        => l_adr_accounting_coa_id
7798          , x_value_type_code          => l_adr_value_type_code
7799          , p_side                     => 'NA'
7800    );
7801 
7802    xla_ae_lines_pkg.set_ccid(
7803     p_code_combination_id          => l_ccid
7804   , p_value_type_code              => l_adr_value_type_code
7805   , p_transaction_coa_id           => l_adr_transaction_coa_id
7806   , p_accounting_coa_id            => l_adr_accounting_coa_id
7807   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
7808   , p_adr_type_code                => 'S'
7809   , p_component_type               => l_component_type
7810   , p_component_code               => l_component_code
7811   , p_component_type_code          => l_component_type_code
7812   , p_component_appl_id            => l_component_appl_id
7813   , p_amb_context_code             => l_amb_context_code
7814   , p_side                         => 'NA'
7815   );
7816 
7817 
7818    --
7819    --
7820    END IF;
7821    --
7822    -- Bug 4922099
7823    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7824           (NVL(l_enc_upg_option, 'N') = 'O')
7825         ) AND
7826         (l_bflow_method_code = 'PRIOR_ENTRY')
7827       )
7828    THEN
7829       IF
7830       --
7831       1 = 2
7832       --
7833       THEN
7834       xla_accounting_err_pkg.build_message
7835                                     (p_appli_s_name            => 'XLA'
7836                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7837                                     ,p_token_1                 => 'LINE_NUMBER'
7838                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7839                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7840                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7841                                                                              l_component_type
7842                                                                             ,l_component_code
7843                                                                             ,l_component_type_code
7844                                                                             ,l_component_appl_id
7845                                                                             ,l_amb_context_code
7846                                                                             ,l_entity_code
7847                                                                             ,l_event_class_code
7848                                                                            )
7849                                     ,p_token_3                 => 'OWNER'
7850                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7851                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7852                                                                           ,p_lookup_code    => l_component_type_code
7853                                                                          )
7854                                     ,p_token_4                 => 'PRODUCT_NAME'
7858                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7855                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7856                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7857                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7859                                     ,p_ae_header_id            =>  NULL
7860                                        );
7861 
7862         IF (C_LEVEL_ERROR>= g_log_level) THEN
7863                  trace
7864                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7865                       ,p_level    => C_LEVEL_ERROR
7866                       ,p_module   => l_log_module);
7867         END IF;
7868       END IF;
7869    END IF;
7870    --
7871    --
7872    ------------------------------------------------------------------------------------------------
7873    -- 4219869 Business Flow
7874    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7875    -- Prior Entry.  Currently, the following code is always generated.
7876    ------------------------------------------------------------------------------------------------
7877    XLA_AE_LINES_PKG.ValidateCurrentLine;
7878 
7879    ------------------------------------------------------------------------------------
7880    -- 4219869 Business Flow
7881    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7882    ------------------------------------------------------------------------------------
7883    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7884 
7885    ----------------------------------------------------------------------------------
7886    -- 4219869 Business Flow
7887    -- Update journal entry status -- Need to generate this within IF <condition>
7888    ----------------------------------------------------------------------------------
7889    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7890          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7891          ,p_balance_type_code => l_balance_type_code
7892          );
7893 
7894    -------------------------------------------------------------------------------------------
7895    -- 4262811 - Generate the Accrual Reversal lines
7896    -------------------------------------------------------------------------------------------
7897    BEGIN
7898       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7899                               (g_array_event(p_event_id).array_value_num('header_index'));
7900       IF l_acc_rev_flag IS NULL THEN
7901          l_acc_rev_flag := 'N';
7902       END IF;
7903    EXCEPTION
7904       WHEN OTHERS THEN
7905          l_acc_rev_flag := 'N';
7906    END;
7907    --
7908    IF (l_acc_rev_flag = 'Y') THEN
7909 
7910        -- 4645092  ------------------------------------------------------------------------------
7911        -- To allow MPA report to determine if it should generate report process
7912        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7913        ------------------------------------------------------------------------------------------
7914 
7915        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7916        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7917 
7918        --
7919        -- Update the line information that should be overwritten
7920        --
7921        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7922                                          p_header_num   => 1);
7923        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7924 
7925        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7926 
7927        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7928           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7929        END IF;
7930 
7931       --
7932       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7933       --
7934       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7935           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7936       ELSE
7937           ---------------------------------------------------------------------------------------------------
7938           -- 4262811a Switch Sign
7939           ---------------------------------------------------------------------------------------------------
7940           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7941           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7942                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7943           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7944                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7945           -- 5132302
7946           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7947                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7948 
7949       END IF;
7950 
7951       -- 4955764
7952       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7953       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7954 
7955 
7956       XLA_AE_LINES_PKG.ValidateCurrentLine;
7957       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7958 
7959       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7963    END IF;
7960                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7961                ,p_balance_type_code => l_balance_type_code);
7962 
7964 
7965    -----------------------------------------------------------------------------------------
7966    -- 4262811 Multiperiod Accounting
7967    -----------------------------------------------------------------------------------------
7968      -- No MPA option is assigned.
7969 
7970 
7971 END IF;
7972 END IF;
7973 --
7974 
7975 --
7976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7977    trace
7978       (p_msg      => 'END of AcctLineType_28'
7979       ,p_level    => C_LEVEL_PROCEDURE
7980       ,p_module   => l_log_module);
7981 END IF;
7982 --
7983 EXCEPTION
7984   WHEN xla_exceptions_pkg.application_exception THEN
7985       RAISE;
7986   WHEN OTHERS THEN
7987        xla_exceptions_pkg.raise_message
7988            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_28');
7989 END AcctLineType_28;
7990 --
7991 
7992 ---------------------------------------
7993 --
7994 -- PRIVATE FUNCTION
7995 --         AcctLineType_29
7996 --
7997 ---------------------------------------
7998 PROCEDURE AcctLineType_29 (
7999   p_application_id        IN NUMBER
8000  ,p_event_id              IN NUMBER
8001  ,p_calculate_acctd_flag  IN VARCHAR2
8002  ,p_calculate_g_l_flag    IN VARCHAR2
8003  ,p_actual_flag           IN OUT VARCHAR2
8004  ,p_balance_type_code     OUT VARCHAR2
8005  ,p_gain_or_loss_ref      OUT VARCHAR2
8006  
8007 --Revenue CCID
8008  , p_source_18            IN NUMBER
8009 --Entered Currency Code
8010  , p_source_25            IN VARCHAR2
8011 --Exchange Rate Date
8012  , p_source_27            IN DATE
8013 --Exchange Rate
8014  , p_source_28            IN NUMBER
8015 --Exchange Rate Type
8016  , p_source_29            IN VARCHAR2
8017 --Revenue Distribution Type
8018  , p_source_36            IN VARCHAR2
8019 --System Linkage Function
8020  , p_source_37            IN VARCHAR2
8021 --Crediting Revenue Flag
8022  , p_source_38            IN VARCHAR2
8023 --Revenue First Distribution ID
8024  , p_source_39            IN NUMBER
8025 --Revenue Second Distribution ID
8026  , p_source_40            IN NUMBER
8027 --Entered Amount
8028  , p_source_41            IN NUMBER
8029 --Event ID
8030  , p_source_42            IN NUMBER
8031 --Accounted Amount
8032  , p_source_43            IN NUMBER
8033 )
8034 IS
8035 
8036 l_component_type              VARCHAR2(80);
8037 l_component_code              VARCHAR2(30);
8038 l_component_type_code         VARCHAR2(1);
8039 l_component_appl_id           INTEGER;
8040 l_amb_context_code            VARCHAR2(30);
8041 l_entity_code                 VARCHAR2(30);
8042 l_event_class_code            VARCHAR2(30);
8043 l_ae_header_id                NUMBER;
8044 l_event_type_code             VARCHAR2(30);
8045 l_line_definition_code        VARCHAR2(30);
8046 l_line_definition_owner_code  VARCHAR2(1);
8047 --
8048 -- adr variables
8049 l_segment                     VARCHAR2(30);
8050 l_ccid                        NUMBER;
8051 l_adr_transaction_coa_id      NUMBER;
8052 l_adr_accounting_coa_id       NUMBER;
8053 l_adr_flexfield_segment_code  VARCHAR2(30);
8054 l_adr_flex_value_set_id       NUMBER;
8055 l_adr_value_type_code         VARCHAR2(30);
8056 l_adr_value_combination_id    NUMBER;
8057 l_adr_value_segment_code      VARCHAR2(30);
8058 
8059 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8060 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8061 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8062 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8063 
8064 -- 4262811 Variables ------------------------------------------------------------------------------------------
8065 l_entered_amt_idx             NUMBER;
8066 l_accted_amt_idx              NUMBER;
8067 l_acc_rev_flag                VARCHAR2(1);
8068 l_accrual_line_num            NUMBER;
8069 l_tmp_amt                     NUMBER;
8070 l_acc_rev_natural_side_code   VARCHAR2(1);
8071 
8072 l_num_entries                 NUMBER;
8073 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8074 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8075 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8076 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8077 l_recog_line_1                NUMBER;
8078 l_recog_line_2                NUMBER;
8079 
8080 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8081 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8082 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8083 
8084 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8085 
8086 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8087 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8088 
8089 ---------------------------------------------------------------------------------------------------------------
8090 
8091 
8092 --
8093 -- bulk performance
8094 --
8095 l_balance_type_code           VARCHAR2(1);
8096 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8097 l_log_module                  VARCHAR2(240);
8098 
8099 --
8100 -- Upgrade strategy
8101 --
8102 l_actual_upg_option           VARCHAR2(1);
8103 l_enc_upg_option           VARCHAR2(1);
8104 
8105 --
8106 BEGIN
8107 --
8108 IF g_log_enabled THEN
8109       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
8110 END IF;
8111 --
8115          (p_msg      => 'BEGIN of AcctLineType_29'
8112 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8113 
8114       trace
8116          ,p_level    => C_LEVEL_PROCEDURE
8117          ,p_module   => l_log_module);
8118 
8119 END IF;
8120 --
8121 l_component_type             := 'AMB_JLT';
8122 l_component_code             := 'PA_ER_REV';
8123 l_component_type_code        := 'S';
8124 l_component_appl_id          :=  275;
8125 l_amb_context_code           := 'DEFAULT';
8126 l_entity_code                := 'REVENUE';
8127 l_event_class_code           := 'REVENUE';
8128 l_event_type_code            := 'REVENUE_ALL';
8129 l_line_definition_owner_code := 'S';
8130 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
8131 --
8132 l_balance_type_code          := 'A';
8133 l_segment                     := NULL;
8134 l_ccid                        := NULL;
8135 l_adr_transaction_coa_id      := NULL;
8136 l_adr_accounting_coa_id       := NULL;
8137 l_adr_flexfield_segment_code  := NULL;
8138 l_adr_flex_value_set_id       := NULL;
8139 l_adr_value_type_code         := NULL;
8140 l_adr_value_combination_id    := NULL;
8141 l_adr_value_segment_code      := NULL;
8142 
8143 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8144 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
8145 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8146 l_budgetary_control_flag     := 'N';
8147 
8148 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8149 l_bflow_applied_to_amt       := NULL; -- 5132302
8150 l_entered_amt_idx            := NULL;          -- 4262811
8151 l_accted_amt_idx             := NULL;          -- 4262811
8152 l_acc_rev_flag               := NULL;          -- 4262811
8153 l_accrual_line_num           := NULL;          -- 4262811
8154 l_tmp_amt                    := NULL;          -- 4262811
8155 --
8156  
8157 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8158     l_balance_type_code <> 'B' THEN
8159 IF NVL(p_source_36,'
8160 ') =  'Revenue - Normal Revenue' AND 
8161 NVL(p_source_37,'
8162 ') =  'ER' AND 
8163 NVL(p_source_38,'
8164 ') =  'N'
8165  THEN 
8166 
8167    --
8168    XLA_AE_LINES_PKG.SetNewLine;
8169 
8170    p_balance_type_code          := l_balance_type_code;
8171    -- set the flag so later we will know whether the gain loss line needs to be created
8172    
8173    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8174      p_actual_flag :='A';
8175    END IF;
8176 
8177    --
8178    -- bulk performance
8179    --
8180    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8181                                       p_header_num   => 0); -- 4262811
8182    --
8183    -- set accounting line options
8184    --
8185    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8186            p_natural_side_code          => 'C'
8187          , p_gain_or_loss_flag          => 'N'
8188          , p_gl_transfer_mode_code      => 'S'
8189          , p_acct_entry_type_code       => 'A'
8190          , p_switch_side_flag           => 'Y'
8191          , p_merge_duplicate_code       => 'N'
8192          );
8193    --
8194    l_acc_rev_natural_side_code := 'D';  -- 4262811
8195    -- 
8196    --
8197    -- set accounting line type info
8198    --
8199    xla_ae_lines_pkg.SetAcctLineType
8200       (p_component_type             => l_component_type
8201       ,p_event_type_code            => l_event_type_code
8202       ,p_line_definition_owner_code => l_line_definition_owner_code
8203       ,p_line_definition_code       => l_line_definition_code
8204       ,p_accounting_line_code       => l_component_code
8205       ,p_accounting_line_type_code  => l_component_type_code
8206       ,p_accounting_line_appl_id    => l_component_appl_id
8207       ,p_amb_context_code           => l_amb_context_code
8208       ,p_entity_code                => l_entity_code
8209       ,p_event_class_code           => l_event_class_code);
8210    --
8211    -- set accounting class
8212    --
8213    xla_ae_lines_pkg.SetAcctClass(
8214            p_accounting_class_code  => 'REVENUE'
8215          , p_ae_header_id           => l_ae_header_id
8216          );
8217 
8218    --
8219    -- set rounding class
8220    --
8221    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8222                       'REVENUE';
8223 
8224    --
8225    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8226    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8227    --
8228    -- bulk performance
8229    --
8230    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8231 
8232    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8233       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8234 
8235    -- 4955764
8236    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8237       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8238 
8239    -- 4458381 Public Sector Enh
8240    
8241    --
8242    -- set accounting attributes for the line type
8243    --
8244    l_entered_amt_idx := 4;
8245    l_accted_amt_idx  := 10;
8246    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8247    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8248    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
8249    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
8250    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
8251    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
8255    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
8252    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
8253    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
8254    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
8256    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
8257    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
8258    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
8259    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
8260    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
8261    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
8262    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
8263    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
8264    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
8265    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
8266    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
8267 
8268    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8269    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8270 
8271    ---------------------------------------------------------------------------------------------------------------
8272    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8273    ---------------------------------------------------------------------------------------------------------------
8274    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8275 
8276    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8277    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8278 
8279    IF xla_accounting_cache_pkg.GetValueChar
8280          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8281          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8282    AND l_bflow_method_code = 'PRIOR_ENTRY'
8283 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8284    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8285          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8286        )
8287    THEN
8288          xla_ae_lines_pkg.BflowUpgEntry
8289            (p_business_method_code    => l_bflow_method_code
8290            ,p_business_class_code     => l_bflow_class_code
8291            ,p_balance_type            => l_balance_type_code);
8292    ELSE
8293       NULL;
8294 -- No business flow processing for business flow method of NONE.
8295    END IF;
8296 
8297    --
8298    -- call analytical criteria
8299    --
8300    
8301    --
8302    -- call description
8303    --
8304    -- No description or it is inherited.
8305    --
8306    -- call ADRs
8307    -- Bug 4922099
8308    --
8309    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8310         (NVL(l_actual_upg_option, 'N') = 'O') OR
8311         (NVL(l_enc_upg_option, 'N') = 'O')
8312       )
8313    THEN
8314    NULL;
8315    --
8316    --
8317    
8318   l_ccid := AcctDerRule_17(
8319            p_application_id           => p_application_id
8320          , p_ae_header_id             => l_ae_header_id 
8321 , p_source_18 => p_source_18
8322          , x_transaction_coa_id       => l_adr_transaction_coa_id
8323          , x_accounting_coa_id        => l_adr_accounting_coa_id
8324          , x_value_type_code          => l_adr_value_type_code
8325          , p_side                     => 'NA'
8326    );
8327 
8328    xla_ae_lines_pkg.set_ccid(
8329     p_code_combination_id          => l_ccid
8330   , p_value_type_code              => l_adr_value_type_code
8331   , p_transaction_coa_id           => l_adr_transaction_coa_id
8332   , p_accounting_coa_id            => l_adr_accounting_coa_id
8333   , p_adr_code                     => 'REVENUE_RULE'
8334   , p_adr_type_code                => 'S'
8335   , p_component_type               => l_component_type
8336   , p_component_code               => l_component_code
8337   , p_component_type_code          => l_component_type_code
8338   , p_component_appl_id            => l_component_appl_id
8339   , p_amb_context_code             => l_amb_context_code
8340   , p_side                         => 'NA'
8341   );
8342 
8343 
8344    --
8345    --
8346    END IF;
8347    --
8348    -- Bug 4922099
8349    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8350           (NVL(l_enc_upg_option, 'N') = 'O')
8351         ) AND
8352         (l_bflow_method_code = 'PRIOR_ENTRY')
8353       )
8354    THEN
8355       IF
8356       --
8357       1 = 2
8358       --
8359       THEN
8360       xla_accounting_err_pkg.build_message
8361                                     (p_appli_s_name            => 'XLA'
8362                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8363                                     ,p_token_1                 => 'LINE_NUMBER'
8364                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8365                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8366                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8367                                                                              l_component_type
8368                                                                             ,l_component_code
8369                                                                             ,l_component_type_code
8370                                                                             ,l_component_appl_id
8371                                                                             ,l_amb_context_code
8372                                                                             ,l_entity_code
8376                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8373                                                                             ,l_event_class_code
8374                                                                            )
8375                                     ,p_token_3                 => 'OWNER'
8377                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8378                                                                           ,p_lookup_code    => l_component_type_code
8379                                                                          )
8380                                     ,p_token_4                 => 'PRODUCT_NAME'
8381                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8382                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8383                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8384                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8385                                     ,p_ae_header_id            =>  NULL
8386                                        );
8387 
8388         IF (C_LEVEL_ERROR>= g_log_level) THEN
8389                  trace
8390                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8391                       ,p_level    => C_LEVEL_ERROR
8392                       ,p_module   => l_log_module);
8393         END IF;
8394       END IF;
8395    END IF;
8396    --
8397    --
8398    ------------------------------------------------------------------------------------------------
8399    -- 4219869 Business Flow
8400    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8401    -- Prior Entry.  Currently, the following code is always generated.
8402    ------------------------------------------------------------------------------------------------
8403    XLA_AE_LINES_PKG.ValidateCurrentLine;
8404 
8405    ------------------------------------------------------------------------------------
8406    -- 4219869 Business Flow
8407    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8408    ------------------------------------------------------------------------------------
8409    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8410 
8411    ----------------------------------------------------------------------------------
8412    -- 4219869 Business Flow
8413    -- Update journal entry status -- Need to generate this within IF <condition>
8414    ----------------------------------------------------------------------------------
8415    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8416          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8417          ,p_balance_type_code => l_balance_type_code
8418          );
8419 
8420    -------------------------------------------------------------------------------------------
8421    -- 4262811 - Generate the Accrual Reversal lines
8422    -------------------------------------------------------------------------------------------
8423    BEGIN
8424       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8425                               (g_array_event(p_event_id).array_value_num('header_index'));
8426       IF l_acc_rev_flag IS NULL THEN
8427          l_acc_rev_flag := 'N';
8428       END IF;
8429    EXCEPTION
8430       WHEN OTHERS THEN
8431          l_acc_rev_flag := 'N';
8432    END;
8433    --
8434    IF (l_acc_rev_flag = 'Y') THEN
8435 
8436        -- 4645092  ------------------------------------------------------------------------------
8437        -- To allow MPA report to determine if it should generate report process
8438        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8439        ------------------------------------------------------------------------------------------
8440 
8441        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8442        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8443 
8444        --
8445        -- Update the line information that should be overwritten
8446        --
8447        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8448                                          p_header_num   => 1);
8449        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8450 
8451        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8452 
8453        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8454           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8455        END IF;
8456 
8457       --
8458       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8459       --
8460       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8461           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8462       ELSE
8463           ---------------------------------------------------------------------------------------------------
8464           -- 4262811a Switch Sign
8465           ---------------------------------------------------------------------------------------------------
8466           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8467           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8468                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8469           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8470                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8471           -- 5132302
8475       END IF;
8472           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8473                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8474 
8476 
8477       -- 4955764
8478       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8479       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8480 
8481 
8482       XLA_AE_LINES_PKG.ValidateCurrentLine;
8483       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8484 
8485       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8486                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8487                ,p_balance_type_code => l_balance_type_code);
8488 
8489    END IF;
8490 
8491    -----------------------------------------------------------------------------------------
8492    -- 4262811 Multiperiod Accounting
8493    -----------------------------------------------------------------------------------------
8494      -- No MPA option is assigned.
8495 
8496 
8497 END IF;
8498 END IF;
8499 --
8500 
8501 --
8502 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8503    trace
8504       (p_msg      => 'END of AcctLineType_29'
8505       ,p_level    => C_LEVEL_PROCEDURE
8506       ,p_module   => l_log_module);
8507 END IF;
8508 --
8509 EXCEPTION
8510   WHEN xla_exceptions_pkg.application_exception THEN
8511       RAISE;
8512   WHEN OTHERS THEN
8513        xla_exceptions_pkg.raise_message
8514            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_29');
8515 END AcctLineType_29;
8516 --
8517 
8518 ---------------------------------------
8519 --
8520 -- PRIVATE FUNCTION
8521 --         AcctLineType_30
8522 --
8523 ---------------------------------------
8524 PROCEDURE AcctLineType_30 (
8525   p_application_id        IN NUMBER
8526  ,p_event_id              IN NUMBER
8527  ,p_calculate_acctd_flag  IN VARCHAR2
8528  ,p_calculate_g_l_flag    IN VARCHAR2
8529  ,p_actual_flag           IN OUT VARCHAR2
8530  ,p_balance_type_code     OUT VARCHAR2
8531  ,p_gain_or_loss_ref      OUT VARCHAR2
8532  
8533 --Event Revenue CCID
8534  , p_source_1            IN NUMBER
8535 --Entered Currency Code
8536  , p_source_25            IN VARCHAR2
8537 --Exchange Rate Date
8538  , p_source_27            IN DATE
8539 --Exchange Rate
8540  , p_source_28            IN NUMBER
8541 --Exchange Rate Type
8542  , p_source_29            IN VARCHAR2
8543 --Revenue Distribution Type
8544  , p_source_36            IN VARCHAR2
8545 --Crediting Revenue Flag
8546  , p_source_38            IN VARCHAR2
8547 --Revenue First Distribution ID
8548  , p_source_39            IN NUMBER
8549 --Revenue Second Distribution ID
8550  , p_source_40            IN NUMBER
8551 --Entered Amount
8552  , p_source_41            IN NUMBER
8553 --Event ID
8554  , p_source_42            IN NUMBER
8555 --Accounted Amount
8556  , p_source_43            IN NUMBER
8557 --Revenue Event Type Classification
8558  , p_source_58            IN VARCHAR2
8559  , p_source_58_meaning    IN VARCHAR2
8560 )
8561 IS
8562 
8563 l_component_type              VARCHAR2(80);
8564 l_component_code              VARCHAR2(30);
8565 l_component_type_code         VARCHAR2(1);
8566 l_component_appl_id           INTEGER;
8567 l_amb_context_code            VARCHAR2(30);
8568 l_entity_code                 VARCHAR2(30);
8569 l_event_class_code            VARCHAR2(30);
8570 l_ae_header_id                NUMBER;
8571 l_event_type_code             VARCHAR2(30);
8572 l_line_definition_code        VARCHAR2(30);
8573 l_line_definition_owner_code  VARCHAR2(1);
8574 --
8575 -- adr variables
8576 l_segment                     VARCHAR2(30);
8577 l_ccid                        NUMBER;
8578 l_adr_transaction_coa_id      NUMBER;
8579 l_adr_accounting_coa_id       NUMBER;
8580 l_adr_flexfield_segment_code  VARCHAR2(30);
8581 l_adr_flex_value_set_id       NUMBER;
8582 l_adr_value_type_code         VARCHAR2(30);
8583 l_adr_value_combination_id    NUMBER;
8584 l_adr_value_segment_code      VARCHAR2(30);
8585 
8586 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8587 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8588 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8589 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8590 
8591 -- 4262811 Variables ------------------------------------------------------------------------------------------
8592 l_entered_amt_idx             NUMBER;
8593 l_accted_amt_idx              NUMBER;
8594 l_acc_rev_flag                VARCHAR2(1);
8595 l_accrual_line_num            NUMBER;
8596 l_tmp_amt                     NUMBER;
8597 l_acc_rev_natural_side_code   VARCHAR2(1);
8598 
8599 l_num_entries                 NUMBER;
8600 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8601 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8602 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8603 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8604 l_recog_line_1                NUMBER;
8605 l_recog_line_2                NUMBER;
8606 
8607 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8608 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8609 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8610 
8611 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8612 
8613 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8614 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8618 
8615 
8616 ---------------------------------------------------------------------------------------------------------------
8617 
8619 --
8620 -- bulk performance
8621 --
8622 l_balance_type_code           VARCHAR2(1);
8623 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8624 l_log_module                  VARCHAR2(240);
8625 
8626 --
8627 -- Upgrade strategy
8628 --
8629 l_actual_upg_option           VARCHAR2(1);
8630 l_enc_upg_option           VARCHAR2(1);
8631 
8632 --
8633 BEGIN
8634 --
8635 IF g_log_enabled THEN
8636       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
8637 END IF;
8638 --
8639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8640 
8641       trace
8642          (p_msg      => 'BEGIN of AcctLineType_30'
8643          ,p_level    => C_LEVEL_PROCEDURE
8644          ,p_module   => l_log_module);
8645 
8646 END IF;
8647 --
8648 l_component_type             := 'AMB_JLT';
8649 l_component_code             := 'PA_EVENT_REV';
8650 l_component_type_code        := 'S';
8651 l_component_appl_id          :=  275;
8652 l_amb_context_code           := 'DEFAULT';
8653 l_entity_code                := 'REVENUE';
8654 l_event_class_code           := 'REVENUE';
8655 l_event_type_code            := 'REVENUE_ALL';
8656 l_line_definition_owner_code := 'S';
8657 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
8658 --
8659 l_balance_type_code          := 'A';
8660 l_segment                     := NULL;
8661 l_ccid                        := NULL;
8662 l_adr_transaction_coa_id      := NULL;
8663 l_adr_accounting_coa_id       := NULL;
8664 l_adr_flexfield_segment_code  := NULL;
8665 l_adr_flex_value_set_id       := NULL;
8666 l_adr_value_type_code         := NULL;
8667 l_adr_value_combination_id    := NULL;
8668 l_adr_value_segment_code      := NULL;
8669 
8670 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8671 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
8672 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8673 l_budgetary_control_flag     := 'N';
8674 
8675 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8676 l_bflow_applied_to_amt       := NULL; -- 5132302
8677 l_entered_amt_idx            := NULL;          -- 4262811
8678 l_accted_amt_idx             := NULL;          -- 4262811
8679 l_acc_rev_flag               := NULL;          -- 4262811
8680 l_accrual_line_num           := NULL;          -- 4262811
8681 l_tmp_amt                    := NULL;          -- 4262811
8682 --
8683  
8684 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8685     l_balance_type_code <> 'B' THEN
8686 IF NVL(p_source_36,'
8687 ') =  'Revenue - Event Revenue' AND 
8688 NVL(p_source_58,'
8689 ') <>  'WRITE OFF' AND 
8690 NVL(p_source_38,'
8691 ') =  'N'
8692  THEN 
8693 
8694    --
8695    XLA_AE_LINES_PKG.SetNewLine;
8696 
8697    p_balance_type_code          := l_balance_type_code;
8698    -- set the flag so later we will know whether the gain loss line needs to be created
8699    
8700    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8701      p_actual_flag :='A';
8702    END IF;
8703 
8704    --
8705    -- bulk performance
8706    --
8707    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8708                                       p_header_num   => 0); -- 4262811
8709    --
8710    -- set accounting line options
8711    --
8712    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8713            p_natural_side_code          => 'C'
8714          , p_gain_or_loss_flag          => 'N'
8715          , p_gl_transfer_mode_code      => 'S'
8716          , p_acct_entry_type_code       => 'A'
8717          , p_switch_side_flag           => 'Y'
8718          , p_merge_duplicate_code       => 'N'
8719          );
8720    --
8721    l_acc_rev_natural_side_code := 'D';  -- 4262811
8722    -- 
8723    --
8724    -- set accounting line type info
8725    --
8726    xla_ae_lines_pkg.SetAcctLineType
8727       (p_component_type             => l_component_type
8728       ,p_event_type_code            => l_event_type_code
8729       ,p_line_definition_owner_code => l_line_definition_owner_code
8730       ,p_line_definition_code       => l_line_definition_code
8731       ,p_accounting_line_code       => l_component_code
8732       ,p_accounting_line_type_code  => l_component_type_code
8733       ,p_accounting_line_appl_id    => l_component_appl_id
8734       ,p_amb_context_code           => l_amb_context_code
8735       ,p_entity_code                => l_entity_code
8736       ,p_event_class_code           => l_event_class_code);
8737    --
8738    -- set accounting class
8739    --
8740    xla_ae_lines_pkg.SetAcctClass(
8741            p_accounting_class_code  => 'REVENUE'
8742          , p_ae_header_id           => l_ae_header_id
8743          );
8744 
8745    --
8746    -- set rounding class
8747    --
8748    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8749                       'REVENUE';
8750 
8751    --
8752    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8753    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8754    --
8755    -- bulk performance
8756    --
8757    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8758 
8759    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8760       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8761 
8762    -- 4955764
8763    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8767    
8764       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8765 
8766    -- 4458381 Public Sector Enh
8768    --
8769    -- set accounting attributes for the line type
8770    --
8771    l_entered_amt_idx := 4;
8772    l_accted_amt_idx  := 10;
8773    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8774    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8775    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
8776    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
8777    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
8778    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
8779    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
8780    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
8781    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
8782    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
8783    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
8784    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
8785    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
8786    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
8787    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
8788    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
8789    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
8790    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
8791    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
8792    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
8793    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
8794 
8795    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8796    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8797 
8798    ---------------------------------------------------------------------------------------------------------------
8799    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8800    ---------------------------------------------------------------------------------------------------------------
8801    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8802 
8803    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8804    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8805 
8806    IF xla_accounting_cache_pkg.GetValueChar
8807          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8808          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8809    AND l_bflow_method_code = 'PRIOR_ENTRY'
8810 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8811    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8812          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8813        )
8814    THEN
8815          xla_ae_lines_pkg.BflowUpgEntry
8816            (p_business_method_code    => l_bflow_method_code
8817            ,p_business_class_code     => l_bflow_class_code
8818            ,p_balance_type            => l_balance_type_code);
8819    ELSE
8820       NULL;
8821 -- No business flow processing for business flow method of NONE.
8822    END IF;
8823 
8824    --
8825    -- call analytical criteria
8826    --
8827    
8828    --
8829    -- call description
8830    --
8831    -- No description or it is inherited.
8832    --
8833    -- call ADRs
8834    -- Bug 4922099
8835    --
8836    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8837         (NVL(l_actual_upg_option, 'N') = 'O') OR
8838         (NVL(l_enc_upg_option, 'N') = 'O')
8839       )
8840    THEN
8841    NULL;
8842    --
8843    --
8844    
8845   l_ccid := AcctDerRule_1(
8846            p_application_id           => p_application_id
8847          , p_ae_header_id             => l_ae_header_id 
8848 , p_source_1 => p_source_1
8849          , x_transaction_coa_id       => l_adr_transaction_coa_id
8850          , x_accounting_coa_id        => l_adr_accounting_coa_id
8851          , x_value_type_code          => l_adr_value_type_code
8852          , p_side                     => 'NA'
8853    );
8854 
8855    xla_ae_lines_pkg.set_ccid(
8856     p_code_combination_id          => l_ccid
8857   , p_value_type_code              => l_adr_value_type_code
8858   , p_transaction_coa_id           => l_adr_transaction_coa_id
8859   , p_accounting_coa_id            => l_adr_accounting_coa_id
8860   , p_adr_code                     => 'EVENT_REVENUE_RULE'
8861   , p_adr_type_code                => 'S'
8862   , p_component_type               => l_component_type
8863   , p_component_code               => l_component_code
8864   , p_component_type_code          => l_component_type_code
8865   , p_component_appl_id            => l_component_appl_id
8866   , p_amb_context_code             => l_amb_context_code
8867   , p_side                         => 'NA'
8868   );
8869 
8870 
8871    --
8872    --
8873    END IF;
8874    --
8875    -- Bug 4922099
8876    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8877           (NVL(l_enc_upg_option, 'N') = 'O')
8878         ) AND
8879         (l_bflow_method_code = 'PRIOR_ENTRY')
8880       )
8881    THEN
8882       IF
8883       --
8884       1 = 2
8885       --
8886       THEN
8887       xla_accounting_err_pkg.build_message
8888                                     (p_appli_s_name            => 'XLA'
8889                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8890                                     ,p_token_1                 => 'LINE_NUMBER'
8891                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8895                                                                             ,l_component_code
8892                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8893                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8894                                                                              l_component_type
8896                                                                             ,l_component_type_code
8897                                                                             ,l_component_appl_id
8898                                                                             ,l_amb_context_code
8899                                                                             ,l_entity_code
8900                                                                             ,l_event_class_code
8901                                                                            )
8902                                     ,p_token_3                 => 'OWNER'
8903                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8904                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8905                                                                           ,p_lookup_code    => l_component_type_code
8906                                                                          )
8907                                     ,p_token_4                 => 'PRODUCT_NAME'
8908                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8909                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8910                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8911                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8912                                     ,p_ae_header_id            =>  NULL
8913                                        );
8914 
8915         IF (C_LEVEL_ERROR>= g_log_level) THEN
8916                  trace
8917                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8918                       ,p_level    => C_LEVEL_ERROR
8919                       ,p_module   => l_log_module);
8920         END IF;
8921       END IF;
8922    END IF;
8923    --
8924    --
8925    ------------------------------------------------------------------------------------------------
8926    -- 4219869 Business Flow
8927    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8928    -- Prior Entry.  Currently, the following code is always generated.
8929    ------------------------------------------------------------------------------------------------
8930    XLA_AE_LINES_PKG.ValidateCurrentLine;
8931 
8932    ------------------------------------------------------------------------------------
8933    -- 4219869 Business Flow
8934    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8935    ------------------------------------------------------------------------------------
8936    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8937 
8938    ----------------------------------------------------------------------------------
8939    -- 4219869 Business Flow
8940    -- Update journal entry status -- Need to generate this within IF <condition>
8941    ----------------------------------------------------------------------------------
8942    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8943          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8944          ,p_balance_type_code => l_balance_type_code
8945          );
8946 
8947    -------------------------------------------------------------------------------------------
8948    -- 4262811 - Generate the Accrual Reversal lines
8949    -------------------------------------------------------------------------------------------
8950    BEGIN
8951       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8952                               (g_array_event(p_event_id).array_value_num('header_index'));
8953       IF l_acc_rev_flag IS NULL THEN
8954          l_acc_rev_flag := 'N';
8955       END IF;
8956    EXCEPTION
8957       WHEN OTHERS THEN
8958          l_acc_rev_flag := 'N';
8959    END;
8960    --
8961    IF (l_acc_rev_flag = 'Y') THEN
8962 
8963        -- 4645092  ------------------------------------------------------------------------------
8964        -- To allow MPA report to determine if it should generate report process
8965        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8966        ------------------------------------------------------------------------------------------
8967 
8968        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8969        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8970 
8971        --
8972        -- Update the line information that should be overwritten
8973        --
8974        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8975                                          p_header_num   => 1);
8976        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8977 
8978        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8979 
8980        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8981           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8982        END IF;
8983 
8984       --
8985       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8986       --
8987       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8988           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8989       ELSE
8990           ---------------------------------------------------------------------------------------------------
8994           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8991           -- 4262811a Switch Sign
8992           ---------------------------------------------------------------------------------------------------
8993           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8995                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8996           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8997                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8998           -- 5132302
8999           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9000                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9001 
9002       END IF;
9003 
9004       -- 4955764
9005       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9006       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9007 
9008 
9009       XLA_AE_LINES_PKG.ValidateCurrentLine;
9010       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9011 
9012       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9013                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9014                ,p_balance_type_code => l_balance_type_code);
9015 
9016    END IF;
9017 
9018    -----------------------------------------------------------------------------------------
9019    -- 4262811 Multiperiod Accounting
9020    -----------------------------------------------------------------------------------------
9021      -- No MPA option is assigned.
9022 
9023 
9024 END IF;
9025 END IF;
9026 --
9027 
9028 --
9029 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9030    trace
9031       (p_msg      => 'END of AcctLineType_30'
9032       ,p_level    => C_LEVEL_PROCEDURE
9033       ,p_module   => l_log_module);
9034 END IF;
9035 --
9036 EXCEPTION
9037   WHEN xla_exceptions_pkg.application_exception THEN
9038       RAISE;
9039   WHEN OTHERS THEN
9040        xla_exceptions_pkg.raise_message
9041            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_30');
9042 END AcctLineType_30;
9043 --
9044 
9045 ---------------------------------------
9046 --
9047 -- PRIVATE FUNCTION
9048 --         AcctLineType_31
9049 --
9050 ---------------------------------------
9051 PROCEDURE AcctLineType_31 (
9052   p_application_id        IN NUMBER
9053  ,p_event_id              IN NUMBER
9054  ,p_calculate_acctd_flag  IN VARCHAR2
9055  ,p_calculate_g_l_flag    IN VARCHAR2
9056  ,p_actual_flag           IN OUT VARCHAR2
9057  ,p_balance_type_code     OUT VARCHAR2
9058  ,p_gain_or_loss_ref      OUT VARCHAR2
9059  
9060 --Actual Upgrade Credit Accounting Class
9061  , p_source_23            IN VARCHAR2
9062 --Entered Currency Code
9063  , p_source_25            IN VARCHAR2
9064 --Exchange Rate Date
9065  , p_source_27            IN DATE
9066 --Exchange Rate
9067  , p_source_28            IN NUMBER
9068 --Exchange Rate Type
9069  , p_source_29            IN VARCHAR2
9070 --Actual Upgrade Debit Accounting Class
9071  , p_source_30            IN VARCHAR2
9072 --Use Actuals Upgrade Attributes Flag
9073  , p_source_31            IN VARCHAR2
9074 --Revenue Distribution Type
9075  , p_source_36            IN VARCHAR2
9076 --Crediting Revenue Flag
9077  , p_source_38            IN VARCHAR2
9078 --Revenue First Distribution ID
9079  , p_source_39            IN NUMBER
9080 --Revenue Second Distribution ID
9081  , p_source_40            IN NUMBER
9082 --Entered Amount
9083  , p_source_41            IN NUMBER
9084 --Event ID
9085  , p_source_42            IN NUMBER
9086 --Accounted Amount
9087  , p_source_43            IN NUMBER
9088 --Revenue Event Type Classification
9089  , p_source_58            IN VARCHAR2
9090  , p_source_58_meaning    IN VARCHAR2
9091 --Actual Upgrade Credit CCID
9092  , p_source_59            IN NUMBER
9093 --Actual Upgrade Debit CCID
9094  , p_source_60            IN NUMBER
9095 --Application ID
9096  , p_source_61            IN NUMBER
9097 --Revenue Entity Code
9098  , p_source_62            IN VARCHAR2
9099 --Crediting Revenue First Distribution ID
9100  , p_source_63            IN NUMBER
9101 --Project ID
9102  , p_source_64            IN NUMBER
9103 --Crediting Revenue Second Distribution ID
9104  , p_source_65            IN NUMBER
9105 --Draft Revenue Number Credited
9106  , p_source_66            IN NUMBER
9107 )
9108 IS
9109 
9110 l_component_type              VARCHAR2(80);
9111 l_component_code              VARCHAR2(30);
9112 l_component_type_code         VARCHAR2(1);
9113 l_component_appl_id           INTEGER;
9114 l_amb_context_code            VARCHAR2(30);
9115 l_entity_code                 VARCHAR2(30);
9116 l_event_class_code            VARCHAR2(30);
9117 l_ae_header_id                NUMBER;
9118 l_event_type_code             VARCHAR2(30);
9119 l_line_definition_code        VARCHAR2(30);
9120 l_line_definition_owner_code  VARCHAR2(1);
9121 --
9122 -- adr variables
9123 l_segment                     VARCHAR2(30);
9124 l_ccid                        NUMBER;
9125 l_adr_transaction_coa_id      NUMBER;
9126 l_adr_accounting_coa_id       NUMBER;
9127 l_adr_flexfield_segment_code  VARCHAR2(30);
9128 l_adr_flex_value_set_id       NUMBER;
9129 l_adr_value_type_code         VARCHAR2(30);
9130 l_adr_value_combination_id    NUMBER;
9131 l_adr_value_segment_code      VARCHAR2(30);
9132 
9133 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9134 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9138 -- 4262811 Variables ------------------------------------------------------------------------------------------
9135 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9136 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9137 
9139 l_entered_amt_idx             NUMBER;
9140 l_accted_amt_idx              NUMBER;
9141 l_acc_rev_flag                VARCHAR2(1);
9142 l_accrual_line_num            NUMBER;
9143 l_tmp_amt                     NUMBER;
9144 l_acc_rev_natural_side_code   VARCHAR2(1);
9145 
9146 l_num_entries                 NUMBER;
9147 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9148 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9149 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9150 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9151 l_recog_line_1                NUMBER;
9152 l_recog_line_2                NUMBER;
9153 
9154 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9155 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9156 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9157 
9158 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9159 
9160 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9161 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9162 
9163 ---------------------------------------------------------------------------------------------------------------
9164 
9165 
9166 --
9167 -- bulk performance
9168 --
9169 l_balance_type_code           VARCHAR2(1);
9170 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9171 l_log_module                  VARCHAR2(240);
9172 
9173 --
9174 -- Upgrade strategy
9175 --
9176 l_actual_upg_option           VARCHAR2(1);
9177 l_enc_upg_option           VARCHAR2(1);
9178 
9179 --
9180 BEGIN
9181 --
9182 IF g_log_enabled THEN
9183       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
9184 END IF;
9185 --
9186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9187 
9188       trace
9189          (p_msg      => 'BEGIN of AcctLineType_31'
9190          ,p_level    => C_LEVEL_PROCEDURE
9191          ,p_module   => l_log_module);
9192 
9193 END IF;
9194 --
9195 l_component_type             := 'AMB_JLT';
9196 l_component_code             := 'PA_EVENT_REV_ADJ';
9197 l_component_type_code        := 'S';
9198 l_component_appl_id          :=  275;
9199 l_amb_context_code           := 'DEFAULT';
9200 l_entity_code                := 'REVENUE';
9201 l_event_class_code           := 'REVENUE_ADJ';
9202 l_event_type_code            := 'REVENUE_ADJ_ALL';
9203 l_line_definition_owner_code := 'S';
9204 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
9205 --
9206 l_balance_type_code          := 'A';
9207 l_segment                     := NULL;
9208 l_ccid                        := NULL;
9209 l_adr_transaction_coa_id      := NULL;
9210 l_adr_accounting_coa_id       := NULL;
9211 l_adr_flexfield_segment_code  := NULL;
9212 l_adr_flex_value_set_id       := NULL;
9213 l_adr_value_type_code         := NULL;
9214 l_adr_value_combination_id    := NULL;
9215 l_adr_value_segment_code      := NULL;
9216 
9217 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
9218 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
9219 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
9220 l_budgetary_control_flag     := 'N';
9221 
9222 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9223 l_bflow_applied_to_amt       := NULL; -- 5132302
9224 l_entered_amt_idx            := NULL;          -- 4262811
9225 l_accted_amt_idx             := NULL;          -- 4262811
9226 l_acc_rev_flag               := NULL;          -- 4262811
9227 l_accrual_line_num           := NULL;          -- 4262811
9228 l_tmp_amt                    := NULL;          -- 4262811
9229 --
9230  
9231 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9232     l_balance_type_code <> 'B' THEN
9233 IF NVL(p_source_36,'
9234 ') =  'Revenue - Event Revenue' AND 
9235 NVL(p_source_58,'
9236 ') <>  'WRITE OFF' AND 
9237 NVL(p_source_38,'
9238 ') =  'Y'
9239  THEN 
9240 
9241    --
9242    XLA_AE_LINES_PKG.SetNewLine;
9243 
9244    p_balance_type_code          := l_balance_type_code;
9245    -- set the flag so later we will know whether the gain loss line needs to be created
9246    
9247    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9248      p_actual_flag :='A';
9249    END IF;
9250 
9251    --
9252    -- bulk performance
9253    --
9254    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9255                                       p_header_num   => 0); -- 4262811
9256    --
9257    -- set accounting line options
9258    --
9259    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9260            p_natural_side_code          => 'D'
9261          , p_gain_or_loss_flag          => 'N'
9262          , p_gl_transfer_mode_code      => 'S'
9263          , p_acct_entry_type_code       => 'A'
9264          , p_switch_side_flag           => 'Y'
9265          , p_merge_duplicate_code       => 'N'
9266          );
9267    --
9268    l_acc_rev_natural_side_code := 'C';  -- 4262811
9269    -- 
9270    --
9271    -- set accounting line type info
9272    --
9273    xla_ae_lines_pkg.SetAcctLineType
9274       (p_component_type             => l_component_type
9275       ,p_event_type_code            => l_event_type_code
9276       ,p_line_definition_owner_code => l_line_definition_owner_code
9277       ,p_line_definition_code       => l_line_definition_code
9281       ,p_amb_context_code           => l_amb_context_code
9278       ,p_accounting_line_code       => l_component_code
9279       ,p_accounting_line_type_code  => l_component_type_code
9280       ,p_accounting_line_appl_id    => l_component_appl_id
9282       ,p_entity_code                => l_entity_code
9283       ,p_event_class_code           => l_event_class_code);
9284    --
9285    -- set accounting class
9286    --
9287    xla_ae_lines_pkg.SetAcctClass(
9288            p_accounting_class_code  => 'REVENUE'
9289          , p_ae_header_id           => l_ae_header_id
9290          );
9291 
9292    --
9293    -- set rounding class
9294    --
9295    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9296                       'REVENUE';
9297 
9298    --
9299    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9300    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9301    --
9302    -- bulk performance
9303    --
9304    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9305 
9306    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9307       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9308 
9309    -- 4955764
9310    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9311       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9312 
9313    -- 4458381 Public Sector Enh
9314    
9315    --
9316    -- set accounting attributes for the line type
9317    --
9318    l_entered_amt_idx := 28;
9319    l_accted_amt_idx  := 31;
9320    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9321    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
9322    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
9323    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
9324    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
9325    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
9326    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
9327    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
9328    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
9329    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
9330    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
9331    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
9332    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
9333    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
9334    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
9335    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
9336    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
9337    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
9338    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
9339    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
9340    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
9341    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
9342    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
9343    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
9344    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
9345    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
9346    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
9347    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
9348    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
9349    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
9350    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
9351    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
9352    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
9353    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
9354    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
9355    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
9356    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
9357    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9358    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
9359    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
9360    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
9361    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
9362    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
9363    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9364    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
9365    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
9366    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
9367    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
9368    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
9369    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
9370    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
9371    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
9372    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
9373    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
9374    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
9375    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
9376    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
9377    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
9378    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
9379    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
9380    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
9384    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9381    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
9382    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
9383 
9385    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9386 
9387    ---------------------------------------------------------------------------------------------------------------
9388    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9389    ---------------------------------------------------------------------------------------------------------------
9390    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9391 
9392    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9393    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9394 
9395    IF xla_accounting_cache_pkg.GetValueChar
9396          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9397          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9398    AND l_bflow_method_code = 'PRIOR_ENTRY'
9399 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9400    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9401          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9402        )
9403    THEN
9404          xla_ae_lines_pkg.BflowUpgEntry
9405            (p_business_method_code    => l_bflow_method_code
9406            ,p_business_class_code     => l_bflow_class_code
9407            ,p_balance_type            => l_balance_type_code);
9408    ELSE
9409       NULL;
9410 XLA_AE_LINES_PKG.business_flow_validation(
9411                                 p_business_method_code     => l_bflow_method_code
9412                                ,p_business_class_code      => l_bflow_class_code
9413                                ,p_inherit_description_flag => l_inherit_desc_flag);
9414    END IF;
9415 
9416    --
9417    -- call analytical criteria
9418    --
9419    -- Inherited Analytical Criteria for business flow method of Prior Entry.
9420    --
9421    -- call description
9422    --
9423    -- No description or it is inherited.
9424    --
9425    -- call ADRs
9426    -- Bug 4922099
9427    --
9428    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9429         (NVL(l_actual_upg_option, 'N') = 'O') OR
9430         (NVL(l_enc_upg_option, 'N') = 'O')
9431       )
9432    THEN
9433    NULL;
9434    --
9435    --
9436    
9437    --
9438    --
9439    END IF;
9440    --
9441    -- Bug 4922099
9442    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9443           (NVL(l_enc_upg_option, 'N') = 'O')
9444         ) AND
9445         (l_bflow_method_code = 'PRIOR_ENTRY')
9446       )
9447    THEN
9448       IF
9449       --
9450       1 = 1
9451       --
9452       THEN
9453       xla_accounting_err_pkg.build_message
9454                                     (p_appli_s_name            => 'XLA'
9455                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9456                                     ,p_token_1                 => 'LINE_NUMBER'
9457                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9458                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9459                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9460                                                                              l_component_type
9461                                                                             ,l_component_code
9462                                                                             ,l_component_type_code
9463                                                                             ,l_component_appl_id
9464                                                                             ,l_amb_context_code
9465                                                                             ,l_entity_code
9466                                                                             ,l_event_class_code
9467                                                                            )
9468                                     ,p_token_3                 => 'OWNER'
9469                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9470                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9471                                                                           ,p_lookup_code    => l_component_type_code
9472                                                                          )
9473                                     ,p_token_4                 => 'PRODUCT_NAME'
9474                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9475                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9476                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9477                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9478                                     ,p_ae_header_id            =>  NULL
9479                                        );
9480 
9481         IF (C_LEVEL_ERROR>= g_log_level) THEN
9482                  trace
9483                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9484                       ,p_level    => C_LEVEL_ERROR
9485                       ,p_module   => l_log_module);
9486         END IF;
9487       END IF;
9488    END IF;
9489    --
9490    --
9491    ------------------------------------------------------------------------------------------------
9492    -- 4219869 Business Flow
9496    -- No ValidateCurrentLine for business flow method of Prior Entry
9493    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9494    -- Prior Entry.  Currently, the following code is always generated.
9495    ------------------------------------------------------------------------------------------------
9497 
9498    ------------------------------------------------------------------------------------
9499    -- 4219869 Business Flow
9500    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9501    ------------------------------------------------------------------------------------
9502    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9503 
9504    ----------------------------------------------------------------------------------
9505    -- 4219869 Business Flow
9506    -- Update journal entry status -- Need to generate this within IF <condition>
9507    ----------------------------------------------------------------------------------
9508    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9509          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9510          ,p_balance_type_code => l_balance_type_code
9511          );
9512 
9513    -------------------------------------------------------------------------------------------
9514    -- 4262811 - Generate the Accrual Reversal lines
9515    -------------------------------------------------------------------------------------------
9516    BEGIN
9517       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9518                               (g_array_event(p_event_id).array_value_num('header_index'));
9519       IF l_acc_rev_flag IS NULL THEN
9520          l_acc_rev_flag := 'N';
9521       END IF;
9522    EXCEPTION
9523       WHEN OTHERS THEN
9524          l_acc_rev_flag := 'N';
9525    END;
9526    --
9527    IF (l_acc_rev_flag = 'Y') THEN
9528 
9529        -- 4645092  ------------------------------------------------------------------------------
9530        -- To allow MPA report to determine if it should generate report process
9531        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9532        ------------------------------------------------------------------------------------------
9533 
9534        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9535        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9536 
9537        --
9538        -- Update the line information that should be overwritten
9539        --
9540        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9541                                          p_header_num   => 1);
9542        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9543 
9544        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9545 
9546        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9547           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9548        END IF;
9549 
9550       --
9551       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9552       --
9553       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9554           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9555       ELSE
9556           ---------------------------------------------------------------------------------------------------
9557           -- 4262811a Switch Sign
9558           ---------------------------------------------------------------------------------------------------
9559           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9560           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9561                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9562           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9563                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9564           -- 5132302
9565           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9566                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9567 
9568       END IF;
9569 
9570       -- 4955764
9571       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9572       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9573 
9574 
9575       XLA_AE_LINES_PKG.ValidateCurrentLine;
9576       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9577 
9578       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9579                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9580                ,p_balance_type_code => l_balance_type_code);
9581 
9582    END IF;
9583 
9584    -----------------------------------------------------------------------------------------
9585    -- 4262811 Multiperiod Accounting
9586    -----------------------------------------------------------------------------------------
9587      -- No MPA option is assigned.
9588 
9589 
9590 END IF;
9591 END IF;
9592 --
9593 
9594 --
9595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9596    trace
9597       (p_msg      => 'END of AcctLineType_31'
9598       ,p_level    => C_LEVEL_PROCEDURE
9599       ,p_module   => l_log_module);
9600 END IF;
9601 --
9602 EXCEPTION
9603   WHEN xla_exceptions_pkg.application_exception THEN
9604       RAISE;
9605   WHEN OTHERS THEN
9606        xla_exceptions_pkg.raise_message
9607            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_31');
9608 END AcctLineType_31;
9609 --
9610 
9614 --         AcctLineType_32
9611 ---------------------------------------
9612 --
9613 -- PRIVATE FUNCTION
9615 --
9616 ---------------------------------------
9617 PROCEDURE AcctLineType_32 (
9618   p_application_id        IN NUMBER
9619  ,p_event_id              IN NUMBER
9620  ,p_calculate_acctd_flag  IN VARCHAR2
9621  ,p_calculate_g_l_flag    IN VARCHAR2
9622  ,p_actual_flag           IN OUT VARCHAR2
9623  ,p_balance_type_code     OUT VARCHAR2
9624  ,p_gain_or_loss_ref      OUT VARCHAR2
9625  
9626 --Event Revenue CCID
9627  , p_source_1            IN NUMBER
9628 --Entered Currency Code
9629  , p_source_25            IN VARCHAR2
9630 --Exchange Rate Date
9631  , p_source_27            IN DATE
9632 --Exchange Rate
9633  , p_source_28            IN NUMBER
9634 --Exchange Rate Type
9635  , p_source_29            IN VARCHAR2
9636 --Revenue Distribution Type
9637  , p_source_36            IN VARCHAR2
9638 --Crediting Revenue Flag
9639  , p_source_38            IN VARCHAR2
9640 --Revenue First Distribution ID
9641  , p_source_39            IN NUMBER
9642 --Revenue Second Distribution ID
9643  , p_source_40            IN NUMBER
9644 --Entered Amount
9645  , p_source_41            IN NUMBER
9646 --Event ID
9647  , p_source_42            IN NUMBER
9648 --Accounted Amount
9649  , p_source_43            IN NUMBER
9650 --Revenue Event Type Classification
9651  , p_source_58            IN VARCHAR2
9652  , p_source_58_meaning    IN VARCHAR2
9653 )
9654 IS
9655 
9656 l_component_type              VARCHAR2(80);
9657 l_component_code              VARCHAR2(30);
9658 l_component_type_code         VARCHAR2(1);
9659 l_component_appl_id           INTEGER;
9660 l_amb_context_code            VARCHAR2(30);
9661 l_entity_code                 VARCHAR2(30);
9662 l_event_class_code            VARCHAR2(30);
9663 l_ae_header_id                NUMBER;
9664 l_event_type_code             VARCHAR2(30);
9665 l_line_definition_code        VARCHAR2(30);
9666 l_line_definition_owner_code  VARCHAR2(1);
9667 --
9668 -- adr variables
9669 l_segment                     VARCHAR2(30);
9670 l_ccid                        NUMBER;
9671 l_adr_transaction_coa_id      NUMBER;
9672 l_adr_accounting_coa_id       NUMBER;
9673 l_adr_flexfield_segment_code  VARCHAR2(30);
9674 l_adr_flex_value_set_id       NUMBER;
9675 l_adr_value_type_code         VARCHAR2(30);
9676 l_adr_value_combination_id    NUMBER;
9677 l_adr_value_segment_code      VARCHAR2(30);
9678 
9679 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9680 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9681 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9682 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9683 
9684 -- 4262811 Variables ------------------------------------------------------------------------------------------
9685 l_entered_amt_idx             NUMBER;
9686 l_accted_amt_idx              NUMBER;
9687 l_acc_rev_flag                VARCHAR2(1);
9688 l_accrual_line_num            NUMBER;
9689 l_tmp_amt                     NUMBER;
9690 l_acc_rev_natural_side_code   VARCHAR2(1);
9691 
9692 l_num_entries                 NUMBER;
9693 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9694 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9695 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9696 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9697 l_recog_line_1                NUMBER;
9698 l_recog_line_2                NUMBER;
9699 
9700 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9701 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9702 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9703 
9704 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9705 
9706 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9707 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9708 
9709 ---------------------------------------------------------------------------------------------------------------
9710 
9711 
9712 --
9713 -- bulk performance
9714 --
9715 l_balance_type_code           VARCHAR2(1);
9716 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9717 l_log_module                  VARCHAR2(240);
9718 
9719 --
9720 -- Upgrade strategy
9721 --
9722 l_actual_upg_option           VARCHAR2(1);
9723 l_enc_upg_option           VARCHAR2(1);
9724 
9725 --
9726 BEGIN
9727 --
9728 IF g_log_enabled THEN
9729       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
9730 END IF;
9731 --
9732 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9733 
9734       trace
9735          (p_msg      => 'BEGIN of AcctLineType_32'
9736          ,p_level    => C_LEVEL_PROCEDURE
9737          ,p_module   => l_log_module);
9738 
9739 END IF;
9740 --
9741 l_component_type             := 'AMB_JLT';
9742 l_component_code             := 'PA_EVENT_WO_REV';
9743 l_component_type_code        := 'S';
9744 l_component_appl_id          :=  275;
9745 l_amb_context_code           := 'DEFAULT';
9746 l_entity_code                := 'REVENUE';
9747 l_event_class_code           := 'REVENUE';
9748 l_event_type_code            := 'REVENUE_ALL';
9749 l_line_definition_owner_code := 'S';
9750 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
9751 --
9752 l_balance_type_code          := 'A';
9753 l_segment                     := NULL;
9754 l_ccid                        := NULL;
9755 l_adr_transaction_coa_id      := NULL;
9756 l_adr_accounting_coa_id       := NULL;
9757 l_adr_flexfield_segment_code  := NULL;
9761 l_adr_value_segment_code      := NULL;
9758 l_adr_flex_value_set_id       := NULL;
9759 l_adr_value_type_code         := NULL;
9760 l_adr_value_combination_id    := NULL;
9762 
9763 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9764 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
9765 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9766 l_budgetary_control_flag     := 'N';
9767 
9768 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9769 l_bflow_applied_to_amt       := NULL; -- 5132302
9770 l_entered_amt_idx            := NULL;          -- 4262811
9771 l_accted_amt_idx             := NULL;          -- 4262811
9772 l_acc_rev_flag               := NULL;          -- 4262811
9773 l_accrual_line_num           := NULL;          -- 4262811
9774 l_tmp_amt                    := NULL;          -- 4262811
9775 --
9776  
9777 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9778     l_balance_type_code <> 'B' THEN
9779 IF NVL(p_source_36,'
9780 ') =  'Revenue - Event Revenue' AND 
9781 NVL(p_source_58,'
9782 ') =  'WRITE OFF' AND 
9783 NVL(p_source_38,'
9784 ') =  'N'
9785  THEN 
9786 
9787    --
9788    XLA_AE_LINES_PKG.SetNewLine;
9789 
9790    p_balance_type_code          := l_balance_type_code;
9791    -- set the flag so later we will know whether the gain loss line needs to be created
9792    
9793    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9794      p_actual_flag :='A';
9795    END IF;
9796 
9797    --
9798    -- bulk performance
9799    --
9800    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9801                                       p_header_num   => 0); -- 4262811
9802    --
9803    -- set accounting line options
9804    --
9805    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9806            p_natural_side_code          => 'D'
9807          , p_gain_or_loss_flag          => 'N'
9808          , p_gl_transfer_mode_code      => 'S'
9809          , p_acct_entry_type_code       => 'A'
9810          , p_switch_side_flag           => 'Y'
9811          , p_merge_duplicate_code       => 'N'
9812          );
9813    --
9814    l_acc_rev_natural_side_code := 'C';  -- 4262811
9815    -- 
9816    --
9817    -- set accounting line type info
9818    --
9819    xla_ae_lines_pkg.SetAcctLineType
9820       (p_component_type             => l_component_type
9821       ,p_event_type_code            => l_event_type_code
9822       ,p_line_definition_owner_code => l_line_definition_owner_code
9823       ,p_line_definition_code       => l_line_definition_code
9824       ,p_accounting_line_code       => l_component_code
9825       ,p_accounting_line_type_code  => l_component_type_code
9826       ,p_accounting_line_appl_id    => l_component_appl_id
9827       ,p_amb_context_code           => l_amb_context_code
9828       ,p_entity_code                => l_entity_code
9829       ,p_event_class_code           => l_event_class_code);
9830    --
9831    -- set accounting class
9832    --
9833    xla_ae_lines_pkg.SetAcctClass(
9834            p_accounting_class_code  => 'EVENT_WO_REVENUE'
9835          , p_ae_header_id           => l_ae_header_id
9836          );
9837 
9838    --
9839    -- set rounding class
9840    --
9841    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9842                       'EVENT_WO_REVENUE';
9843 
9844    --
9845    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9846    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9847    --
9848    -- bulk performance
9849    --
9850    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9851 
9852    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9853       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9854 
9855    -- 4955764
9856    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9857       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9858 
9859    -- 4458381 Public Sector Enh
9860    
9861    --
9862    -- set accounting attributes for the line type
9863    --
9864    l_entered_amt_idx := 4;
9865    l_accted_amt_idx  := 10;
9866    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9867    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9868    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
9869    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
9870    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
9871    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
9872    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
9873    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
9874    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
9875    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
9876    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
9877    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
9878    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
9879    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
9880    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
9881    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
9882    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
9883    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
9884    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
9885    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
9886    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
9887 
9891    ---------------------------------------------------------------------------------------------------------------
9888    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9889    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9890 
9892    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9893    ---------------------------------------------------------------------------------------------------------------
9894    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9895 
9896    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9897    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9898 
9899    IF xla_accounting_cache_pkg.GetValueChar
9900          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9901          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9902    AND l_bflow_method_code = 'PRIOR_ENTRY'
9903 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9904    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9905          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9906        )
9907    THEN
9908          xla_ae_lines_pkg.BflowUpgEntry
9909            (p_business_method_code    => l_bflow_method_code
9910            ,p_business_class_code     => l_bflow_class_code
9911            ,p_balance_type            => l_balance_type_code);
9912    ELSE
9913       NULL;
9914 -- No business flow processing for business flow method of NONE.
9915    END IF;
9916 
9917    --
9918    -- call analytical criteria
9919    --
9920    
9921    --
9922    -- call description
9923    --
9924    -- No description or it is inherited.
9925    --
9926    -- call ADRs
9927    -- Bug 4922099
9928    --
9929    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9930         (NVL(l_actual_upg_option, 'N') = 'O') OR
9931         (NVL(l_enc_upg_option, 'N') = 'O')
9932       )
9933    THEN
9934    NULL;
9935    --
9936    --
9937    
9938   l_ccid := AcctDerRule_1(
9939            p_application_id           => p_application_id
9940          , p_ae_header_id             => l_ae_header_id 
9941 , p_source_1 => p_source_1
9942          , x_transaction_coa_id       => l_adr_transaction_coa_id
9943          , x_accounting_coa_id        => l_adr_accounting_coa_id
9944          , x_value_type_code          => l_adr_value_type_code
9945          , p_side                     => 'NA'
9946    );
9947 
9948    xla_ae_lines_pkg.set_ccid(
9949     p_code_combination_id          => l_ccid
9950   , p_value_type_code              => l_adr_value_type_code
9951   , p_transaction_coa_id           => l_adr_transaction_coa_id
9952   , p_accounting_coa_id            => l_adr_accounting_coa_id
9953   , p_adr_code                     => 'EVENT_REVENUE_RULE'
9954   , p_adr_type_code                => 'S'
9955   , p_component_type               => l_component_type
9956   , p_component_code               => l_component_code
9957   , p_component_type_code          => l_component_type_code
9958   , p_component_appl_id            => l_component_appl_id
9959   , p_amb_context_code             => l_amb_context_code
9960   , p_side                         => 'NA'
9961   );
9962 
9963 
9964    --
9965    --
9966    END IF;
9967    --
9968    -- Bug 4922099
9969    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9970           (NVL(l_enc_upg_option, 'N') = 'O')
9971         ) AND
9972         (l_bflow_method_code = 'PRIOR_ENTRY')
9973       )
9974    THEN
9975       IF
9976       --
9977       1 = 2
9978       --
9979       THEN
9980       xla_accounting_err_pkg.build_message
9981                                     (p_appli_s_name            => 'XLA'
9982                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9983                                     ,p_token_1                 => 'LINE_NUMBER'
9984                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9985                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9986                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9987                                                                              l_component_type
9988                                                                             ,l_component_code
9989                                                                             ,l_component_type_code
9990                                                                             ,l_component_appl_id
9991                                                                             ,l_amb_context_code
9992                                                                             ,l_entity_code
9993                                                                             ,l_event_class_code
9994                                                                            )
9995                                     ,p_token_3                 => 'OWNER'
9996                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9997                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9998                                                                           ,p_lookup_code    => l_component_type_code
9999                                                                          )
10000                                     ,p_token_4                 => 'PRODUCT_NAME'
10001                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10002                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10006                                        );
10003                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10004                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10005                                     ,p_ae_header_id            =>  NULL
10007 
10008         IF (C_LEVEL_ERROR>= g_log_level) THEN
10009                  trace
10010                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10011                       ,p_level    => C_LEVEL_ERROR
10012                       ,p_module   => l_log_module);
10013         END IF;
10014       END IF;
10015    END IF;
10016    --
10017    --
10018    ------------------------------------------------------------------------------------------------
10019    -- 4219869 Business Flow
10020    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10021    -- Prior Entry.  Currently, the following code is always generated.
10022    ------------------------------------------------------------------------------------------------
10023    XLA_AE_LINES_PKG.ValidateCurrentLine;
10024 
10025    ------------------------------------------------------------------------------------
10026    -- 4219869 Business Flow
10027    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10028    ------------------------------------------------------------------------------------
10029    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10030 
10031    ----------------------------------------------------------------------------------
10032    -- 4219869 Business Flow
10033    -- Update journal entry status -- Need to generate this within IF <condition>
10034    ----------------------------------------------------------------------------------
10035    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10036          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10037          ,p_balance_type_code => l_balance_type_code
10038          );
10039 
10040    -------------------------------------------------------------------------------------------
10041    -- 4262811 - Generate the Accrual Reversal lines
10042    -------------------------------------------------------------------------------------------
10043    BEGIN
10044       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10045                               (g_array_event(p_event_id).array_value_num('header_index'));
10046       IF l_acc_rev_flag IS NULL THEN
10047          l_acc_rev_flag := 'N';
10048       END IF;
10049    EXCEPTION
10050       WHEN OTHERS THEN
10051          l_acc_rev_flag := 'N';
10052    END;
10053    --
10054    IF (l_acc_rev_flag = 'Y') THEN
10055 
10056        -- 4645092  ------------------------------------------------------------------------------
10057        -- To allow MPA report to determine if it should generate report process
10058        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10059        ------------------------------------------------------------------------------------------
10060 
10061        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10062        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10063 
10064        --
10065        -- Update the line information that should be overwritten
10066        --
10067        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10068                                          p_header_num   => 1);
10069        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10070 
10071        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10072 
10073        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10074           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10075        END IF;
10076 
10077       --
10078       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10079       --
10080       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10081           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10082       ELSE
10083           ---------------------------------------------------------------------------------------------------
10084           -- 4262811a Switch Sign
10085           ---------------------------------------------------------------------------------------------------
10086           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10087           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10088                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10089           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10090                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10091           -- 5132302
10092           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10093                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10094 
10095       END IF;
10096 
10097       -- 4955764
10098       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10099       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10100 
10101 
10102       XLA_AE_LINES_PKG.ValidateCurrentLine;
10103       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10104 
10105       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10106                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10107                ,p_balance_type_code => l_balance_type_code);
10108 
10109    END IF;
10110 
10114      -- No MPA option is assigned.
10111    -----------------------------------------------------------------------------------------
10112    -- 4262811 Multiperiod Accounting
10113    -----------------------------------------------------------------------------------------
10115 
10116 
10117 END IF;
10118 END IF;
10119 --
10120 
10121 --
10122 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10123    trace
10124       (p_msg      => 'END of AcctLineType_32'
10125       ,p_level    => C_LEVEL_PROCEDURE
10126       ,p_module   => l_log_module);
10127 END IF;
10128 --
10129 EXCEPTION
10130   WHEN xla_exceptions_pkg.application_exception THEN
10131       RAISE;
10132   WHEN OTHERS THEN
10133        xla_exceptions_pkg.raise_message
10134            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_32');
10135 END AcctLineType_32;
10136 --
10137 
10138 ---------------------------------------
10139 --
10140 -- PRIVATE FUNCTION
10141 --         AcctLineType_33
10142 --
10143 ---------------------------------------
10144 PROCEDURE AcctLineType_33 (
10145   p_application_id        IN NUMBER
10146  ,p_event_id              IN NUMBER
10147  ,p_calculate_acctd_flag  IN VARCHAR2
10148  ,p_calculate_g_l_flag    IN VARCHAR2
10149  ,p_actual_flag           IN OUT VARCHAR2
10150  ,p_balance_type_code     OUT VARCHAR2
10151  ,p_gain_or_loss_ref      OUT VARCHAR2
10152  
10153 --Actual Upgrade Credit Accounting Class
10154  , p_source_23            IN VARCHAR2
10155 --Entered Currency Code
10156  , p_source_25            IN VARCHAR2
10157 --Exchange Rate Date
10158  , p_source_27            IN DATE
10159 --Exchange Rate
10160  , p_source_28            IN NUMBER
10161 --Exchange Rate Type
10162  , p_source_29            IN VARCHAR2
10163 --Actual Upgrade Debit Accounting Class
10164  , p_source_30            IN VARCHAR2
10165 --Use Actuals Upgrade Attributes Flag
10166  , p_source_31            IN VARCHAR2
10167 --Revenue Distribution Type
10168  , p_source_36            IN VARCHAR2
10169 --Crediting Revenue Flag
10170  , p_source_38            IN VARCHAR2
10171 --Revenue First Distribution ID
10172  , p_source_39            IN NUMBER
10173 --Revenue Second Distribution ID
10174  , p_source_40            IN NUMBER
10175 --Entered Amount
10176  , p_source_41            IN NUMBER
10177 --Event ID
10178  , p_source_42            IN NUMBER
10179 --Accounted Amount
10180  , p_source_43            IN NUMBER
10181 --Revenue Event Type Classification
10182  , p_source_58            IN VARCHAR2
10183  , p_source_58_meaning    IN VARCHAR2
10184 --Actual Upgrade Credit CCID
10185  , p_source_59            IN NUMBER
10186 --Actual Upgrade Debit CCID
10187  , p_source_60            IN NUMBER
10188 --Application ID
10189  , p_source_61            IN NUMBER
10190 --Revenue Entity Code
10191  , p_source_62            IN VARCHAR2
10192 --Crediting Revenue First Distribution ID
10193  , p_source_63            IN NUMBER
10194 --Project ID
10195  , p_source_64            IN NUMBER
10196 --Crediting Revenue Second Distribution ID
10197  , p_source_65            IN NUMBER
10198 --Draft Revenue Number Credited
10199  , p_source_66            IN NUMBER
10200 )
10201 IS
10202 
10203 l_component_type              VARCHAR2(80);
10204 l_component_code              VARCHAR2(30);
10205 l_component_type_code         VARCHAR2(1);
10206 l_component_appl_id           INTEGER;
10207 l_amb_context_code            VARCHAR2(30);
10208 l_entity_code                 VARCHAR2(30);
10209 l_event_class_code            VARCHAR2(30);
10210 l_ae_header_id                NUMBER;
10211 l_event_type_code             VARCHAR2(30);
10212 l_line_definition_code        VARCHAR2(30);
10213 l_line_definition_owner_code  VARCHAR2(1);
10214 --
10215 -- adr variables
10216 l_segment                     VARCHAR2(30);
10217 l_ccid                        NUMBER;
10218 l_adr_transaction_coa_id      NUMBER;
10219 l_adr_accounting_coa_id       NUMBER;
10220 l_adr_flexfield_segment_code  VARCHAR2(30);
10221 l_adr_flex_value_set_id       NUMBER;
10222 l_adr_value_type_code         VARCHAR2(30);
10223 l_adr_value_combination_id    NUMBER;
10224 l_adr_value_segment_code      VARCHAR2(30);
10225 
10226 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10227 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10228 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10229 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10230 
10231 -- 4262811 Variables ------------------------------------------------------------------------------------------
10232 l_entered_amt_idx             NUMBER;
10233 l_accted_amt_idx              NUMBER;
10234 l_acc_rev_flag                VARCHAR2(1);
10235 l_accrual_line_num            NUMBER;
10236 l_tmp_amt                     NUMBER;
10237 l_acc_rev_natural_side_code   VARCHAR2(1);
10238 
10239 l_num_entries                 NUMBER;
10240 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10241 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10242 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10243 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10244 l_recog_line_1                NUMBER;
10245 l_recog_line_2                NUMBER;
10246 
10247 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10248 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10249 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10250 
10251 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10252 
10253 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10257 
10254 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10255 
10256 ---------------------------------------------------------------------------------------------------------------
10258 
10259 --
10260 -- bulk performance
10261 --
10262 l_balance_type_code           VARCHAR2(1);
10263 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10264 l_log_module                  VARCHAR2(240);
10265 
10266 --
10267 -- Upgrade strategy
10268 --
10269 l_actual_upg_option           VARCHAR2(1);
10270 l_enc_upg_option           VARCHAR2(1);
10271 
10272 --
10273 BEGIN
10274 --
10275 IF g_log_enabled THEN
10276       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
10277 END IF;
10278 --
10279 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10280 
10281       trace
10282          (p_msg      => 'BEGIN of AcctLineType_33'
10283          ,p_level    => C_LEVEL_PROCEDURE
10284          ,p_module   => l_log_module);
10285 
10286 END IF;
10287 --
10288 l_component_type             := 'AMB_JLT';
10289 l_component_code             := 'PA_EVENT_WO_REV_ADJ';
10290 l_component_type_code        := 'S';
10291 l_component_appl_id          :=  275;
10292 l_amb_context_code           := 'DEFAULT';
10293 l_entity_code                := 'REVENUE';
10294 l_event_class_code           := 'REVENUE_ADJ';
10295 l_event_type_code            := 'REVENUE_ADJ_ALL';
10296 l_line_definition_owner_code := 'S';
10297 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
10298 --
10299 l_balance_type_code          := 'A';
10300 l_segment                     := NULL;
10301 l_ccid                        := NULL;
10302 l_adr_transaction_coa_id      := NULL;
10303 l_adr_accounting_coa_id       := NULL;
10304 l_adr_flexfield_segment_code  := NULL;
10305 l_adr_flex_value_set_id       := NULL;
10306 l_adr_value_type_code         := NULL;
10307 l_adr_value_combination_id    := NULL;
10308 l_adr_value_segment_code      := NULL;
10309 
10310 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
10311 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
10312 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
10313 l_budgetary_control_flag     := 'N';
10314 
10315 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10316 l_bflow_applied_to_amt       := NULL; -- 5132302
10317 l_entered_amt_idx            := NULL;          -- 4262811
10318 l_accted_amt_idx             := NULL;          -- 4262811
10319 l_acc_rev_flag               := NULL;          -- 4262811
10320 l_accrual_line_num           := NULL;          -- 4262811
10321 l_tmp_amt                    := NULL;          -- 4262811
10322 --
10323  
10324 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10325     l_balance_type_code <> 'B' THEN
10326 IF NVL(p_source_36,'
10327 ') =  'Revenue - Event Revenue' AND 
10328 NVL(p_source_58,'
10329 ') =  'WRITE OFF' AND 
10330 NVL(p_source_38,'
10331 ') =  'Y'
10332  THEN 
10333 
10334    --
10335    XLA_AE_LINES_PKG.SetNewLine;
10336 
10337    p_balance_type_code          := l_balance_type_code;
10338    -- set the flag so later we will know whether the gain loss line needs to be created
10339    
10340    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10341      p_actual_flag :='A';
10342    END IF;
10343 
10344    --
10345    -- bulk performance
10346    --
10347    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10348                                       p_header_num   => 0); -- 4262811
10349    --
10350    -- set accounting line options
10351    --
10352    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10353            p_natural_side_code          => 'C'
10354          , p_gain_or_loss_flag          => 'N'
10355          , p_gl_transfer_mode_code      => 'S'
10356          , p_acct_entry_type_code       => 'A'
10357          , p_switch_side_flag           => 'Y'
10358          , p_merge_duplicate_code       => 'N'
10359          );
10360    --
10361    l_acc_rev_natural_side_code := 'D';  -- 4262811
10362    -- 
10363    --
10364    -- set accounting line type info
10365    --
10366    xla_ae_lines_pkg.SetAcctLineType
10367       (p_component_type             => l_component_type
10368       ,p_event_type_code            => l_event_type_code
10369       ,p_line_definition_owner_code => l_line_definition_owner_code
10370       ,p_line_definition_code       => l_line_definition_code
10371       ,p_accounting_line_code       => l_component_code
10372       ,p_accounting_line_type_code  => l_component_type_code
10373       ,p_accounting_line_appl_id    => l_component_appl_id
10374       ,p_amb_context_code           => l_amb_context_code
10375       ,p_entity_code                => l_entity_code
10376       ,p_event_class_code           => l_event_class_code);
10377    --
10378    -- set accounting class
10379    --
10380    xla_ae_lines_pkg.SetAcctClass(
10381            p_accounting_class_code  => 'EVENT_WO_REVENUE'
10382          , p_ae_header_id           => l_ae_header_id
10383          );
10384 
10385    --
10386    -- set rounding class
10387    --
10388    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10389                       'EVENT_WO_REVENUE';
10390 
10391    --
10392    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10393    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10394    --
10395    -- bulk performance
10396    --
10397    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10398 
10402    -- 4955764
10399    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10400       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10401 
10403    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10404       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10405 
10406    -- 4458381 Public Sector Enh
10407    
10408    --
10409    -- set accounting attributes for the line type
10410    --
10411    l_entered_amt_idx := 28;
10412    l_accted_amt_idx  := 31;
10413    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10414    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
10415    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
10416    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
10417    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
10418    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
10419    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
10420    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
10421    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
10422    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
10423    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
10424    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
10425    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
10426    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
10427    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
10428    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
10429    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
10430    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
10431    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
10432    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
10433    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
10434    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
10435    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
10436    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
10437    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
10438    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
10439    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
10440    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
10441    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
10442    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
10443    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
10444    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
10445    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
10446    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
10447    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
10448    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
10449    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
10450    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10451    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
10452    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
10453    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
10454    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
10455    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
10456    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10457    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
10458    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
10459    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
10460    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
10461    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
10462    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
10463    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
10464    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
10465    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
10466    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
10467    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
10468    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
10469    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
10470    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
10471    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
10472    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
10473    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
10474    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
10475    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
10476 
10477    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10478    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10479 
10480    ---------------------------------------------------------------------------------------------------------------
10481    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10482    ---------------------------------------------------------------------------------------------------------------
10483    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10484 
10485    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10486    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10487 
10488    IF xla_accounting_cache_pkg.GetValueChar
10489          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10490          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10494          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10491    AND l_bflow_method_code = 'PRIOR_ENTRY'
10492 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10493    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10495        )
10496    THEN
10497          xla_ae_lines_pkg.BflowUpgEntry
10498            (p_business_method_code    => l_bflow_method_code
10499            ,p_business_class_code     => l_bflow_class_code
10500            ,p_balance_type            => l_balance_type_code);
10501    ELSE
10502       NULL;
10503 XLA_AE_LINES_PKG.business_flow_validation(
10504                                 p_business_method_code     => l_bflow_method_code
10505                                ,p_business_class_code      => l_bflow_class_code
10506                                ,p_inherit_description_flag => l_inherit_desc_flag);
10507    END IF;
10508 
10509    --
10510    -- call analytical criteria
10511    --
10512    -- Inherited Analytical Criteria for business flow method of Prior Entry.
10513    --
10514    -- call description
10515    --
10516    -- No description or it is inherited.
10517    --
10518    -- call ADRs
10519    -- Bug 4922099
10520    --
10521    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10522         (NVL(l_actual_upg_option, 'N') = 'O') OR
10523         (NVL(l_enc_upg_option, 'N') = 'O')
10524       )
10525    THEN
10526    NULL;
10527    --
10528    --
10529    
10530    --
10531    --
10532    END IF;
10533    --
10534    -- Bug 4922099
10535    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10536           (NVL(l_enc_upg_option, 'N') = 'O')
10537         ) AND
10538         (l_bflow_method_code = 'PRIOR_ENTRY')
10539       )
10540    THEN
10541       IF
10542       --
10543       1 = 1
10544       --
10545       THEN
10546       xla_accounting_err_pkg.build_message
10547                                     (p_appli_s_name            => 'XLA'
10548                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10549                                     ,p_token_1                 => 'LINE_NUMBER'
10550                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10551                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10552                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10553                                                                              l_component_type
10554                                                                             ,l_component_code
10555                                                                             ,l_component_type_code
10556                                                                             ,l_component_appl_id
10557                                                                             ,l_amb_context_code
10558                                                                             ,l_entity_code
10559                                                                             ,l_event_class_code
10560                                                                            )
10561                                     ,p_token_3                 => 'OWNER'
10562                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10563                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10564                                                                           ,p_lookup_code    => l_component_type_code
10565                                                                          )
10566                                     ,p_token_4                 => 'PRODUCT_NAME'
10567                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10568                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10569                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10570                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10571                                     ,p_ae_header_id            =>  NULL
10572                                        );
10573 
10574         IF (C_LEVEL_ERROR>= g_log_level) THEN
10575                  trace
10576                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10577                       ,p_level    => C_LEVEL_ERROR
10578                       ,p_module   => l_log_module);
10579         END IF;
10580       END IF;
10581    END IF;
10582    --
10583    --
10584    ------------------------------------------------------------------------------------------------
10585    -- 4219869 Business Flow
10586    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10587    -- Prior Entry.  Currently, the following code is always generated.
10588    ------------------------------------------------------------------------------------------------
10589    -- No ValidateCurrentLine for business flow method of Prior Entry
10590 
10591    ------------------------------------------------------------------------------------
10592    -- 4219869 Business Flow
10593    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10594    ------------------------------------------------------------------------------------
10595    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10596 
10597    ----------------------------------------------------------------------------------
10598    -- 4219869 Business Flow
10599    -- Update journal entry status -- Need to generate this within IF <condition>
10600    ----------------------------------------------------------------------------------
10601    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10602          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10606    -------------------------------------------------------------------------------------------
10603          ,p_balance_type_code => l_balance_type_code
10604          );
10605 
10607    -- 4262811 - Generate the Accrual Reversal lines
10608    -------------------------------------------------------------------------------------------
10609    BEGIN
10610       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10611                               (g_array_event(p_event_id).array_value_num('header_index'));
10612       IF l_acc_rev_flag IS NULL THEN
10613          l_acc_rev_flag := 'N';
10614       END IF;
10615    EXCEPTION
10616       WHEN OTHERS THEN
10617          l_acc_rev_flag := 'N';
10618    END;
10619    --
10620    IF (l_acc_rev_flag = 'Y') THEN
10621 
10622        -- 4645092  ------------------------------------------------------------------------------
10623        -- To allow MPA report to determine if it should generate report process
10624        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10625        ------------------------------------------------------------------------------------------
10626 
10627        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10628        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10629 
10630        --
10631        -- Update the line information that should be overwritten
10632        --
10633        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10634                                          p_header_num   => 1);
10635        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10636 
10637        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10638 
10639        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10640           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10641        END IF;
10642 
10643       --
10644       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10645       --
10646       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10647           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10648       ELSE
10649           ---------------------------------------------------------------------------------------------------
10650           -- 4262811a Switch Sign
10651           ---------------------------------------------------------------------------------------------------
10652           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10653           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10654                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10655           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10656                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10657           -- 5132302
10658           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10659                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10660 
10661       END IF;
10662 
10663       -- 4955764
10664       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10665       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10666 
10667 
10668       XLA_AE_LINES_PKG.ValidateCurrentLine;
10669       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10670 
10671       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10672                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10673                ,p_balance_type_code => l_balance_type_code);
10674 
10675    END IF;
10676 
10677    -----------------------------------------------------------------------------------------
10678    -- 4262811 Multiperiod Accounting
10679    -----------------------------------------------------------------------------------------
10680      -- No MPA option is assigned.
10681 
10682 
10683 END IF;
10684 END IF;
10685 --
10686 
10687 --
10688 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10689    trace
10690       (p_msg      => 'END of AcctLineType_33'
10691       ,p_level    => C_LEVEL_PROCEDURE
10692       ,p_module   => l_log_module);
10693 END IF;
10694 --
10695 EXCEPTION
10696   WHEN xla_exceptions_pkg.application_exception THEN
10697       RAISE;
10698   WHEN OTHERS THEN
10699        xla_exceptions_pkg.raise_message
10700            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_33');
10701 END AcctLineType_33;
10702 --
10703 
10704 ---------------------------------------
10705 --
10706 -- PRIVATE FUNCTION
10707 --         AcctLineType_34
10708 --
10709 ---------------------------------------
10710 PROCEDURE AcctLineType_34 (
10711   p_application_id        IN NUMBER
10712  ,p_event_id              IN NUMBER
10713  ,p_calculate_acctd_flag  IN VARCHAR2
10714  ,p_calculate_g_l_flag    IN VARCHAR2
10715  ,p_actual_flag           IN OUT VARCHAR2
10716  ,p_balance_type_code     OUT VARCHAR2
10717  ,p_gain_or_loss_ref      OUT VARCHAR2
10718  
10719 --Revenue CCID
10720  , p_source_18            IN NUMBER
10721 --Entered Currency Code
10722  , p_source_25            IN VARCHAR2
10723 --Exchange Rate Date
10724  , p_source_27            IN DATE
10725 --Exchange Rate
10726  , p_source_28            IN NUMBER
10727 --Exchange Rate Type
10728  , p_source_29            IN VARCHAR2
10729 --Revenue Distribution Type
10730  , p_source_36            IN VARCHAR2
10731 --System Linkage Function
10735 --Revenue First Distribution ID
10732  , p_source_37            IN VARCHAR2
10733 --Crediting Revenue Flag
10734  , p_source_38            IN VARCHAR2
10736  , p_source_39            IN NUMBER
10737 --Revenue Second Distribution ID
10738  , p_source_40            IN NUMBER
10739 --Entered Amount
10740  , p_source_41            IN NUMBER
10741 --Event ID
10742  , p_source_42            IN NUMBER
10743 --Accounted Amount
10744  , p_source_43            IN NUMBER
10745 )
10746 IS
10747 
10748 l_component_type              VARCHAR2(80);
10749 l_component_code              VARCHAR2(30);
10750 l_component_type_code         VARCHAR2(1);
10751 l_component_appl_id           INTEGER;
10752 l_amb_context_code            VARCHAR2(30);
10753 l_entity_code                 VARCHAR2(30);
10754 l_event_class_code            VARCHAR2(30);
10755 l_ae_header_id                NUMBER;
10756 l_event_type_code             VARCHAR2(30);
10757 l_line_definition_code        VARCHAR2(30);
10758 l_line_definition_owner_code  VARCHAR2(1);
10759 --
10760 -- adr variables
10761 l_segment                     VARCHAR2(30);
10762 l_ccid                        NUMBER;
10763 l_adr_transaction_coa_id      NUMBER;
10764 l_adr_accounting_coa_id       NUMBER;
10765 l_adr_flexfield_segment_code  VARCHAR2(30);
10766 l_adr_flex_value_set_id       NUMBER;
10767 l_adr_value_type_code         VARCHAR2(30);
10768 l_adr_value_combination_id    NUMBER;
10769 l_adr_value_segment_code      VARCHAR2(30);
10770 
10771 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10772 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10773 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10774 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10775 
10776 -- 4262811 Variables ------------------------------------------------------------------------------------------
10777 l_entered_amt_idx             NUMBER;
10778 l_accted_amt_idx              NUMBER;
10779 l_acc_rev_flag                VARCHAR2(1);
10780 l_accrual_line_num            NUMBER;
10781 l_tmp_amt                     NUMBER;
10782 l_acc_rev_natural_side_code   VARCHAR2(1);
10783 
10784 l_num_entries                 NUMBER;
10785 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10786 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10787 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10788 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10789 l_recog_line_1                NUMBER;
10790 l_recog_line_2                NUMBER;
10791 
10792 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10793 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10794 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10795 
10796 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10797 
10798 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10799 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10800 
10801 ---------------------------------------------------------------------------------------------------------------
10802 
10803 
10804 --
10805 -- bulk performance
10806 --
10807 l_balance_type_code           VARCHAR2(1);
10808 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10809 l_log_module                  VARCHAR2(240);
10810 
10811 --
10812 -- Upgrade strategy
10813 --
10814 l_actual_upg_option           VARCHAR2(1);
10815 l_enc_upg_option           VARCHAR2(1);
10816 
10817 --
10818 BEGIN
10819 --
10820 IF g_log_enabled THEN
10821       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
10822 END IF;
10823 --
10824 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10825 
10826       trace
10827          (p_msg      => 'BEGIN of AcctLineType_34'
10828          ,p_level    => C_LEVEL_PROCEDURE
10829          ,p_module   => l_log_module);
10830 
10831 END IF;
10832 --
10833 l_component_type             := 'AMB_JLT';
10834 l_component_code             := 'PA_INV_REV';
10835 l_component_type_code        := 'S';
10836 l_component_appl_id          :=  275;
10837 l_amb_context_code           := 'DEFAULT';
10838 l_entity_code                := 'REVENUE';
10839 l_event_class_code           := 'REVENUE';
10840 l_event_type_code            := 'REVENUE_ALL';
10841 l_line_definition_owner_code := 'S';
10842 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
10843 --
10844 l_balance_type_code          := 'A';
10845 l_segment                     := NULL;
10846 l_ccid                        := NULL;
10847 l_adr_transaction_coa_id      := NULL;
10848 l_adr_accounting_coa_id       := NULL;
10849 l_adr_flexfield_segment_code  := NULL;
10850 l_adr_flex_value_set_id       := NULL;
10851 l_adr_value_type_code         := NULL;
10852 l_adr_value_combination_id    := NULL;
10853 l_adr_value_segment_code      := NULL;
10854 
10855 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10856 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
10857 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10858 l_budgetary_control_flag     := 'N';
10859 
10860 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10861 l_bflow_applied_to_amt       := NULL; -- 5132302
10862 l_entered_amt_idx            := NULL;          -- 4262811
10863 l_accted_amt_idx             := NULL;          -- 4262811
10864 l_acc_rev_flag               := NULL;          -- 4262811
10865 l_accrual_line_num           := NULL;          -- 4262811
10866 l_tmp_amt                    := NULL;          -- 4262811
10867 --
10868  
10872 ') =  'Revenue - Normal Revenue' AND 
10869 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10870     l_balance_type_code <> 'B' THEN
10871 IF NVL(p_source_36,'
10873 NVL(p_source_37,'
10874 ') =  'INV' AND 
10875 NVL(p_source_38,'
10876 ') =  'N'
10877  THEN 
10878 
10879    --
10880    XLA_AE_LINES_PKG.SetNewLine;
10881 
10882    p_balance_type_code          := l_balance_type_code;
10883    -- set the flag so later we will know whether the gain loss line needs to be created
10884    
10885    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10886      p_actual_flag :='A';
10887    END IF;
10888 
10889    --
10890    -- bulk performance
10891    --
10892    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10893                                       p_header_num   => 0); -- 4262811
10894    --
10895    -- set accounting line options
10896    --
10897    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10898            p_natural_side_code          => 'C'
10899          , p_gain_or_loss_flag          => 'N'
10900          , p_gl_transfer_mode_code      => 'S'
10901          , p_acct_entry_type_code       => 'A'
10902          , p_switch_side_flag           => 'Y'
10903          , p_merge_duplicate_code       => 'N'
10904          );
10905    --
10906    l_acc_rev_natural_side_code := 'D';  -- 4262811
10907    -- 
10908    --
10909    -- set accounting line type info
10910    --
10911    xla_ae_lines_pkg.SetAcctLineType
10912       (p_component_type             => l_component_type
10913       ,p_event_type_code            => l_event_type_code
10914       ,p_line_definition_owner_code => l_line_definition_owner_code
10915       ,p_line_definition_code       => l_line_definition_code
10916       ,p_accounting_line_code       => l_component_code
10917       ,p_accounting_line_type_code  => l_component_type_code
10918       ,p_accounting_line_appl_id    => l_component_appl_id
10919       ,p_amb_context_code           => l_amb_context_code
10920       ,p_entity_code                => l_entity_code
10921       ,p_event_class_code           => l_event_class_code);
10922    --
10923    -- set accounting class
10924    --
10925    xla_ae_lines_pkg.SetAcctClass(
10926            p_accounting_class_code  => 'REVENUE'
10927          , p_ae_header_id           => l_ae_header_id
10928          );
10929 
10930    --
10931    -- set rounding class
10932    --
10933    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10934                       'REVENUE';
10935 
10936    --
10937    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10938    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10939    --
10940    -- bulk performance
10941    --
10942    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10943 
10944    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10945       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10946 
10947    -- 4955764
10948    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10949       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10950 
10951    -- 4458381 Public Sector Enh
10952    
10953    --
10954    -- set accounting attributes for the line type
10955    --
10956    l_entered_amt_idx := 4;
10957    l_accted_amt_idx  := 10;
10958    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10959    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10960    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
10961    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
10962    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
10963    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
10964    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
10965    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
10966    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
10967    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
10968    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
10969    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
10970    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
10971    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
10972    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
10973    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
10974    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
10975    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
10976    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
10977    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
10978    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
10979 
10980    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10981    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10982 
10983    ---------------------------------------------------------------------------------------------------------------
10984    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10985    ---------------------------------------------------------------------------------------------------------------
10986    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10987 
10988    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10989    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10990 
10994    AND l_bflow_method_code = 'PRIOR_ENTRY'
10991    IF xla_accounting_cache_pkg.GetValueChar
10992          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10993          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10995 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10996    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10997          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10998        )
10999    THEN
11000          xla_ae_lines_pkg.BflowUpgEntry
11001            (p_business_method_code    => l_bflow_method_code
11002            ,p_business_class_code     => l_bflow_class_code
11003            ,p_balance_type            => l_balance_type_code);
11004    ELSE
11005       NULL;
11006 -- No business flow processing for business flow method of NONE.
11007    END IF;
11008 
11009    --
11010    -- call analytical criteria
11011    --
11012    
11013    --
11014    -- call description
11015    --
11016    -- No description or it is inherited.
11017    --
11018    -- call ADRs
11019    -- Bug 4922099
11020    --
11021    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11022         (NVL(l_actual_upg_option, 'N') = 'O') OR
11023         (NVL(l_enc_upg_option, 'N') = 'O')
11024       )
11025    THEN
11026    NULL;
11027    --
11028    --
11029    
11030   l_ccid := AcctDerRule_17(
11031            p_application_id           => p_application_id
11032          , p_ae_header_id             => l_ae_header_id 
11033 , p_source_18 => p_source_18
11034          , x_transaction_coa_id       => l_adr_transaction_coa_id
11035          , x_accounting_coa_id        => l_adr_accounting_coa_id
11036          , x_value_type_code          => l_adr_value_type_code
11037          , p_side                     => 'NA'
11038    );
11039 
11040    xla_ae_lines_pkg.set_ccid(
11041     p_code_combination_id          => l_ccid
11042   , p_value_type_code              => l_adr_value_type_code
11043   , p_transaction_coa_id           => l_adr_transaction_coa_id
11044   , p_accounting_coa_id            => l_adr_accounting_coa_id
11045   , p_adr_code                     => 'REVENUE_RULE'
11046   , p_adr_type_code                => 'S'
11047   , p_component_type               => l_component_type
11048   , p_component_code               => l_component_code
11049   , p_component_type_code          => l_component_type_code
11050   , p_component_appl_id            => l_component_appl_id
11051   , p_amb_context_code             => l_amb_context_code
11052   , p_side                         => 'NA'
11053   );
11054 
11055 
11056    --
11057    --
11058    END IF;
11059    --
11060    -- Bug 4922099
11061    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11062           (NVL(l_enc_upg_option, 'N') = 'O')
11063         ) AND
11064         (l_bflow_method_code = 'PRIOR_ENTRY')
11065       )
11066    THEN
11067       IF
11068       --
11069       1 = 2
11070       --
11071       THEN
11072       xla_accounting_err_pkg.build_message
11073                                     (p_appli_s_name            => 'XLA'
11074                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11075                                     ,p_token_1                 => 'LINE_NUMBER'
11076                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11077                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11078                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11079                                                                              l_component_type
11080                                                                             ,l_component_code
11081                                                                             ,l_component_type_code
11082                                                                             ,l_component_appl_id
11083                                                                             ,l_amb_context_code
11084                                                                             ,l_entity_code
11085                                                                             ,l_event_class_code
11086                                                                            )
11087                                     ,p_token_3                 => 'OWNER'
11088                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11089                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11090                                                                           ,p_lookup_code    => l_component_type_code
11091                                                                          )
11092                                     ,p_token_4                 => 'PRODUCT_NAME'
11093                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11094                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11095                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11096                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11097                                     ,p_ae_header_id            =>  NULL
11098                                        );
11099 
11100         IF (C_LEVEL_ERROR>= g_log_level) THEN
11101                  trace
11102                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11103                       ,p_level    => C_LEVEL_ERROR
11104                       ,p_module   => l_log_module);
11105         END IF;
11106       END IF;
11107    END IF;
11108    --
11109    --
11113    -- Prior Entry.  Currently, the following code is always generated.
11110    ------------------------------------------------------------------------------------------------
11111    -- 4219869 Business Flow
11112    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11114    ------------------------------------------------------------------------------------------------
11115    XLA_AE_LINES_PKG.ValidateCurrentLine;
11116 
11117    ------------------------------------------------------------------------------------
11118    -- 4219869 Business Flow
11119    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11120    ------------------------------------------------------------------------------------
11121    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11122 
11123    ----------------------------------------------------------------------------------
11124    -- 4219869 Business Flow
11125    -- Update journal entry status -- Need to generate this within IF <condition>
11126    ----------------------------------------------------------------------------------
11127    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11128          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11129          ,p_balance_type_code => l_balance_type_code
11130          );
11131 
11132    -------------------------------------------------------------------------------------------
11133    -- 4262811 - Generate the Accrual Reversal lines
11134    -------------------------------------------------------------------------------------------
11135    BEGIN
11136       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11137                               (g_array_event(p_event_id).array_value_num('header_index'));
11138       IF l_acc_rev_flag IS NULL THEN
11139          l_acc_rev_flag := 'N';
11140       END IF;
11141    EXCEPTION
11142       WHEN OTHERS THEN
11143          l_acc_rev_flag := 'N';
11144    END;
11145    --
11146    IF (l_acc_rev_flag = 'Y') THEN
11147 
11148        -- 4645092  ------------------------------------------------------------------------------
11149        -- To allow MPA report to determine if it should generate report process
11150        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11151        ------------------------------------------------------------------------------------------
11152 
11153        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11154        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11155 
11156        --
11157        -- Update the line information that should be overwritten
11158        --
11159        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11160                                          p_header_num   => 1);
11161        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11162 
11163        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11164 
11165        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11166           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11167        END IF;
11168 
11169       --
11170       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11171       --
11172       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11173           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11174       ELSE
11175           ---------------------------------------------------------------------------------------------------
11176           -- 4262811a Switch Sign
11177           ---------------------------------------------------------------------------------------------------
11178           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11179           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11180                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11181           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11182                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11183           -- 5132302
11184           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11185                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11186 
11187       END IF;
11188 
11189       -- 4955764
11190       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11191       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11192 
11193 
11194       XLA_AE_LINES_PKG.ValidateCurrentLine;
11195       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11196 
11197       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11198                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11199                ,p_balance_type_code => l_balance_type_code);
11200 
11201    END IF;
11202 
11203    -----------------------------------------------------------------------------------------
11204    -- 4262811 Multiperiod Accounting
11205    -----------------------------------------------------------------------------------------
11206      -- No MPA option is assigned.
11207 
11208 
11209 END IF;
11210 END IF;
11211 --
11212 
11213 --
11214 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11215    trace
11216       (p_msg      => 'END of AcctLineType_34'
11217       ,p_level    => C_LEVEL_PROCEDURE
11218       ,p_module   => l_log_module);
11219 END IF;
11220 --
11221 EXCEPTION
11222   WHEN xla_exceptions_pkg.application_exception THEN
11223       RAISE;
11224   WHEN OTHERS THEN
11228 --
11225        xla_exceptions_pkg.raise_message
11226            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_34');
11227 END AcctLineType_34;
11229 
11230 ---------------------------------------
11231 --
11232 -- PRIVATE FUNCTION
11233 --         AcctLineType_35
11234 --
11235 ---------------------------------------
11236 PROCEDURE AcctLineType_35 (
11237   p_application_id        IN NUMBER
11238  ,p_event_id              IN NUMBER
11239  ,p_calculate_acctd_flag  IN VARCHAR2
11240  ,p_calculate_g_l_flag    IN VARCHAR2
11241  ,p_actual_flag           IN OUT VARCHAR2
11242  ,p_balance_type_code     OUT VARCHAR2
11243  ,p_gain_or_loss_ref      OUT VARCHAR2
11244  
11245 --Revenue CCID
11246  , p_source_18            IN NUMBER
11247 --Entered Currency Code
11248  , p_source_25            IN VARCHAR2
11249 --Exchange Rate Date
11250  , p_source_27            IN DATE
11251 --Exchange Rate
11252  , p_source_28            IN NUMBER
11253 --Exchange Rate Type
11254  , p_source_29            IN VARCHAR2
11255 --Revenue Distribution Type
11256  , p_source_36            IN VARCHAR2
11257 --System Linkage Function
11258  , p_source_37            IN VARCHAR2
11259 --Crediting Revenue Flag
11260  , p_source_38            IN VARCHAR2
11261 --Revenue First Distribution ID
11262  , p_source_39            IN NUMBER
11263 --Revenue Second Distribution ID
11264  , p_source_40            IN NUMBER
11265 --Entered Amount
11266  , p_source_41            IN NUMBER
11267 --Event ID
11268  , p_source_42            IN NUMBER
11269 --Accounted Amount
11270  , p_source_43            IN NUMBER
11271 )
11272 IS
11273 
11274 l_component_type              VARCHAR2(80);
11275 l_component_code              VARCHAR2(30);
11276 l_component_type_code         VARCHAR2(1);
11277 l_component_appl_id           INTEGER;
11278 l_amb_context_code            VARCHAR2(30);
11279 l_entity_code                 VARCHAR2(30);
11280 l_event_class_code            VARCHAR2(30);
11281 l_ae_header_id                NUMBER;
11282 l_event_type_code             VARCHAR2(30);
11283 l_line_definition_code        VARCHAR2(30);
11284 l_line_definition_owner_code  VARCHAR2(1);
11285 --
11286 -- adr variables
11287 l_segment                     VARCHAR2(30);
11288 l_ccid                        NUMBER;
11289 l_adr_transaction_coa_id      NUMBER;
11290 l_adr_accounting_coa_id       NUMBER;
11291 l_adr_flexfield_segment_code  VARCHAR2(30);
11292 l_adr_flex_value_set_id       NUMBER;
11293 l_adr_value_type_code         VARCHAR2(30);
11294 l_adr_value_combination_id    NUMBER;
11295 l_adr_value_segment_code      VARCHAR2(30);
11296 
11297 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11298 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11299 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11300 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11301 
11302 -- 4262811 Variables ------------------------------------------------------------------------------------------
11303 l_entered_amt_idx             NUMBER;
11304 l_accted_amt_idx              NUMBER;
11305 l_acc_rev_flag                VARCHAR2(1);
11306 l_accrual_line_num            NUMBER;
11307 l_tmp_amt                     NUMBER;
11308 l_acc_rev_natural_side_code   VARCHAR2(1);
11309 
11310 l_num_entries                 NUMBER;
11311 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11312 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11313 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11314 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11315 l_recog_line_1                NUMBER;
11316 l_recog_line_2                NUMBER;
11317 
11318 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11319 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11320 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11321 
11322 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11323 
11324 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11325 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11326 
11327 ---------------------------------------------------------------------------------------------------------------
11328 
11329 
11330 --
11331 -- bulk performance
11332 --
11333 l_balance_type_code           VARCHAR2(1);
11334 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11335 l_log_module                  VARCHAR2(240);
11336 
11337 --
11338 -- Upgrade strategy
11339 --
11340 l_actual_upg_option           VARCHAR2(1);
11341 l_enc_upg_option           VARCHAR2(1);
11342 
11343 --
11344 BEGIN
11345 --
11346 IF g_log_enabled THEN
11347       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
11348 END IF;
11349 --
11350 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11351 
11352       trace
11353          (p_msg      => 'BEGIN of AcctLineType_35'
11354          ,p_level    => C_LEVEL_PROCEDURE
11355          ,p_module   => l_log_module);
11356 
11357 END IF;
11358 --
11359 l_component_type             := 'AMB_JLT';
11360 l_component_code             := 'PA_LABOR_REV';
11361 l_component_type_code        := 'S';
11362 l_component_appl_id          :=  275;
11363 l_amb_context_code           := 'DEFAULT';
11364 l_entity_code                := 'REVENUE';
11365 l_event_class_code           := 'REVENUE';
11366 l_event_type_code            := 'REVENUE_ALL';
11367 l_line_definition_owner_code := 'S';
11368 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
11369 --
11370 l_balance_type_code          := 'A';
11374 l_adr_accounting_coa_id       := NULL;
11371 l_segment                     := NULL;
11372 l_ccid                        := NULL;
11373 l_adr_transaction_coa_id      := NULL;
11375 l_adr_flexfield_segment_code  := NULL;
11376 l_adr_flex_value_set_id       := NULL;
11377 l_adr_value_type_code         := NULL;
11378 l_adr_value_combination_id    := NULL;
11379 l_adr_value_segment_code      := NULL;
11380 
11381 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11382 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
11383 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11384 l_budgetary_control_flag     := 'N';
11385 
11386 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11387 l_bflow_applied_to_amt       := NULL; -- 5132302
11388 l_entered_amt_idx            := NULL;          -- 4262811
11389 l_accted_amt_idx             := NULL;          -- 4262811
11390 l_acc_rev_flag               := NULL;          -- 4262811
11391 l_accrual_line_num           := NULL;          -- 4262811
11392 l_tmp_amt                    := NULL;          -- 4262811
11393 --
11394  
11395 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11396     l_balance_type_code <> 'B' THEN
11397 IF NVL(p_source_36,'
11398 ') =  'Revenue - Normal Revenue' AND 
11399 (NVL(p_source_37,'
11400 ') =  'ST' OR 
11401 NVL(p_source_37,'
11402 ') =  'OT') AND 
11403 NVL(p_source_38,'
11404 ') =  'N'
11405  THEN 
11406 
11407    --
11408    XLA_AE_LINES_PKG.SetNewLine;
11409 
11410    p_balance_type_code          := l_balance_type_code;
11411    -- set the flag so later we will know whether the gain loss line needs to be created
11412    
11413    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11414      p_actual_flag :='A';
11415    END IF;
11416 
11417    --
11418    -- bulk performance
11419    --
11420    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11421                                       p_header_num   => 0); -- 4262811
11422    --
11423    -- set accounting line options
11424    --
11425    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11426            p_natural_side_code          => 'C'
11427          , p_gain_or_loss_flag          => 'N'
11428          , p_gl_transfer_mode_code      => 'S'
11429          , p_acct_entry_type_code       => 'A'
11430          , p_switch_side_flag           => 'Y'
11431          , p_merge_duplicate_code       => 'N'
11432          );
11433    --
11434    l_acc_rev_natural_side_code := 'D';  -- 4262811
11435    -- 
11436    --
11437    -- set accounting line type info
11438    --
11439    xla_ae_lines_pkg.SetAcctLineType
11440       (p_component_type             => l_component_type
11441       ,p_event_type_code            => l_event_type_code
11442       ,p_line_definition_owner_code => l_line_definition_owner_code
11443       ,p_line_definition_code       => l_line_definition_code
11444       ,p_accounting_line_code       => l_component_code
11445       ,p_accounting_line_type_code  => l_component_type_code
11446       ,p_accounting_line_appl_id    => l_component_appl_id
11447       ,p_amb_context_code           => l_amb_context_code
11448       ,p_entity_code                => l_entity_code
11449       ,p_event_class_code           => l_event_class_code);
11450    --
11451    -- set accounting class
11452    --
11453    xla_ae_lines_pkg.SetAcctClass(
11454            p_accounting_class_code  => 'REVENUE'
11455          , p_ae_header_id           => l_ae_header_id
11456          );
11457 
11458    --
11459    -- set rounding class
11460    --
11461    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11462                       'REVENUE';
11463 
11464    --
11465    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11466    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11467    --
11468    -- bulk performance
11469    --
11470    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11471 
11472    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11473       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11474 
11475    -- 4955764
11476    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11477       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11478 
11479    -- 4458381 Public Sector Enh
11480    
11481    --
11482    -- set accounting attributes for the line type
11483    --
11484    l_entered_amt_idx := 4;
11485    l_accted_amt_idx  := 10;
11486    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11487    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11488    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
11489    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
11490    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
11491    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
11492    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
11493    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
11494    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
11495    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
11496    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
11497    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
11498    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
11499    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
11500    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
11501    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
11505    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
11502    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
11503    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
11504    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
11506    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
11507 
11508    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11509    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11510 
11511    ---------------------------------------------------------------------------------------------------------------
11512    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11513    ---------------------------------------------------------------------------------------------------------------
11514    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11515 
11516    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11517    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11518 
11519    IF xla_accounting_cache_pkg.GetValueChar
11520          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11521          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11522    AND l_bflow_method_code = 'PRIOR_ENTRY'
11523 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11524    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11525          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11526        )
11527    THEN
11528          xla_ae_lines_pkg.BflowUpgEntry
11529            (p_business_method_code    => l_bflow_method_code
11530            ,p_business_class_code     => l_bflow_class_code
11531            ,p_balance_type            => l_balance_type_code);
11532    ELSE
11533       NULL;
11534 -- No business flow processing for business flow method of NONE.
11535    END IF;
11536 
11537    --
11538    -- call analytical criteria
11539    --
11540    
11541    --
11542    -- call description
11543    --
11544    -- No description or it is inherited.
11545    --
11546    -- call ADRs
11547    -- Bug 4922099
11548    --
11549    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11550         (NVL(l_actual_upg_option, 'N') = 'O') OR
11551         (NVL(l_enc_upg_option, 'N') = 'O')
11552       )
11553    THEN
11554    NULL;
11555    --
11556    --
11557    
11558   l_ccid := AcctDerRule_17(
11559            p_application_id           => p_application_id
11560          , p_ae_header_id             => l_ae_header_id 
11561 , p_source_18 => p_source_18
11562          , x_transaction_coa_id       => l_adr_transaction_coa_id
11563          , x_accounting_coa_id        => l_adr_accounting_coa_id
11564          , x_value_type_code          => l_adr_value_type_code
11565          , p_side                     => 'NA'
11566    );
11567 
11568    xla_ae_lines_pkg.set_ccid(
11569     p_code_combination_id          => l_ccid
11570   , p_value_type_code              => l_adr_value_type_code
11571   , p_transaction_coa_id           => l_adr_transaction_coa_id
11572   , p_accounting_coa_id            => l_adr_accounting_coa_id
11573   , p_adr_code                     => 'REVENUE_RULE'
11574   , p_adr_type_code                => 'S'
11575   , p_component_type               => l_component_type
11576   , p_component_code               => l_component_code
11577   , p_component_type_code          => l_component_type_code
11578   , p_component_appl_id            => l_component_appl_id
11579   , p_amb_context_code             => l_amb_context_code
11580   , p_side                         => 'NA'
11581   );
11582 
11583 
11584    --
11585    --
11586    END IF;
11587    --
11588    -- Bug 4922099
11589    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11590           (NVL(l_enc_upg_option, 'N') = 'O')
11591         ) AND
11592         (l_bflow_method_code = 'PRIOR_ENTRY')
11593       )
11594    THEN
11595       IF
11596       --
11597       1 = 2
11598       --
11599       THEN
11600       xla_accounting_err_pkg.build_message
11601                                     (p_appli_s_name            => 'XLA'
11602                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11603                                     ,p_token_1                 => 'LINE_NUMBER'
11604                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11605                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11606                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11607                                                                              l_component_type
11608                                                                             ,l_component_code
11609                                                                             ,l_component_type_code
11610                                                                             ,l_component_appl_id
11611                                                                             ,l_amb_context_code
11612                                                                             ,l_entity_code
11613                                                                             ,l_event_class_code
11614                                                                            )
11615                                     ,p_token_3                 => 'OWNER'
11616                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11617                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11618                                                                           ,p_lookup_code    => l_component_type_code
11622                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11619                                                                          )
11620                                     ,p_token_4                 => 'PRODUCT_NAME'
11621                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11623                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11624                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11625                                     ,p_ae_header_id            =>  NULL
11626                                        );
11627 
11628         IF (C_LEVEL_ERROR>= g_log_level) THEN
11629                  trace
11630                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11631                       ,p_level    => C_LEVEL_ERROR
11632                       ,p_module   => l_log_module);
11633         END IF;
11634       END IF;
11635    END IF;
11636    --
11637    --
11638    ------------------------------------------------------------------------------------------------
11639    -- 4219869 Business Flow
11640    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11641    -- Prior Entry.  Currently, the following code is always generated.
11642    ------------------------------------------------------------------------------------------------
11643    XLA_AE_LINES_PKG.ValidateCurrentLine;
11644 
11645    ------------------------------------------------------------------------------------
11646    -- 4219869 Business Flow
11647    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11648    ------------------------------------------------------------------------------------
11649    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11650 
11651    ----------------------------------------------------------------------------------
11652    -- 4219869 Business Flow
11653    -- Update journal entry status -- Need to generate this within IF <condition>
11654    ----------------------------------------------------------------------------------
11655    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11656          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11657          ,p_balance_type_code => l_balance_type_code
11658          );
11659 
11660    -------------------------------------------------------------------------------------------
11661    -- 4262811 - Generate the Accrual Reversal lines
11662    -------------------------------------------------------------------------------------------
11663    BEGIN
11664       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11665                               (g_array_event(p_event_id).array_value_num('header_index'));
11666       IF l_acc_rev_flag IS NULL THEN
11667          l_acc_rev_flag := 'N';
11668       END IF;
11669    EXCEPTION
11670       WHEN OTHERS THEN
11671          l_acc_rev_flag := 'N';
11672    END;
11673    --
11674    IF (l_acc_rev_flag = 'Y') THEN
11675 
11676        -- 4645092  ------------------------------------------------------------------------------
11677        -- To allow MPA report to determine if it should generate report process
11678        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11679        ------------------------------------------------------------------------------------------
11680 
11681        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11682        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11683 
11684        --
11685        -- Update the line information that should be overwritten
11686        --
11687        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11688                                          p_header_num   => 1);
11689        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11690 
11691        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11692 
11693        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11694           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11695        END IF;
11696 
11697       --
11698       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11699       --
11700       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11701           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11702       ELSE
11703           ---------------------------------------------------------------------------------------------------
11704           -- 4262811a Switch Sign
11705           ---------------------------------------------------------------------------------------------------
11706           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11707           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11708                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11709           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11710                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11711           -- 5132302
11712           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11713                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11714 
11715       END IF;
11716 
11717       -- 4955764
11718       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11719       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11720 
11721 
11725       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11722       XLA_AE_LINES_PKG.ValidateCurrentLine;
11723       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11724 
11726                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11727                ,p_balance_type_code => l_balance_type_code);
11728 
11729    END IF;
11730 
11731    -----------------------------------------------------------------------------------------
11732    -- 4262811 Multiperiod Accounting
11733    -----------------------------------------------------------------------------------------
11734      -- No MPA option is assigned.
11735 
11736 
11737 END IF;
11738 END IF;
11739 --
11740 
11741 --
11742 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11743    trace
11744       (p_msg      => 'END of AcctLineType_35'
11745       ,p_level    => C_LEVEL_PROCEDURE
11746       ,p_module   => l_log_module);
11747 END IF;
11748 --
11749 EXCEPTION
11750   WHEN xla_exceptions_pkg.application_exception THEN
11751       RAISE;
11752   WHEN OTHERS THEN
11753        xla_exceptions_pkg.raise_message
11754            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_35');
11755 END AcctLineType_35;
11756 --
11757 
11758 ---------------------------------------
11759 --
11760 -- PRIVATE FUNCTION
11761 --         AcctLineType_36
11762 --
11763 ---------------------------------------
11764 PROCEDURE AcctLineType_36 (
11765   p_application_id        IN NUMBER
11766  ,p_event_id              IN NUMBER
11767  ,p_calculate_acctd_flag  IN VARCHAR2
11768  ,p_calculate_g_l_flag    IN VARCHAR2
11769  ,p_actual_flag           IN OUT VARCHAR2
11770  ,p_balance_type_code     OUT VARCHAR2
11771  ,p_gain_or_loss_ref      OUT VARCHAR2
11772  
11773 --Revenue CCID
11774  , p_source_18            IN NUMBER
11775 --Entered Currency Code
11776  , p_source_25            IN VARCHAR2
11777 --Exchange Rate Date
11778  , p_source_27            IN DATE
11779 --Exchange Rate
11780  , p_source_28            IN NUMBER
11781 --Exchange Rate Type
11782  , p_source_29            IN VARCHAR2
11783 --Revenue Distribution Type
11784  , p_source_36            IN VARCHAR2
11785 --System Linkage Function
11786  , p_source_37            IN VARCHAR2
11787 --Crediting Revenue Flag
11788  , p_source_38            IN VARCHAR2
11789 --Revenue First Distribution ID
11790  , p_source_39            IN NUMBER
11791 --Revenue Second Distribution ID
11792  , p_source_40            IN NUMBER
11793 --Entered Amount
11794  , p_source_41            IN NUMBER
11795 --Event ID
11796  , p_source_42            IN NUMBER
11797 --Accounted Amount
11798  , p_source_43            IN NUMBER
11799 )
11800 IS
11801 
11802 l_component_type              VARCHAR2(80);
11803 l_component_code              VARCHAR2(30);
11804 l_component_type_code         VARCHAR2(1);
11805 l_component_appl_id           INTEGER;
11806 l_amb_context_code            VARCHAR2(30);
11807 l_entity_code                 VARCHAR2(30);
11808 l_event_class_code            VARCHAR2(30);
11809 l_ae_header_id                NUMBER;
11810 l_event_type_code             VARCHAR2(30);
11811 l_line_definition_code        VARCHAR2(30);
11812 l_line_definition_owner_code  VARCHAR2(1);
11813 --
11814 -- adr variables
11815 l_segment                     VARCHAR2(30);
11816 l_ccid                        NUMBER;
11817 l_adr_transaction_coa_id      NUMBER;
11818 l_adr_accounting_coa_id       NUMBER;
11819 l_adr_flexfield_segment_code  VARCHAR2(30);
11820 l_adr_flex_value_set_id       NUMBER;
11821 l_adr_value_type_code         VARCHAR2(30);
11822 l_adr_value_combination_id    NUMBER;
11823 l_adr_value_segment_code      VARCHAR2(30);
11824 
11825 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11826 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11827 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11828 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11829 
11830 -- 4262811 Variables ------------------------------------------------------------------------------------------
11831 l_entered_amt_idx             NUMBER;
11832 l_accted_amt_idx              NUMBER;
11833 l_acc_rev_flag                VARCHAR2(1);
11834 l_accrual_line_num            NUMBER;
11835 l_tmp_amt                     NUMBER;
11836 l_acc_rev_natural_side_code   VARCHAR2(1);
11837 
11838 l_num_entries                 NUMBER;
11839 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11840 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11841 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11842 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11843 l_recog_line_1                NUMBER;
11844 l_recog_line_2                NUMBER;
11845 
11846 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11847 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11848 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11849 
11850 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11851 
11852 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11853 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11854 
11855 ---------------------------------------------------------------------------------------------------------------
11856 
11857 
11858 --
11859 -- bulk performance
11860 --
11861 l_balance_type_code           VARCHAR2(1);
11862 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11863 l_log_module                  VARCHAR2(240);
11864 
11865 --
11866 -- Upgrade strategy
11867 --
11871 --
11868 l_actual_upg_option           VARCHAR2(1);
11869 l_enc_upg_option           VARCHAR2(1);
11870 
11872 BEGIN
11873 --
11874 IF g_log_enabled THEN
11875       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
11876 END IF;
11877 --
11878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11879 
11880       trace
11881          (p_msg      => 'BEGIN of AcctLineType_36'
11882          ,p_level    => C_LEVEL_PROCEDURE
11883          ,p_module   => l_log_module);
11884 
11885 END IF;
11886 --
11887 l_component_type             := 'AMB_JLT';
11888 l_component_code             := 'PA_PJ_REV';
11889 l_component_type_code        := 'S';
11890 l_component_appl_id          :=  275;
11891 l_amb_context_code           := 'DEFAULT';
11892 l_entity_code                := 'REVENUE';
11893 l_event_class_code           := 'REVENUE';
11894 l_event_type_code            := 'REVENUE_ALL';
11895 l_line_definition_owner_code := 'S';
11896 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
11897 --
11898 l_balance_type_code          := 'A';
11899 l_segment                     := NULL;
11900 l_ccid                        := NULL;
11901 l_adr_transaction_coa_id      := NULL;
11902 l_adr_accounting_coa_id       := NULL;
11903 l_adr_flexfield_segment_code  := NULL;
11904 l_adr_flex_value_set_id       := NULL;
11905 l_adr_value_type_code         := NULL;
11906 l_adr_value_combination_id    := NULL;
11907 l_adr_value_segment_code      := NULL;
11908 
11909 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11910 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
11911 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11912 l_budgetary_control_flag     := 'N';
11913 
11914 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11915 l_bflow_applied_to_amt       := NULL; -- 5132302
11916 l_entered_amt_idx            := NULL;          -- 4262811
11917 l_accted_amt_idx             := NULL;          -- 4262811
11918 l_acc_rev_flag               := NULL;          -- 4262811
11919 l_accrual_line_num           := NULL;          -- 4262811
11920 l_tmp_amt                    := NULL;          -- 4262811
11921 --
11922  
11923 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11924     l_balance_type_code <> 'B' THEN
11925 IF NVL(p_source_36,'
11926 ') =  'Revenue - Normal Revenue' AND 
11927 NVL(p_source_37,'
11928 ') =  'PJ' AND 
11929 NVL(p_source_38,'
11930 ') =  'N'
11931  THEN 
11932 
11933    --
11934    XLA_AE_LINES_PKG.SetNewLine;
11935 
11936    p_balance_type_code          := l_balance_type_code;
11937    -- set the flag so later we will know whether the gain loss line needs to be created
11938    
11939    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11940      p_actual_flag :='A';
11941    END IF;
11942 
11943    --
11944    -- bulk performance
11945    --
11946    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11947                                       p_header_num   => 0); -- 4262811
11948    --
11949    -- set accounting line options
11950    --
11951    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11952            p_natural_side_code          => 'C'
11953          , p_gain_or_loss_flag          => 'N'
11954          , p_gl_transfer_mode_code      => 'S'
11955          , p_acct_entry_type_code       => 'A'
11956          , p_switch_side_flag           => 'Y'
11957          , p_merge_duplicate_code       => 'N'
11958          );
11959    --
11960    l_acc_rev_natural_side_code := 'D';  -- 4262811
11961    -- 
11962    --
11963    -- set accounting line type info
11964    --
11965    xla_ae_lines_pkg.SetAcctLineType
11966       (p_component_type             => l_component_type
11967       ,p_event_type_code            => l_event_type_code
11968       ,p_line_definition_owner_code => l_line_definition_owner_code
11969       ,p_line_definition_code       => l_line_definition_code
11970       ,p_accounting_line_code       => l_component_code
11971       ,p_accounting_line_type_code  => l_component_type_code
11972       ,p_accounting_line_appl_id    => l_component_appl_id
11973       ,p_amb_context_code           => l_amb_context_code
11974       ,p_entity_code                => l_entity_code
11975       ,p_event_class_code           => l_event_class_code);
11976    --
11977    -- set accounting class
11978    --
11979    xla_ae_lines_pkg.SetAcctClass(
11980            p_accounting_class_code  => 'REVENUE'
11981          , p_ae_header_id           => l_ae_header_id
11982          );
11983 
11984    --
11985    -- set rounding class
11986    --
11987    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11988                       'REVENUE';
11989 
11990    --
11991    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11992    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11993    --
11994    -- bulk performance
11995    --
11996    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11997 
11998    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11999       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12000 
12001    -- 4955764
12002    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12003       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12004 
12005    -- 4458381 Public Sector Enh
12006    
12007    --
12008    -- set accounting attributes for the line type
12009    --
12010    l_entered_amt_idx := 4;
12011    l_accted_amt_idx  := 10;
12015    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
12012    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12013    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12014    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
12016    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
12017    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
12018    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
12019    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
12020    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
12021    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
12022    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
12023    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
12024    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
12025    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
12026    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
12027    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
12028    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
12029    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
12030    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
12031    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
12032    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
12033 
12034    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12035    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12036 
12037    ---------------------------------------------------------------------------------------------------------------
12038    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12039    ---------------------------------------------------------------------------------------------------------------
12040    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12041 
12042    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12043    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12044 
12045    IF xla_accounting_cache_pkg.GetValueChar
12046          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12047          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12048    AND l_bflow_method_code = 'PRIOR_ENTRY'
12049 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12050    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12051          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12052        )
12053    THEN
12054          xla_ae_lines_pkg.BflowUpgEntry
12055            (p_business_method_code    => l_bflow_method_code
12056            ,p_business_class_code     => l_bflow_class_code
12057            ,p_balance_type            => l_balance_type_code);
12058    ELSE
12059       NULL;
12060 -- No business flow processing for business flow method of NONE.
12061    END IF;
12062 
12063    --
12064    -- call analytical criteria
12065    --
12066    
12067    --
12068    -- call description
12069    --
12070    -- No description or it is inherited.
12071    --
12072    -- call ADRs
12073    -- Bug 4922099
12074    --
12075    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12076         (NVL(l_actual_upg_option, 'N') = 'O') OR
12077         (NVL(l_enc_upg_option, 'N') = 'O')
12078       )
12079    THEN
12080    NULL;
12081    --
12082    --
12083    
12084   l_ccid := AcctDerRule_17(
12085            p_application_id           => p_application_id
12086          , p_ae_header_id             => l_ae_header_id 
12087 , p_source_18 => p_source_18
12088          , x_transaction_coa_id       => l_adr_transaction_coa_id
12089          , x_accounting_coa_id        => l_adr_accounting_coa_id
12090          , x_value_type_code          => l_adr_value_type_code
12091          , p_side                     => 'NA'
12092    );
12093 
12094    xla_ae_lines_pkg.set_ccid(
12095     p_code_combination_id          => l_ccid
12096   , p_value_type_code              => l_adr_value_type_code
12097   , p_transaction_coa_id           => l_adr_transaction_coa_id
12098   , p_accounting_coa_id            => l_adr_accounting_coa_id
12099   , p_adr_code                     => 'REVENUE_RULE'
12100   , p_adr_type_code                => 'S'
12101   , p_component_type               => l_component_type
12102   , p_component_code               => l_component_code
12103   , p_component_type_code          => l_component_type_code
12104   , p_component_appl_id            => l_component_appl_id
12105   , p_amb_context_code             => l_amb_context_code
12106   , p_side                         => 'NA'
12107   );
12108 
12109 
12110    --
12111    --
12112    END IF;
12113    --
12114    -- Bug 4922099
12115    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12116           (NVL(l_enc_upg_option, 'N') = 'O')
12117         ) AND
12118         (l_bflow_method_code = 'PRIOR_ENTRY')
12119       )
12120    THEN
12121       IF
12122       --
12123       1 = 2
12124       --
12125       THEN
12126       xla_accounting_err_pkg.build_message
12127                                     (p_appli_s_name            => 'XLA'
12128                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12129                                     ,p_token_1                 => 'LINE_NUMBER'
12130                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12131                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12132                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12136                                                                             ,l_component_appl_id
12133                                                                              l_component_type
12134                                                                             ,l_component_code
12135                                                                             ,l_component_type_code
12137                                                                             ,l_amb_context_code
12138                                                                             ,l_entity_code
12139                                                                             ,l_event_class_code
12140                                                                            )
12141                                     ,p_token_3                 => 'OWNER'
12142                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12143                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12144                                                                           ,p_lookup_code    => l_component_type_code
12145                                                                          )
12146                                     ,p_token_4                 => 'PRODUCT_NAME'
12147                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12148                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12149                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12150                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12151                                     ,p_ae_header_id            =>  NULL
12152                                        );
12153 
12154         IF (C_LEVEL_ERROR>= g_log_level) THEN
12155                  trace
12156                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12157                       ,p_level    => C_LEVEL_ERROR
12158                       ,p_module   => l_log_module);
12159         END IF;
12160       END IF;
12161    END IF;
12162    --
12163    --
12164    ------------------------------------------------------------------------------------------------
12165    -- 4219869 Business Flow
12166    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12167    -- Prior Entry.  Currently, the following code is always generated.
12168    ------------------------------------------------------------------------------------------------
12169    XLA_AE_LINES_PKG.ValidateCurrentLine;
12170 
12171    ------------------------------------------------------------------------------------
12172    -- 4219869 Business Flow
12173    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12174    ------------------------------------------------------------------------------------
12175    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12176 
12177    ----------------------------------------------------------------------------------
12178    -- 4219869 Business Flow
12179    -- Update journal entry status -- Need to generate this within IF <condition>
12180    ----------------------------------------------------------------------------------
12181    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12182          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12183          ,p_balance_type_code => l_balance_type_code
12184          );
12185 
12186    -------------------------------------------------------------------------------------------
12187    -- 4262811 - Generate the Accrual Reversal lines
12188    -------------------------------------------------------------------------------------------
12189    BEGIN
12190       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12191                               (g_array_event(p_event_id).array_value_num('header_index'));
12192       IF l_acc_rev_flag IS NULL THEN
12193          l_acc_rev_flag := 'N';
12194       END IF;
12195    EXCEPTION
12196       WHEN OTHERS THEN
12197          l_acc_rev_flag := 'N';
12198    END;
12199    --
12200    IF (l_acc_rev_flag = 'Y') THEN
12201 
12202        -- 4645092  ------------------------------------------------------------------------------
12203        -- To allow MPA report to determine if it should generate report process
12204        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12205        ------------------------------------------------------------------------------------------
12206 
12207        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12208        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12209 
12210        --
12211        -- Update the line information that should be overwritten
12212        --
12213        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12214                                          p_header_num   => 1);
12215        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12216 
12217        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12218 
12219        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12220           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12221        END IF;
12222 
12223       --
12224       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12225       --
12226       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12227           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12228       ELSE
12229           ---------------------------------------------------------------------------------------------------
12230           -- 4262811a Switch Sign
12234                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12231           ---------------------------------------------------------------------------------------------------
12232           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12233           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12235           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12236                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12237           -- 5132302
12238           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12239                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12240 
12241       END IF;
12242 
12243       -- 4955764
12244       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12245       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12246 
12247 
12248       XLA_AE_LINES_PKG.ValidateCurrentLine;
12249       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12250 
12251       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12252                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12253                ,p_balance_type_code => l_balance_type_code);
12254 
12255    END IF;
12256 
12257    -----------------------------------------------------------------------------------------
12258    -- 4262811 Multiperiod Accounting
12259    -----------------------------------------------------------------------------------------
12260      -- No MPA option is assigned.
12261 
12262 
12263 END IF;
12264 END IF;
12265 --
12266 
12267 --
12268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12269    trace
12270       (p_msg      => 'END of AcctLineType_36'
12271       ,p_level    => C_LEVEL_PROCEDURE
12272       ,p_module   => l_log_module);
12273 END IF;
12274 --
12275 EXCEPTION
12276   WHEN xla_exceptions_pkg.application_exception THEN
12277       RAISE;
12278   WHEN OTHERS THEN
12279        xla_exceptions_pkg.raise_message
12280            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_36');
12281 END AcctLineType_36;
12282 --
12283 
12284 ---------------------------------------
12285 --
12286 -- PRIVATE FUNCTION
12287 --         AcctLineType_37
12288 --
12289 ---------------------------------------
12290 PROCEDURE AcctLineType_37 (
12291   p_application_id        IN NUMBER
12292  ,p_event_id              IN NUMBER
12293  ,p_calculate_acctd_flag  IN VARCHAR2
12294  ,p_calculate_g_l_flag    IN VARCHAR2
12295  ,p_actual_flag           IN OUT VARCHAR2
12296  ,p_balance_type_code     OUT VARCHAR2
12297  ,p_gain_or_loss_ref      OUT VARCHAR2
12298  
12299 --Allow Account Override Flag
12300  , p_source_4            IN VARCHAR2
12301 --Provider Cost/ Revenue CCID
12302  , p_source_8            IN NUMBER
12303 --Adjustment Provider Cost/ Revenue CCID
12304  , p_source_9            IN NUMBER
12305 --Receiver Cost/ Revenue CCID
12306  , p_source_15            IN NUMBER
12307 --Reversing Line Flag
12308  , p_source_22            IN VARCHAR2
12309 --Actual Upgrade Credit Accounting Class
12310  , p_source_23            IN VARCHAR2
12311 --Entered Currency Code
12312  , p_source_25            IN VARCHAR2
12313 --Exchange Rate Date
12314  , p_source_27            IN DATE
12315 --Exchange Rate
12316  , p_source_28            IN NUMBER
12317 --Exchange Rate Type
12318  , p_source_29            IN VARCHAR2
12319 --Actual Upgrade Debit Accounting Class
12320  , p_source_30            IN VARCHAR2
12321 --Use Actuals Upgrade Attributes Flag
12322  , p_source_31            IN VARCHAR2
12323 --Expenditure Item ID
12324  , p_source_32            IN NUMBER
12325 --Cost Distribution Line Number
12326  , p_source_33            IN NUMBER
12327 --Line Type
12328  , p_source_34            IN VARCHAR2
12329  , p_source_34_meaning    IN VARCHAR2
12330 --Reversed Line Number
12331  , p_source_35            IN NUMBER
12332 --Entered Amount
12333  , p_source_41            IN NUMBER
12334 --Accounted Amount
12335  , p_source_43            IN NUMBER
12336 --Transfer Amount Type
12337  , p_source_67            IN VARCHAR2
12338  , p_source_67_meaning    IN VARCHAR2
12339 )
12340 IS
12341 
12342 l_component_type              VARCHAR2(80);
12343 l_component_code              VARCHAR2(30);
12344 l_component_type_code         VARCHAR2(1);
12345 l_component_appl_id           INTEGER;
12346 l_amb_context_code            VARCHAR2(30);
12347 l_entity_code                 VARCHAR2(30);
12348 l_event_class_code            VARCHAR2(30);
12349 l_ae_header_id                NUMBER;
12350 l_event_type_code             VARCHAR2(30);
12351 l_line_definition_code        VARCHAR2(30);
12352 l_line_definition_owner_code  VARCHAR2(1);
12353 --
12354 -- adr variables
12355 l_segment                     VARCHAR2(30);
12356 l_ccid                        NUMBER;
12357 l_adr_transaction_coa_id      NUMBER;
12358 l_adr_accounting_coa_id       NUMBER;
12359 l_adr_flexfield_segment_code  VARCHAR2(30);
12360 l_adr_flex_value_set_id       NUMBER;
12361 l_adr_value_type_code         VARCHAR2(30);
12362 l_adr_value_combination_id    NUMBER;
12363 l_adr_value_segment_code      VARCHAR2(30);
12364 
12365 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12366 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12367 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12368 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12369 
12373 l_acc_rev_flag                VARCHAR2(1);
12370 -- 4262811 Variables ------------------------------------------------------------------------------------------
12371 l_entered_amt_idx             NUMBER;
12372 l_accted_amt_idx              NUMBER;
12374 l_accrual_line_num            NUMBER;
12375 l_tmp_amt                     NUMBER;
12376 l_acc_rev_natural_side_code   VARCHAR2(1);
12377 
12378 l_num_entries                 NUMBER;
12379 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12380 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12381 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12382 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12383 l_recog_line_1                NUMBER;
12384 l_recog_line_2                NUMBER;
12385 
12386 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12387 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12388 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12389 
12390 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12391 
12392 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12393 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12394 
12395 ---------------------------------------------------------------------------------------------------------------
12396 
12397 
12398 --
12399 -- bulk performance
12400 --
12401 l_balance_type_code           VARCHAR2(1);
12402 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12403 l_log_module                  VARCHAR2(240);
12404 
12405 --
12406 -- Upgrade strategy
12407 --
12408 l_actual_upg_option           VARCHAR2(1);
12409 l_enc_upg_option           VARCHAR2(1);
12410 
12411 --
12412 BEGIN
12413 --
12414 IF g_log_enabled THEN
12415       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
12416 END IF;
12417 --
12418 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12419 
12420       trace
12421          (p_msg      => 'BEGIN of AcctLineType_37'
12422          ,p_level    => C_LEVEL_PROCEDURE
12423          ,p_module   => l_log_module);
12424 
12425 END IF;
12426 --
12427 l_component_type             := 'AMB_JLT';
12428 l_component_code             := 'PA_PROVIDER_COST';
12429 l_component_type_code        := 'S';
12430 l_component_appl_id          :=  275;
12431 l_amb_context_code           := 'DEFAULT';
12432 l_entity_code                := 'EXPENDITURES';
12433 l_event_class_code           := 'BORROWED_AND_LENT';
12434 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
12435 l_line_definition_owner_code := 'S';
12436 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
12437 --
12438 l_balance_type_code          := 'A';
12439 l_segment                     := NULL;
12440 l_ccid                        := NULL;
12441 l_adr_transaction_coa_id      := NULL;
12442 l_adr_accounting_coa_id       := NULL;
12443 l_adr_flexfield_segment_code  := NULL;
12444 l_adr_flex_value_set_id       := NULL;
12445 l_adr_value_type_code         := NULL;
12446 l_adr_value_combination_id    := NULL;
12447 l_adr_value_segment_code      := NULL;
12448 
12449 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12450 l_bflow_class_code           := '';    -- 4219869 Business Flow
12451 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12452 l_budgetary_control_flag     := 'N';
12453 
12454 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12455 l_bflow_applied_to_amt       := NULL; -- 5132302
12456 l_entered_amt_idx            := NULL;          -- 4262811
12457 l_accted_amt_idx             := NULL;          -- 4262811
12458 l_acc_rev_flag               := NULL;          -- 4262811
12459 l_accrual_line_num           := NULL;          -- 4262811
12460 l_tmp_amt                    := NULL;          -- 4262811
12461 --
12462  
12463 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12464     l_balance_type_code <> 'B' THEN
12465 IF NVL(p_source_67,'
12466 ') =  'COST_TRANSFER' OR 
12467 NVL(p_source_67,'
12468 ') =  'COST_REVENUE' OR 
12469 p_source_67 IS NULL 
12470  THEN 
12471 
12472    --
12473    XLA_AE_LINES_PKG.SetNewLine;
12474 
12475    p_balance_type_code          := l_balance_type_code;
12476    -- set the flag so later we will know whether the gain loss line needs to be created
12477    
12478    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12479      p_actual_flag :='A';
12480    END IF;
12481 
12482    --
12483    -- bulk performance
12484    --
12485    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12486                                       p_header_num   => 0); -- 4262811
12487    --
12488    -- set accounting line options
12489    --
12490    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12491            p_natural_side_code          => 'C'
12492          , p_gain_or_loss_flag          => 'N'
12493          , p_gl_transfer_mode_code      => 'S'
12494          , p_acct_entry_type_code       => 'A'
12495          , p_switch_side_flag           => 'Y'
12496          , p_merge_duplicate_code       => 'N'
12497          );
12498    --
12499    l_acc_rev_natural_side_code := 'D';  -- 4262811
12500    -- 
12501    --
12502    -- set accounting line type info
12503    --
12504    xla_ae_lines_pkg.SetAcctLineType
12505       (p_component_type             => l_component_type
12506       ,p_event_type_code            => l_event_type_code
12507       ,p_line_definition_owner_code => l_line_definition_owner_code
12508       ,p_line_definition_code       => l_line_definition_code
12509       ,p_accounting_line_code       => l_component_code
12513       ,p_entity_code                => l_entity_code
12510       ,p_accounting_line_type_code  => l_component_type_code
12511       ,p_accounting_line_appl_id    => l_component_appl_id
12512       ,p_amb_context_code           => l_amb_context_code
12514       ,p_event_class_code           => l_event_class_code);
12515    --
12516    -- set accounting class
12517    --
12518    xla_ae_lines_pkg.SetAcctClass(
12519            p_accounting_class_code  => 'PROVIDER_COST'
12520          , p_ae_header_id           => l_ae_header_id
12521          );
12522 
12523    --
12524    -- set rounding class
12525    --
12526    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12527                       'PROVIDER_COST';
12528 
12529    --
12530    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12531    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12532    --
12533    -- bulk performance
12534    --
12535    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12536 
12537    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12538       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12539 
12540    -- 4955764
12541    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12543 
12544    -- 4458381 Public Sector Enh
12545    
12546    --
12547    -- set accounting attributes for the line type
12548    --
12549    l_entered_amt_idx := 22;
12550    l_accted_amt_idx  := 27;
12551    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12552    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
12553    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
12554    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
12555    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
12556    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
12557    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
12558    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
12559    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
12560    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
12561    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
12562    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
12563    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
12564    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
12565    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
12566    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
12567    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
12568    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
12569    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
12570    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
12571    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
12572    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
12573    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
12574    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
12575    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
12576    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
12577    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
12578    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
12579    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
12580    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
12581    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
12582    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
12583    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
12584    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
12585    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
12586    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
12587    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
12588    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
12589    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
12590    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
12591    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
12592    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
12593    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
12594    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
12595    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
12596    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
12597    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
12598    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
12599    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
12600    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
12601    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
12602    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
12603    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
12604    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
12605    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
12606    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
12607    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
12608    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
12609    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
12610    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
12611    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
12612 
12613    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12617    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12614    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12615 
12616    ---------------------------------------------------------------------------------------------------------------
12618    ---------------------------------------------------------------------------------------------------------------
12619    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12620 
12621    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12622    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12623 
12624    IF xla_accounting_cache_pkg.GetValueChar
12625          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12626          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12627    AND l_bflow_method_code = 'PRIOR_ENTRY'
12628 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12629    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12630          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12631        )
12632    THEN
12633          xla_ae_lines_pkg.BflowUpgEntry
12634            (p_business_method_code    => l_bflow_method_code
12635            ,p_business_class_code     => l_bflow_class_code
12636            ,p_balance_type            => l_balance_type_code);
12637    ELSE
12638       NULL;
12639 -- No business flow processing for business flow method of NONE.
12640    END IF;
12641 
12642    --
12643    -- call analytical criteria
12644    --
12645    
12646    --
12647    -- call description
12648    --
12649    -- No description or it is inherited.
12650    --
12651    -- call ADRs
12652    -- Bug 4922099
12653    --
12654    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12655         (NVL(l_actual_upg_option, 'N') = 'O') OR
12656         (NVL(l_enc_upg_option, 'N') = 'O')
12657       )
12658    THEN
12659    NULL;
12660    --
12661    --
12662    
12663   l_ccid := AcctDerRule_7(
12664            p_application_id           => p_application_id
12665          , p_ae_header_id             => l_ae_header_id 
12666 , p_source_4 => p_source_4
12667 , p_source_8 => p_source_8
12668 , p_source_9 => p_source_9
12669          , x_transaction_coa_id       => l_adr_transaction_coa_id
12670          , x_accounting_coa_id        => l_adr_accounting_coa_id
12671          , x_value_type_code          => l_adr_value_type_code
12672          , p_side                     => 'NA'
12673    );
12674 
12675    xla_ae_lines_pkg.set_ccid(
12676     p_code_combination_id          => l_ccid
12677   , p_value_type_code              => l_adr_value_type_code
12678   , p_transaction_coa_id           => l_adr_transaction_coa_id
12679   , p_accounting_coa_id            => l_adr_accounting_coa_id
12680   , p_adr_code                     => 'PA_PROV_COST_REV_ACCT_RULE'
12681   , p_adr_type_code                => 'S'
12682   , p_component_type               => l_component_type
12683   , p_component_code               => l_component_code
12684   , p_component_type_code          => l_component_type_code
12685   , p_component_appl_id            => l_component_appl_id
12686   , p_amb_context_code             => l_amb_context_code
12687   , p_side                         => 'NA'
12688   );
12689 
12690 
12691    --
12692    --
12693    END IF;
12694    --
12695    -- Bug 4922099
12696    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12697           (NVL(l_enc_upg_option, 'N') = 'O')
12698         ) AND
12699         (l_bflow_method_code = 'PRIOR_ENTRY')
12700       )
12701    THEN
12702       IF
12703       --
12704       1 = 2
12705       --
12706       THEN
12707       xla_accounting_err_pkg.build_message
12708                                     (p_appli_s_name            => 'XLA'
12709                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12710                                     ,p_token_1                 => 'LINE_NUMBER'
12711                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12712                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12713                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12714                                                                              l_component_type
12715                                                                             ,l_component_code
12716                                                                             ,l_component_type_code
12717                                                                             ,l_component_appl_id
12718                                                                             ,l_amb_context_code
12719                                                                             ,l_entity_code
12720                                                                             ,l_event_class_code
12721                                                                            )
12722                                     ,p_token_3                 => 'OWNER'
12723                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12724                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12725                                                                           ,p_lookup_code    => l_component_type_code
12726                                                                          )
12727                                     ,p_token_4                 => 'PRODUCT_NAME'
12728                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12732                                     ,p_ae_header_id            =>  NULL
12729                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12730                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12731                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12733                                        );
12734 
12735         IF (C_LEVEL_ERROR>= g_log_level) THEN
12736                  trace
12737                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12738                       ,p_level    => C_LEVEL_ERROR
12739                       ,p_module   => l_log_module);
12740         END IF;
12741       END IF;
12742    END IF;
12743    --
12744    --
12745    ------------------------------------------------------------------------------------------------
12746    -- 4219869 Business Flow
12747    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12748    -- Prior Entry.  Currently, the following code is always generated.
12749    ------------------------------------------------------------------------------------------------
12750    XLA_AE_LINES_PKG.ValidateCurrentLine;
12751 
12752    ------------------------------------------------------------------------------------
12753    -- 4219869 Business Flow
12754    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12755    ------------------------------------------------------------------------------------
12756    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12757 
12758    ----------------------------------------------------------------------------------
12759    -- 4219869 Business Flow
12760    -- Update journal entry status -- Need to generate this within IF <condition>
12761    ----------------------------------------------------------------------------------
12762    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12763          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12764          ,p_balance_type_code => l_balance_type_code
12765          );
12766 
12767    -------------------------------------------------------------------------------------------
12768    -- 4262811 - Generate the Accrual Reversal lines
12769    -------------------------------------------------------------------------------------------
12770    BEGIN
12771       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12772                               (g_array_event(p_event_id).array_value_num('header_index'));
12773       IF l_acc_rev_flag IS NULL THEN
12774          l_acc_rev_flag := 'N';
12775       END IF;
12776    EXCEPTION
12777       WHEN OTHERS THEN
12778          l_acc_rev_flag := 'N';
12779    END;
12780    --
12781    IF (l_acc_rev_flag = 'Y') THEN
12782 
12783        -- 4645092  ------------------------------------------------------------------------------
12784        -- To allow MPA report to determine if it should generate report process
12785        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12786        ------------------------------------------------------------------------------------------
12787 
12788        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12789        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12790 
12791        --
12792        -- Update the line information that should be overwritten
12793        --
12794        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12795                                          p_header_num   => 1);
12796        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12797 
12798        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12799 
12800        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12801           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12802        END IF;
12803 
12804       --
12805       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12806       --
12807       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12808           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12809       ELSE
12810           ---------------------------------------------------------------------------------------------------
12811           -- 4262811a Switch Sign
12812           ---------------------------------------------------------------------------------------------------
12813           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12814           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12815                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12816           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12817                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12818           -- 5132302
12819           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12820                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12821 
12822       END IF;
12823 
12824       -- 4955764
12825       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12826       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12827 
12828 
12829       XLA_AE_LINES_PKG.ValidateCurrentLine;
12830       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12831 
12832       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12833                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12837 
12834                ,p_balance_type_code => l_balance_type_code);
12835 
12836    END IF;
12838    -----------------------------------------------------------------------------------------
12839    -- 4262811 Multiperiod Accounting
12840    -----------------------------------------------------------------------------------------
12841      -- No MPA option is assigned.
12842 
12843 
12844 END IF;
12845 END IF;
12846 --
12847 
12848 --
12849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12850    trace
12851       (p_msg      => 'END of AcctLineType_37'
12852       ,p_level    => C_LEVEL_PROCEDURE
12853       ,p_module   => l_log_module);
12854 END IF;
12855 --
12856 EXCEPTION
12857   WHEN xla_exceptions_pkg.application_exception THEN
12858       RAISE;
12859   WHEN OTHERS THEN
12860        xla_exceptions_pkg.raise_message
12861            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_37');
12862 END AcctLineType_37;
12863 --
12864 
12865 ---------------------------------------
12866 --
12867 -- PRIVATE FUNCTION
12868 --         AcctLineType_38
12869 --
12870 ---------------------------------------
12871 PROCEDURE AcctLineType_38 (
12872   p_application_id        IN NUMBER
12873  ,p_event_id              IN NUMBER
12874  ,p_calculate_acctd_flag  IN VARCHAR2
12875  ,p_calculate_g_l_flag    IN VARCHAR2
12876  ,p_actual_flag           IN OUT VARCHAR2
12877  ,p_balance_type_code     OUT VARCHAR2
12878  ,p_gain_or_loss_ref      OUT VARCHAR2
12879  
12880 --Allow Account Override Flag
12881  , p_source_4            IN VARCHAR2
12882 --Provider Cost/ Revenue CCID
12883  , p_source_8            IN NUMBER
12884 --Adjustment Provider Cost/ Revenue CCID
12885  , p_source_9            IN NUMBER
12886 --Receiver Cost/ Revenue CCID
12887  , p_source_15            IN NUMBER
12888 --Reversing Line Flag
12889  , p_source_22            IN VARCHAR2
12890 --Actual Upgrade Credit Accounting Class
12891  , p_source_23            IN VARCHAR2
12892 --Entered Currency Code
12893  , p_source_25            IN VARCHAR2
12894 --Exchange Rate Date
12895  , p_source_27            IN DATE
12896 --Exchange Rate
12897  , p_source_28            IN NUMBER
12898 --Exchange Rate Type
12899  , p_source_29            IN VARCHAR2
12900 --Actual Upgrade Debit Accounting Class
12901  , p_source_30            IN VARCHAR2
12902 --Use Actuals Upgrade Attributes Flag
12903  , p_source_31            IN VARCHAR2
12904 --Expenditure Item ID
12905  , p_source_32            IN NUMBER
12906 --Cost Distribution Line Number
12907  , p_source_33            IN NUMBER
12908 --Line Type
12909  , p_source_34            IN VARCHAR2
12910  , p_source_34_meaning    IN VARCHAR2
12911 --Reversed Line Number
12912  , p_source_35            IN NUMBER
12913 --Entered Amount
12914  , p_source_41            IN NUMBER
12915 --Accounted Amount
12916  , p_source_43            IN NUMBER
12917 --Transfer Amount Type
12918  , p_source_67            IN VARCHAR2
12919  , p_source_67_meaning    IN VARCHAR2
12920 )
12921 IS
12922 
12923 l_component_type              VARCHAR2(80);
12924 l_component_code              VARCHAR2(30);
12925 l_component_type_code         VARCHAR2(1);
12926 l_component_appl_id           INTEGER;
12927 l_amb_context_code            VARCHAR2(30);
12928 l_entity_code                 VARCHAR2(30);
12929 l_event_class_code            VARCHAR2(30);
12930 l_ae_header_id                NUMBER;
12931 l_event_type_code             VARCHAR2(30);
12932 l_line_definition_code        VARCHAR2(30);
12933 l_line_definition_owner_code  VARCHAR2(1);
12934 --
12935 -- adr variables
12936 l_segment                     VARCHAR2(30);
12937 l_ccid                        NUMBER;
12938 l_adr_transaction_coa_id      NUMBER;
12939 l_adr_accounting_coa_id       NUMBER;
12940 l_adr_flexfield_segment_code  VARCHAR2(30);
12941 l_adr_flex_value_set_id       NUMBER;
12942 l_adr_value_type_code         VARCHAR2(30);
12943 l_adr_value_combination_id    NUMBER;
12944 l_adr_value_segment_code      VARCHAR2(30);
12945 
12946 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12947 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12948 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12949 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12950 
12951 -- 4262811 Variables ------------------------------------------------------------------------------------------
12952 l_entered_amt_idx             NUMBER;
12953 l_accted_amt_idx              NUMBER;
12954 l_acc_rev_flag                VARCHAR2(1);
12955 l_accrual_line_num            NUMBER;
12956 l_tmp_amt                     NUMBER;
12957 l_acc_rev_natural_side_code   VARCHAR2(1);
12958 
12959 l_num_entries                 NUMBER;
12960 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12961 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12962 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12963 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12964 l_recog_line_1                NUMBER;
12965 l_recog_line_2                NUMBER;
12966 
12967 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12968 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12969 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12970 
12971 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12972 
12973 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12974 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12975 
12976 ---------------------------------------------------------------------------------------------------------------
12980 -- bulk performance
12977 
12978 
12979 --
12981 --
12982 l_balance_type_code           VARCHAR2(1);
12983 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12984 l_log_module                  VARCHAR2(240);
12985 
12986 --
12987 -- Upgrade strategy
12988 --
12989 l_actual_upg_option           VARCHAR2(1);
12990 l_enc_upg_option           VARCHAR2(1);
12991 
12992 --
12993 BEGIN
12994 --
12995 IF g_log_enabled THEN
12996       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
12997 END IF;
12998 --
12999 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13000 
13001       trace
13002          (p_msg      => 'BEGIN of AcctLineType_38'
13003          ,p_level    => C_LEVEL_PROCEDURE
13004          ,p_module   => l_log_module);
13005 
13006 END IF;
13007 --
13008 l_component_type             := 'AMB_JLT';
13009 l_component_code             := 'PA_PROVIDER_COST_ADJ';
13010 l_component_type_code        := 'S';
13011 l_component_appl_id          :=  275;
13012 l_amb_context_code           := 'DEFAULT';
13013 l_entity_code                := 'EXPENDITURES';
13014 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
13015 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
13016 l_line_definition_owner_code := 'S';
13017 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
13018 --
13019 l_balance_type_code          := 'A';
13020 l_segment                     := NULL;
13021 l_ccid                        := NULL;
13022 l_adr_transaction_coa_id      := NULL;
13023 l_adr_accounting_coa_id       := NULL;
13024 l_adr_flexfield_segment_code  := NULL;
13025 l_adr_flex_value_set_id       := NULL;
13026 l_adr_value_type_code         := NULL;
13027 l_adr_value_combination_id    := NULL;
13028 l_adr_value_segment_code      := NULL;
13029 
13030 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13031 l_bflow_class_code           := '';    -- 4219869 Business Flow
13032 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13033 l_budgetary_control_flag     := 'N';
13034 
13035 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13036 l_bflow_applied_to_amt       := NULL; -- 5132302
13037 l_entered_amt_idx            := NULL;          -- 4262811
13038 l_accted_amt_idx             := NULL;          -- 4262811
13039 l_acc_rev_flag               := NULL;          -- 4262811
13040 l_accrual_line_num           := NULL;          -- 4262811
13041 l_tmp_amt                    := NULL;          -- 4262811
13042 --
13043  
13044 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13045     l_balance_type_code <> 'B' THEN
13046 IF NVL(p_source_67,'
13047 ') =  'COST_TRANSFER' OR 
13048 NVL(p_source_67,'
13049 ') =  'COST_REVENUE' OR 
13050 p_source_67 IS NULL 
13051  THEN 
13052 
13053    --
13054    XLA_AE_LINES_PKG.SetNewLine;
13055 
13056    p_balance_type_code          := l_balance_type_code;
13057    -- set the flag so later we will know whether the gain loss line needs to be created
13058    
13059    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13060      p_actual_flag :='A';
13061    END IF;
13062 
13063    --
13064    -- bulk performance
13065    --
13066    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13067                                       p_header_num   => 0); -- 4262811
13068    --
13069    -- set accounting line options
13070    --
13071    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13072            p_natural_side_code          => 'C'
13073          , p_gain_or_loss_flag          => 'N'
13074          , p_gl_transfer_mode_code      => 'S'
13075          , p_acct_entry_type_code       => 'A'
13076          , p_switch_side_flag           => 'Y'
13077          , p_merge_duplicate_code       => 'N'
13078          );
13079    --
13080    l_acc_rev_natural_side_code := 'D';  -- 4262811
13081    -- 
13082    --
13083    -- set accounting line type info
13084    --
13085    xla_ae_lines_pkg.SetAcctLineType
13086       (p_component_type             => l_component_type
13087       ,p_event_type_code            => l_event_type_code
13088       ,p_line_definition_owner_code => l_line_definition_owner_code
13089       ,p_line_definition_code       => l_line_definition_code
13090       ,p_accounting_line_code       => l_component_code
13091       ,p_accounting_line_type_code  => l_component_type_code
13092       ,p_accounting_line_appl_id    => l_component_appl_id
13093       ,p_amb_context_code           => l_amb_context_code
13094       ,p_entity_code                => l_entity_code
13095       ,p_event_class_code           => l_event_class_code);
13096    --
13097    -- set accounting class
13098    --
13099    xla_ae_lines_pkg.SetAcctClass(
13100            p_accounting_class_code  => 'PROVIDER_COST'
13101          , p_ae_header_id           => l_ae_header_id
13102          );
13103 
13104    --
13105    -- set rounding class
13106    --
13107    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13108                       'PROVIDER_COST';
13109 
13110    --
13111    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13112    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13113    --
13114    -- bulk performance
13115    --
13116    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13117 
13118    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13119       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13120 
13121    -- 4955764
13122    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13126    
13123       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13124 
13125    -- 4458381 Public Sector Enh
13127    --
13128    -- set accounting attributes for the line type
13129    --
13130    l_entered_amt_idx := 22;
13131    l_accted_amt_idx  := 27;
13132    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13133    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
13134    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
13135    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
13136    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
13137    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
13138    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
13139    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
13140    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
13141    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
13142    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
13143    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
13144    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
13145    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
13146    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
13147    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
13148    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
13149    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
13150    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
13151    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
13152    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
13153    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
13154    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
13155    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
13156    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
13157    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
13158    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
13159    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
13160    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
13161    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
13162    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
13163    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
13164    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
13165    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
13166    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
13167    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
13168    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
13169    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
13170    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
13171    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
13172    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
13173    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
13174    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
13175    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
13176    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
13177    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
13178    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
13179    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
13180    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
13181    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
13182    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
13183    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
13184    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
13185    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
13186    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
13187    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
13188    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
13189    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
13190    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
13191    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
13192    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
13193 
13194    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13195    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13196 
13197    ---------------------------------------------------------------------------------------------------------------
13198    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13199    ---------------------------------------------------------------------------------------------------------------
13200    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13201 
13202    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13203    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13204 
13205    IF xla_accounting_cache_pkg.GetValueChar
13206          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13207          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13208    AND l_bflow_method_code = 'PRIOR_ENTRY'
13209 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13210    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13211          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13212        )
13213    THEN
13214          xla_ae_lines_pkg.BflowUpgEntry
13215            (p_business_method_code    => l_bflow_method_code
13216            ,p_business_class_code     => l_bflow_class_code
13220 -- No business flow processing for business flow method of NONE.
13217            ,p_balance_type            => l_balance_type_code);
13218    ELSE
13219       NULL;
13221    END IF;
13222 
13223    --
13224    -- call analytical criteria
13225    --
13226    
13227    --
13228    -- call description
13229    --
13230    -- No description or it is inherited.
13231    --
13232    -- call ADRs
13233    -- Bug 4922099
13234    --
13235    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13236         (NVL(l_actual_upg_option, 'N') = 'O') OR
13237         (NVL(l_enc_upg_option, 'N') = 'O')
13238       )
13239    THEN
13240    NULL;
13241    --
13242    --
13243    
13244   l_ccid := AcctDerRule_8(
13245            p_application_id           => p_application_id
13246          , p_ae_header_id             => l_ae_header_id 
13247 , p_source_4 => p_source_4
13248 , p_source_9 => p_source_9
13249          , x_transaction_coa_id       => l_adr_transaction_coa_id
13250          , x_accounting_coa_id        => l_adr_accounting_coa_id
13251          , x_value_type_code          => l_adr_value_type_code
13252          , p_side                     => 'NA'
13253    );
13254 
13255    xla_ae_lines_pkg.set_ccid(
13256     p_code_combination_id          => l_ccid
13257   , p_value_type_code              => l_adr_value_type_code
13258   , p_transaction_coa_id           => l_adr_transaction_coa_id
13259   , p_accounting_coa_id            => l_adr_accounting_coa_id
13260   , p_adr_code                     => 'PA_PROV_COST_REV_ADJ_ACCT_RULE'
13261   , p_adr_type_code                => 'S'
13262   , p_component_type               => l_component_type
13263   , p_component_code               => l_component_code
13264   , p_component_type_code          => l_component_type_code
13265   , p_component_appl_id            => l_component_appl_id
13266   , p_amb_context_code             => l_amb_context_code
13267   , p_side                         => 'NA'
13268   );
13269 
13270 
13271    --
13272    --
13273    END IF;
13274    --
13275    -- Bug 4922099
13276    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13277           (NVL(l_enc_upg_option, 'N') = 'O')
13278         ) AND
13279         (l_bflow_method_code = 'PRIOR_ENTRY')
13280       )
13281    THEN
13282       IF
13283       --
13284       1 = 2
13285       --
13286       THEN
13287       xla_accounting_err_pkg.build_message
13288                                     (p_appli_s_name            => 'XLA'
13289                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13290                                     ,p_token_1                 => 'LINE_NUMBER'
13291                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13292                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13293                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13294                                                                              l_component_type
13295                                                                             ,l_component_code
13296                                                                             ,l_component_type_code
13297                                                                             ,l_component_appl_id
13298                                                                             ,l_amb_context_code
13299                                                                             ,l_entity_code
13300                                                                             ,l_event_class_code
13301                                                                            )
13302                                     ,p_token_3                 => 'OWNER'
13303                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13304                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13305                                                                           ,p_lookup_code    => l_component_type_code
13306                                                                          )
13307                                     ,p_token_4                 => 'PRODUCT_NAME'
13308                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13309                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13310                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13311                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13312                                     ,p_ae_header_id            =>  NULL
13313                                        );
13314 
13315         IF (C_LEVEL_ERROR>= g_log_level) THEN
13316                  trace
13317                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13318                       ,p_level    => C_LEVEL_ERROR
13319                       ,p_module   => l_log_module);
13320         END IF;
13321       END IF;
13322    END IF;
13323    --
13324    --
13325    ------------------------------------------------------------------------------------------------
13326    -- 4219869 Business Flow
13327    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13328    -- Prior Entry.  Currently, the following code is always generated.
13329    ------------------------------------------------------------------------------------------------
13330    XLA_AE_LINES_PKG.ValidateCurrentLine;
13331 
13332    ------------------------------------------------------------------------------------
13333    -- 4219869 Business Flow
13334    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13338    ----------------------------------------------------------------------------------
13335    ------------------------------------------------------------------------------------
13336    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13337 
13339    -- 4219869 Business Flow
13340    -- Update journal entry status -- Need to generate this within IF <condition>
13341    ----------------------------------------------------------------------------------
13342    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13343          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13344          ,p_balance_type_code => l_balance_type_code
13345          );
13346 
13347    -------------------------------------------------------------------------------------------
13348    -- 4262811 - Generate the Accrual Reversal lines
13349    -------------------------------------------------------------------------------------------
13350    BEGIN
13351       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13352                               (g_array_event(p_event_id).array_value_num('header_index'));
13353       IF l_acc_rev_flag IS NULL THEN
13354          l_acc_rev_flag := 'N';
13355       END IF;
13356    EXCEPTION
13357       WHEN OTHERS THEN
13358          l_acc_rev_flag := 'N';
13359    END;
13360    --
13361    IF (l_acc_rev_flag = 'Y') THEN
13362 
13363        -- 4645092  ------------------------------------------------------------------------------
13364        -- To allow MPA report to determine if it should generate report process
13365        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13366        ------------------------------------------------------------------------------------------
13367 
13368        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13369        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13370 
13371        --
13372        -- Update the line information that should be overwritten
13373        --
13374        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13375                                          p_header_num   => 1);
13376        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13377 
13378        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13379 
13380        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13381           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13382        END IF;
13383 
13384       --
13385       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13386       --
13387       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13388           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13389       ELSE
13390           ---------------------------------------------------------------------------------------------------
13391           -- 4262811a Switch Sign
13392           ---------------------------------------------------------------------------------------------------
13393           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13394           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13395                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13396           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13397                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13398           -- 5132302
13399           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13400                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13401 
13402       END IF;
13403 
13404       -- 4955764
13405       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13406       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13407 
13408 
13409       XLA_AE_LINES_PKG.ValidateCurrentLine;
13410       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13411 
13412       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13413                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13414                ,p_balance_type_code => l_balance_type_code);
13415 
13416    END IF;
13417 
13418    -----------------------------------------------------------------------------------------
13419    -- 4262811 Multiperiod Accounting
13420    -----------------------------------------------------------------------------------------
13421      -- No MPA option is assigned.
13422 
13423 
13424 END IF;
13425 END IF;
13426 --
13427 
13428 --
13429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13430    trace
13431       (p_msg      => 'END of AcctLineType_38'
13432       ,p_level    => C_LEVEL_PROCEDURE
13433       ,p_module   => l_log_module);
13434 END IF;
13435 --
13436 EXCEPTION
13437   WHEN xla_exceptions_pkg.application_exception THEN
13438       RAISE;
13439   WHEN OTHERS THEN
13440        xla_exceptions_pkg.raise_message
13441            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_38');
13442 END AcctLineType_38;
13443 --
13444 
13445 ---------------------------------------
13446 --
13447 -- PRIVATE FUNCTION
13448 --         AcctLineType_39
13449 --
13450 ---------------------------------------
13451 PROCEDURE AcctLineType_39 (
13452   p_application_id        IN NUMBER
13453  ,p_event_id              IN NUMBER
13454  ,p_calculate_acctd_flag  IN VARCHAR2
13455  ,p_calculate_g_l_flag    IN VARCHAR2
13456  ,p_actual_flag           IN OUT VARCHAR2
13460 --Allow Account Override Flag
13457  ,p_balance_type_code     OUT VARCHAR2
13458  ,p_gain_or_loss_ref      OUT VARCHAR2
13459  
13461  , p_source_4            IN VARCHAR2
13462 --Provider Cost/ Revenue CCID
13463  , p_source_8            IN NUMBER
13464 --Adjustment Provider Cost/ Revenue CCID
13465  , p_source_9            IN NUMBER
13466 --Receiver Cost/ Revenue CCID
13467  , p_source_15            IN NUMBER
13468 --Reversing Line Flag
13469  , p_source_22            IN VARCHAR2
13470 --Actual Upgrade Credit Accounting Class
13471  , p_source_23            IN VARCHAR2
13472 --Entered Currency Code
13473  , p_source_25            IN VARCHAR2
13474 --Exchange Rate Date
13475  , p_source_27            IN DATE
13476 --Exchange Rate
13477  , p_source_28            IN NUMBER
13478 --Exchange Rate Type
13479  , p_source_29            IN VARCHAR2
13480 --Actual Upgrade Debit Accounting Class
13481  , p_source_30            IN VARCHAR2
13482 --Use Actuals Upgrade Attributes Flag
13483  , p_source_31            IN VARCHAR2
13484 --Expenditure Item ID
13485  , p_source_32            IN NUMBER
13486 --Cost Distribution Line Number
13487  , p_source_33            IN NUMBER
13488 --Line Type
13489  , p_source_34            IN VARCHAR2
13490  , p_source_34_meaning    IN VARCHAR2
13491 --Reversed Line Number
13492  , p_source_35            IN NUMBER
13493 --Entered Amount
13494  , p_source_41            IN NUMBER
13495 --Accounted Amount
13496  , p_source_43            IN NUMBER
13497 --Transfer Amount Type
13498  , p_source_67            IN VARCHAR2
13499  , p_source_67_meaning    IN VARCHAR2
13500 )
13501 IS
13502 
13503 l_component_type              VARCHAR2(80);
13504 l_component_code              VARCHAR2(30);
13505 l_component_type_code         VARCHAR2(1);
13506 l_component_appl_id           INTEGER;
13507 l_amb_context_code            VARCHAR2(30);
13508 l_entity_code                 VARCHAR2(30);
13509 l_event_class_code            VARCHAR2(30);
13510 l_ae_header_id                NUMBER;
13511 l_event_type_code             VARCHAR2(30);
13512 l_line_definition_code        VARCHAR2(30);
13513 l_line_definition_owner_code  VARCHAR2(1);
13514 --
13515 -- adr variables
13516 l_segment                     VARCHAR2(30);
13517 l_ccid                        NUMBER;
13518 l_adr_transaction_coa_id      NUMBER;
13519 l_adr_accounting_coa_id       NUMBER;
13520 l_adr_flexfield_segment_code  VARCHAR2(30);
13521 l_adr_flex_value_set_id       NUMBER;
13522 l_adr_value_type_code         VARCHAR2(30);
13523 l_adr_value_combination_id    NUMBER;
13524 l_adr_value_segment_code      VARCHAR2(30);
13525 
13526 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13527 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13528 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13529 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13530 
13531 -- 4262811 Variables ------------------------------------------------------------------------------------------
13532 l_entered_amt_idx             NUMBER;
13533 l_accted_amt_idx              NUMBER;
13534 l_acc_rev_flag                VARCHAR2(1);
13535 l_accrual_line_num            NUMBER;
13536 l_tmp_amt                     NUMBER;
13537 l_acc_rev_natural_side_code   VARCHAR2(1);
13538 
13539 l_num_entries                 NUMBER;
13540 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13541 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13542 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13543 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13544 l_recog_line_1                NUMBER;
13545 l_recog_line_2                NUMBER;
13546 
13547 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13548 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13549 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13550 
13551 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13552 
13553 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13554 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13555 
13556 ---------------------------------------------------------------------------------------------------------------
13557 
13558 
13559 --
13560 -- bulk performance
13561 --
13562 l_balance_type_code           VARCHAR2(1);
13563 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13564 l_log_module                  VARCHAR2(240);
13565 
13566 --
13567 -- Upgrade strategy
13568 --
13569 l_actual_upg_option           VARCHAR2(1);
13570 l_enc_upg_option           VARCHAR2(1);
13571 
13572 --
13573 BEGIN
13574 --
13575 IF g_log_enabled THEN
13576       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
13577 END IF;
13578 --
13579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13580 
13581       trace
13582          (p_msg      => 'BEGIN of AcctLineType_39'
13583          ,p_level    => C_LEVEL_PROCEDURE
13584          ,p_module   => l_log_module);
13585 
13586 END IF;
13587 --
13588 l_component_type             := 'AMB_JLT';
13589 l_component_code             := 'PA_PROVIDER_REVENUE';
13590 l_component_type_code        := 'S';
13591 l_component_appl_id          :=  275;
13592 l_amb_context_code           := 'DEFAULT';
13593 l_entity_code                := 'EXPENDITURES';
13594 l_event_class_code           := 'BORROWED_AND_LENT';
13595 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
13596 l_line_definition_owner_code := 'S';
13597 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
13598 --
13599 l_balance_type_code          := 'A';
13603 l_adr_accounting_coa_id       := NULL;
13600 l_segment                     := NULL;
13601 l_ccid                        := NULL;
13602 l_adr_transaction_coa_id      := NULL;
13604 l_adr_flexfield_segment_code  := NULL;
13605 l_adr_flex_value_set_id       := NULL;
13606 l_adr_value_type_code         := NULL;
13607 l_adr_value_combination_id    := NULL;
13608 l_adr_value_segment_code      := NULL;
13609 
13610 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13611 l_bflow_class_code           := '';    -- 4219869 Business Flow
13612 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13613 l_budgetary_control_flag     := 'N';
13614 
13615 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13616 l_bflow_applied_to_amt       := NULL; -- 5132302
13617 l_entered_amt_idx            := NULL;          -- 4262811
13618 l_accted_amt_idx             := NULL;          -- 4262811
13619 l_acc_rev_flag               := NULL;          -- 4262811
13620 l_accrual_line_num           := NULL;          -- 4262811
13621 l_tmp_amt                    := NULL;          -- 4262811
13622 --
13623  
13624 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13625     l_balance_type_code <> 'B' THEN
13626 IF NVL(p_source_67,'
13627 ') =  'REVENUE_TRANSFER'
13628  THEN 
13629 
13630    --
13631    XLA_AE_LINES_PKG.SetNewLine;
13632 
13633    p_balance_type_code          := l_balance_type_code;
13634    -- set the flag so later we will know whether the gain loss line needs to be created
13635    
13636    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13637      p_actual_flag :='A';
13638    END IF;
13639 
13640    --
13641    -- bulk performance
13642    --
13643    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13644                                       p_header_num   => 0); -- 4262811
13645    --
13646    -- set accounting line options
13647    --
13648    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13649            p_natural_side_code          => 'C'
13650          , p_gain_or_loss_flag          => 'N'
13651          , p_gl_transfer_mode_code      => 'S'
13652          , p_acct_entry_type_code       => 'A'
13653          , p_switch_side_flag           => 'Y'
13654          , p_merge_duplicate_code       => 'N'
13655          );
13656    --
13657    l_acc_rev_natural_side_code := 'D';  -- 4262811
13658    -- 
13659    --
13660    -- set accounting line type info
13661    --
13662    xla_ae_lines_pkg.SetAcctLineType
13663       (p_component_type             => l_component_type
13664       ,p_event_type_code            => l_event_type_code
13665       ,p_line_definition_owner_code => l_line_definition_owner_code
13666       ,p_line_definition_code       => l_line_definition_code
13667       ,p_accounting_line_code       => l_component_code
13668       ,p_accounting_line_type_code  => l_component_type_code
13669       ,p_accounting_line_appl_id    => l_component_appl_id
13670       ,p_amb_context_code           => l_amb_context_code
13671       ,p_entity_code                => l_entity_code
13672       ,p_event_class_code           => l_event_class_code);
13673    --
13674    -- set accounting class
13675    --
13676    xla_ae_lines_pkg.SetAcctClass(
13677            p_accounting_class_code  => 'PROVIDER_REVENUE'
13678          , p_ae_header_id           => l_ae_header_id
13679          );
13680 
13681    --
13682    -- set rounding class
13683    --
13684    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13685                       'PROVIDER_REVENUE';
13686 
13687    --
13688    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13689    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13690    --
13691    -- bulk performance
13692    --
13693    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13694 
13695    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13696       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13697 
13698    -- 4955764
13699    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13700       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13701 
13702    -- 4458381 Public Sector Enh
13703    
13704    --
13705    -- set accounting attributes for the line type
13706    --
13707    l_entered_amt_idx := 22;
13708    l_accted_amt_idx  := 27;
13709    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13710    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
13711    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
13712    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
13713    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
13714    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
13715    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
13716    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
13717    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
13718    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
13719    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
13720    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
13721    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
13722    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
13723    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
13724    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
13725    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
13726    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
13730    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
13727    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
13728    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
13729    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
13731    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
13732    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
13733    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
13734    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
13735    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
13736    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
13737    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
13738    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
13739    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
13740    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
13741    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
13742    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
13743    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
13744    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
13745    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
13746    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
13747    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
13748    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
13749    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
13750    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
13751    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
13752    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
13753    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
13754    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
13755    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
13756    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
13757    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
13758    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
13759    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
13760    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
13761    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
13762    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
13763    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
13764    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
13765    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
13766    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
13767    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
13768    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
13769    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
13770 
13771    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13772    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13773 
13774    ---------------------------------------------------------------------------------------------------------------
13775    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13776    ---------------------------------------------------------------------------------------------------------------
13777    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13778 
13779    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13780    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13781 
13782    IF xla_accounting_cache_pkg.GetValueChar
13783          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13784          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13785    AND l_bflow_method_code = 'PRIOR_ENTRY'
13786 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13787    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13788          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13789        )
13790    THEN
13791          xla_ae_lines_pkg.BflowUpgEntry
13792            (p_business_method_code    => l_bflow_method_code
13793            ,p_business_class_code     => l_bflow_class_code
13794            ,p_balance_type            => l_balance_type_code);
13795    ELSE
13796       NULL;
13797 -- No business flow processing for business flow method of NONE.
13798    END IF;
13799 
13800    --
13801    -- call analytical criteria
13802    --
13803    
13804    --
13805    -- call description
13806    --
13807    -- No description or it is inherited.
13808    --
13809    -- call ADRs
13810    -- Bug 4922099
13811    --
13812    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13813         (NVL(l_actual_upg_option, 'N') = 'O') OR
13814         (NVL(l_enc_upg_option, 'N') = 'O')
13815       )
13816    THEN
13817    NULL;
13818    --
13819    --
13820    
13821   l_ccid := AcctDerRule_7(
13822            p_application_id           => p_application_id
13823          , p_ae_header_id             => l_ae_header_id 
13824 , p_source_4 => p_source_4
13825 , p_source_8 => p_source_8
13826 , p_source_9 => p_source_9
13827          , x_transaction_coa_id       => l_adr_transaction_coa_id
13828          , x_accounting_coa_id        => l_adr_accounting_coa_id
13829          , x_value_type_code          => l_adr_value_type_code
13830          , p_side                     => 'NA'
13831    );
13832 
13833    xla_ae_lines_pkg.set_ccid(
13834     p_code_combination_id          => l_ccid
13835   , p_value_type_code              => l_adr_value_type_code
13836   , p_transaction_coa_id           => l_adr_transaction_coa_id
13840   , p_component_type               => l_component_type
13837   , p_accounting_coa_id            => l_adr_accounting_coa_id
13838   , p_adr_code                     => 'PA_PROV_COST_REV_ACCT_RULE'
13839   , p_adr_type_code                => 'S'
13841   , p_component_code               => l_component_code
13842   , p_component_type_code          => l_component_type_code
13843   , p_component_appl_id            => l_component_appl_id
13844   , p_amb_context_code             => l_amb_context_code
13845   , p_side                         => 'NA'
13846   );
13847 
13848 
13849    --
13850    --
13851    END IF;
13852    --
13853    -- Bug 4922099
13854    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13855           (NVL(l_enc_upg_option, 'N') = 'O')
13856         ) AND
13857         (l_bflow_method_code = 'PRIOR_ENTRY')
13858       )
13859    THEN
13860       IF
13861       --
13862       1 = 2
13863       --
13864       THEN
13865       xla_accounting_err_pkg.build_message
13866                                     (p_appli_s_name            => 'XLA'
13867                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13868                                     ,p_token_1                 => 'LINE_NUMBER'
13869                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13870                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13871                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13872                                                                              l_component_type
13873                                                                             ,l_component_code
13874                                                                             ,l_component_type_code
13875                                                                             ,l_component_appl_id
13876                                                                             ,l_amb_context_code
13877                                                                             ,l_entity_code
13878                                                                             ,l_event_class_code
13879                                                                            )
13880                                     ,p_token_3                 => 'OWNER'
13881                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13882                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13883                                                                           ,p_lookup_code    => l_component_type_code
13884                                                                          )
13885                                     ,p_token_4                 => 'PRODUCT_NAME'
13886                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13887                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13888                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13889                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13890                                     ,p_ae_header_id            =>  NULL
13891                                        );
13892 
13893         IF (C_LEVEL_ERROR>= g_log_level) THEN
13894                  trace
13895                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13896                       ,p_level    => C_LEVEL_ERROR
13897                       ,p_module   => l_log_module);
13898         END IF;
13899       END IF;
13900    END IF;
13901    --
13902    --
13903    ------------------------------------------------------------------------------------------------
13904    -- 4219869 Business Flow
13905    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13906    -- Prior Entry.  Currently, the following code is always generated.
13907    ------------------------------------------------------------------------------------------------
13908    XLA_AE_LINES_PKG.ValidateCurrentLine;
13909 
13910    ------------------------------------------------------------------------------------
13911    -- 4219869 Business Flow
13912    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13913    ------------------------------------------------------------------------------------
13914    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13915 
13916    ----------------------------------------------------------------------------------
13917    -- 4219869 Business Flow
13918    -- Update journal entry status -- Need to generate this within IF <condition>
13919    ----------------------------------------------------------------------------------
13920    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13921          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13922          ,p_balance_type_code => l_balance_type_code
13923          );
13924 
13925    -------------------------------------------------------------------------------------------
13926    -- 4262811 - Generate the Accrual Reversal lines
13927    -------------------------------------------------------------------------------------------
13928    BEGIN
13929       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13930                               (g_array_event(p_event_id).array_value_num('header_index'));
13931       IF l_acc_rev_flag IS NULL THEN
13932          l_acc_rev_flag := 'N';
13933       END IF;
13934    EXCEPTION
13935       WHEN OTHERS THEN
13936          l_acc_rev_flag := 'N';
13937    END;
13938    --
13939    IF (l_acc_rev_flag = 'Y') THEN
13940 
13941        -- 4645092  ------------------------------------------------------------------------------
13945 
13942        -- To allow MPA report to determine if it should generate report process
13943        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13944        ------------------------------------------------------------------------------------------
13946        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13947        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13948 
13949        --
13950        -- Update the line information that should be overwritten
13951        --
13952        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13953                                          p_header_num   => 1);
13954        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13955 
13956        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13957 
13958        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13959           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13960        END IF;
13961 
13962       --
13963       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13964       --
13965       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13966           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13967       ELSE
13968           ---------------------------------------------------------------------------------------------------
13969           -- 4262811a Switch Sign
13970           ---------------------------------------------------------------------------------------------------
13971           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13972           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13973                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13974           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13975                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13976           -- 5132302
13977           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13978                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13979 
13980       END IF;
13981 
13982       -- 4955764
13983       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13984       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13985 
13986 
13987       XLA_AE_LINES_PKG.ValidateCurrentLine;
13988       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13989 
13990       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13991                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13992                ,p_balance_type_code => l_balance_type_code);
13993 
13994    END IF;
13995 
13996    -----------------------------------------------------------------------------------------
13997    -- 4262811 Multiperiod Accounting
13998    -----------------------------------------------------------------------------------------
13999      -- No MPA option is assigned.
14000 
14001 
14002 END IF;
14003 END IF;
14004 --
14005 
14006 --
14007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14008    trace
14009       (p_msg      => 'END of AcctLineType_39'
14010       ,p_level    => C_LEVEL_PROCEDURE
14011       ,p_module   => l_log_module);
14012 END IF;
14013 --
14014 EXCEPTION
14015   WHEN xla_exceptions_pkg.application_exception THEN
14016       RAISE;
14017   WHEN OTHERS THEN
14018        xla_exceptions_pkg.raise_message
14019            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_39');
14020 END AcctLineType_39;
14021 --
14022 
14023 ---------------------------------------
14024 --
14025 -- PRIVATE FUNCTION
14026 --         AcctLineType_40
14027 --
14028 ---------------------------------------
14029 PROCEDURE AcctLineType_40 (
14030   p_application_id        IN NUMBER
14031  ,p_event_id              IN NUMBER
14032  ,p_calculate_acctd_flag  IN VARCHAR2
14033  ,p_calculate_g_l_flag    IN VARCHAR2
14034  ,p_actual_flag           IN OUT VARCHAR2
14035  ,p_balance_type_code     OUT VARCHAR2
14036  ,p_gain_or_loss_ref      OUT VARCHAR2
14037  
14038 --Allow Account Override Flag
14039  , p_source_4            IN VARCHAR2
14040 --Provider Cost/ Revenue CCID
14041  , p_source_8            IN NUMBER
14042 --Adjustment Provider Cost/ Revenue CCID
14043  , p_source_9            IN NUMBER
14044 --Receiver Cost/ Revenue CCID
14045  , p_source_15            IN NUMBER
14046 --Reversing Line Flag
14047  , p_source_22            IN VARCHAR2
14048 --Actual Upgrade Credit Accounting Class
14049  , p_source_23            IN VARCHAR2
14050 --Entered Currency Code
14051  , p_source_25            IN VARCHAR2
14052 --Exchange Rate Date
14053  , p_source_27            IN DATE
14054 --Exchange Rate
14055  , p_source_28            IN NUMBER
14056 --Exchange Rate Type
14057  , p_source_29            IN VARCHAR2
14058 --Actual Upgrade Debit Accounting Class
14059  , p_source_30            IN VARCHAR2
14060 --Use Actuals Upgrade Attributes Flag
14061  , p_source_31            IN VARCHAR2
14062 --Expenditure Item ID
14063  , p_source_32            IN NUMBER
14064 --Cost Distribution Line Number
14065  , p_source_33            IN NUMBER
14066 --Line Type
14067  , p_source_34            IN VARCHAR2
14068  , p_source_34_meaning    IN VARCHAR2
14069 --Reversed Line Number
14070  , p_source_35            IN NUMBER
14071 --Entered Amount
14072  , p_source_41            IN NUMBER
14073 --Accounted Amount
14077  , p_source_67_meaning    IN VARCHAR2
14074  , p_source_43            IN NUMBER
14075 --Transfer Amount Type
14076  , p_source_67            IN VARCHAR2
14078 )
14079 IS
14080 
14081 l_component_type              VARCHAR2(80);
14082 l_component_code              VARCHAR2(30);
14083 l_component_type_code         VARCHAR2(1);
14084 l_component_appl_id           INTEGER;
14085 l_amb_context_code            VARCHAR2(30);
14086 l_entity_code                 VARCHAR2(30);
14087 l_event_class_code            VARCHAR2(30);
14088 l_ae_header_id                NUMBER;
14089 l_event_type_code             VARCHAR2(30);
14090 l_line_definition_code        VARCHAR2(30);
14091 l_line_definition_owner_code  VARCHAR2(1);
14092 --
14093 -- adr variables
14094 l_segment                     VARCHAR2(30);
14095 l_ccid                        NUMBER;
14096 l_adr_transaction_coa_id      NUMBER;
14097 l_adr_accounting_coa_id       NUMBER;
14098 l_adr_flexfield_segment_code  VARCHAR2(30);
14099 l_adr_flex_value_set_id       NUMBER;
14100 l_adr_value_type_code         VARCHAR2(30);
14101 l_adr_value_combination_id    NUMBER;
14102 l_adr_value_segment_code      VARCHAR2(30);
14103 
14104 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14105 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14106 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14107 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14108 
14109 -- 4262811 Variables ------------------------------------------------------------------------------------------
14110 l_entered_amt_idx             NUMBER;
14111 l_accted_amt_idx              NUMBER;
14112 l_acc_rev_flag                VARCHAR2(1);
14113 l_accrual_line_num            NUMBER;
14114 l_tmp_amt                     NUMBER;
14115 l_acc_rev_natural_side_code   VARCHAR2(1);
14116 
14117 l_num_entries                 NUMBER;
14118 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14119 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14120 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14121 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14122 l_recog_line_1                NUMBER;
14123 l_recog_line_2                NUMBER;
14124 
14125 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14126 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14127 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14128 
14129 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14130 
14131 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14132 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14133 
14134 ---------------------------------------------------------------------------------------------------------------
14135 
14136 
14137 --
14138 -- bulk performance
14139 --
14140 l_balance_type_code           VARCHAR2(1);
14141 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14142 l_log_module                  VARCHAR2(240);
14143 
14144 --
14145 -- Upgrade strategy
14146 --
14147 l_actual_upg_option           VARCHAR2(1);
14148 l_enc_upg_option           VARCHAR2(1);
14149 
14150 --
14151 BEGIN
14152 --
14153 IF g_log_enabled THEN
14154       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
14155 END IF;
14156 --
14157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14158 
14159       trace
14160          (p_msg      => 'BEGIN of AcctLineType_40'
14161          ,p_level    => C_LEVEL_PROCEDURE
14162          ,p_module   => l_log_module);
14163 
14164 END IF;
14165 --
14166 l_component_type             := 'AMB_JLT';
14167 l_component_code             := 'PA_PROVIDER_REVENUE_ADJ';
14168 l_component_type_code        := 'S';
14169 l_component_appl_id          :=  275;
14170 l_amb_context_code           := 'DEFAULT';
14171 l_entity_code                := 'EXPENDITURES';
14172 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
14173 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
14174 l_line_definition_owner_code := 'S';
14175 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
14176 --
14177 l_balance_type_code          := 'A';
14178 l_segment                     := NULL;
14179 l_ccid                        := NULL;
14180 l_adr_transaction_coa_id      := NULL;
14181 l_adr_accounting_coa_id       := NULL;
14182 l_adr_flexfield_segment_code  := NULL;
14183 l_adr_flex_value_set_id       := NULL;
14184 l_adr_value_type_code         := NULL;
14185 l_adr_value_combination_id    := NULL;
14186 l_adr_value_segment_code      := NULL;
14187 
14188 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14189 l_bflow_class_code           := '';    -- 4219869 Business Flow
14190 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14191 l_budgetary_control_flag     := 'N';
14192 
14193 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14194 l_bflow_applied_to_amt       := NULL; -- 5132302
14195 l_entered_amt_idx            := NULL;          -- 4262811
14196 l_accted_amt_idx             := NULL;          -- 4262811
14197 l_acc_rev_flag               := NULL;          -- 4262811
14198 l_accrual_line_num           := NULL;          -- 4262811
14199 l_tmp_amt                    := NULL;          -- 4262811
14200 --
14201  
14202 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14203     l_balance_type_code <> 'B' THEN
14204 IF NVL(p_source_67,'
14205 ') =  'REVENUE_TRANSFER'
14206  THEN 
14207 
14208    --
14209    XLA_AE_LINES_PKG.SetNewLine;
14210 
14211    p_balance_type_code          := l_balance_type_code;
14215      p_actual_flag :='A';
14212    -- set the flag so later we will know whether the gain loss line needs to be created
14213    
14214    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14216    END IF;
14217 
14218    --
14219    -- bulk performance
14220    --
14221    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14222                                       p_header_num   => 0); -- 4262811
14223    --
14224    -- set accounting line options
14225    --
14226    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14227            p_natural_side_code          => 'C'
14228          , p_gain_or_loss_flag          => 'N'
14229          , p_gl_transfer_mode_code      => 'S'
14230          , p_acct_entry_type_code       => 'A'
14231          , p_switch_side_flag           => 'Y'
14232          , p_merge_duplicate_code       => 'N'
14233          );
14234    --
14235    l_acc_rev_natural_side_code := 'D';  -- 4262811
14236    -- 
14237    --
14238    -- set accounting line type info
14239    --
14240    xla_ae_lines_pkg.SetAcctLineType
14241       (p_component_type             => l_component_type
14242       ,p_event_type_code            => l_event_type_code
14243       ,p_line_definition_owner_code => l_line_definition_owner_code
14244       ,p_line_definition_code       => l_line_definition_code
14245       ,p_accounting_line_code       => l_component_code
14246       ,p_accounting_line_type_code  => l_component_type_code
14247       ,p_accounting_line_appl_id    => l_component_appl_id
14248       ,p_amb_context_code           => l_amb_context_code
14249       ,p_entity_code                => l_entity_code
14250       ,p_event_class_code           => l_event_class_code);
14251    --
14252    -- set accounting class
14253    --
14254    xla_ae_lines_pkg.SetAcctClass(
14255            p_accounting_class_code  => 'PROVIDER_REVENUE'
14256          , p_ae_header_id           => l_ae_header_id
14257          );
14258 
14259    --
14260    -- set rounding class
14261    --
14262    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14263                       'PROVIDER_REVENUE';
14264 
14265    --
14266    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14267    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14268    --
14269    -- bulk performance
14270    --
14271    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14272 
14273    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14274       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14275 
14276    -- 4955764
14277    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14278       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14279 
14280    -- 4458381 Public Sector Enh
14281    
14282    --
14283    -- set accounting attributes for the line type
14284    --
14285    l_entered_amt_idx := 22;
14286    l_accted_amt_idx  := 27;
14287    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14288    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
14289    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
14290    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
14291    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
14292    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
14293    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
14294    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
14295    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
14296    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
14297    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
14298    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
14299    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
14300    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
14301    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
14302    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
14303    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
14304    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
14305    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
14306    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
14307    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
14308    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
14309    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
14310    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
14311    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
14312    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
14313    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
14314    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
14315    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
14316    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
14317    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
14318    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
14319    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
14320    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
14321    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
14322    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
14323    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
14324    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
14325    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
14326    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
14330    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
14327    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
14328    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
14329    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
14331    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
14332    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
14333    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
14334    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
14335    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
14336    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
14337    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
14338    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
14339    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
14340    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
14341    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
14342    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
14343    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
14344    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
14345    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
14346    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
14347    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
14348 
14349    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14350    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14351 
14352    ---------------------------------------------------------------------------------------------------------------
14353    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14354    ---------------------------------------------------------------------------------------------------------------
14355    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14356 
14357    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14358    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14359 
14360    IF xla_accounting_cache_pkg.GetValueChar
14361          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14362          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14363    AND l_bflow_method_code = 'PRIOR_ENTRY'
14364 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14365    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14366          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14367        )
14368    THEN
14369          xla_ae_lines_pkg.BflowUpgEntry
14370            (p_business_method_code    => l_bflow_method_code
14371            ,p_business_class_code     => l_bflow_class_code
14372            ,p_balance_type            => l_balance_type_code);
14373    ELSE
14374       NULL;
14375 -- No business flow processing for business flow method of NONE.
14376    END IF;
14377 
14378    --
14379    -- call analytical criteria
14380    --
14381    
14382    --
14383    -- call description
14384    --
14385    -- No description or it is inherited.
14386    --
14387    -- call ADRs
14388    -- Bug 4922099
14389    --
14390    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14391         (NVL(l_actual_upg_option, 'N') = 'O') OR
14392         (NVL(l_enc_upg_option, 'N') = 'O')
14393       )
14394    THEN
14395    NULL;
14396    --
14397    --
14398    
14399   l_ccid := AcctDerRule_8(
14400            p_application_id           => p_application_id
14401          , p_ae_header_id             => l_ae_header_id 
14402 , p_source_4 => p_source_4
14403 , p_source_9 => p_source_9
14404          , x_transaction_coa_id       => l_adr_transaction_coa_id
14405          , x_accounting_coa_id        => l_adr_accounting_coa_id
14406          , x_value_type_code          => l_adr_value_type_code
14407          , p_side                     => 'NA'
14408    );
14409 
14410    xla_ae_lines_pkg.set_ccid(
14411     p_code_combination_id          => l_ccid
14412   , p_value_type_code              => l_adr_value_type_code
14413   , p_transaction_coa_id           => l_adr_transaction_coa_id
14414   , p_accounting_coa_id            => l_adr_accounting_coa_id
14415   , p_adr_code                     => 'PA_PROV_COST_REV_ADJ_ACCT_RULE'
14416   , p_adr_type_code                => 'S'
14417   , p_component_type               => l_component_type
14418   , p_component_code               => l_component_code
14419   , p_component_type_code          => l_component_type_code
14420   , p_component_appl_id            => l_component_appl_id
14421   , p_amb_context_code             => l_amb_context_code
14422   , p_side                         => 'NA'
14423   );
14424 
14425 
14426    --
14427    --
14428    END IF;
14429    --
14430    -- Bug 4922099
14431    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14432           (NVL(l_enc_upg_option, 'N') = 'O')
14433         ) AND
14434         (l_bflow_method_code = 'PRIOR_ENTRY')
14435       )
14436    THEN
14437       IF
14438       --
14439       1 = 2
14440       --
14441       THEN
14442       xla_accounting_err_pkg.build_message
14443                                     (p_appli_s_name            => 'XLA'
14444                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14445                                     ,p_token_1                 => 'LINE_NUMBER'
14446                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14447                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14451                                                                             ,l_component_type_code
14448                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14449                                                                              l_component_type
14450                                                                             ,l_component_code
14452                                                                             ,l_component_appl_id
14453                                                                             ,l_amb_context_code
14454                                                                             ,l_entity_code
14455                                                                             ,l_event_class_code
14456                                                                            )
14457                                     ,p_token_3                 => 'OWNER'
14458                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14459                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14460                                                                           ,p_lookup_code    => l_component_type_code
14461                                                                          )
14462                                     ,p_token_4                 => 'PRODUCT_NAME'
14463                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14464                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14465                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14466                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14467                                     ,p_ae_header_id            =>  NULL
14468                                        );
14469 
14470         IF (C_LEVEL_ERROR>= g_log_level) THEN
14471                  trace
14472                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14473                       ,p_level    => C_LEVEL_ERROR
14474                       ,p_module   => l_log_module);
14475         END IF;
14476       END IF;
14477    END IF;
14478    --
14479    --
14480    ------------------------------------------------------------------------------------------------
14481    -- 4219869 Business Flow
14482    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14483    -- Prior Entry.  Currently, the following code is always generated.
14484    ------------------------------------------------------------------------------------------------
14485    XLA_AE_LINES_PKG.ValidateCurrentLine;
14486 
14487    ------------------------------------------------------------------------------------
14488    -- 4219869 Business Flow
14489    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14490    ------------------------------------------------------------------------------------
14491    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14492 
14493    ----------------------------------------------------------------------------------
14494    -- 4219869 Business Flow
14495    -- Update journal entry status -- Need to generate this within IF <condition>
14496    ----------------------------------------------------------------------------------
14497    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14498          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14499          ,p_balance_type_code => l_balance_type_code
14500          );
14501 
14502    -------------------------------------------------------------------------------------------
14503    -- 4262811 - Generate the Accrual Reversal lines
14504    -------------------------------------------------------------------------------------------
14505    BEGIN
14506       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14507                               (g_array_event(p_event_id).array_value_num('header_index'));
14508       IF l_acc_rev_flag IS NULL THEN
14509          l_acc_rev_flag := 'N';
14510       END IF;
14511    EXCEPTION
14512       WHEN OTHERS THEN
14513          l_acc_rev_flag := 'N';
14514    END;
14515    --
14516    IF (l_acc_rev_flag = 'Y') THEN
14517 
14518        -- 4645092  ------------------------------------------------------------------------------
14519        -- To allow MPA report to determine if it should generate report process
14520        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14521        ------------------------------------------------------------------------------------------
14522 
14523        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14524        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14525 
14526        --
14527        -- Update the line information that should be overwritten
14528        --
14529        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14530                                          p_header_num   => 1);
14531        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14532 
14533        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14534 
14535        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14536           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14537        END IF;
14538 
14539       --
14540       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14541       --
14542       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14543           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14544       ELSE
14545           ---------------------------------------------------------------------------------------------------
14549           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14546           -- 4262811a Switch Sign
14547           ---------------------------------------------------------------------------------------------------
14548           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14550                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14551           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14552                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14553           -- 5132302
14554           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14555                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14556 
14557       END IF;
14558 
14559       -- 4955764
14560       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14561       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14562 
14563 
14564       XLA_AE_LINES_PKG.ValidateCurrentLine;
14565       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14566 
14567       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14568                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14569                ,p_balance_type_code => l_balance_type_code);
14570 
14571    END IF;
14572 
14573    -----------------------------------------------------------------------------------------
14574    -- 4262811 Multiperiod Accounting
14575    -----------------------------------------------------------------------------------------
14576      -- No MPA option is assigned.
14577 
14578 
14579 END IF;
14580 END IF;
14581 --
14582 
14583 --
14584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14585    trace
14586       (p_msg      => 'END of AcctLineType_40'
14587       ,p_level    => C_LEVEL_PROCEDURE
14588       ,p_module   => l_log_module);
14589 END IF;
14590 --
14591 EXCEPTION
14592   WHEN xla_exceptions_pkg.application_exception THEN
14593       RAISE;
14594   WHEN OTHERS THEN
14595        xla_exceptions_pkg.raise_message
14596            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_40');
14597 END AcctLineType_40;
14598 --
14599 
14600 ---------------------------------------
14601 --
14602 -- PRIVATE FUNCTION
14603 --         AcctLineType_41
14604 --
14605 ---------------------------------------
14606 PROCEDURE AcctLineType_41 (
14607   p_application_id        IN NUMBER
14608  ,p_event_id              IN NUMBER
14609  ,p_calculate_acctd_flag  IN VARCHAR2
14610  ,p_calculate_g_l_flag    IN VARCHAR2
14611  ,p_actual_flag           IN OUT VARCHAR2
14612  ,p_balance_type_code     OUT VARCHAR2
14613  ,p_gain_or_loss_ref      OUT VARCHAR2
14614  
14615 --Cost CCID
14616  , p_source_3            IN NUMBER
14617 --Allow Account Override Flag
14618  , p_source_4            IN VARCHAR2
14619 --Adjustment Cost CCID
14620  , p_source_5            IN NUMBER
14621 --Cost Clearing CCID
14622  , p_source_6            IN NUMBER
14623 --Reversing Line Flag
14624  , p_source_22            IN VARCHAR2
14625 --Actual Upgrade Credit Accounting Class
14626  , p_source_23            IN VARCHAR2
14627 --Entered Raw Cost
14628  , p_source_24            IN NUMBER
14629 --Entered Currency Code
14630  , p_source_25            IN VARCHAR2
14631 --Accounted Raw Cost
14632  , p_source_26            IN NUMBER
14633 --Exchange Rate Date
14634  , p_source_27            IN DATE
14635 --Exchange Rate
14636  , p_source_28            IN NUMBER
14637 --Exchange Rate Type
14638  , p_source_29            IN VARCHAR2
14639 --Actual Upgrade Debit Accounting Class
14640  , p_source_30            IN VARCHAR2
14641 --Use Actuals Upgrade Attributes Flag
14642  , p_source_31            IN VARCHAR2
14643 --Expenditure Item ID
14644  , p_source_32            IN NUMBER
14645 --Cost Distribution Line Number
14646  , p_source_33            IN NUMBER
14647 --Line Type
14648  , p_source_34            IN VARCHAR2
14649  , p_source_34_meaning    IN VARCHAR2
14650 --Reversed Line Number
14651  , p_source_35            IN NUMBER
14652 )
14653 IS
14654 
14655 l_component_type              VARCHAR2(80);
14656 l_component_code              VARCHAR2(30);
14657 l_component_type_code         VARCHAR2(1);
14658 l_component_appl_id           INTEGER;
14659 l_amb_context_code            VARCHAR2(30);
14660 l_entity_code                 VARCHAR2(30);
14661 l_event_class_code            VARCHAR2(30);
14662 l_ae_header_id                NUMBER;
14663 l_event_type_code             VARCHAR2(30);
14664 l_line_definition_code        VARCHAR2(30);
14665 l_line_definition_owner_code  VARCHAR2(1);
14666 --
14667 -- adr variables
14668 l_segment                     VARCHAR2(30);
14669 l_ccid                        NUMBER;
14670 l_adr_transaction_coa_id      NUMBER;
14671 l_adr_accounting_coa_id       NUMBER;
14672 l_adr_flexfield_segment_code  VARCHAR2(30);
14673 l_adr_flex_value_set_id       NUMBER;
14674 l_adr_value_type_code         VARCHAR2(30);
14675 l_adr_value_combination_id    NUMBER;
14676 l_adr_value_segment_code      VARCHAR2(30);
14677 
14678 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14679 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14680 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14681 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14682 
14683 -- 4262811 Variables ------------------------------------------------------------------------------------------
14684 l_entered_amt_idx             NUMBER;
14688 l_tmp_amt                     NUMBER;
14685 l_accted_amt_idx              NUMBER;
14686 l_acc_rev_flag                VARCHAR2(1);
14687 l_accrual_line_num            NUMBER;
14689 l_acc_rev_natural_side_code   VARCHAR2(1);
14690 
14691 l_num_entries                 NUMBER;
14692 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14693 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14694 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14695 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14696 l_recog_line_1                NUMBER;
14697 l_recog_line_2                NUMBER;
14698 
14699 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14700 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14701 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14702 
14703 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14704 
14705 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14706 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14707 
14708 ---------------------------------------------------------------------------------------------------------------
14709 
14710 
14711 --
14712 -- bulk performance
14713 --
14714 l_balance_type_code           VARCHAR2(1);
14715 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14716 l_log_module                  VARCHAR2(240);
14717 
14718 --
14719 -- Upgrade strategy
14720 --
14721 l_actual_upg_option           VARCHAR2(1);
14722 l_enc_upg_option           VARCHAR2(1);
14723 
14724 --
14725 BEGIN
14726 --
14727 IF g_log_enabled THEN
14728       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
14729 END IF;
14730 --
14731 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14732 
14733       trace
14734          (p_msg      => 'BEGIN of AcctLineType_41'
14735          ,p_level    => C_LEVEL_PROCEDURE
14736          ,p_module   => l_log_module);
14737 
14738 END IF;
14739 --
14740 l_component_type             := 'AMB_JLT';
14741 l_component_code             := 'PA_RAW_COST';
14742 l_component_type_code        := 'S';
14743 l_component_appl_id          :=  275;
14744 l_amb_context_code           := 'DEFAULT';
14745 l_entity_code                := 'EXPENDITURES';
14746 l_event_class_code           := 'WIP_COST';
14747 l_event_type_code            := 'WIP_COST_ALL';
14748 l_line_definition_owner_code := 'S';
14749 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
14750 --
14751 l_balance_type_code          := 'A';
14752 l_segment                     := NULL;
14753 l_ccid                        := NULL;
14754 l_adr_transaction_coa_id      := NULL;
14755 l_adr_accounting_coa_id       := NULL;
14756 l_adr_flexfield_segment_code  := NULL;
14757 l_adr_flex_value_set_id       := NULL;
14758 l_adr_value_type_code         := NULL;
14759 l_adr_value_combination_id    := NULL;
14760 l_adr_value_segment_code      := NULL;
14761 
14762 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14763 l_bflow_class_code           := '';    -- 4219869 Business Flow
14764 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14765 l_budgetary_control_flag     := 'N';
14766 
14767 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14768 l_bflow_applied_to_amt       := NULL; -- 5132302
14769 l_entered_amt_idx            := NULL;          -- 4262811
14770 l_accted_amt_idx             := NULL;          -- 4262811
14771 l_acc_rev_flag               := NULL;          -- 4262811
14772 l_accrual_line_num           := NULL;          -- 4262811
14773 l_tmp_amt                    := NULL;          -- 4262811
14774 --
14775  
14776 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14777     l_balance_type_code <> 'B' THEN
14778 
14779    --
14780    XLA_AE_LINES_PKG.SetNewLine;
14781 
14782    p_balance_type_code          := l_balance_type_code;
14783    -- set the flag so later we will know whether the gain loss line needs to be created
14784    
14785    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14786      p_actual_flag :='A';
14787    END IF;
14788 
14789    --
14790    -- bulk performance
14791    --
14792    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14793                                       p_header_num   => 0); -- 4262811
14794    --
14795    -- set accounting line options
14796    --
14797    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14798            p_natural_side_code          => 'D'
14799          , p_gain_or_loss_flag          => 'N'
14800          , p_gl_transfer_mode_code      => 'S'
14801          , p_acct_entry_type_code       => 'A'
14802          , p_switch_side_flag           => 'Y'
14803          , p_merge_duplicate_code       => 'N'
14804          );
14805    --
14806    l_acc_rev_natural_side_code := 'C';  -- 4262811
14807    -- 
14808    --
14809    -- set accounting line type info
14810    --
14811    xla_ae_lines_pkg.SetAcctLineType
14812       (p_component_type             => l_component_type
14813       ,p_event_type_code            => l_event_type_code
14814       ,p_line_definition_owner_code => l_line_definition_owner_code
14815       ,p_line_definition_code       => l_line_definition_code
14816       ,p_accounting_line_code       => l_component_code
14817       ,p_accounting_line_type_code  => l_component_type_code
14818       ,p_accounting_line_appl_id    => l_component_appl_id
14819       ,p_amb_context_code           => l_amb_context_code
14820       ,p_entity_code                => l_entity_code
14821       ,p_event_class_code           => l_event_class_code);
14822    --
14823    -- set accounting class
14827          , p_ae_header_id           => l_ae_header_id
14824    --
14825    xla_ae_lines_pkg.SetAcctClass(
14826            p_accounting_class_code  => 'COST'
14828          );
14829 
14830    --
14831    -- set rounding class
14832    --
14833    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14834                       'COST';
14835 
14836    --
14837    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14838    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14839    --
14840    -- bulk performance
14841    --
14842    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14843 
14844    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14845       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14846 
14847    -- 4955764
14848    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14849       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14850 
14851    -- 4458381 Public Sector Enh
14852    
14853    --
14854    -- set accounting attributes for the line type
14855    --
14856    l_entered_amt_idx := 22;
14857    l_accted_amt_idx  := 27;
14858    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14859    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
14860    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
14861    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
14862    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
14863    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
14864    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
14865    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
14866    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
14867    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
14868    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
14869    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
14870    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
14871    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
14872    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
14873    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
14874    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
14875    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
14876    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
14877    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
14878    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
14879    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
14880    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
14881    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
14882    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
14883    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
14884    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
14885    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
14886    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
14887    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
14888    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
14889    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
14890    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
14891    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
14892    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
14893    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
14894    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
14895    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
14896    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
14897    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
14898    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
14899    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
14900    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
14901    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
14902    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
14903    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
14904    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
14905    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
14906    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
14907    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
14908    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
14909    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
14910    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
14911    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
14912    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
14913    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
14914    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
14915    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
14916    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
14917    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
14918    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
14919 
14920    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14921    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14922 
14923    ---------------------------------------------------------------------------------------------------------------
14924    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14928    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14925    ---------------------------------------------------------------------------------------------------------------
14926    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14927 
14929    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14930 
14931    IF xla_accounting_cache_pkg.GetValueChar
14932          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14933          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14934    AND l_bflow_method_code = 'PRIOR_ENTRY'
14935 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14936    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14937          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14938        )
14939    THEN
14940          xla_ae_lines_pkg.BflowUpgEntry
14941            (p_business_method_code    => l_bflow_method_code
14942            ,p_business_class_code     => l_bflow_class_code
14943            ,p_balance_type            => l_balance_type_code);
14944    ELSE
14945       NULL;
14946 -- No business flow processing for business flow method of NONE.
14947    END IF;
14948 
14949    --
14950    -- call analytical criteria
14951    --
14952    
14953    --
14954    -- call description
14955    --
14956    -- No description or it is inherited.
14957    --
14958    -- call ADRs
14959    -- Bug 4922099
14960    --
14961    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14962         (NVL(l_actual_upg_option, 'N') = 'O') OR
14963         (NVL(l_enc_upg_option, 'N') = 'O')
14964       )
14965    THEN
14966    NULL;
14967    --
14968    --
14969    
14970   l_ccid := AcctDerRule_3(
14971            p_application_id           => p_application_id
14972          , p_ae_header_id             => l_ae_header_id 
14973 , p_source_3 => p_source_3
14974 , p_source_4 => p_source_4
14975 , p_source_5 => p_source_5
14976          , x_transaction_coa_id       => l_adr_transaction_coa_id
14977          , x_accounting_coa_id        => l_adr_accounting_coa_id
14978          , x_value_type_code          => l_adr_value_type_code
14979          , p_side                     => 'NA'
14980    );
14981 
14982    xla_ae_lines_pkg.set_ccid(
14983     p_code_combination_id          => l_ccid
14984   , p_value_type_code              => l_adr_value_type_code
14985   , p_transaction_coa_id           => l_adr_transaction_coa_id
14986   , p_accounting_coa_id            => l_adr_accounting_coa_id
14987   , p_adr_code                     => 'PA_COST_ACCT_RULE'
14988   , p_adr_type_code                => 'S'
14989   , p_component_type               => l_component_type
14990   , p_component_code               => l_component_code
14991   , p_component_type_code          => l_component_type_code
14992   , p_component_appl_id            => l_component_appl_id
14993   , p_amb_context_code             => l_amb_context_code
14994   , p_side                         => 'NA'
14995   );
14996 
14997 
14998    --
14999    --
15000    END IF;
15001    --
15002    -- Bug 4922099
15003    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15004           (NVL(l_enc_upg_option, 'N') = 'O')
15005         ) AND
15006         (l_bflow_method_code = 'PRIOR_ENTRY')
15007       )
15008    THEN
15009       IF
15010       --
15011       1 = 2
15012       --
15013       THEN
15014       xla_accounting_err_pkg.build_message
15015                                     (p_appli_s_name            => 'XLA'
15016                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15017                                     ,p_token_1                 => 'LINE_NUMBER'
15018                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15019                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15020                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15021                                                                              l_component_type
15022                                                                             ,l_component_code
15023                                                                             ,l_component_type_code
15024                                                                             ,l_component_appl_id
15025                                                                             ,l_amb_context_code
15026                                                                             ,l_entity_code
15027                                                                             ,l_event_class_code
15028                                                                            )
15029                                     ,p_token_3                 => 'OWNER'
15030                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15031                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15032                                                                           ,p_lookup_code    => l_component_type_code
15033                                                                          )
15034                                     ,p_token_4                 => 'PRODUCT_NAME'
15035                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15036                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15037                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15038                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15039                                     ,p_ae_header_id            =>  NULL
15043                  trace
15040                                        );
15041 
15042         IF (C_LEVEL_ERROR>= g_log_level) THEN
15044                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15045                       ,p_level    => C_LEVEL_ERROR
15046                       ,p_module   => l_log_module);
15047         END IF;
15048       END IF;
15049    END IF;
15050    --
15051    --
15052    ------------------------------------------------------------------------------------------------
15053    -- 4219869 Business Flow
15054    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15055    -- Prior Entry.  Currently, the following code is always generated.
15056    ------------------------------------------------------------------------------------------------
15057    XLA_AE_LINES_PKG.ValidateCurrentLine;
15058 
15059    ------------------------------------------------------------------------------------
15060    -- 4219869 Business Flow
15061    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15062    ------------------------------------------------------------------------------------
15063    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15064 
15065    ----------------------------------------------------------------------------------
15066    -- 4219869 Business Flow
15067    -- Update journal entry status -- Need to generate this within IF <condition>
15068    ----------------------------------------------------------------------------------
15069    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15070          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15071          ,p_balance_type_code => l_balance_type_code
15072          );
15073 
15074    -------------------------------------------------------------------------------------------
15075    -- 4262811 - Generate the Accrual Reversal lines
15076    -------------------------------------------------------------------------------------------
15077    BEGIN
15078       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15079                               (g_array_event(p_event_id).array_value_num('header_index'));
15080       IF l_acc_rev_flag IS NULL THEN
15081          l_acc_rev_flag := 'N';
15082       END IF;
15083    EXCEPTION
15084       WHEN OTHERS THEN
15085          l_acc_rev_flag := 'N';
15086    END;
15087    --
15088    IF (l_acc_rev_flag = 'Y') THEN
15089 
15090        -- 4645092  ------------------------------------------------------------------------------
15091        -- To allow MPA report to determine if it should generate report process
15092        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15093        ------------------------------------------------------------------------------------------
15094 
15095        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15096        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15097 
15098        --
15099        -- Update the line information that should be overwritten
15100        --
15101        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15102                                          p_header_num   => 1);
15103        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15104 
15105        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15106 
15107        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15108           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15109        END IF;
15110 
15111       --
15112       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15113       --
15114       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15115           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15116       ELSE
15117           ---------------------------------------------------------------------------------------------------
15118           -- 4262811a Switch Sign
15119           ---------------------------------------------------------------------------------------------------
15120           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15121           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15122                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15123           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15124                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15125           -- 5132302
15126           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15127                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15128 
15129       END IF;
15130 
15131       -- 4955764
15132       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15133       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15134 
15135 
15136       XLA_AE_LINES_PKG.ValidateCurrentLine;
15137       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15138 
15139       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15140                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15141                ,p_balance_type_code => l_balance_type_code);
15142 
15143    END IF;
15144 
15145    -----------------------------------------------------------------------------------------
15146    -- 4262811 Multiperiod Accounting
15147    -----------------------------------------------------------------------------------------
15148      -- No MPA option is assigned.
15149 
15150 
15151 END IF;
15155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15152 --
15153 
15154 --
15156    trace
15157       (p_msg      => 'END of AcctLineType_41'
15158       ,p_level    => C_LEVEL_PROCEDURE
15159       ,p_module   => l_log_module);
15160 END IF;
15161 --
15162 EXCEPTION
15163   WHEN xla_exceptions_pkg.application_exception THEN
15164       RAISE;
15165   WHEN OTHERS THEN
15166        xla_exceptions_pkg.raise_message
15167            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_41');
15168 END AcctLineType_41;
15169 --
15170 
15171 ---------------------------------------
15172 --
15173 -- PRIVATE FUNCTION
15174 --         AcctLineType_42
15175 --
15176 ---------------------------------------
15177 PROCEDURE AcctLineType_42 (
15178   p_application_id        IN NUMBER
15179  ,p_event_id              IN NUMBER
15180  ,p_calculate_acctd_flag  IN VARCHAR2
15181  ,p_calculate_g_l_flag    IN VARCHAR2
15182  ,p_actual_flag           IN OUT VARCHAR2
15183  ,p_balance_type_code     OUT VARCHAR2
15184  ,p_gain_or_loss_ref      OUT VARCHAR2
15185  
15186 --Cost CCID
15187  , p_source_3            IN NUMBER
15188 --Allow Account Override Flag
15189  , p_source_4            IN VARCHAR2
15190 --Adjustment Cost CCID
15191  , p_source_5            IN NUMBER
15192 --Cost Clearing CCID
15193  , p_source_6            IN NUMBER
15194 --Reversing Line Flag
15195  , p_source_22            IN VARCHAR2
15196 --Actual Upgrade Credit Accounting Class
15197  , p_source_23            IN VARCHAR2
15198 --Entered Raw Cost
15199  , p_source_24            IN NUMBER
15200 --Entered Currency Code
15201  , p_source_25            IN VARCHAR2
15202 --Accounted Raw Cost
15203  , p_source_26            IN NUMBER
15204 --Exchange Rate Date
15205  , p_source_27            IN DATE
15206 --Exchange Rate
15207  , p_source_28            IN NUMBER
15208 --Exchange Rate Type
15209  , p_source_29            IN VARCHAR2
15210 --Actual Upgrade Debit Accounting Class
15211  , p_source_30            IN VARCHAR2
15212 --Use Actuals Upgrade Attributes Flag
15213  , p_source_31            IN VARCHAR2
15214 --Expenditure Item ID
15215  , p_source_32            IN NUMBER
15216 --Cost Distribution Line Number
15217  , p_source_33            IN NUMBER
15218 --Line Type
15219  , p_source_34            IN VARCHAR2
15220  , p_source_34_meaning    IN VARCHAR2
15221 --Reversed Line Number
15222  , p_source_35            IN NUMBER
15223 )
15224 IS
15225 
15226 l_component_type              VARCHAR2(80);
15227 l_component_code              VARCHAR2(30);
15228 l_component_type_code         VARCHAR2(1);
15229 l_component_appl_id           INTEGER;
15230 l_amb_context_code            VARCHAR2(30);
15231 l_entity_code                 VARCHAR2(30);
15232 l_event_class_code            VARCHAR2(30);
15233 l_ae_header_id                NUMBER;
15234 l_event_type_code             VARCHAR2(30);
15235 l_line_definition_code        VARCHAR2(30);
15236 l_line_definition_owner_code  VARCHAR2(1);
15237 --
15238 -- adr variables
15239 l_segment                     VARCHAR2(30);
15240 l_ccid                        NUMBER;
15241 l_adr_transaction_coa_id      NUMBER;
15242 l_adr_accounting_coa_id       NUMBER;
15243 l_adr_flexfield_segment_code  VARCHAR2(30);
15244 l_adr_flex_value_set_id       NUMBER;
15245 l_adr_value_type_code         VARCHAR2(30);
15246 l_adr_value_combination_id    NUMBER;
15247 l_adr_value_segment_code      VARCHAR2(30);
15248 
15249 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15250 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15251 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15252 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15253 
15254 -- 4262811 Variables ------------------------------------------------------------------------------------------
15255 l_entered_amt_idx             NUMBER;
15256 l_accted_amt_idx              NUMBER;
15257 l_acc_rev_flag                VARCHAR2(1);
15258 l_accrual_line_num            NUMBER;
15259 l_tmp_amt                     NUMBER;
15260 l_acc_rev_natural_side_code   VARCHAR2(1);
15261 
15262 l_num_entries                 NUMBER;
15263 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15264 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15265 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15266 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15267 l_recog_line_1                NUMBER;
15268 l_recog_line_2                NUMBER;
15269 
15270 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15271 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15272 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15273 
15274 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15275 
15276 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15277 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15278 
15279 ---------------------------------------------------------------------------------------------------------------
15280 
15281 
15282 --
15283 -- bulk performance
15284 --
15285 l_balance_type_code           VARCHAR2(1);
15286 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15287 l_log_module                  VARCHAR2(240);
15288 
15289 --
15290 -- Upgrade strategy
15291 --
15292 l_actual_upg_option           VARCHAR2(1);
15293 l_enc_upg_option           VARCHAR2(1);
15294 
15295 --
15296 BEGIN
15297 --
15298 IF g_log_enabled THEN
15299       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
15300 END IF;
15304       trace
15301 --
15302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15303 
15305          (p_msg      => 'BEGIN of AcctLineType_42'
15306          ,p_level    => C_LEVEL_PROCEDURE
15307          ,p_module   => l_log_module);
15308 
15309 END IF;
15310 --
15311 l_component_type             := 'AMB_JLT';
15312 l_component_code             := 'PA_RAW_COST';
15313 l_component_type_code        := 'S';
15314 l_component_appl_id          :=  275;
15315 l_amb_context_code           := 'DEFAULT';
15316 l_entity_code                := 'EXPENDITURES';
15317 l_event_class_code           := 'USG_COST';
15318 l_event_type_code            := 'USG_COST_ALL';
15319 l_line_definition_owner_code := 'S';
15320 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
15321 --
15322 l_balance_type_code          := 'A';
15323 l_segment                     := NULL;
15324 l_ccid                        := NULL;
15325 l_adr_transaction_coa_id      := NULL;
15326 l_adr_accounting_coa_id       := NULL;
15327 l_adr_flexfield_segment_code  := NULL;
15328 l_adr_flex_value_set_id       := NULL;
15329 l_adr_value_type_code         := NULL;
15330 l_adr_value_combination_id    := NULL;
15331 l_adr_value_segment_code      := NULL;
15332 
15333 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15334 l_bflow_class_code           := '';    -- 4219869 Business Flow
15335 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15336 l_budgetary_control_flag     := 'N';
15337 
15338 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15339 l_bflow_applied_to_amt       := NULL; -- 5132302
15340 l_entered_amt_idx            := NULL;          -- 4262811
15341 l_accted_amt_idx             := NULL;          -- 4262811
15342 l_acc_rev_flag               := NULL;          -- 4262811
15343 l_accrual_line_num           := NULL;          -- 4262811
15344 l_tmp_amt                    := NULL;          -- 4262811
15345 --
15346  
15347 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15348     l_balance_type_code <> 'B' THEN
15349 
15350    --
15351    XLA_AE_LINES_PKG.SetNewLine;
15352 
15353    p_balance_type_code          := l_balance_type_code;
15354    -- set the flag so later we will know whether the gain loss line needs to be created
15355    
15356    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15357      p_actual_flag :='A';
15358    END IF;
15359 
15360    --
15361    -- bulk performance
15362    --
15363    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15364                                       p_header_num   => 0); -- 4262811
15365    --
15366    -- set accounting line options
15367    --
15368    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15369            p_natural_side_code          => 'D'
15370          , p_gain_or_loss_flag          => 'N'
15371          , p_gl_transfer_mode_code      => 'S'
15372          , p_acct_entry_type_code       => 'A'
15373          , p_switch_side_flag           => 'Y'
15374          , p_merge_duplicate_code       => 'N'
15375          );
15376    --
15377    l_acc_rev_natural_side_code := 'C';  -- 4262811
15378    -- 
15379    --
15380    -- set accounting line type info
15381    --
15382    xla_ae_lines_pkg.SetAcctLineType
15383       (p_component_type             => l_component_type
15384       ,p_event_type_code            => l_event_type_code
15385       ,p_line_definition_owner_code => l_line_definition_owner_code
15386       ,p_line_definition_code       => l_line_definition_code
15387       ,p_accounting_line_code       => l_component_code
15388       ,p_accounting_line_type_code  => l_component_type_code
15389       ,p_accounting_line_appl_id    => l_component_appl_id
15390       ,p_amb_context_code           => l_amb_context_code
15391       ,p_entity_code                => l_entity_code
15392       ,p_event_class_code           => l_event_class_code);
15393    --
15394    -- set accounting class
15395    --
15396    xla_ae_lines_pkg.SetAcctClass(
15397            p_accounting_class_code  => 'COST'
15398          , p_ae_header_id           => l_ae_header_id
15399          );
15400 
15401    --
15402    -- set rounding class
15403    --
15404    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15405                       'COST';
15406 
15407    --
15408    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15409    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15410    --
15411    -- bulk performance
15412    --
15413    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15414 
15415    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15416       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15417 
15418    -- 4955764
15419    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15421 
15422    -- 4458381 Public Sector Enh
15423    
15424    --
15425    -- set accounting attributes for the line type
15426    --
15427    l_entered_amt_idx := 22;
15428    l_accted_amt_idx  := 27;
15429    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15430    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
15431    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
15432    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
15433    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
15434    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
15435    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
15439    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
15436    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
15437    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
15438    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
15440    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
15441    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
15442    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
15443    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
15444    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
15445    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
15446    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
15447    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
15448    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
15449    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
15450    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
15451    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
15452    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
15453    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
15454    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
15455    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
15456    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
15457    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
15458    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
15459    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
15460    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
15461    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
15462    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
15463    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
15464    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
15465    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
15466    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
15467    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
15468    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
15469    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
15470    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
15471    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
15472    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
15473    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
15474    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
15475    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
15476    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
15477    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
15478    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
15479    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
15480    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
15481    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
15482    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
15483    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
15484    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
15485    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
15486    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
15487    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
15488    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
15489    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
15490 
15491    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15492    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15493 
15494    ---------------------------------------------------------------------------------------------------------------
15495    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15496    ---------------------------------------------------------------------------------------------------------------
15497    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15498 
15499    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15500    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15501 
15502    IF xla_accounting_cache_pkg.GetValueChar
15503          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15504          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15505    AND l_bflow_method_code = 'PRIOR_ENTRY'
15506 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15507    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15508          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15509        )
15510    THEN
15511          xla_ae_lines_pkg.BflowUpgEntry
15512            (p_business_method_code    => l_bflow_method_code
15513            ,p_business_class_code     => l_bflow_class_code
15514            ,p_balance_type            => l_balance_type_code);
15515    ELSE
15516       NULL;
15517 -- No business flow processing for business flow method of NONE.
15518    END IF;
15519 
15520    --
15521    -- call analytical criteria
15522    --
15523    
15524    --
15525    -- call description
15526    --
15527    -- No description or it is inherited.
15528    --
15529    -- call ADRs
15530    -- Bug 4922099
15531    --
15532    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15533         (NVL(l_actual_upg_option, 'N') = 'O') OR
15534         (NVL(l_enc_upg_option, 'N') = 'O')
15535       )
15536    THEN
15537    NULL;
15538    --
15539    --
15540    
15541   l_ccid := AcctDerRule_3(
15545 , p_source_4 => p_source_4
15542            p_application_id           => p_application_id
15543          , p_ae_header_id             => l_ae_header_id 
15544 , p_source_3 => p_source_3
15546 , p_source_5 => p_source_5
15547          , x_transaction_coa_id       => l_adr_transaction_coa_id
15548          , x_accounting_coa_id        => l_adr_accounting_coa_id
15549          , x_value_type_code          => l_adr_value_type_code
15550          , p_side                     => 'NA'
15551    );
15552 
15553    xla_ae_lines_pkg.set_ccid(
15554     p_code_combination_id          => l_ccid
15555   , p_value_type_code              => l_adr_value_type_code
15556   , p_transaction_coa_id           => l_adr_transaction_coa_id
15557   , p_accounting_coa_id            => l_adr_accounting_coa_id
15558   , p_adr_code                     => 'PA_COST_ACCT_RULE'
15559   , p_adr_type_code                => 'S'
15560   , p_component_type               => l_component_type
15561   , p_component_code               => l_component_code
15562   , p_component_type_code          => l_component_type_code
15563   , p_component_appl_id            => l_component_appl_id
15564   , p_amb_context_code             => l_amb_context_code
15565   , p_side                         => 'NA'
15566   );
15567 
15568 
15569    --
15570    --
15571    END IF;
15572    --
15573    -- Bug 4922099
15574    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15575           (NVL(l_enc_upg_option, 'N') = 'O')
15576         ) AND
15577         (l_bflow_method_code = 'PRIOR_ENTRY')
15578       )
15579    THEN
15580       IF
15581       --
15582       1 = 2
15583       --
15584       THEN
15585       xla_accounting_err_pkg.build_message
15586                                     (p_appli_s_name            => 'XLA'
15587                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15588                                     ,p_token_1                 => 'LINE_NUMBER'
15589                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15590                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15591                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15592                                                                              l_component_type
15593                                                                             ,l_component_code
15594                                                                             ,l_component_type_code
15595                                                                             ,l_component_appl_id
15596                                                                             ,l_amb_context_code
15597                                                                             ,l_entity_code
15598                                                                             ,l_event_class_code
15599                                                                            )
15600                                     ,p_token_3                 => 'OWNER'
15601                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15602                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15603                                                                           ,p_lookup_code    => l_component_type_code
15604                                                                          )
15605                                     ,p_token_4                 => 'PRODUCT_NAME'
15606                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15607                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15608                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15609                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15610                                     ,p_ae_header_id            =>  NULL
15611                                        );
15612 
15613         IF (C_LEVEL_ERROR>= g_log_level) THEN
15614                  trace
15615                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15616                       ,p_level    => C_LEVEL_ERROR
15617                       ,p_module   => l_log_module);
15618         END IF;
15619       END IF;
15620    END IF;
15621    --
15622    --
15623    ------------------------------------------------------------------------------------------------
15624    -- 4219869 Business Flow
15625    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15626    -- Prior Entry.  Currently, the following code is always generated.
15627    ------------------------------------------------------------------------------------------------
15628    XLA_AE_LINES_PKG.ValidateCurrentLine;
15629 
15630    ------------------------------------------------------------------------------------
15631    -- 4219869 Business Flow
15632    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15633    ------------------------------------------------------------------------------------
15634    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15635 
15636    ----------------------------------------------------------------------------------
15637    -- 4219869 Business Flow
15638    -- Update journal entry status -- Need to generate this within IF <condition>
15639    ----------------------------------------------------------------------------------
15640    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15641          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15642          ,p_balance_type_code => l_balance_type_code
15643          );
15644 
15645    -------------------------------------------------------------------------------------------
15646    -- 4262811 - Generate the Accrual Reversal lines
15650                               (g_array_event(p_event_id).array_value_num('header_index'));
15647    -------------------------------------------------------------------------------------------
15648    BEGIN
15649       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15651       IF l_acc_rev_flag IS NULL THEN
15652          l_acc_rev_flag := 'N';
15653       END IF;
15654    EXCEPTION
15655       WHEN OTHERS THEN
15656          l_acc_rev_flag := 'N';
15657    END;
15658    --
15659    IF (l_acc_rev_flag = 'Y') THEN
15660 
15661        -- 4645092  ------------------------------------------------------------------------------
15662        -- To allow MPA report to determine if it should generate report process
15663        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15664        ------------------------------------------------------------------------------------------
15665 
15666        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15667        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15668 
15669        --
15670        -- Update the line information that should be overwritten
15671        --
15672        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15673                                          p_header_num   => 1);
15674        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15675 
15676        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15677 
15678        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15679           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15680        END IF;
15681 
15682       --
15683       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15684       --
15685       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15686           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15687       ELSE
15688           ---------------------------------------------------------------------------------------------------
15689           -- 4262811a Switch Sign
15690           ---------------------------------------------------------------------------------------------------
15691           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15692           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15693                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15694           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15695                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15696           -- 5132302
15697           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15698                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15699 
15700       END IF;
15701 
15702       -- 4955764
15703       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15704       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15705 
15706 
15707       XLA_AE_LINES_PKG.ValidateCurrentLine;
15708       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15709 
15710       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15711                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15712                ,p_balance_type_code => l_balance_type_code);
15713 
15714    END IF;
15715 
15716    -----------------------------------------------------------------------------------------
15717    -- 4262811 Multiperiod Accounting
15718    -----------------------------------------------------------------------------------------
15719      -- No MPA option is assigned.
15720 
15721 
15722 END IF;
15723 --
15724 
15725 --
15726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15727    trace
15728       (p_msg      => 'END of AcctLineType_42'
15729       ,p_level    => C_LEVEL_PROCEDURE
15730       ,p_module   => l_log_module);
15731 END IF;
15732 --
15733 EXCEPTION
15734   WHEN xla_exceptions_pkg.application_exception THEN
15735       RAISE;
15736   WHEN OTHERS THEN
15737        xla_exceptions_pkg.raise_message
15738            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_42');
15739 END AcctLineType_42;
15740 --
15741 
15742 ---------------------------------------
15743 --
15744 -- PRIVATE FUNCTION
15745 --         AcctLineType_43
15746 --
15747 ---------------------------------------
15748 PROCEDURE AcctLineType_43 (
15749   p_application_id        IN NUMBER
15750  ,p_event_id              IN NUMBER
15751  ,p_calculate_acctd_flag  IN VARCHAR2
15752  ,p_calculate_g_l_flag    IN VARCHAR2
15753  ,p_actual_flag           IN OUT VARCHAR2
15754  ,p_balance_type_code     OUT VARCHAR2
15755  ,p_gain_or_loss_ref      OUT VARCHAR2
15756  
15757 --Cost CCID
15758  , p_source_3            IN NUMBER
15759 --Allow Account Override Flag
15760  , p_source_4            IN VARCHAR2
15761 --Adjustment Cost CCID
15762  , p_source_5            IN NUMBER
15763 --Cost Clearing CCID
15764  , p_source_6            IN NUMBER
15765 --Reversing Line Flag
15766  , p_source_22            IN VARCHAR2
15767 --Actual Upgrade Credit Accounting Class
15768  , p_source_23            IN VARCHAR2
15769 --Entered Raw Cost
15770  , p_source_24            IN NUMBER
15771 --Entered Currency Code
15772  , p_source_25            IN VARCHAR2
15773 --Accounted Raw Cost
15774  , p_source_26            IN NUMBER
15775 --Exchange Rate Date
15776  , p_source_27            IN DATE
15780  , p_source_29            IN VARCHAR2
15777 --Exchange Rate
15778  , p_source_28            IN NUMBER
15779 --Exchange Rate Type
15781 --Actual Upgrade Debit Accounting Class
15782  , p_source_30            IN VARCHAR2
15783 --Use Actuals Upgrade Attributes Flag
15784  , p_source_31            IN VARCHAR2
15785 --Expenditure Item ID
15786  , p_source_32            IN NUMBER
15787 --Cost Distribution Line Number
15788  , p_source_33            IN NUMBER
15789 --Line Type
15790  , p_source_34            IN VARCHAR2
15791  , p_source_34_meaning    IN VARCHAR2
15792 --Reversed Line Number
15793  , p_source_35            IN NUMBER
15794 )
15795 IS
15796 
15797 l_component_type              VARCHAR2(80);
15798 l_component_code              VARCHAR2(30);
15799 l_component_type_code         VARCHAR2(1);
15800 l_component_appl_id           INTEGER;
15801 l_amb_context_code            VARCHAR2(30);
15802 l_entity_code                 VARCHAR2(30);
15803 l_event_class_code            VARCHAR2(30);
15804 l_ae_header_id                NUMBER;
15805 l_event_type_code             VARCHAR2(30);
15806 l_line_definition_code        VARCHAR2(30);
15807 l_line_definition_owner_code  VARCHAR2(1);
15808 --
15809 -- adr variables
15810 l_segment                     VARCHAR2(30);
15811 l_ccid                        NUMBER;
15812 l_adr_transaction_coa_id      NUMBER;
15813 l_adr_accounting_coa_id       NUMBER;
15814 l_adr_flexfield_segment_code  VARCHAR2(30);
15815 l_adr_flex_value_set_id       NUMBER;
15816 l_adr_value_type_code         VARCHAR2(30);
15817 l_adr_value_combination_id    NUMBER;
15818 l_adr_value_segment_code      VARCHAR2(30);
15819 
15820 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15821 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15822 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15823 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15824 
15825 -- 4262811 Variables ------------------------------------------------------------------------------------------
15826 l_entered_amt_idx             NUMBER;
15827 l_accted_amt_idx              NUMBER;
15828 l_acc_rev_flag                VARCHAR2(1);
15829 l_accrual_line_num            NUMBER;
15830 l_tmp_amt                     NUMBER;
15831 l_acc_rev_natural_side_code   VARCHAR2(1);
15832 
15833 l_num_entries                 NUMBER;
15834 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15835 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15836 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15837 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15838 l_recog_line_1                NUMBER;
15839 l_recog_line_2                NUMBER;
15840 
15841 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15842 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15843 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15844 
15845 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15846 
15847 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15848 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15849 
15850 ---------------------------------------------------------------------------------------------------------------
15851 
15852 
15853 --
15854 -- bulk performance
15855 --
15856 l_balance_type_code           VARCHAR2(1);
15857 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15858 l_log_module                  VARCHAR2(240);
15859 
15860 --
15861 -- Upgrade strategy
15862 --
15863 l_actual_upg_option           VARCHAR2(1);
15864 l_enc_upg_option           VARCHAR2(1);
15865 
15866 --
15867 BEGIN
15868 --
15869 IF g_log_enabled THEN
15870       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
15871 END IF;
15872 --
15873 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15874 
15875       trace
15876          (p_msg      => 'BEGIN of AcctLineType_43'
15877          ,p_level    => C_LEVEL_PROCEDURE
15878          ,p_module   => l_log_module);
15879 
15880 END IF;
15881 --
15882 l_component_type             := 'AMB_JLT';
15883 l_component_code             := 'PA_RAW_COST';
15884 l_component_type_code        := 'S';
15885 l_component_appl_id          :=  275;
15886 l_amb_context_code           := 'DEFAULT';
15887 l_entity_code                := 'EXPENDITURES';
15888 l_event_class_code           := 'INVENTORY_COST';
15889 l_event_type_code            := 'INVENTORY_COST_ALL';
15890 l_line_definition_owner_code := 'S';
15891 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
15892 --
15893 l_balance_type_code          := 'A';
15894 l_segment                     := NULL;
15895 l_ccid                        := NULL;
15896 l_adr_transaction_coa_id      := NULL;
15897 l_adr_accounting_coa_id       := NULL;
15898 l_adr_flexfield_segment_code  := NULL;
15899 l_adr_flex_value_set_id       := NULL;
15900 l_adr_value_type_code         := NULL;
15901 l_adr_value_combination_id    := NULL;
15902 l_adr_value_segment_code      := NULL;
15903 
15904 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15905 l_bflow_class_code           := '';    -- 4219869 Business Flow
15906 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15907 l_budgetary_control_flag     := 'N';
15908 
15909 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15910 l_bflow_applied_to_amt       := NULL; -- 5132302
15911 l_entered_amt_idx            := NULL;          -- 4262811
15912 l_accted_amt_idx             := NULL;          -- 4262811
15913 l_acc_rev_flag               := NULL;          -- 4262811
15914 l_accrual_line_num           := NULL;          -- 4262811
15918 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15915 l_tmp_amt                    := NULL;          -- 4262811
15916 --
15917  
15919     l_balance_type_code <> 'B' THEN
15920 
15921    --
15922    XLA_AE_LINES_PKG.SetNewLine;
15923 
15924    p_balance_type_code          := l_balance_type_code;
15925    -- set the flag so later we will know whether the gain loss line needs to be created
15926    
15927    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15928      p_actual_flag :='A';
15929    END IF;
15930 
15931    --
15932    -- bulk performance
15933    --
15934    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15935                                       p_header_num   => 0); -- 4262811
15936    --
15937    -- set accounting line options
15938    --
15939    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15940            p_natural_side_code          => 'D'
15941          , p_gain_or_loss_flag          => 'N'
15942          , p_gl_transfer_mode_code      => 'S'
15943          , p_acct_entry_type_code       => 'A'
15944          , p_switch_side_flag           => 'Y'
15945          , p_merge_duplicate_code       => 'N'
15946          );
15947    --
15948    l_acc_rev_natural_side_code := 'C';  -- 4262811
15949    -- 
15950    --
15951    -- set accounting line type info
15952    --
15953    xla_ae_lines_pkg.SetAcctLineType
15954       (p_component_type             => l_component_type
15955       ,p_event_type_code            => l_event_type_code
15956       ,p_line_definition_owner_code => l_line_definition_owner_code
15957       ,p_line_definition_code       => l_line_definition_code
15958       ,p_accounting_line_code       => l_component_code
15959       ,p_accounting_line_type_code  => l_component_type_code
15960       ,p_accounting_line_appl_id    => l_component_appl_id
15961       ,p_amb_context_code           => l_amb_context_code
15962       ,p_entity_code                => l_entity_code
15963       ,p_event_class_code           => l_event_class_code);
15964    --
15965    -- set accounting class
15966    --
15967    xla_ae_lines_pkg.SetAcctClass(
15968            p_accounting_class_code  => 'COST'
15969          , p_ae_header_id           => l_ae_header_id
15970          );
15971 
15972    --
15973    -- set rounding class
15974    --
15975    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15976                       'COST';
15977 
15978    --
15979    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15980    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15981    --
15982    -- bulk performance
15983    --
15984    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15985 
15986    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15987       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15988 
15989    -- 4955764
15990    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15991       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15992 
15993    -- 4458381 Public Sector Enh
15994    
15995    --
15996    -- set accounting attributes for the line type
15997    --
15998    l_entered_amt_idx := 22;
15999    l_accted_amt_idx  := 27;
16000    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16001    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16002    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
16003    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
16004    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
16005    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
16006    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
16007    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
16008    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
16009    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
16010    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
16011    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
16012    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
16013    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
16014    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
16015    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
16016    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
16017    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
16018    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
16019    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
16020    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
16021    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
16022    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
16023    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
16024    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
16025    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
16026    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
16027    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
16028    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
16029    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
16030    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
16031    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
16032    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
16033    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
16034    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
16038    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
16035    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
16036    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
16037    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
16039    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
16040    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
16041    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
16042    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
16043    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
16044    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
16045    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
16046    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
16047    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
16048    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
16049    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
16050    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
16051    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
16052    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
16053    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
16054    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
16055    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
16056    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
16057    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
16058    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
16059    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
16060    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
16061 
16062    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16063    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16064 
16065    ---------------------------------------------------------------------------------------------------------------
16066    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16067    ---------------------------------------------------------------------------------------------------------------
16068    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16069 
16070    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16071    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16072 
16073    IF xla_accounting_cache_pkg.GetValueChar
16074          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16075          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16076    AND l_bflow_method_code = 'PRIOR_ENTRY'
16077 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16078    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16079          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16080        )
16081    THEN
16082          xla_ae_lines_pkg.BflowUpgEntry
16083            (p_business_method_code    => l_bflow_method_code
16084            ,p_business_class_code     => l_bflow_class_code
16085            ,p_balance_type            => l_balance_type_code);
16086    ELSE
16087       NULL;
16088 -- No business flow processing for business flow method of NONE.
16089    END IF;
16090 
16091    --
16092    -- call analytical criteria
16093    --
16094    
16095    --
16096    -- call description
16097    --
16098    -- No description or it is inherited.
16099    --
16100    -- call ADRs
16101    -- Bug 4922099
16102    --
16103    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16104         (NVL(l_actual_upg_option, 'N') = 'O') OR
16105         (NVL(l_enc_upg_option, 'N') = 'O')
16106       )
16107    THEN
16108    NULL;
16109    --
16110    --
16111    
16112   l_ccid := AcctDerRule_3(
16113            p_application_id           => p_application_id
16114          , p_ae_header_id             => l_ae_header_id 
16115 , p_source_3 => p_source_3
16116 , p_source_4 => p_source_4
16117 , p_source_5 => p_source_5
16118          , x_transaction_coa_id       => l_adr_transaction_coa_id
16119          , x_accounting_coa_id        => l_adr_accounting_coa_id
16120          , x_value_type_code          => l_adr_value_type_code
16121          , p_side                     => 'NA'
16122    );
16123 
16124    xla_ae_lines_pkg.set_ccid(
16125     p_code_combination_id          => l_ccid
16126   , p_value_type_code              => l_adr_value_type_code
16127   , p_transaction_coa_id           => l_adr_transaction_coa_id
16128   , p_accounting_coa_id            => l_adr_accounting_coa_id
16129   , p_adr_code                     => 'PA_COST_ACCT_RULE'
16130   , p_adr_type_code                => 'S'
16131   , p_component_type               => l_component_type
16132   , p_component_code               => l_component_code
16133   , p_component_type_code          => l_component_type_code
16134   , p_component_appl_id            => l_component_appl_id
16135   , p_amb_context_code             => l_amb_context_code
16136   , p_side                         => 'NA'
16137   );
16138 
16139 
16140    --
16141    --
16142    END IF;
16143    --
16144    -- Bug 4922099
16145    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16146           (NVL(l_enc_upg_option, 'N') = 'O')
16147         ) AND
16148         (l_bflow_method_code = 'PRIOR_ENTRY')
16149       )
16150    THEN
16151       IF
16152       --
16153       1 = 2
16154       --
16155       THEN
16156       xla_accounting_err_pkg.build_message
16157                                     (p_appli_s_name            => 'XLA'
16161                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16158                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16159                                     ,p_token_1                 => 'LINE_NUMBER'
16160                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16162                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16163                                                                              l_component_type
16164                                                                             ,l_component_code
16165                                                                             ,l_component_type_code
16166                                                                             ,l_component_appl_id
16167                                                                             ,l_amb_context_code
16168                                                                             ,l_entity_code
16169                                                                             ,l_event_class_code
16170                                                                            )
16171                                     ,p_token_3                 => 'OWNER'
16172                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16173                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16174                                                                           ,p_lookup_code    => l_component_type_code
16175                                                                          )
16176                                     ,p_token_4                 => 'PRODUCT_NAME'
16177                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16178                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16179                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16180                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16181                                     ,p_ae_header_id            =>  NULL
16182                                        );
16183 
16184         IF (C_LEVEL_ERROR>= g_log_level) THEN
16185                  trace
16186                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16187                       ,p_level    => C_LEVEL_ERROR
16188                       ,p_module   => l_log_module);
16189         END IF;
16190       END IF;
16191    END IF;
16192    --
16193    --
16194    ------------------------------------------------------------------------------------------------
16195    -- 4219869 Business Flow
16196    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16197    -- Prior Entry.  Currently, the following code is always generated.
16198    ------------------------------------------------------------------------------------------------
16199    XLA_AE_LINES_PKG.ValidateCurrentLine;
16200 
16201    ------------------------------------------------------------------------------------
16202    -- 4219869 Business Flow
16203    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16204    ------------------------------------------------------------------------------------
16205    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16206 
16207    ----------------------------------------------------------------------------------
16208    -- 4219869 Business Flow
16209    -- Update journal entry status -- Need to generate this within IF <condition>
16210    ----------------------------------------------------------------------------------
16211    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16212          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16213          ,p_balance_type_code => l_balance_type_code
16214          );
16215 
16216    -------------------------------------------------------------------------------------------
16217    -- 4262811 - Generate the Accrual Reversal lines
16218    -------------------------------------------------------------------------------------------
16219    BEGIN
16220       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16221                               (g_array_event(p_event_id).array_value_num('header_index'));
16222       IF l_acc_rev_flag IS NULL THEN
16223          l_acc_rev_flag := 'N';
16224       END IF;
16225    EXCEPTION
16226       WHEN OTHERS THEN
16227          l_acc_rev_flag := 'N';
16228    END;
16229    --
16230    IF (l_acc_rev_flag = 'Y') THEN
16231 
16232        -- 4645092  ------------------------------------------------------------------------------
16233        -- To allow MPA report to determine if it should generate report process
16234        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16235        ------------------------------------------------------------------------------------------
16236 
16237        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16238        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16239 
16240        --
16241        -- Update the line information that should be overwritten
16242        --
16243        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16244                                          p_header_num   => 1);
16245        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16246 
16247        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16248 
16249        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16250           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16251        END IF;
16252 
16253       --
16254       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16258       ELSE
16255       --
16256       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16257           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16259           ---------------------------------------------------------------------------------------------------
16260           -- 4262811a Switch Sign
16261           ---------------------------------------------------------------------------------------------------
16262           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16263           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16264                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16265           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16266                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16267           -- 5132302
16268           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16269                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16270 
16271       END IF;
16272 
16273       -- 4955764
16274       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16275       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16276 
16277 
16278       XLA_AE_LINES_PKG.ValidateCurrentLine;
16279       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16280 
16281       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16282                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16283                ,p_balance_type_code => l_balance_type_code);
16284 
16285    END IF;
16286 
16287    -----------------------------------------------------------------------------------------
16288    -- 4262811 Multiperiod Accounting
16289    -----------------------------------------------------------------------------------------
16290      -- No MPA option is assigned.
16291 
16292 
16293 END IF;
16294 --
16295 
16296 --
16297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16298    trace
16299       (p_msg      => 'END of AcctLineType_43'
16300       ,p_level    => C_LEVEL_PROCEDURE
16301       ,p_module   => l_log_module);
16302 END IF;
16303 --
16304 EXCEPTION
16305   WHEN xla_exceptions_pkg.application_exception THEN
16306       RAISE;
16307   WHEN OTHERS THEN
16308        xla_exceptions_pkg.raise_message
16309            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_43');
16310 END AcctLineType_43;
16311 --
16312 
16313 ---------------------------------------
16314 --
16315 -- PRIVATE FUNCTION
16316 --         AcctLineType_44
16317 --
16318 ---------------------------------------
16319 PROCEDURE AcctLineType_44 (
16320   p_application_id        IN NUMBER
16321  ,p_event_id              IN NUMBER
16322  ,p_calculate_acctd_flag  IN VARCHAR2
16323  ,p_calculate_g_l_flag    IN VARCHAR2
16324  ,p_actual_flag           IN OUT VARCHAR2
16325  ,p_balance_type_code     OUT VARCHAR2
16326  ,p_gain_or_loss_ref      OUT VARCHAR2
16327  
16328 --Cost CCID
16329  , p_source_3            IN NUMBER
16330 --Allow Account Override Flag
16331  , p_source_4            IN VARCHAR2
16332 --Adjustment Cost CCID
16333  , p_source_5            IN NUMBER
16334 --Cost Clearing CCID
16335  , p_source_6            IN NUMBER
16336 --Exchange Rate Variance Flag
16337  , p_source_21            IN VARCHAR2
16338 --Reversing Line Flag
16339  , p_source_22            IN VARCHAR2
16340 --Actual Upgrade Credit Accounting Class
16341  , p_source_23            IN VARCHAR2
16342 --Entered Raw Cost
16343  , p_source_24            IN NUMBER
16344 --Entered Currency Code
16345  , p_source_25            IN VARCHAR2
16346 --Accounted Raw Cost
16347  , p_source_26            IN NUMBER
16348 --Exchange Rate Date
16349  , p_source_27            IN DATE
16350 --Exchange Rate
16351  , p_source_28            IN NUMBER
16352 --Exchange Rate Type
16353  , p_source_29            IN VARCHAR2
16354 --Actual Upgrade Debit Accounting Class
16355  , p_source_30            IN VARCHAR2
16356 --Use Actuals Upgrade Attributes Flag
16357  , p_source_31            IN VARCHAR2
16358 --Expenditure Item ID
16359  , p_source_32            IN NUMBER
16360 --Cost Distribution Line Number
16361  , p_source_33            IN NUMBER
16362 --Line Type
16363  , p_source_34            IN VARCHAR2
16364  , p_source_34_meaning    IN VARCHAR2
16365 --Reversed Line Number
16366  , p_source_35            IN NUMBER
16367 )
16368 IS
16369 
16370 l_component_type              VARCHAR2(80);
16371 l_component_code              VARCHAR2(30);
16372 l_component_type_code         VARCHAR2(1);
16373 l_component_appl_id           INTEGER;
16374 l_amb_context_code            VARCHAR2(30);
16375 l_entity_code                 VARCHAR2(30);
16376 l_event_class_code            VARCHAR2(30);
16377 l_ae_header_id                NUMBER;
16378 l_event_type_code             VARCHAR2(30);
16379 l_line_definition_code        VARCHAR2(30);
16380 l_line_definition_owner_code  VARCHAR2(1);
16381 --
16382 -- adr variables
16383 l_segment                     VARCHAR2(30);
16384 l_ccid                        NUMBER;
16385 l_adr_transaction_coa_id      NUMBER;
16386 l_adr_accounting_coa_id       NUMBER;
16387 l_adr_flexfield_segment_code  VARCHAR2(30);
16388 l_adr_flex_value_set_id       NUMBER;
16389 l_adr_value_type_code         VARCHAR2(30);
16390 l_adr_value_combination_id    NUMBER;
16391 l_adr_value_segment_code      VARCHAR2(30);
16392 
16396 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16393 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16394 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16395 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16397 
16398 -- 4262811 Variables ------------------------------------------------------------------------------------------
16399 l_entered_amt_idx             NUMBER;
16400 l_accted_amt_idx              NUMBER;
16401 l_acc_rev_flag                VARCHAR2(1);
16402 l_accrual_line_num            NUMBER;
16403 l_tmp_amt                     NUMBER;
16404 l_acc_rev_natural_side_code   VARCHAR2(1);
16405 
16406 l_num_entries                 NUMBER;
16407 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16408 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16409 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16410 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16411 l_recog_line_1                NUMBER;
16412 l_recog_line_2                NUMBER;
16413 
16414 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16415 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16416 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16417 
16418 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16419 
16420 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16421 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16422 
16423 ---------------------------------------------------------------------------------------------------------------
16424 
16425 
16426 --
16427 -- bulk performance
16428 --
16429 l_balance_type_code           VARCHAR2(1);
16430 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16431 l_log_module                  VARCHAR2(240);
16432 
16433 --
16434 -- Upgrade strategy
16435 --
16436 l_actual_upg_option           VARCHAR2(1);
16437 l_enc_upg_option           VARCHAR2(1);
16438 
16439 --
16440 BEGIN
16441 --
16442 IF g_log_enabled THEN
16443       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
16444 END IF;
16445 --
16446 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16447 
16448       trace
16449          (p_msg      => 'BEGIN of AcctLineType_44'
16450          ,p_level    => C_LEVEL_PROCEDURE
16451          ,p_module   => l_log_module);
16452 
16453 END IF;
16454 --
16455 l_component_type             := 'AMB_JLT';
16456 l_component_code             := 'PA_RAW_COST';
16457 l_component_type_code        := 'S';
16458 l_component_appl_id          :=  275;
16459 l_amb_context_code           := 'DEFAULT';
16460 l_entity_code                := 'EXPENDITURES';
16461 l_event_class_code           := 'SUPPLIER_COST';
16462 l_event_type_code            := 'SUPPLIER_COST_ALL';
16463 l_line_definition_owner_code := 'S';
16464 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
16465 --
16466 l_balance_type_code          := 'A';
16467 l_segment                     := NULL;
16468 l_ccid                        := NULL;
16469 l_adr_transaction_coa_id      := NULL;
16470 l_adr_accounting_coa_id       := NULL;
16471 l_adr_flexfield_segment_code  := NULL;
16472 l_adr_flex_value_set_id       := NULL;
16473 l_adr_value_type_code         := NULL;
16474 l_adr_value_combination_id    := NULL;
16475 l_adr_value_segment_code      := NULL;
16476 
16477 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16478 l_bflow_class_code           := '';    -- 4219869 Business Flow
16479 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16480 l_budgetary_control_flag     := 'N';
16481 
16482 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16483 l_bflow_applied_to_amt       := NULL; -- 5132302
16484 l_entered_amt_idx            := NULL;          -- 4262811
16485 l_accted_amt_idx             := NULL;          -- 4262811
16486 l_acc_rev_flag               := NULL;          -- 4262811
16487 l_accrual_line_num           := NULL;          -- 4262811
16488 l_tmp_amt                    := NULL;          -- 4262811
16489 --
16490  
16491 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16492     l_balance_type_code <> 'B' THEN
16493 IF NVL(p_source_21,'
16494 ') =  'N'
16495  THEN 
16496 
16497    --
16498    XLA_AE_LINES_PKG.SetNewLine;
16499 
16500    p_balance_type_code          := l_balance_type_code;
16501    -- set the flag so later we will know whether the gain loss line needs to be created
16502    
16503    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16504      p_actual_flag :='A';
16505    END IF;
16506 
16507    --
16508    -- bulk performance
16509    --
16510    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16511                                       p_header_num   => 0); -- 4262811
16512    --
16513    -- set accounting line options
16514    --
16515    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16516            p_natural_side_code          => 'D'
16517          , p_gain_or_loss_flag          => 'N'
16518          , p_gl_transfer_mode_code      => 'S'
16519          , p_acct_entry_type_code       => 'A'
16520          , p_switch_side_flag           => 'Y'
16521          , p_merge_duplicate_code       => 'N'
16522          );
16523    --
16524    l_acc_rev_natural_side_code := 'C';  -- 4262811
16525    -- 
16526    --
16527    -- set accounting line type info
16528    --
16529    xla_ae_lines_pkg.SetAcctLineType
16530       (p_component_type             => l_component_type
16531       ,p_event_type_code            => l_event_type_code
16535       ,p_accounting_line_type_code  => l_component_type_code
16532       ,p_line_definition_owner_code => l_line_definition_owner_code
16533       ,p_line_definition_code       => l_line_definition_code
16534       ,p_accounting_line_code       => l_component_code
16536       ,p_accounting_line_appl_id    => l_component_appl_id
16537       ,p_amb_context_code           => l_amb_context_code
16538       ,p_entity_code                => l_entity_code
16539       ,p_event_class_code           => l_event_class_code);
16540    --
16541    -- set accounting class
16542    --
16543    xla_ae_lines_pkg.SetAcctClass(
16544            p_accounting_class_code  => 'COST'
16545          , p_ae_header_id           => l_ae_header_id
16546          );
16547 
16548    --
16549    -- set rounding class
16550    --
16551    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16552                       'COST';
16553 
16554    --
16555    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16556    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16557    --
16558    -- bulk performance
16559    --
16560    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16561 
16562    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16563       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16564 
16565    -- 4955764
16566    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16567       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16568 
16569    -- 4458381 Public Sector Enh
16570    
16571    --
16572    -- set accounting attributes for the line type
16573    --
16574    l_entered_amt_idx := 22;
16575    l_accted_amt_idx  := 27;
16576    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16577    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16578    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
16579    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
16580    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
16581    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
16582    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
16583    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
16584    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
16585    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
16586    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
16587    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
16588    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
16589    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
16590    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
16591    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
16592    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
16593    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
16594    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
16595    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
16596    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
16597    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
16598    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
16599    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
16600    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
16601    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
16602    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
16603    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
16604    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
16605    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
16606    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
16607    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
16608    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
16609    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
16610    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
16611    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
16612    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
16613    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
16614    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
16615    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
16616    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
16617    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
16618    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
16619    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
16620    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
16621    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
16622    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
16623    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
16624    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
16625    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
16626    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
16627    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
16628    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
16629    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
16630    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
16631    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
16632    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
16633    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
16634    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
16638    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16635    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
16636    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
16637 
16639    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16640 
16641    ---------------------------------------------------------------------------------------------------------------
16642    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16643    ---------------------------------------------------------------------------------------------------------------
16644    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16645 
16646    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16647    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16648 
16649    IF xla_accounting_cache_pkg.GetValueChar
16650          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16651          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16652    AND l_bflow_method_code = 'PRIOR_ENTRY'
16653 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16654    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16655          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16656        )
16657    THEN
16658          xla_ae_lines_pkg.BflowUpgEntry
16659            (p_business_method_code    => l_bflow_method_code
16660            ,p_business_class_code     => l_bflow_class_code
16661            ,p_balance_type            => l_balance_type_code);
16662    ELSE
16663       NULL;
16664 -- No business flow processing for business flow method of NONE.
16665    END IF;
16666 
16667    --
16668    -- call analytical criteria
16669    --
16670    
16671    --
16672    -- call description
16673    --
16674    -- No description or it is inherited.
16675    --
16676    -- call ADRs
16677    -- Bug 4922099
16678    --
16679    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16680         (NVL(l_actual_upg_option, 'N') = 'O') OR
16681         (NVL(l_enc_upg_option, 'N') = 'O')
16682       )
16683    THEN
16684    NULL;
16685    --
16686    --
16687    
16688   l_ccid := AcctDerRule_3(
16689            p_application_id           => p_application_id
16690          , p_ae_header_id             => l_ae_header_id 
16691 , p_source_3 => p_source_3
16692 , p_source_4 => p_source_4
16693 , p_source_5 => p_source_5
16694          , x_transaction_coa_id       => l_adr_transaction_coa_id
16695          , x_accounting_coa_id        => l_adr_accounting_coa_id
16696          , x_value_type_code          => l_adr_value_type_code
16697          , p_side                     => 'NA'
16698    );
16699 
16700    xla_ae_lines_pkg.set_ccid(
16701     p_code_combination_id          => l_ccid
16702   , p_value_type_code              => l_adr_value_type_code
16703   , p_transaction_coa_id           => l_adr_transaction_coa_id
16704   , p_accounting_coa_id            => l_adr_accounting_coa_id
16705   , p_adr_code                     => 'PA_COST_ACCT_RULE'
16706   , p_adr_type_code                => 'S'
16707   , p_component_type               => l_component_type
16708   , p_component_code               => l_component_code
16709   , p_component_type_code          => l_component_type_code
16710   , p_component_appl_id            => l_component_appl_id
16711   , p_amb_context_code             => l_amb_context_code
16712   , p_side                         => 'NA'
16713   );
16714 
16715 
16716    --
16717    --
16718    END IF;
16719    --
16720    -- Bug 4922099
16721    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16722           (NVL(l_enc_upg_option, 'N') = 'O')
16723         ) AND
16724         (l_bflow_method_code = 'PRIOR_ENTRY')
16725       )
16726    THEN
16727       IF
16728       --
16729       1 = 2
16730       --
16731       THEN
16732       xla_accounting_err_pkg.build_message
16733                                     (p_appli_s_name            => 'XLA'
16734                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16735                                     ,p_token_1                 => 'LINE_NUMBER'
16736                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16737                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16738                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16739                                                                              l_component_type
16740                                                                             ,l_component_code
16741                                                                             ,l_component_type_code
16742                                                                             ,l_component_appl_id
16743                                                                             ,l_amb_context_code
16744                                                                             ,l_entity_code
16745                                                                             ,l_event_class_code
16746                                                                            )
16747                                     ,p_token_3                 => 'OWNER'
16748                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16749                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16750                                                                           ,p_lookup_code    => l_component_type_code
16751                                                                          )
16755                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16752                                     ,p_token_4                 => 'PRODUCT_NAME'
16753                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16754                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16756                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16757                                     ,p_ae_header_id            =>  NULL
16758                                        );
16759 
16760         IF (C_LEVEL_ERROR>= g_log_level) THEN
16761                  trace
16762                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16763                       ,p_level    => C_LEVEL_ERROR
16764                       ,p_module   => l_log_module);
16765         END IF;
16766       END IF;
16767    END IF;
16768    --
16769    --
16770    ------------------------------------------------------------------------------------------------
16771    -- 4219869 Business Flow
16772    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16773    -- Prior Entry.  Currently, the following code is always generated.
16774    ------------------------------------------------------------------------------------------------
16775    XLA_AE_LINES_PKG.ValidateCurrentLine;
16776 
16777    ------------------------------------------------------------------------------------
16778    -- 4219869 Business Flow
16779    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16780    ------------------------------------------------------------------------------------
16781    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16782 
16783    ----------------------------------------------------------------------------------
16784    -- 4219869 Business Flow
16785    -- Update journal entry status -- Need to generate this within IF <condition>
16786    ----------------------------------------------------------------------------------
16787    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16788          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16789          ,p_balance_type_code => l_balance_type_code
16790          );
16791 
16792    -------------------------------------------------------------------------------------------
16793    -- 4262811 - Generate the Accrual Reversal lines
16794    -------------------------------------------------------------------------------------------
16795    BEGIN
16796       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16797                               (g_array_event(p_event_id).array_value_num('header_index'));
16798       IF l_acc_rev_flag IS NULL THEN
16799          l_acc_rev_flag := 'N';
16800       END IF;
16801    EXCEPTION
16802       WHEN OTHERS THEN
16803          l_acc_rev_flag := 'N';
16804    END;
16805    --
16806    IF (l_acc_rev_flag = 'Y') THEN
16807 
16808        -- 4645092  ------------------------------------------------------------------------------
16809        -- To allow MPA report to determine if it should generate report process
16810        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16811        ------------------------------------------------------------------------------------------
16812 
16813        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16814        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16815 
16816        --
16817        -- Update the line information that should be overwritten
16818        --
16819        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16820                                          p_header_num   => 1);
16821        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16822 
16823        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16824 
16825        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16826           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16827        END IF;
16828 
16829       --
16830       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16831       --
16832       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16833           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16834       ELSE
16835           ---------------------------------------------------------------------------------------------------
16836           -- 4262811a Switch Sign
16837           ---------------------------------------------------------------------------------------------------
16838           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16839           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16840                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16841           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16842                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16843           -- 5132302
16844           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16845                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16846 
16847       END IF;
16848 
16849       -- 4955764
16850       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16851       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16852 
16853 
16854       XLA_AE_LINES_PKG.ValidateCurrentLine;
16855       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16859                ,p_balance_type_code => l_balance_type_code);
16856 
16857       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16858                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16860 
16861    END IF;
16862 
16863    -----------------------------------------------------------------------------------------
16864    -- 4262811 Multiperiod Accounting
16865    -----------------------------------------------------------------------------------------
16866      -- No MPA option is assigned.
16867 
16868 
16869 END IF;
16870 END IF;
16871 --
16872 
16873 --
16874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16875    trace
16876       (p_msg      => 'END of AcctLineType_44'
16877       ,p_level    => C_LEVEL_PROCEDURE
16878       ,p_module   => l_log_module);
16879 END IF;
16880 --
16881 EXCEPTION
16882   WHEN xla_exceptions_pkg.application_exception THEN
16883       RAISE;
16884   WHEN OTHERS THEN
16885        xla_exceptions_pkg.raise_message
16886            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_44');
16887 END AcctLineType_44;
16888 --
16889 
16890 ---------------------------------------
16891 --
16892 -- PRIVATE FUNCTION
16893 --         AcctLineType_45
16894 --
16895 ---------------------------------------
16896 PROCEDURE AcctLineType_45 (
16897   p_application_id        IN NUMBER
16898  ,p_event_id              IN NUMBER
16899  ,p_calculate_acctd_flag  IN VARCHAR2
16900  ,p_calculate_g_l_flag    IN VARCHAR2
16901  ,p_actual_flag           IN OUT VARCHAR2
16902  ,p_balance_type_code     OUT VARCHAR2
16903  ,p_gain_or_loss_ref      OUT VARCHAR2
16904  
16905 --Cost CCID
16906  , p_source_3            IN NUMBER
16907 --Allow Account Override Flag
16908  , p_source_4            IN VARCHAR2
16909 --Adjustment Cost CCID
16910  , p_source_5            IN NUMBER
16911 --Cost Clearing CCID
16912  , p_source_6            IN NUMBER
16913 --Reversing Line Flag
16914  , p_source_22            IN VARCHAR2
16915 --Actual Upgrade Credit Accounting Class
16916  , p_source_23            IN VARCHAR2
16917 --Entered Raw Cost
16918  , p_source_24            IN NUMBER
16919 --Entered Currency Code
16920  , p_source_25            IN VARCHAR2
16921 --Accounted Raw Cost
16922  , p_source_26            IN NUMBER
16923 --Exchange Rate Date
16924  , p_source_27            IN DATE
16925 --Exchange Rate
16926  , p_source_28            IN NUMBER
16927 --Exchange Rate Type
16928  , p_source_29            IN VARCHAR2
16929 --Actual Upgrade Debit Accounting Class
16930  , p_source_30            IN VARCHAR2
16931 --Use Actuals Upgrade Attributes Flag
16932  , p_source_31            IN VARCHAR2
16933 --Expenditure Item ID
16934  , p_source_32            IN NUMBER
16935 --Cost Distribution Line Number
16936  , p_source_33            IN NUMBER
16937 --Line Type
16938  , p_source_34            IN VARCHAR2
16939  , p_source_34_meaning    IN VARCHAR2
16940 --Reversed Line Number
16941  , p_source_35            IN NUMBER
16942 )
16943 IS
16944 
16945 l_component_type              VARCHAR2(80);
16946 l_component_code              VARCHAR2(30);
16947 l_component_type_code         VARCHAR2(1);
16948 l_component_appl_id           INTEGER;
16949 l_amb_context_code            VARCHAR2(30);
16950 l_entity_code                 VARCHAR2(30);
16951 l_event_class_code            VARCHAR2(30);
16952 l_ae_header_id                NUMBER;
16953 l_event_type_code             VARCHAR2(30);
16954 l_line_definition_code        VARCHAR2(30);
16955 l_line_definition_owner_code  VARCHAR2(1);
16956 --
16957 -- adr variables
16958 l_segment                     VARCHAR2(30);
16959 l_ccid                        NUMBER;
16960 l_adr_transaction_coa_id      NUMBER;
16961 l_adr_accounting_coa_id       NUMBER;
16962 l_adr_flexfield_segment_code  VARCHAR2(30);
16963 l_adr_flex_value_set_id       NUMBER;
16964 l_adr_value_type_code         VARCHAR2(30);
16965 l_adr_value_combination_id    NUMBER;
16966 l_adr_value_segment_code      VARCHAR2(30);
16967 
16968 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16969 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16970 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16971 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16972 
16973 -- 4262811 Variables ------------------------------------------------------------------------------------------
16974 l_entered_amt_idx             NUMBER;
16975 l_accted_amt_idx              NUMBER;
16976 l_acc_rev_flag                VARCHAR2(1);
16977 l_accrual_line_num            NUMBER;
16978 l_tmp_amt                     NUMBER;
16979 l_acc_rev_natural_side_code   VARCHAR2(1);
16980 
16981 l_num_entries                 NUMBER;
16982 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16983 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16984 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16985 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16986 l_recog_line_1                NUMBER;
16987 l_recog_line_2                NUMBER;
16988 
16989 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16990 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16991 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16992 
16993 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16994 
16995 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16996 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16997 
17001 --
16998 ---------------------------------------------------------------------------------------------------------------
16999 
17000 
17002 -- bulk performance
17003 --
17004 l_balance_type_code           VARCHAR2(1);
17005 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17006 l_log_module                  VARCHAR2(240);
17007 
17008 --
17009 -- Upgrade strategy
17010 --
17011 l_actual_upg_option           VARCHAR2(1);
17012 l_enc_upg_option           VARCHAR2(1);
17013 
17014 --
17015 BEGIN
17016 --
17017 IF g_log_enabled THEN
17018       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
17019 END IF;
17020 --
17021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17022 
17023       trace
17024          (p_msg      => 'BEGIN of AcctLineType_45'
17025          ,p_level    => C_LEVEL_PROCEDURE
17026          ,p_module   => l_log_module);
17027 
17028 END IF;
17029 --
17030 l_component_type             := 'AMB_JLT';
17031 l_component_code             := 'PA_RAW_COST';
17032 l_component_type_code        := 'S';
17033 l_component_appl_id          :=  275;
17034 l_amb_context_code           := 'DEFAULT';
17035 l_entity_code                := 'EXPENDITURES';
17036 l_event_class_code           := 'LABOR_COST';
17037 l_event_type_code            := 'LABOR_COST_ALL';
17038 l_line_definition_owner_code := 'S';
17039 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
17040 --
17041 l_balance_type_code          := 'A';
17042 l_segment                     := NULL;
17043 l_ccid                        := NULL;
17044 l_adr_transaction_coa_id      := NULL;
17045 l_adr_accounting_coa_id       := NULL;
17046 l_adr_flexfield_segment_code  := NULL;
17047 l_adr_flex_value_set_id       := NULL;
17048 l_adr_value_type_code         := NULL;
17049 l_adr_value_combination_id    := NULL;
17050 l_adr_value_segment_code      := NULL;
17051 
17052 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17053 l_bflow_class_code           := '';    -- 4219869 Business Flow
17054 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17055 l_budgetary_control_flag     := 'N';
17056 
17057 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17058 l_bflow_applied_to_amt       := NULL; -- 5132302
17059 l_entered_amt_idx            := NULL;          -- 4262811
17060 l_accted_amt_idx             := NULL;          -- 4262811
17061 l_acc_rev_flag               := NULL;          -- 4262811
17062 l_accrual_line_num           := NULL;          -- 4262811
17063 l_tmp_amt                    := NULL;          -- 4262811
17064 --
17065  
17066 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17067     l_balance_type_code <> 'B' THEN
17068 
17069    --
17070    XLA_AE_LINES_PKG.SetNewLine;
17071 
17072    p_balance_type_code          := l_balance_type_code;
17073    -- set the flag so later we will know whether the gain loss line needs to be created
17074    
17075    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17076      p_actual_flag :='A';
17077    END IF;
17078 
17079    --
17080    -- bulk performance
17081    --
17082    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17083                                       p_header_num   => 0); -- 4262811
17084    --
17085    -- set accounting line options
17086    --
17087    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17088            p_natural_side_code          => 'D'
17089          , p_gain_or_loss_flag          => 'N'
17090          , p_gl_transfer_mode_code      => 'S'
17091          , p_acct_entry_type_code       => 'A'
17092          , p_switch_side_flag           => 'Y'
17093          , p_merge_duplicate_code       => 'N'
17094          );
17095    --
17096    l_acc_rev_natural_side_code := 'C';  -- 4262811
17097    -- 
17098    --
17099    -- set accounting line type info
17100    --
17101    xla_ae_lines_pkg.SetAcctLineType
17102       (p_component_type             => l_component_type
17103       ,p_event_type_code            => l_event_type_code
17104       ,p_line_definition_owner_code => l_line_definition_owner_code
17105       ,p_line_definition_code       => l_line_definition_code
17106       ,p_accounting_line_code       => l_component_code
17107       ,p_accounting_line_type_code  => l_component_type_code
17108       ,p_accounting_line_appl_id    => l_component_appl_id
17109       ,p_amb_context_code           => l_amb_context_code
17110       ,p_entity_code                => l_entity_code
17111       ,p_event_class_code           => l_event_class_code);
17112    --
17113    -- set accounting class
17114    --
17115    xla_ae_lines_pkg.SetAcctClass(
17116            p_accounting_class_code  => 'COST'
17117          , p_ae_header_id           => l_ae_header_id
17118          );
17119 
17120    --
17121    -- set rounding class
17122    --
17123    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17124                       'COST';
17125 
17126    --
17127    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17128    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17129    --
17130    -- bulk performance
17131    --
17132    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17133 
17134    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17135       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17136 
17137    -- 4955764
17138    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17139       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17140 
17144    -- set accounting attributes for the line type
17141    -- 4458381 Public Sector Enh
17142    
17143    --
17145    --
17146    l_entered_amt_idx := 22;
17147    l_accted_amt_idx  := 27;
17148    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17149    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
17150    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
17151    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
17152    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
17153    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
17154    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
17155    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
17156    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
17157    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
17158    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
17159    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
17160    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
17161    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
17162    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
17163    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
17164    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
17165    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
17166    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
17167    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
17168    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
17169    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
17170    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
17171    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
17172    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
17173    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
17174    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
17175    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
17176    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
17177    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
17178    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
17179    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
17180    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
17181    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
17182    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
17183    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
17184    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
17185    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
17186    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
17187    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
17188    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
17189    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
17190    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
17191    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
17192    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
17193    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
17194    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
17195    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
17196    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
17197    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
17198    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
17199    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
17200    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
17201    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
17202    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
17203    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
17204    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
17205    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
17206    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
17207    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
17208    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
17209 
17210    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17211    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17212 
17213    ---------------------------------------------------------------------------------------------------------------
17214    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17215    ---------------------------------------------------------------------------------------------------------------
17216    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17217 
17218    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17219    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17220 
17221    IF xla_accounting_cache_pkg.GetValueChar
17222          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17223          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17224    AND l_bflow_method_code = 'PRIOR_ENTRY'
17225 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17226    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17227          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17228        )
17229    THEN
17230          xla_ae_lines_pkg.BflowUpgEntry
17231            (p_business_method_code    => l_bflow_method_code
17232            ,p_business_class_code     => l_bflow_class_code
17233            ,p_balance_type            => l_balance_type_code);
17234    ELSE
17235       NULL;
17239    --
17236 -- No business flow processing for business flow method of NONE.
17237    END IF;
17238 
17240    -- call analytical criteria
17241    --
17242    
17243    --
17244    -- call description
17245    --
17246    -- No description or it is inherited.
17247    --
17248    -- call ADRs
17249    -- Bug 4922099
17250    --
17251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17252         (NVL(l_actual_upg_option, 'N') = 'O') OR
17253         (NVL(l_enc_upg_option, 'N') = 'O')
17254       )
17255    THEN
17256    NULL;
17257    --
17258    --
17259    
17260   l_ccid := AcctDerRule_3(
17261            p_application_id           => p_application_id
17262          , p_ae_header_id             => l_ae_header_id 
17263 , p_source_3 => p_source_3
17264 , p_source_4 => p_source_4
17265 , p_source_5 => p_source_5
17266          , x_transaction_coa_id       => l_adr_transaction_coa_id
17267          , x_accounting_coa_id        => l_adr_accounting_coa_id
17268          , x_value_type_code          => l_adr_value_type_code
17269          , p_side                     => 'NA'
17270    );
17271 
17272    xla_ae_lines_pkg.set_ccid(
17273     p_code_combination_id          => l_ccid
17274   , p_value_type_code              => l_adr_value_type_code
17275   , p_transaction_coa_id           => l_adr_transaction_coa_id
17276   , p_accounting_coa_id            => l_adr_accounting_coa_id
17277   , p_adr_code                     => 'PA_COST_ACCT_RULE'
17278   , p_adr_type_code                => 'S'
17279   , p_component_type               => l_component_type
17280   , p_component_code               => l_component_code
17281   , p_component_type_code          => l_component_type_code
17282   , p_component_appl_id            => l_component_appl_id
17283   , p_amb_context_code             => l_amb_context_code
17284   , p_side                         => 'NA'
17285   );
17286 
17287 
17288    --
17289    --
17290    END IF;
17291    --
17292    -- Bug 4922099
17293    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17294           (NVL(l_enc_upg_option, 'N') = 'O')
17295         ) AND
17296         (l_bflow_method_code = 'PRIOR_ENTRY')
17297       )
17298    THEN
17299       IF
17300       --
17301       1 = 2
17302       --
17303       THEN
17304       xla_accounting_err_pkg.build_message
17305                                     (p_appli_s_name            => 'XLA'
17306                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17307                                     ,p_token_1                 => 'LINE_NUMBER'
17308                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17309                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17310                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17311                                                                              l_component_type
17312                                                                             ,l_component_code
17313                                                                             ,l_component_type_code
17314                                                                             ,l_component_appl_id
17315                                                                             ,l_amb_context_code
17316                                                                             ,l_entity_code
17317                                                                             ,l_event_class_code
17318                                                                            )
17319                                     ,p_token_3                 => 'OWNER'
17320                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17321                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17322                                                                           ,p_lookup_code    => l_component_type_code
17323                                                                          )
17324                                     ,p_token_4                 => 'PRODUCT_NAME'
17325                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17326                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17327                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17328                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17329                                     ,p_ae_header_id            =>  NULL
17330                                        );
17331 
17332         IF (C_LEVEL_ERROR>= g_log_level) THEN
17333                  trace
17334                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17335                       ,p_level    => C_LEVEL_ERROR
17336                       ,p_module   => l_log_module);
17337         END IF;
17338       END IF;
17339    END IF;
17340    --
17341    --
17342    ------------------------------------------------------------------------------------------------
17343    -- 4219869 Business Flow
17344    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17345    -- Prior Entry.  Currently, the following code is always generated.
17346    ------------------------------------------------------------------------------------------------
17347    XLA_AE_LINES_PKG.ValidateCurrentLine;
17348 
17349    ------------------------------------------------------------------------------------
17350    -- 4219869 Business Flow
17351    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17352    ------------------------------------------------------------------------------------
17353    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17357    -- Update journal entry status -- Need to generate this within IF <condition>
17354 
17355    ----------------------------------------------------------------------------------
17356    -- 4219869 Business Flow
17358    ----------------------------------------------------------------------------------
17359    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17360          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17361          ,p_balance_type_code => l_balance_type_code
17362          );
17363 
17364    -------------------------------------------------------------------------------------------
17365    -- 4262811 - Generate the Accrual Reversal lines
17366    -------------------------------------------------------------------------------------------
17367    BEGIN
17368       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17369                               (g_array_event(p_event_id).array_value_num('header_index'));
17370       IF l_acc_rev_flag IS NULL THEN
17371          l_acc_rev_flag := 'N';
17372       END IF;
17373    EXCEPTION
17374       WHEN OTHERS THEN
17375          l_acc_rev_flag := 'N';
17376    END;
17377    --
17378    IF (l_acc_rev_flag = 'Y') THEN
17379 
17380        -- 4645092  ------------------------------------------------------------------------------
17381        -- To allow MPA report to determine if it should generate report process
17382        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17383        ------------------------------------------------------------------------------------------
17384 
17385        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17386        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17387 
17388        --
17389        -- Update the line information that should be overwritten
17390        --
17391        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17392                                          p_header_num   => 1);
17393        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17394 
17395        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17396 
17397        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17398           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17399        END IF;
17400 
17401       --
17402       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17403       --
17404       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17405           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17406       ELSE
17407           ---------------------------------------------------------------------------------------------------
17408           -- 4262811a Switch Sign
17409           ---------------------------------------------------------------------------------------------------
17410           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17411           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17412                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17413           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17414                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17415           -- 5132302
17416           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17417                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17418 
17419       END IF;
17420 
17421       -- 4955764
17422       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17423       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17424 
17425 
17426       XLA_AE_LINES_PKG.ValidateCurrentLine;
17427       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17428 
17429       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17430                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17431                ,p_balance_type_code => l_balance_type_code);
17432 
17433    END IF;
17434 
17435    -----------------------------------------------------------------------------------------
17436    -- 4262811 Multiperiod Accounting
17437    -----------------------------------------------------------------------------------------
17438      -- No MPA option is assigned.
17439 
17440 
17441 END IF;
17442 --
17443 
17444 --
17445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17446    trace
17447       (p_msg      => 'END of AcctLineType_45'
17448       ,p_level    => C_LEVEL_PROCEDURE
17449       ,p_module   => l_log_module);
17450 END IF;
17451 --
17452 EXCEPTION
17453   WHEN xla_exceptions_pkg.application_exception THEN
17454       RAISE;
17455   WHEN OTHERS THEN
17456        xla_exceptions_pkg.raise_message
17457            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_45');
17458 END AcctLineType_45;
17459 --
17460 
17461 ---------------------------------------
17462 --
17463 -- PRIVATE FUNCTION
17464 --         AcctLineType_46
17465 --
17466 ---------------------------------------
17467 PROCEDURE AcctLineType_46 (
17468   p_application_id        IN NUMBER
17469  ,p_event_id              IN NUMBER
17470  ,p_calculate_acctd_flag  IN VARCHAR2
17471  ,p_calculate_g_l_flag    IN VARCHAR2
17472  ,p_actual_flag           IN OUT VARCHAR2
17473  ,p_balance_type_code     OUT VARCHAR2
17474  ,p_gain_or_loss_ref      OUT VARCHAR2
17475  
17476 --Cost CCID
17477  , p_source_3            IN NUMBER
17481  , p_source_5            IN NUMBER
17478 --Allow Account Override Flag
17479  , p_source_4            IN VARCHAR2
17480 --Adjustment Cost CCID
17482 --Cost Clearing CCID
17483  , p_source_6            IN NUMBER
17484 --Reversing Line Flag
17485  , p_source_22            IN VARCHAR2
17486 --Actual Upgrade Credit Accounting Class
17487  , p_source_23            IN VARCHAR2
17488 --Entered Raw Cost
17489  , p_source_24            IN NUMBER
17490 --Entered Currency Code
17491  , p_source_25            IN VARCHAR2
17492 --Accounted Raw Cost
17493  , p_source_26            IN NUMBER
17494 --Exchange Rate Date
17495  , p_source_27            IN DATE
17496 --Exchange Rate
17497  , p_source_28            IN NUMBER
17498 --Exchange Rate Type
17499  , p_source_29            IN VARCHAR2
17500 --Actual Upgrade Debit Accounting Class
17501  , p_source_30            IN VARCHAR2
17502 --Use Actuals Upgrade Attributes Flag
17503  , p_source_31            IN VARCHAR2
17504 --Expenditure Item ID
17505  , p_source_32            IN NUMBER
17506 --Cost Distribution Line Number
17507  , p_source_33            IN NUMBER
17508 --Line Type
17509  , p_source_34            IN VARCHAR2
17510  , p_source_34_meaning    IN VARCHAR2
17511 --Reversed Line Number
17512  , p_source_35            IN NUMBER
17513 --Project Number
17514  , p_source_68            IN VARCHAR2
17515 )
17516 IS
17517 
17518 l_component_type              VARCHAR2(80);
17519 l_component_code              VARCHAR2(30);
17520 l_component_type_code         VARCHAR2(1);
17521 l_component_appl_id           INTEGER;
17522 l_amb_context_code            VARCHAR2(30);
17523 l_entity_code                 VARCHAR2(30);
17524 l_event_class_code            VARCHAR2(30);
17525 l_ae_header_id                NUMBER;
17526 l_event_type_code             VARCHAR2(30);
17527 l_line_definition_code        VARCHAR2(30);
17528 l_line_definition_owner_code  VARCHAR2(1);
17529 --
17530 -- adr variables
17531 l_segment                     VARCHAR2(30);
17532 l_ccid                        NUMBER;
17533 l_adr_transaction_coa_id      NUMBER;
17534 l_adr_accounting_coa_id       NUMBER;
17535 l_adr_flexfield_segment_code  VARCHAR2(30);
17536 l_adr_flex_value_set_id       NUMBER;
17537 l_adr_value_type_code         VARCHAR2(30);
17538 l_adr_value_combination_id    NUMBER;
17539 l_adr_value_segment_code      VARCHAR2(30);
17540 
17541 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17542 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17543 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17544 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17545 
17546 -- 4262811 Variables ------------------------------------------------------------------------------------------
17547 l_entered_amt_idx             NUMBER;
17548 l_accted_amt_idx              NUMBER;
17549 l_acc_rev_flag                VARCHAR2(1);
17550 l_accrual_line_num            NUMBER;
17551 l_tmp_amt                     NUMBER;
17552 l_acc_rev_natural_side_code   VARCHAR2(1);
17553 
17554 l_num_entries                 NUMBER;
17555 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17556 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17557 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17558 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17559 l_recog_line_1                NUMBER;
17560 l_recog_line_2                NUMBER;
17561 
17562 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17563 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17564 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17565 
17566 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17567 
17568 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17569 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17570 
17571 ---------------------------------------------------------------------------------------------------------------
17572 
17573 
17574 --
17575 -- bulk performance
17576 --
17577 l_balance_type_code           VARCHAR2(1);
17578 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17579 l_log_module                  VARCHAR2(240);
17580 
17581 --
17582 -- Upgrade strategy
17583 --
17584 l_actual_upg_option           VARCHAR2(1);
17585 l_enc_upg_option           VARCHAR2(1);
17586 
17587 --
17588 BEGIN
17589 --
17590 IF g_log_enabled THEN
17591       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
17592 END IF;
17593 --
17594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17595 
17596       trace
17597          (p_msg      => 'BEGIN of AcctLineType_46'
17598          ,p_level    => C_LEVEL_PROCEDURE
17599          ,p_module   => l_log_module);
17600 
17601 END IF;
17602 --
17603 l_component_type             := 'AMB_JLT';
17604 l_component_code             := 'PA_RAW_COST';
17605 l_component_type_code        := 'S';
17606 l_component_appl_id          :=  275;
17607 l_amb_context_code           := 'DEFAULT';
17608 l_entity_code                := 'EXPENDITURES';
17609 l_event_class_code           := 'MISC_COST';
17610 l_event_type_code            := 'MISC_COST_ALL';
17611 l_line_definition_owner_code := 'S';
17612 l_line_definition_code       := 'JA_CN_PA_ACCRUAL_MIS_COST';
17613 --
17614 l_balance_type_code          := 'A';
17615 l_segment                     := NULL;
17616 l_ccid                        := NULL;
17617 l_adr_transaction_coa_id      := NULL;
17618 l_adr_accounting_coa_id       := NULL;
17619 l_adr_flexfield_segment_code  := NULL;
17620 l_adr_flex_value_set_id       := NULL;
17624 
17621 l_adr_value_type_code         := NULL;
17622 l_adr_value_combination_id    := NULL;
17623 l_adr_value_segment_code      := NULL;
17625 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17626 l_bflow_class_code           := '';    -- 4219869 Business Flow
17627 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17628 l_budgetary_control_flag     := 'N';
17629 
17630 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17631 l_bflow_applied_to_amt       := NULL; -- 5132302
17632 l_entered_amt_idx            := NULL;          -- 4262811
17633 l_accted_amt_idx             := NULL;          -- 4262811
17634 l_acc_rev_flag               := NULL;          -- 4262811
17635 l_accrual_line_num           := NULL;          -- 4262811
17636 l_tmp_amt                    := NULL;          -- 4262811
17637 --
17638  
17639 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17640     l_balance_type_code <> 'B' THEN
17641 
17642    --
17643    XLA_AE_LINES_PKG.SetNewLine;
17644 
17645    p_balance_type_code          := l_balance_type_code;
17646    -- set the flag so later we will know whether the gain loss line needs to be created
17647    
17648    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17649      p_actual_flag :='A';
17650    END IF;
17651 
17652    --
17653    -- bulk performance
17654    --
17655    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17656                                       p_header_num   => 0); -- 4262811
17657    --
17658    -- set accounting line options
17659    --
17660    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17661            p_natural_side_code          => 'D'
17662          , p_gain_or_loss_flag          => 'N'
17663          , p_gl_transfer_mode_code      => 'S'
17664          , p_acct_entry_type_code       => 'A'
17665          , p_switch_side_flag           => 'Y'
17666          , p_merge_duplicate_code       => 'N'
17667          );
17668    --
17669    l_acc_rev_natural_side_code := 'C';  -- 4262811
17670    -- 
17671    --
17672    -- set accounting line type info
17673    --
17674    xla_ae_lines_pkg.SetAcctLineType
17675       (p_component_type             => l_component_type
17676       ,p_event_type_code            => l_event_type_code
17677       ,p_line_definition_owner_code => l_line_definition_owner_code
17678       ,p_line_definition_code       => l_line_definition_code
17679       ,p_accounting_line_code       => l_component_code
17680       ,p_accounting_line_type_code  => l_component_type_code
17681       ,p_accounting_line_appl_id    => l_component_appl_id
17682       ,p_amb_context_code           => l_amb_context_code
17683       ,p_entity_code                => l_entity_code
17684       ,p_event_class_code           => l_event_class_code);
17685    --
17686    -- set accounting class
17687    --
17688    xla_ae_lines_pkg.SetAcctClass(
17689            p_accounting_class_code  => 'COST'
17690          , p_ae_header_id           => l_ae_header_id
17691          );
17692 
17693    --
17694    -- set rounding class
17695    --
17696    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17697                       'COST';
17698 
17699    --
17700    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17701    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17702    --
17703    -- bulk performance
17704    --
17705    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17706 
17707    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17708       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17709 
17710    -- 4955764
17711    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17712       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17713 
17714    -- 4458381 Public Sector Enh
17715    
17716    --
17717    -- set accounting attributes for the line type
17718    --
17719    l_entered_amt_idx := 22;
17720    l_accted_amt_idx  := 27;
17721    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17722    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
17723    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
17724    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
17725    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
17726    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
17727    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
17728    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
17729    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
17730    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
17731    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
17732    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
17733    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
17734    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
17735    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
17736    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
17737    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
17738    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
17739    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
17740    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
17741    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
17742    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
17743    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
17744    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
17748    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
17745    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
17746    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
17747    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
17749    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
17750    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
17751    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
17752    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
17753    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
17754    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
17755    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
17756    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
17757    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
17758    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
17759    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
17760    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
17761    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
17762    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
17763    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
17764    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
17765    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
17766    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
17767    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
17768    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
17769    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
17770    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
17771    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
17772    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
17773    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
17774    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
17775    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
17776    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
17777    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
17778    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
17779    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
17780    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
17781    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
17782 
17783    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17784    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17785 
17786    ---------------------------------------------------------------------------------------------------------------
17787    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17788    ---------------------------------------------------------------------------------------------------------------
17789    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17790 
17791    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17792    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17793 
17794    IF xla_accounting_cache_pkg.GetValueChar
17795          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17796          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17797    AND l_bflow_method_code = 'PRIOR_ENTRY'
17798 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17799    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17800          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17801        )
17802    THEN
17803          xla_ae_lines_pkg.BflowUpgEntry
17804            (p_business_method_code    => l_bflow_method_code
17805            ,p_business_class_code     => l_bflow_class_code
17806            ,p_balance_type            => l_balance_type_code);
17807    ELSE
17808       NULL;
17809 -- No business flow processing for business flow method of NONE.
17810    END IF;
17811 
17812    --
17813    -- call analytical criteria
17814    --
17815    
17816 
17817 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
17818 xla_ae_lines_pkg.SetAnalyticalCriteria(
17819    p_analytical_criterion_name    => 'Project Number'
17820  , p_analytical_criterion_owner   => 'S'
17821  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
17822  , p_amb_context_code             => 'DEFAULT'
17823  , p_balancing_flag               => 'N'
17824  
17825  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_68)
17826  , p_analytical_detail_num_1     =>  NULL
17827  , p_analytical_detail_date_1    =>  NULL
17828 
17829  , p_ae_header_id                 => l_ae_header_id
17830 )
17831 ;
17832 --
17833 
17834    --
17835    -- call description
17836    --
17837    -- No description or it is inherited.
17838    --
17839    -- call ADRs
17840    -- Bug 4922099
17841    --
17842    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17843         (NVL(l_actual_upg_option, 'N') = 'O') OR
17844         (NVL(l_enc_upg_option, 'N') = 'O')
17845       )
17846    THEN
17847    NULL;
17848    --
17849    --
17850    
17851   l_ccid := AcctDerRule_3(
17852            p_application_id           => p_application_id
17853          , p_ae_header_id             => l_ae_header_id 
17854 , p_source_3 => p_source_3
17855 , p_source_4 => p_source_4
17856 , p_source_5 => p_source_5
17857          , x_transaction_coa_id       => l_adr_transaction_coa_id
17858          , x_accounting_coa_id        => l_adr_accounting_coa_id
17859          , x_value_type_code          => l_adr_value_type_code
17860          , p_side                     => 'NA'
17864     p_code_combination_id          => l_ccid
17861    );
17862 
17863    xla_ae_lines_pkg.set_ccid(
17865   , p_value_type_code              => l_adr_value_type_code
17866   , p_transaction_coa_id           => l_adr_transaction_coa_id
17867   , p_accounting_coa_id            => l_adr_accounting_coa_id
17868   , p_adr_code                     => 'PA_COST_ACCT_RULE'
17869   , p_adr_type_code                => 'S'
17870   , p_component_type               => l_component_type
17871   , p_component_code               => l_component_code
17872   , p_component_type_code          => l_component_type_code
17873   , p_component_appl_id            => l_component_appl_id
17874   , p_amb_context_code             => l_amb_context_code
17875   , p_side                         => 'NA'
17876   );
17877 
17878 
17879    --
17880    --
17881    END IF;
17882    --
17883    -- Bug 4922099
17884    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17885           (NVL(l_enc_upg_option, 'N') = 'O')
17886         ) AND
17887         (l_bflow_method_code = 'PRIOR_ENTRY')
17888       )
17889    THEN
17890       IF
17891       --
17892       1 = 2
17893       --
17894       THEN
17895       xla_accounting_err_pkg.build_message
17896                                     (p_appli_s_name            => 'XLA'
17897                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17898                                     ,p_token_1                 => 'LINE_NUMBER'
17899                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17900                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17901                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17902                                                                              l_component_type
17903                                                                             ,l_component_code
17904                                                                             ,l_component_type_code
17905                                                                             ,l_component_appl_id
17906                                                                             ,l_amb_context_code
17907                                                                             ,l_entity_code
17908                                                                             ,l_event_class_code
17909                                                                            )
17910                                     ,p_token_3                 => 'OWNER'
17911                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17912                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17913                                                                           ,p_lookup_code    => l_component_type_code
17914                                                                          )
17915                                     ,p_token_4                 => 'PRODUCT_NAME'
17916                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17917                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17918                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17919                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17920                                     ,p_ae_header_id            =>  NULL
17921                                        );
17922 
17923         IF (C_LEVEL_ERROR>= g_log_level) THEN
17924                  trace
17925                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17926                       ,p_level    => C_LEVEL_ERROR
17927                       ,p_module   => l_log_module);
17928         END IF;
17929       END IF;
17930    END IF;
17931    --
17932    --
17933    ------------------------------------------------------------------------------------------------
17934    -- 4219869 Business Flow
17935    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17936    -- Prior Entry.  Currently, the following code is always generated.
17937    ------------------------------------------------------------------------------------------------
17938    XLA_AE_LINES_PKG.ValidateCurrentLine;
17939 
17940    ------------------------------------------------------------------------------------
17941    -- 4219869 Business Flow
17942    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17943    ------------------------------------------------------------------------------------
17944    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17945 
17946    ----------------------------------------------------------------------------------
17947    -- 4219869 Business Flow
17948    -- Update journal entry status -- Need to generate this within IF <condition>
17949    ----------------------------------------------------------------------------------
17950    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17951          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17952          ,p_balance_type_code => l_balance_type_code
17953          );
17954 
17955    -------------------------------------------------------------------------------------------
17956    -- 4262811 - Generate the Accrual Reversal lines
17957    -------------------------------------------------------------------------------------------
17958    BEGIN
17959       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17960                               (g_array_event(p_event_id).array_value_num('header_index'));
17961       IF l_acc_rev_flag IS NULL THEN
17962          l_acc_rev_flag := 'N';
17963       END IF;
17964    EXCEPTION
17965       WHEN OTHERS THEN
17966          l_acc_rev_flag := 'N';
17970 
17967    END;
17968    --
17969    IF (l_acc_rev_flag = 'Y') THEN
17971        -- 4645092  ------------------------------------------------------------------------------
17972        -- To allow MPA report to determine if it should generate report process
17973        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17974        ------------------------------------------------------------------------------------------
17975 
17976        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17977        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17978 
17979        --
17980        -- Update the line information that should be overwritten
17981        --
17982        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17983                                          p_header_num   => 1);
17984        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17985 
17986        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17987 
17988        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17989           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17990        END IF;
17991 
17992       --
17993       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17994       --
17995       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17996           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17997       ELSE
17998           ---------------------------------------------------------------------------------------------------
17999           -- 4262811a Switch Sign
18000           ---------------------------------------------------------------------------------------------------
18001           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18002           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18003                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18004           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18005                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18006           -- 5132302
18007           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18008                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18009 
18010       END IF;
18011 
18012       -- 4955764
18013       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18015 
18016 
18017       XLA_AE_LINES_PKG.ValidateCurrentLine;
18018       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18019 
18020       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18021                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18022                ,p_balance_type_code => l_balance_type_code);
18023 
18024    END IF;
18025 
18026    -----------------------------------------------------------------------------------------
18027    -- 4262811 Multiperiod Accounting
18028    -----------------------------------------------------------------------------------------
18029      -- No MPA option is assigned.
18030 
18031 
18032 END IF;
18033 --
18034 
18035 --
18036 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18037    trace
18038       (p_msg      => 'END of AcctLineType_46'
18039       ,p_level    => C_LEVEL_PROCEDURE
18040       ,p_module   => l_log_module);
18041 END IF;
18042 --
18043 EXCEPTION
18044   WHEN xla_exceptions_pkg.application_exception THEN
18045       RAISE;
18046   WHEN OTHERS THEN
18047        xla_exceptions_pkg.raise_message
18048            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_46');
18049 END AcctLineType_46;
18050 --
18051 
18052 ---------------------------------------
18053 --
18054 -- PRIVATE FUNCTION
18055 --         AcctLineType_47
18056 --
18057 ---------------------------------------
18058 PROCEDURE AcctLineType_47 (
18059   p_application_id        IN NUMBER
18060  ,p_event_id              IN NUMBER
18061  ,p_calculate_acctd_flag  IN VARCHAR2
18062  ,p_calculate_g_l_flag    IN VARCHAR2
18063  ,p_actual_flag           IN OUT VARCHAR2
18064  ,p_balance_type_code     OUT VARCHAR2
18065  ,p_gain_or_loss_ref      OUT VARCHAR2
18066  
18067 --Cost CCID
18068  , p_source_3            IN NUMBER
18069 --Allow Account Override Flag
18070  , p_source_4            IN VARCHAR2
18071 --Adjustment Cost CCID
18072  , p_source_5            IN NUMBER
18073 --Cost Clearing CCID
18074  , p_source_6            IN NUMBER
18075 --Exchange Rate Variance Flag
18076  , p_source_21            IN VARCHAR2
18077 --Reversing Line Flag
18078  , p_source_22            IN VARCHAR2
18079 --Actual Upgrade Credit Accounting Class
18080  , p_source_23            IN VARCHAR2
18081 --Entered Raw Cost
18082  , p_source_24            IN NUMBER
18083 --Entered Currency Code
18084  , p_source_25            IN VARCHAR2
18085 --Accounted Raw Cost
18086  , p_source_26            IN NUMBER
18087 --Exchange Rate Date
18088  , p_source_27            IN DATE
18089 --Exchange Rate
18090  , p_source_28            IN NUMBER
18091 --Exchange Rate Type
18092  , p_source_29            IN VARCHAR2
18093 --Actual Upgrade Debit Accounting Class
18094  , p_source_30            IN VARCHAR2
18095 --Use Actuals Upgrade Attributes Flag
18096  , p_source_31            IN VARCHAR2
18097 --Expenditure Item ID
18098  , p_source_32            IN NUMBER
18102  , p_source_34            IN VARCHAR2
18099 --Cost Distribution Line Number
18100  , p_source_33            IN NUMBER
18101 --Line Type
18103  , p_source_34_meaning    IN VARCHAR2
18104 --Reversed Line Number
18105  , p_source_35            IN NUMBER
18106 )
18107 IS
18108 
18109 l_component_type              VARCHAR2(80);
18110 l_component_code              VARCHAR2(30);
18111 l_component_type_code         VARCHAR2(1);
18112 l_component_appl_id           INTEGER;
18113 l_amb_context_code            VARCHAR2(30);
18114 l_entity_code                 VARCHAR2(30);
18115 l_event_class_code            VARCHAR2(30);
18116 l_ae_header_id                NUMBER;
18117 l_event_type_code             VARCHAR2(30);
18118 l_line_definition_code        VARCHAR2(30);
18119 l_line_definition_owner_code  VARCHAR2(1);
18120 --
18121 -- adr variables
18122 l_segment                     VARCHAR2(30);
18123 l_ccid                        NUMBER;
18124 l_adr_transaction_coa_id      NUMBER;
18125 l_adr_accounting_coa_id       NUMBER;
18126 l_adr_flexfield_segment_code  VARCHAR2(30);
18127 l_adr_flex_value_set_id       NUMBER;
18128 l_adr_value_type_code         VARCHAR2(30);
18129 l_adr_value_combination_id    NUMBER;
18130 l_adr_value_segment_code      VARCHAR2(30);
18131 
18132 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18133 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18134 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18135 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18136 
18137 -- 4262811 Variables ------------------------------------------------------------------------------------------
18138 l_entered_amt_idx             NUMBER;
18139 l_accted_amt_idx              NUMBER;
18140 l_acc_rev_flag                VARCHAR2(1);
18141 l_accrual_line_num            NUMBER;
18142 l_tmp_amt                     NUMBER;
18143 l_acc_rev_natural_side_code   VARCHAR2(1);
18144 
18145 l_num_entries                 NUMBER;
18146 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18147 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18148 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18149 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18150 l_recog_line_1                NUMBER;
18151 l_recog_line_2                NUMBER;
18152 
18153 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18154 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18155 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18156 
18157 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18158 
18159 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18160 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18161 
18162 ---------------------------------------------------------------------------------------------------------------
18163 
18164 
18165 --
18166 -- bulk performance
18167 --
18168 l_balance_type_code           VARCHAR2(1);
18169 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18170 l_log_module                  VARCHAR2(240);
18171 
18172 --
18173 -- Upgrade strategy
18174 --
18175 l_actual_upg_option           VARCHAR2(1);
18176 l_enc_upg_option           VARCHAR2(1);
18177 
18178 --
18179 BEGIN
18180 --
18181 IF g_log_enabled THEN
18182       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
18183 END IF;
18184 --
18185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18186 
18187       trace
18188          (p_msg      => 'BEGIN of AcctLineType_47'
18189          ,p_level    => C_LEVEL_PROCEDURE
18190          ,p_module   => l_log_module);
18191 
18192 END IF;
18193 --
18194 l_component_type             := 'AMB_JLT';
18195 l_component_code             := 'PA_RAW_COST_ADJ';
18196 l_component_type_code        := 'S';
18197 l_component_appl_id          :=  275;
18198 l_amb_context_code           := 'DEFAULT';
18199 l_entity_code                := 'EXPENDITURES';
18200 l_event_class_code           := 'SUPPLIER_COST_ADJ';
18201 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
18202 l_line_definition_owner_code := 'S';
18203 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
18204 --
18205 l_balance_type_code          := 'A';
18206 l_segment                     := NULL;
18207 l_ccid                        := NULL;
18208 l_adr_transaction_coa_id      := NULL;
18209 l_adr_accounting_coa_id       := NULL;
18210 l_adr_flexfield_segment_code  := NULL;
18211 l_adr_flex_value_set_id       := NULL;
18212 l_adr_value_type_code         := NULL;
18213 l_adr_value_combination_id    := NULL;
18214 l_adr_value_segment_code      := NULL;
18215 
18216 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18217 l_bflow_class_code           := '';    -- 4219869 Business Flow
18218 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18219 l_budgetary_control_flag     := 'N';
18220 
18221 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18222 l_bflow_applied_to_amt       := NULL; -- 5132302
18223 l_entered_amt_idx            := NULL;          -- 4262811
18224 l_accted_amt_idx             := NULL;          -- 4262811
18225 l_acc_rev_flag               := NULL;          -- 4262811
18226 l_accrual_line_num           := NULL;          -- 4262811
18227 l_tmp_amt                    := NULL;          -- 4262811
18228 --
18229  
18230 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18231     l_balance_type_code <> 'B' THEN
18232 IF NVL(p_source_21,'
18233 ') =  'N'
18234  THEN 
18235 
18236    --
18237    XLA_AE_LINES_PKG.SetNewLine;
18238 
18242    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18239    p_balance_type_code          := l_balance_type_code;
18240    -- set the flag so later we will know whether the gain loss line needs to be created
18241    
18243      p_actual_flag :='A';
18244    END IF;
18245 
18246    --
18247    -- bulk performance
18248    --
18249    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18250                                       p_header_num   => 0); -- 4262811
18251    --
18252    -- set accounting line options
18253    --
18254    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18255            p_natural_side_code          => 'D'
18256          , p_gain_or_loss_flag          => 'N'
18257          , p_gl_transfer_mode_code      => 'S'
18258          , p_acct_entry_type_code       => 'A'
18259          , p_switch_side_flag           => 'Y'
18260          , p_merge_duplicate_code       => 'N'
18261          );
18262    --
18263    l_acc_rev_natural_side_code := 'C';  -- 4262811
18264    -- 
18265    --
18266    -- set accounting line type info
18267    --
18268    xla_ae_lines_pkg.SetAcctLineType
18269       (p_component_type             => l_component_type
18270       ,p_event_type_code            => l_event_type_code
18271       ,p_line_definition_owner_code => l_line_definition_owner_code
18272       ,p_line_definition_code       => l_line_definition_code
18273       ,p_accounting_line_code       => l_component_code
18274       ,p_accounting_line_type_code  => l_component_type_code
18275       ,p_accounting_line_appl_id    => l_component_appl_id
18276       ,p_amb_context_code           => l_amb_context_code
18277       ,p_entity_code                => l_entity_code
18278       ,p_event_class_code           => l_event_class_code);
18279    --
18280    -- set accounting class
18281    --
18282    xla_ae_lines_pkg.SetAcctClass(
18283            p_accounting_class_code  => 'COST'
18284          , p_ae_header_id           => l_ae_header_id
18285          );
18286 
18287    --
18288    -- set rounding class
18289    --
18290    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18291                       'COST';
18292 
18293    --
18294    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18295    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18296    --
18297    -- bulk performance
18298    --
18299    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18300 
18301    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18302       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18303 
18304    -- 4955764
18305    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18306       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18307 
18308    -- 4458381 Public Sector Enh
18309    
18310    --
18311    -- set accounting attributes for the line type
18312    --
18313    l_entered_amt_idx := 22;
18314    l_accted_amt_idx  := 27;
18315    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18316    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18317    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
18318    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
18319    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
18320    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
18321    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
18322    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
18323    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
18324    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
18325    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
18326    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
18327    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
18328    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
18329    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
18330    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
18331    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
18332    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
18333    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
18334    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
18335    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
18336    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
18337    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
18338    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
18339    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
18340    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
18341    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
18342    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
18343    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
18344    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
18345    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
18346    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
18347    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
18348    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
18349    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
18350    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
18351    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
18352    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
18353    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
18357    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
18354    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
18355    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
18356    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
18358    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
18359    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
18360    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
18361    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
18362    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
18363    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
18364    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
18365    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
18366    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
18367    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
18368    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
18369    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
18370    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
18371    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
18372    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
18373    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
18374    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
18375    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
18376 
18377    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18378    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18379 
18380    ---------------------------------------------------------------------------------------------------------------
18381    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18382    ---------------------------------------------------------------------------------------------------------------
18383    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18384 
18385    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18386    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18387 
18388    IF xla_accounting_cache_pkg.GetValueChar
18389          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18390          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18391    AND l_bflow_method_code = 'PRIOR_ENTRY'
18392 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18393    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18394          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18395        )
18396    THEN
18397          xla_ae_lines_pkg.BflowUpgEntry
18398            (p_business_method_code    => l_bflow_method_code
18399            ,p_business_class_code     => l_bflow_class_code
18400            ,p_balance_type            => l_balance_type_code);
18401    ELSE
18402       NULL;
18403 -- No business flow processing for business flow method of NONE.
18404    END IF;
18405 
18406    --
18407    -- call analytical criteria
18408    --
18409    
18410    --
18411    -- call description
18412    --
18413    -- No description or it is inherited.
18414    --
18415    -- call ADRs
18416    -- Bug 4922099
18417    --
18418    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18419         (NVL(l_actual_upg_option, 'N') = 'O') OR
18420         (NVL(l_enc_upg_option, 'N') = 'O')
18421       )
18422    THEN
18423    NULL;
18424    --
18425    --
18426    
18427   l_ccid := AcctDerRule_4(
18428            p_application_id           => p_application_id
18429          , p_ae_header_id             => l_ae_header_id 
18430 , p_source_4 => p_source_4
18431 , p_source_5 => p_source_5
18432          , x_transaction_coa_id       => l_adr_transaction_coa_id
18433          , x_accounting_coa_id        => l_adr_accounting_coa_id
18434          , x_value_type_code          => l_adr_value_type_code
18435          , p_side                     => 'NA'
18436    );
18437 
18438    xla_ae_lines_pkg.set_ccid(
18439     p_code_combination_id          => l_ccid
18440   , p_value_type_code              => l_adr_value_type_code
18441   , p_transaction_coa_id           => l_adr_transaction_coa_id
18442   , p_accounting_coa_id            => l_adr_accounting_coa_id
18443   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
18444   , p_adr_type_code                => 'S'
18445   , p_component_type               => l_component_type
18446   , p_component_code               => l_component_code
18447   , p_component_type_code          => l_component_type_code
18448   , p_component_appl_id            => l_component_appl_id
18449   , p_amb_context_code             => l_amb_context_code
18450   , p_side                         => 'NA'
18451   );
18452 
18453 
18454    --
18455    --
18456    END IF;
18457    --
18458    -- Bug 4922099
18459    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18460           (NVL(l_enc_upg_option, 'N') = 'O')
18461         ) AND
18462         (l_bflow_method_code = 'PRIOR_ENTRY')
18463       )
18464    THEN
18465       IF
18466       --
18467       1 = 2
18468       --
18469       THEN
18470       xla_accounting_err_pkg.build_message
18471                                     (p_appli_s_name            => 'XLA'
18472                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18473                                     ,p_token_1                 => 'LINE_NUMBER'
18474                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18475                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18479                                                                             ,l_component_type_code
18476                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18477                                                                              l_component_type
18478                                                                             ,l_component_code
18480                                                                             ,l_component_appl_id
18481                                                                             ,l_amb_context_code
18482                                                                             ,l_entity_code
18483                                                                             ,l_event_class_code
18484                                                                            )
18485                                     ,p_token_3                 => 'OWNER'
18486                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18487                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18488                                                                           ,p_lookup_code    => l_component_type_code
18489                                                                          )
18490                                     ,p_token_4                 => 'PRODUCT_NAME'
18491                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18492                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18493                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18494                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18495                                     ,p_ae_header_id            =>  NULL
18496                                        );
18497 
18498         IF (C_LEVEL_ERROR>= g_log_level) THEN
18499                  trace
18500                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18501                       ,p_level    => C_LEVEL_ERROR
18502                       ,p_module   => l_log_module);
18503         END IF;
18504       END IF;
18505    END IF;
18506    --
18507    --
18508    ------------------------------------------------------------------------------------------------
18509    -- 4219869 Business Flow
18510    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18511    -- Prior Entry.  Currently, the following code is always generated.
18512    ------------------------------------------------------------------------------------------------
18513    XLA_AE_LINES_PKG.ValidateCurrentLine;
18514 
18515    ------------------------------------------------------------------------------------
18516    -- 4219869 Business Flow
18517    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18518    ------------------------------------------------------------------------------------
18519    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18520 
18521    ----------------------------------------------------------------------------------
18522    -- 4219869 Business Flow
18523    -- Update journal entry status -- Need to generate this within IF <condition>
18524    ----------------------------------------------------------------------------------
18525    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18526          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18527          ,p_balance_type_code => l_balance_type_code
18528          );
18529 
18530    -------------------------------------------------------------------------------------------
18531    -- 4262811 - Generate the Accrual Reversal lines
18532    -------------------------------------------------------------------------------------------
18533    BEGIN
18534       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18535                               (g_array_event(p_event_id).array_value_num('header_index'));
18536       IF l_acc_rev_flag IS NULL THEN
18537          l_acc_rev_flag := 'N';
18538       END IF;
18539    EXCEPTION
18540       WHEN OTHERS THEN
18541          l_acc_rev_flag := 'N';
18542    END;
18543    --
18544    IF (l_acc_rev_flag = 'Y') THEN
18545 
18546        -- 4645092  ------------------------------------------------------------------------------
18547        -- To allow MPA report to determine if it should generate report process
18548        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18549        ------------------------------------------------------------------------------------------
18550 
18551        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18552        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18553 
18554        --
18555        -- Update the line information that should be overwritten
18556        --
18557        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18558                                          p_header_num   => 1);
18559        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18560 
18561        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18562 
18563        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18564           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18565        END IF;
18566 
18567       --
18568       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18569       --
18570       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18571           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18572       ELSE
18573           ---------------------------------------------------------------------------------------------------
18577           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18574           -- 4262811a Switch Sign
18575           ---------------------------------------------------------------------------------------------------
18576           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18578                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18579           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18580                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18581           -- 5132302
18582           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18583                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18584 
18585       END IF;
18586 
18587       -- 4955764
18588       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18589       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18590 
18591 
18592       XLA_AE_LINES_PKG.ValidateCurrentLine;
18593       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18594 
18595       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18596                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18597                ,p_balance_type_code => l_balance_type_code);
18598 
18599    END IF;
18600 
18601    -----------------------------------------------------------------------------------------
18602    -- 4262811 Multiperiod Accounting
18603    -----------------------------------------------------------------------------------------
18604      -- No MPA option is assigned.
18605 
18606 
18607 END IF;
18608 END IF;
18609 --
18610 
18611 --
18612 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18613    trace
18614       (p_msg      => 'END of AcctLineType_47'
18615       ,p_level    => C_LEVEL_PROCEDURE
18616       ,p_module   => l_log_module);
18617 END IF;
18618 --
18619 EXCEPTION
18620   WHEN xla_exceptions_pkg.application_exception THEN
18621       RAISE;
18622   WHEN OTHERS THEN
18623        xla_exceptions_pkg.raise_message
18624            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_47');
18625 END AcctLineType_47;
18626 --
18627 
18628 ---------------------------------------
18629 --
18630 -- PRIVATE FUNCTION
18631 --         AcctLineType_48
18632 --
18633 ---------------------------------------
18634 PROCEDURE AcctLineType_48 (
18635   p_application_id        IN NUMBER
18636  ,p_event_id              IN NUMBER
18637  ,p_calculate_acctd_flag  IN VARCHAR2
18638  ,p_calculate_g_l_flag    IN VARCHAR2
18639  ,p_actual_flag           IN OUT VARCHAR2
18640  ,p_balance_type_code     OUT VARCHAR2
18641  ,p_gain_or_loss_ref      OUT VARCHAR2
18642  
18643 --Cost CCID
18644  , p_source_3            IN NUMBER
18645 --Allow Account Override Flag
18646  , p_source_4            IN VARCHAR2
18647 --Adjustment Cost CCID
18648  , p_source_5            IN NUMBER
18649 --Cost Clearing CCID
18650  , p_source_6            IN NUMBER
18651 --Reversing Line Flag
18652  , p_source_22            IN VARCHAR2
18653 --Actual Upgrade Credit Accounting Class
18654  , p_source_23            IN VARCHAR2
18655 --Entered Raw Cost
18656  , p_source_24            IN NUMBER
18657 --Entered Currency Code
18658  , p_source_25            IN VARCHAR2
18659 --Accounted Raw Cost
18660  , p_source_26            IN NUMBER
18661 --Exchange Rate Date
18662  , p_source_27            IN DATE
18663 --Exchange Rate
18664  , p_source_28            IN NUMBER
18665 --Exchange Rate Type
18666  , p_source_29            IN VARCHAR2
18667 --Actual Upgrade Debit Accounting Class
18668  , p_source_30            IN VARCHAR2
18669 --Use Actuals Upgrade Attributes Flag
18670  , p_source_31            IN VARCHAR2
18671 --Expenditure Item ID
18672  , p_source_32            IN NUMBER
18673 --Cost Distribution Line Number
18674  , p_source_33            IN NUMBER
18675 --Line Type
18676  , p_source_34            IN VARCHAR2
18677  , p_source_34_meaning    IN VARCHAR2
18678 --Reversed Line Number
18679  , p_source_35            IN NUMBER
18680 --Project Number
18681  , p_source_68            IN VARCHAR2
18682 )
18683 IS
18684 
18685 l_component_type              VARCHAR2(80);
18686 l_component_code              VARCHAR2(30);
18687 l_component_type_code         VARCHAR2(1);
18688 l_component_appl_id           INTEGER;
18689 l_amb_context_code            VARCHAR2(30);
18690 l_entity_code                 VARCHAR2(30);
18691 l_event_class_code            VARCHAR2(30);
18692 l_ae_header_id                NUMBER;
18693 l_event_type_code             VARCHAR2(30);
18694 l_line_definition_code        VARCHAR2(30);
18695 l_line_definition_owner_code  VARCHAR2(1);
18696 --
18697 -- adr variables
18698 l_segment                     VARCHAR2(30);
18699 l_ccid                        NUMBER;
18700 l_adr_transaction_coa_id      NUMBER;
18701 l_adr_accounting_coa_id       NUMBER;
18702 l_adr_flexfield_segment_code  VARCHAR2(30);
18703 l_adr_flex_value_set_id       NUMBER;
18704 l_adr_value_type_code         VARCHAR2(30);
18705 l_adr_value_combination_id    NUMBER;
18706 l_adr_value_segment_code      VARCHAR2(30);
18707 
18708 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18709 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18710 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18711 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18712 
18713 -- 4262811 Variables ------------------------------------------------------------------------------------------
18717 l_accrual_line_num            NUMBER;
18714 l_entered_amt_idx             NUMBER;
18715 l_accted_amt_idx              NUMBER;
18716 l_acc_rev_flag                VARCHAR2(1);
18718 l_tmp_amt                     NUMBER;
18719 l_acc_rev_natural_side_code   VARCHAR2(1);
18720 
18721 l_num_entries                 NUMBER;
18722 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18723 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18724 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18725 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18726 l_recog_line_1                NUMBER;
18727 l_recog_line_2                NUMBER;
18728 
18729 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18730 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18731 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18732 
18733 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18734 
18735 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18736 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18737 
18738 ---------------------------------------------------------------------------------------------------------------
18739 
18740 
18741 --
18742 -- bulk performance
18743 --
18744 l_balance_type_code           VARCHAR2(1);
18745 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18746 l_log_module                  VARCHAR2(240);
18747 
18748 --
18749 -- Upgrade strategy
18750 --
18751 l_actual_upg_option           VARCHAR2(1);
18752 l_enc_upg_option           VARCHAR2(1);
18753 
18754 --
18755 BEGIN
18756 --
18757 IF g_log_enabled THEN
18758       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
18759 END IF;
18760 --
18761 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18762 
18763       trace
18764          (p_msg      => 'BEGIN of AcctLineType_48'
18765          ,p_level    => C_LEVEL_PROCEDURE
18766          ,p_module   => l_log_module);
18767 
18768 END IF;
18769 --
18770 l_component_type             := 'AMB_JLT';
18771 l_component_code             := 'PA_RAW_COST_ADJ';
18772 l_component_type_code        := 'S';
18773 l_component_appl_id          :=  275;
18774 l_amb_context_code           := 'DEFAULT';
18775 l_entity_code                := 'EXPENDITURES';
18776 l_event_class_code           := 'MISC_COST_ADJ';
18777 l_event_type_code            := 'MISC_COST_ADJ_ALL';
18778 l_line_definition_owner_code := 'S';
18779 l_line_definition_code       := 'JA_CN_PA_ACCRUAL_MIS_COSTADJ';
18780 --
18781 l_balance_type_code          := 'A';
18782 l_segment                     := NULL;
18783 l_ccid                        := NULL;
18784 l_adr_transaction_coa_id      := NULL;
18785 l_adr_accounting_coa_id       := NULL;
18786 l_adr_flexfield_segment_code  := NULL;
18787 l_adr_flex_value_set_id       := NULL;
18788 l_adr_value_type_code         := NULL;
18789 l_adr_value_combination_id    := NULL;
18790 l_adr_value_segment_code      := NULL;
18791 
18792 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18793 l_bflow_class_code           := '';    -- 4219869 Business Flow
18794 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18795 l_budgetary_control_flag     := 'N';
18796 
18797 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18798 l_bflow_applied_to_amt       := NULL; -- 5132302
18799 l_entered_amt_idx            := NULL;          -- 4262811
18800 l_accted_amt_idx             := NULL;          -- 4262811
18801 l_acc_rev_flag               := NULL;          -- 4262811
18802 l_accrual_line_num           := NULL;          -- 4262811
18803 l_tmp_amt                    := NULL;          -- 4262811
18804 --
18805  
18806 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18807     l_balance_type_code <> 'B' THEN
18808 
18809    --
18810    XLA_AE_LINES_PKG.SetNewLine;
18811 
18812    p_balance_type_code          := l_balance_type_code;
18813    -- set the flag so later we will know whether the gain loss line needs to be created
18814    
18815    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18816      p_actual_flag :='A';
18817    END IF;
18818 
18819    --
18820    -- bulk performance
18821    --
18822    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18823                                       p_header_num   => 0); -- 4262811
18824    --
18825    -- set accounting line options
18826    --
18827    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18828            p_natural_side_code          => 'D'
18829          , p_gain_or_loss_flag          => 'N'
18830          , p_gl_transfer_mode_code      => 'S'
18831          , p_acct_entry_type_code       => 'A'
18832          , p_switch_side_flag           => 'Y'
18833          , p_merge_duplicate_code       => 'N'
18834          );
18835    --
18836    l_acc_rev_natural_side_code := 'C';  -- 4262811
18837    -- 
18838    --
18839    -- set accounting line type info
18840    --
18841    xla_ae_lines_pkg.SetAcctLineType
18842       (p_component_type             => l_component_type
18843       ,p_event_type_code            => l_event_type_code
18844       ,p_line_definition_owner_code => l_line_definition_owner_code
18845       ,p_line_definition_code       => l_line_definition_code
18846       ,p_accounting_line_code       => l_component_code
18847       ,p_accounting_line_type_code  => l_component_type_code
18848       ,p_accounting_line_appl_id    => l_component_appl_id
18849       ,p_amb_context_code           => l_amb_context_code
18850       ,p_entity_code                => l_entity_code
18851       ,p_event_class_code           => l_event_class_code);
18855    xla_ae_lines_pkg.SetAcctClass(
18852    --
18853    -- set accounting class
18854    --
18856            p_accounting_class_code  => 'COST'
18857          , p_ae_header_id           => l_ae_header_id
18858          );
18859 
18860    --
18861    -- set rounding class
18862    --
18863    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18864                       'COST';
18865 
18866    --
18867    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18868    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18869    --
18870    -- bulk performance
18871    --
18872    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18873 
18874    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18875       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18876 
18877    -- 4955764
18878    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18879       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18880 
18881    -- 4458381 Public Sector Enh
18882    
18883    --
18884    -- set accounting attributes for the line type
18885    --
18886    l_entered_amt_idx := 22;
18887    l_accted_amt_idx  := 27;
18888    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18889    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18890    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
18891    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
18892    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
18893    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
18894    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
18895    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
18896    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
18897    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
18898    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
18899    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
18900    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
18901    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
18902    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
18903    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
18904    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
18905    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
18906    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
18907    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
18908    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
18909    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
18910    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
18911    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
18912    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
18913    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
18914    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
18915    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
18916    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
18917    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
18918    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
18919    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
18920    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
18921    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
18922    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
18923    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
18924    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
18925    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
18926    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
18927    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
18928    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
18929    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
18930    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
18931    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
18932    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
18933    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
18934    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
18935    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
18936    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
18937    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
18938    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
18939    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
18940    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
18941    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
18942    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
18943    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
18944    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
18945    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
18946    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
18947    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
18948    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
18949 
18950    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18951    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18952 
18953    ---------------------------------------------------------------------------------------------------------------
18954    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18958    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18955    ---------------------------------------------------------------------------------------------------------------
18956    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18957 
18959    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18960 
18961    IF xla_accounting_cache_pkg.GetValueChar
18962          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18963          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18964    AND l_bflow_method_code = 'PRIOR_ENTRY'
18965 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18966    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18967          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18968        )
18969    THEN
18970          xla_ae_lines_pkg.BflowUpgEntry
18971            (p_business_method_code    => l_bflow_method_code
18972            ,p_business_class_code     => l_bflow_class_code
18973            ,p_balance_type            => l_balance_type_code);
18974    ELSE
18975       NULL;
18976 -- No business flow processing for business flow method of NONE.
18977    END IF;
18978 
18979    --
18980    -- call analytical criteria
18981    --
18982    
18983 
18984 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
18985 xla_ae_lines_pkg.SetAnalyticalCriteria(
18986    p_analytical_criterion_name    => 'Project Number'
18987  , p_analytical_criterion_owner   => 'S'
18988  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
18989  , p_amb_context_code             => 'DEFAULT'
18990  , p_balancing_flag               => 'N'
18991  
18992  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_68)
18993  , p_analytical_detail_num_1     =>  NULL
18994  , p_analytical_detail_date_1    =>  NULL
18995 
18996  , p_ae_header_id                 => l_ae_header_id
18997 )
18998 ;
18999 --
19000 
19001    --
19002    -- call description
19003    --
19004    -- No description or it is inherited.
19005    --
19006    -- call ADRs
19007    -- Bug 4922099
19008    --
19009    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19010         (NVL(l_actual_upg_option, 'N') = 'O') OR
19011         (NVL(l_enc_upg_option, 'N') = 'O')
19012       )
19013    THEN
19014    NULL;
19015    --
19016    --
19017    
19018   l_ccid := AcctDerRule_4(
19019            p_application_id           => p_application_id
19020          , p_ae_header_id             => l_ae_header_id 
19021 , p_source_4 => p_source_4
19022 , p_source_5 => p_source_5
19023          , x_transaction_coa_id       => l_adr_transaction_coa_id
19024          , x_accounting_coa_id        => l_adr_accounting_coa_id
19025          , x_value_type_code          => l_adr_value_type_code
19026          , p_side                     => 'NA'
19027    );
19028 
19029    xla_ae_lines_pkg.set_ccid(
19030     p_code_combination_id          => l_ccid
19031   , p_value_type_code              => l_adr_value_type_code
19032   , p_transaction_coa_id           => l_adr_transaction_coa_id
19033   , p_accounting_coa_id            => l_adr_accounting_coa_id
19034   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
19035   , p_adr_type_code                => 'S'
19036   , p_component_type               => l_component_type
19037   , p_component_code               => l_component_code
19038   , p_component_type_code          => l_component_type_code
19039   , p_component_appl_id            => l_component_appl_id
19040   , p_amb_context_code             => l_amb_context_code
19041   , p_side                         => 'NA'
19042   );
19043 
19044 
19045    --
19046    --
19047    END IF;
19048    --
19049    -- Bug 4922099
19050    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19051           (NVL(l_enc_upg_option, 'N') = 'O')
19052         ) AND
19053         (l_bflow_method_code = 'PRIOR_ENTRY')
19054       )
19055    THEN
19056       IF
19057       --
19058       1 = 2
19059       --
19060       THEN
19061       xla_accounting_err_pkg.build_message
19062                                     (p_appli_s_name            => 'XLA'
19063                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19064                                     ,p_token_1                 => 'LINE_NUMBER'
19065                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19066                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19067                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19068                                                                              l_component_type
19069                                                                             ,l_component_code
19070                                                                             ,l_component_type_code
19071                                                                             ,l_component_appl_id
19072                                                                             ,l_amb_context_code
19073                                                                             ,l_entity_code
19074                                                                             ,l_event_class_code
19075                                                                            )
19076                                     ,p_token_3                 => 'OWNER'
19077                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19078                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19079                                                                           ,p_lookup_code    => l_component_type_code
19083                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19080                                                                          )
19081                                     ,p_token_4                 => 'PRODUCT_NAME'
19082                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19084                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19085                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19086                                     ,p_ae_header_id            =>  NULL
19087                                        );
19088 
19089         IF (C_LEVEL_ERROR>= g_log_level) THEN
19090                  trace
19091                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19092                       ,p_level    => C_LEVEL_ERROR
19093                       ,p_module   => l_log_module);
19094         END IF;
19095       END IF;
19096    END IF;
19097    --
19098    --
19099    ------------------------------------------------------------------------------------------------
19100    -- 4219869 Business Flow
19101    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19102    -- Prior Entry.  Currently, the following code is always generated.
19103    ------------------------------------------------------------------------------------------------
19104    XLA_AE_LINES_PKG.ValidateCurrentLine;
19105 
19106    ------------------------------------------------------------------------------------
19107    -- 4219869 Business Flow
19108    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19109    ------------------------------------------------------------------------------------
19110    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19111 
19112    ----------------------------------------------------------------------------------
19113    -- 4219869 Business Flow
19114    -- Update journal entry status -- Need to generate this within IF <condition>
19115    ----------------------------------------------------------------------------------
19116    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19117          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19118          ,p_balance_type_code => l_balance_type_code
19119          );
19120 
19121    -------------------------------------------------------------------------------------------
19122    -- 4262811 - Generate the Accrual Reversal lines
19123    -------------------------------------------------------------------------------------------
19124    BEGIN
19125       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19126                               (g_array_event(p_event_id).array_value_num('header_index'));
19127       IF l_acc_rev_flag IS NULL THEN
19128          l_acc_rev_flag := 'N';
19129       END IF;
19130    EXCEPTION
19131       WHEN OTHERS THEN
19132          l_acc_rev_flag := 'N';
19133    END;
19134    --
19135    IF (l_acc_rev_flag = 'Y') THEN
19136 
19137        -- 4645092  ------------------------------------------------------------------------------
19138        -- To allow MPA report to determine if it should generate report process
19139        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19140        ------------------------------------------------------------------------------------------
19141 
19142        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19143        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19144 
19145        --
19146        -- Update the line information that should be overwritten
19147        --
19148        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19149                                          p_header_num   => 1);
19150        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19151 
19152        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19153 
19154        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19155           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19156        END IF;
19157 
19158       --
19159       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19160       --
19161       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19162           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19163       ELSE
19164           ---------------------------------------------------------------------------------------------------
19165           -- 4262811a Switch Sign
19166           ---------------------------------------------------------------------------------------------------
19167           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19168           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19169                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19170           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19171                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19172           -- 5132302
19173           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19174                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19175 
19176       END IF;
19177 
19178       -- 4955764
19179       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19180       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19181 
19182 
19186       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19183       XLA_AE_LINES_PKG.ValidateCurrentLine;
19184       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19185 
19187                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19188                ,p_balance_type_code => l_balance_type_code);
19189 
19190    END IF;
19191 
19192    -----------------------------------------------------------------------------------------
19193    -- 4262811 Multiperiod Accounting
19194    -----------------------------------------------------------------------------------------
19195      -- No MPA option is assigned.
19196 
19197 
19198 END IF;
19199 --
19200 
19201 --
19202 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19203    trace
19204       (p_msg      => 'END of AcctLineType_48'
19205       ,p_level    => C_LEVEL_PROCEDURE
19206       ,p_module   => l_log_module);
19207 END IF;
19208 --
19209 EXCEPTION
19210   WHEN xla_exceptions_pkg.application_exception THEN
19211       RAISE;
19212   WHEN OTHERS THEN
19213        xla_exceptions_pkg.raise_message
19214            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_48');
19215 END AcctLineType_48;
19216 --
19217 
19218 ---------------------------------------
19219 --
19220 -- PRIVATE FUNCTION
19221 --         AcctLineType_49
19222 --
19223 ---------------------------------------
19224 PROCEDURE AcctLineType_49 (
19225   p_application_id        IN NUMBER
19226  ,p_event_id              IN NUMBER
19227  ,p_calculate_acctd_flag  IN VARCHAR2
19228  ,p_calculate_g_l_flag    IN VARCHAR2
19229  ,p_actual_flag           IN OUT VARCHAR2
19230  ,p_balance_type_code     OUT VARCHAR2
19231  ,p_gain_or_loss_ref      OUT VARCHAR2
19232  
19233 --Cost CCID
19234  , p_source_3            IN NUMBER
19235 --Allow Account Override Flag
19236  , p_source_4            IN VARCHAR2
19237 --Adjustment Cost CCID
19238  , p_source_5            IN NUMBER
19239 --Cost Clearing CCID
19240  , p_source_6            IN NUMBER
19241 --Reversing Line Flag
19242  , p_source_22            IN VARCHAR2
19243 --Actual Upgrade Credit Accounting Class
19244  , p_source_23            IN VARCHAR2
19245 --Entered Raw Cost
19246  , p_source_24            IN NUMBER
19247 --Entered Currency Code
19248  , p_source_25            IN VARCHAR2
19249 --Accounted Raw Cost
19250  , p_source_26            IN NUMBER
19251 --Exchange Rate Date
19252  , p_source_27            IN DATE
19253 --Exchange Rate
19254  , p_source_28            IN NUMBER
19255 --Exchange Rate Type
19256  , p_source_29            IN VARCHAR2
19257 --Actual Upgrade Debit Accounting Class
19258  , p_source_30            IN VARCHAR2
19259 --Use Actuals Upgrade Attributes Flag
19260  , p_source_31            IN VARCHAR2
19261 --Expenditure Item ID
19262  , p_source_32            IN NUMBER
19263 --Cost Distribution Line Number
19264  , p_source_33            IN NUMBER
19265 --Line Type
19266  , p_source_34            IN VARCHAR2
19267  , p_source_34_meaning    IN VARCHAR2
19268 --Reversed Line Number
19269  , p_source_35            IN NUMBER
19270 )
19271 IS
19272 
19273 l_component_type              VARCHAR2(80);
19274 l_component_code              VARCHAR2(30);
19275 l_component_type_code         VARCHAR2(1);
19276 l_component_appl_id           INTEGER;
19277 l_amb_context_code            VARCHAR2(30);
19278 l_entity_code                 VARCHAR2(30);
19279 l_event_class_code            VARCHAR2(30);
19280 l_ae_header_id                NUMBER;
19281 l_event_type_code             VARCHAR2(30);
19282 l_line_definition_code        VARCHAR2(30);
19283 l_line_definition_owner_code  VARCHAR2(1);
19284 --
19285 -- adr variables
19286 l_segment                     VARCHAR2(30);
19287 l_ccid                        NUMBER;
19288 l_adr_transaction_coa_id      NUMBER;
19289 l_adr_accounting_coa_id       NUMBER;
19290 l_adr_flexfield_segment_code  VARCHAR2(30);
19291 l_adr_flex_value_set_id       NUMBER;
19292 l_adr_value_type_code         VARCHAR2(30);
19293 l_adr_value_combination_id    NUMBER;
19294 l_adr_value_segment_code      VARCHAR2(30);
19295 
19296 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19297 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19298 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19299 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19300 
19301 -- 4262811 Variables ------------------------------------------------------------------------------------------
19302 l_entered_amt_idx             NUMBER;
19303 l_accted_amt_idx              NUMBER;
19304 l_acc_rev_flag                VARCHAR2(1);
19305 l_accrual_line_num            NUMBER;
19306 l_tmp_amt                     NUMBER;
19307 l_acc_rev_natural_side_code   VARCHAR2(1);
19308 
19309 l_num_entries                 NUMBER;
19310 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19311 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19312 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19313 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19314 l_recog_line_1                NUMBER;
19315 l_recog_line_2                NUMBER;
19316 
19317 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19318 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19319 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19320 
19321 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19322 
19323 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19324 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19325 
19329 --
19326 ---------------------------------------------------------------------------------------------------------------
19327 
19328 
19330 -- bulk performance
19331 --
19332 l_balance_type_code           VARCHAR2(1);
19333 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19334 l_log_module                  VARCHAR2(240);
19335 
19336 --
19337 -- Upgrade strategy
19338 --
19339 l_actual_upg_option           VARCHAR2(1);
19340 l_enc_upg_option           VARCHAR2(1);
19341 
19342 --
19343 BEGIN
19344 --
19345 IF g_log_enabled THEN
19346       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
19347 END IF;
19348 --
19349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19350 
19351       trace
19352          (p_msg      => 'BEGIN of AcctLineType_49'
19353          ,p_level    => C_LEVEL_PROCEDURE
19354          ,p_module   => l_log_module);
19355 
19356 END IF;
19357 --
19358 l_component_type             := 'AMB_JLT';
19359 l_component_code             := 'PA_RAW_COST_ADJ';
19360 l_component_type_code        := 'S';
19361 l_component_appl_id          :=  275;
19362 l_amb_context_code           := 'DEFAULT';
19363 l_entity_code                := 'EXPENDITURES';
19364 l_event_class_code           := 'USG_COST_ADJ';
19365 l_event_type_code            := 'USG_COST_ADJ_ALL';
19366 l_line_definition_owner_code := 'S';
19367 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
19368 --
19369 l_balance_type_code          := 'A';
19370 l_segment                     := NULL;
19371 l_ccid                        := NULL;
19372 l_adr_transaction_coa_id      := NULL;
19373 l_adr_accounting_coa_id       := NULL;
19374 l_adr_flexfield_segment_code  := NULL;
19375 l_adr_flex_value_set_id       := NULL;
19376 l_adr_value_type_code         := NULL;
19377 l_adr_value_combination_id    := NULL;
19378 l_adr_value_segment_code      := NULL;
19379 
19380 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19381 l_bflow_class_code           := '';    -- 4219869 Business Flow
19382 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19383 l_budgetary_control_flag     := 'N';
19384 
19385 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19386 l_bflow_applied_to_amt       := NULL; -- 5132302
19387 l_entered_amt_idx            := NULL;          -- 4262811
19388 l_accted_amt_idx             := NULL;          -- 4262811
19389 l_acc_rev_flag               := NULL;          -- 4262811
19390 l_accrual_line_num           := NULL;          -- 4262811
19391 l_tmp_amt                    := NULL;          -- 4262811
19392 --
19393  
19394 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19395     l_balance_type_code <> 'B' THEN
19396 
19397    --
19398    XLA_AE_LINES_PKG.SetNewLine;
19399 
19400    p_balance_type_code          := l_balance_type_code;
19401    -- set the flag so later we will know whether the gain loss line needs to be created
19402    
19403    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19404      p_actual_flag :='A';
19405    END IF;
19406 
19407    --
19408    -- bulk performance
19409    --
19410    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19411                                       p_header_num   => 0); -- 4262811
19412    --
19413    -- set accounting line options
19414    --
19415    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19416            p_natural_side_code          => 'D'
19417          , p_gain_or_loss_flag          => 'N'
19418          , p_gl_transfer_mode_code      => 'S'
19419          , p_acct_entry_type_code       => 'A'
19420          , p_switch_side_flag           => 'Y'
19421          , p_merge_duplicate_code       => 'N'
19422          );
19423    --
19424    l_acc_rev_natural_side_code := 'C';  -- 4262811
19425    -- 
19426    --
19427    -- set accounting line type info
19428    --
19429    xla_ae_lines_pkg.SetAcctLineType
19430       (p_component_type             => l_component_type
19431       ,p_event_type_code            => l_event_type_code
19432       ,p_line_definition_owner_code => l_line_definition_owner_code
19433       ,p_line_definition_code       => l_line_definition_code
19434       ,p_accounting_line_code       => l_component_code
19435       ,p_accounting_line_type_code  => l_component_type_code
19436       ,p_accounting_line_appl_id    => l_component_appl_id
19437       ,p_amb_context_code           => l_amb_context_code
19438       ,p_entity_code                => l_entity_code
19439       ,p_event_class_code           => l_event_class_code);
19440    --
19441    -- set accounting class
19442    --
19443    xla_ae_lines_pkg.SetAcctClass(
19444            p_accounting_class_code  => 'COST'
19445          , p_ae_header_id           => l_ae_header_id
19446          );
19447 
19448    --
19449    -- set rounding class
19450    --
19451    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19452                       'COST';
19453 
19454    --
19455    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19456    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19457    --
19458    -- bulk performance
19459    --
19460    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19461 
19462    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19463       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19464 
19465    -- 4955764
19466    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19467       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19471    --
19468 
19469    -- 4458381 Public Sector Enh
19470    
19472    -- set accounting attributes for the line type
19473    --
19474    l_entered_amt_idx := 22;
19475    l_accted_amt_idx  := 27;
19476    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19477    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
19478    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
19479    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
19480    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
19481    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
19482    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
19483    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
19484    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
19485    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
19486    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
19487    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
19488    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
19489    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
19490    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
19491    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
19492    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
19493    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
19494    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
19495    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
19496    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
19497    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
19498    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
19499    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
19500    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
19501    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
19502    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
19503    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
19504    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
19505    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
19506    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
19507    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
19508    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
19509    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
19510    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
19511    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
19512    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
19513    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
19514    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
19515    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
19516    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
19517    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
19518    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
19519    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
19520    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
19521    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
19522    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
19523    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
19524    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
19525    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
19526    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
19527    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
19528    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
19529    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
19530    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
19531    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
19532    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
19533    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
19534    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
19535    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
19536    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
19537 
19538    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19539    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19540 
19541    ---------------------------------------------------------------------------------------------------------------
19542    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19543    ---------------------------------------------------------------------------------------------------------------
19544    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19545 
19546    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19547    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19548 
19549    IF xla_accounting_cache_pkg.GetValueChar
19550          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19551          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19552    AND l_bflow_method_code = 'PRIOR_ENTRY'
19553 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19554    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19555          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19556        )
19557    THEN
19558          xla_ae_lines_pkg.BflowUpgEntry
19559            (p_business_method_code    => l_bflow_method_code
19560            ,p_business_class_code     => l_bflow_class_code
19561            ,p_balance_type            => l_balance_type_code);
19562    ELSE
19563       NULL;
19567    --
19564 -- No business flow processing for business flow method of NONE.
19565    END IF;
19566 
19568    -- call analytical criteria
19569    --
19570    
19571    --
19572    -- call description
19573    --
19574    -- No description or it is inherited.
19575    --
19576    -- call ADRs
19577    -- Bug 4922099
19578    --
19579    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19580         (NVL(l_actual_upg_option, 'N') = 'O') OR
19581         (NVL(l_enc_upg_option, 'N') = 'O')
19582       )
19583    THEN
19584    NULL;
19585    --
19586    --
19587    
19588   l_ccid := AcctDerRule_4(
19589            p_application_id           => p_application_id
19590          , p_ae_header_id             => l_ae_header_id 
19591 , p_source_4 => p_source_4
19592 , p_source_5 => p_source_5
19593          , x_transaction_coa_id       => l_adr_transaction_coa_id
19594          , x_accounting_coa_id        => l_adr_accounting_coa_id
19595          , x_value_type_code          => l_adr_value_type_code
19596          , p_side                     => 'NA'
19597    );
19598 
19599    xla_ae_lines_pkg.set_ccid(
19600     p_code_combination_id          => l_ccid
19601   , p_value_type_code              => l_adr_value_type_code
19602   , p_transaction_coa_id           => l_adr_transaction_coa_id
19603   , p_accounting_coa_id            => l_adr_accounting_coa_id
19604   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
19605   , p_adr_type_code                => 'S'
19606   , p_component_type               => l_component_type
19607   , p_component_code               => l_component_code
19608   , p_component_type_code          => l_component_type_code
19609   , p_component_appl_id            => l_component_appl_id
19610   , p_amb_context_code             => l_amb_context_code
19611   , p_side                         => 'NA'
19612   );
19613 
19614 
19615    --
19616    --
19617    END IF;
19618    --
19619    -- Bug 4922099
19620    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19621           (NVL(l_enc_upg_option, 'N') = 'O')
19622         ) AND
19623         (l_bflow_method_code = 'PRIOR_ENTRY')
19624       )
19625    THEN
19626       IF
19627       --
19628       1 = 2
19629       --
19630       THEN
19631       xla_accounting_err_pkg.build_message
19632                                     (p_appli_s_name            => 'XLA'
19633                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19634                                     ,p_token_1                 => 'LINE_NUMBER'
19635                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19636                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19637                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19638                                                                              l_component_type
19639                                                                             ,l_component_code
19640                                                                             ,l_component_type_code
19641                                                                             ,l_component_appl_id
19642                                                                             ,l_amb_context_code
19643                                                                             ,l_entity_code
19644                                                                             ,l_event_class_code
19645                                                                            )
19646                                     ,p_token_3                 => 'OWNER'
19647                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19648                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19649                                                                           ,p_lookup_code    => l_component_type_code
19650                                                                          )
19651                                     ,p_token_4                 => 'PRODUCT_NAME'
19652                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19653                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19654                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19655                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19656                                     ,p_ae_header_id            =>  NULL
19657                                        );
19658 
19659         IF (C_LEVEL_ERROR>= g_log_level) THEN
19660                  trace
19661                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19662                       ,p_level    => C_LEVEL_ERROR
19663                       ,p_module   => l_log_module);
19664         END IF;
19665       END IF;
19666    END IF;
19667    --
19668    --
19669    ------------------------------------------------------------------------------------------------
19670    -- 4219869 Business Flow
19671    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19672    -- Prior Entry.  Currently, the following code is always generated.
19673    ------------------------------------------------------------------------------------------------
19674    XLA_AE_LINES_PKG.ValidateCurrentLine;
19675 
19676    ------------------------------------------------------------------------------------
19677    -- 4219869 Business Flow
19678    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19679    ------------------------------------------------------------------------------------
19680    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19681 
19685    ----------------------------------------------------------------------------------
19682    ----------------------------------------------------------------------------------
19683    -- 4219869 Business Flow
19684    -- Update journal entry status -- Need to generate this within IF <condition>
19686    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19687          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19688          ,p_balance_type_code => l_balance_type_code
19689          );
19690 
19691    -------------------------------------------------------------------------------------------
19692    -- 4262811 - Generate the Accrual Reversal lines
19693    -------------------------------------------------------------------------------------------
19694    BEGIN
19695       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19696                               (g_array_event(p_event_id).array_value_num('header_index'));
19697       IF l_acc_rev_flag IS NULL THEN
19698          l_acc_rev_flag := 'N';
19699       END IF;
19700    EXCEPTION
19701       WHEN OTHERS THEN
19702          l_acc_rev_flag := 'N';
19703    END;
19704    --
19705    IF (l_acc_rev_flag = 'Y') THEN
19706 
19707        -- 4645092  ------------------------------------------------------------------------------
19708        -- To allow MPA report to determine if it should generate report process
19709        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19710        ------------------------------------------------------------------------------------------
19711 
19712        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19713        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19714 
19715        --
19716        -- Update the line information that should be overwritten
19717        --
19718        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19719                                          p_header_num   => 1);
19720        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19721 
19722        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19723 
19724        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19725           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19726        END IF;
19727 
19728       --
19729       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19730       --
19731       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19732           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19733       ELSE
19734           ---------------------------------------------------------------------------------------------------
19735           -- 4262811a Switch Sign
19736           ---------------------------------------------------------------------------------------------------
19737           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19738           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19739                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19740           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19741                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19742           -- 5132302
19743           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19744                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19745 
19746       END IF;
19747 
19748       -- 4955764
19749       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19750       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19751 
19752 
19753       XLA_AE_LINES_PKG.ValidateCurrentLine;
19754       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19755 
19756       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19757                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19758                ,p_balance_type_code => l_balance_type_code);
19759 
19760    END IF;
19761 
19762    -----------------------------------------------------------------------------------------
19763    -- 4262811 Multiperiod Accounting
19764    -----------------------------------------------------------------------------------------
19765      -- No MPA option is assigned.
19766 
19767 
19768 END IF;
19769 --
19770 
19771 --
19772 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19773    trace
19774       (p_msg      => 'END of AcctLineType_49'
19775       ,p_level    => C_LEVEL_PROCEDURE
19776       ,p_module   => l_log_module);
19777 END IF;
19778 --
19779 EXCEPTION
19780   WHEN xla_exceptions_pkg.application_exception THEN
19781       RAISE;
19782   WHEN OTHERS THEN
19783        xla_exceptions_pkg.raise_message
19784            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_49');
19785 END AcctLineType_49;
19786 --
19787 
19788 ---------------------------------------
19789 --
19790 -- PRIVATE FUNCTION
19791 --         AcctLineType_50
19792 --
19793 ---------------------------------------
19794 PROCEDURE AcctLineType_50 (
19795   p_application_id        IN NUMBER
19796  ,p_event_id              IN NUMBER
19797  ,p_calculate_acctd_flag  IN VARCHAR2
19798  ,p_calculate_g_l_flag    IN VARCHAR2
19799  ,p_actual_flag           IN OUT VARCHAR2
19800  ,p_balance_type_code     OUT VARCHAR2
19801  ,p_gain_or_loss_ref      OUT VARCHAR2
19802  
19803 --Cost CCID
19804  , p_source_3            IN NUMBER
19808  , p_source_5            IN NUMBER
19805 --Allow Account Override Flag
19806  , p_source_4            IN VARCHAR2
19807 --Adjustment Cost CCID
19809 --Cost Clearing CCID
19810  , p_source_6            IN NUMBER
19811 --Reversing Line Flag
19812  , p_source_22            IN VARCHAR2
19813 --Actual Upgrade Credit Accounting Class
19814  , p_source_23            IN VARCHAR2
19815 --Entered Raw Cost
19816  , p_source_24            IN NUMBER
19817 --Entered Currency Code
19818  , p_source_25            IN VARCHAR2
19819 --Accounted Raw Cost
19820  , p_source_26            IN NUMBER
19821 --Exchange Rate Date
19822  , p_source_27            IN DATE
19823 --Exchange Rate
19824  , p_source_28            IN NUMBER
19825 --Exchange Rate Type
19826  , p_source_29            IN VARCHAR2
19827 --Actual Upgrade Debit Accounting Class
19828  , p_source_30            IN VARCHAR2
19829 --Use Actuals Upgrade Attributes Flag
19830  , p_source_31            IN VARCHAR2
19831 --Expenditure Item ID
19832  , p_source_32            IN NUMBER
19833 --Cost Distribution Line Number
19834  , p_source_33            IN NUMBER
19835 --Line Type
19836  , p_source_34            IN VARCHAR2
19837  , p_source_34_meaning    IN VARCHAR2
19838 --Reversed Line Number
19839  , p_source_35            IN NUMBER
19840 )
19841 IS
19842 
19843 l_component_type              VARCHAR2(80);
19844 l_component_code              VARCHAR2(30);
19845 l_component_type_code         VARCHAR2(1);
19846 l_component_appl_id           INTEGER;
19847 l_amb_context_code            VARCHAR2(30);
19848 l_entity_code                 VARCHAR2(30);
19849 l_event_class_code            VARCHAR2(30);
19850 l_ae_header_id                NUMBER;
19851 l_event_type_code             VARCHAR2(30);
19852 l_line_definition_code        VARCHAR2(30);
19853 l_line_definition_owner_code  VARCHAR2(1);
19854 --
19855 -- adr variables
19856 l_segment                     VARCHAR2(30);
19857 l_ccid                        NUMBER;
19858 l_adr_transaction_coa_id      NUMBER;
19859 l_adr_accounting_coa_id       NUMBER;
19860 l_adr_flexfield_segment_code  VARCHAR2(30);
19861 l_adr_flex_value_set_id       NUMBER;
19862 l_adr_value_type_code         VARCHAR2(30);
19863 l_adr_value_combination_id    NUMBER;
19864 l_adr_value_segment_code      VARCHAR2(30);
19865 
19866 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19867 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19868 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19869 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19870 
19871 -- 4262811 Variables ------------------------------------------------------------------------------------------
19872 l_entered_amt_idx             NUMBER;
19873 l_accted_amt_idx              NUMBER;
19874 l_acc_rev_flag                VARCHAR2(1);
19875 l_accrual_line_num            NUMBER;
19876 l_tmp_amt                     NUMBER;
19877 l_acc_rev_natural_side_code   VARCHAR2(1);
19878 
19879 l_num_entries                 NUMBER;
19880 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19881 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19882 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19883 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19884 l_recog_line_1                NUMBER;
19885 l_recog_line_2                NUMBER;
19886 
19887 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19888 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19889 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19890 
19891 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19892 
19893 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19894 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19895 
19896 ---------------------------------------------------------------------------------------------------------------
19897 
19898 
19899 --
19900 -- bulk performance
19901 --
19902 l_balance_type_code           VARCHAR2(1);
19903 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19904 l_log_module                  VARCHAR2(240);
19905 
19906 --
19907 -- Upgrade strategy
19908 --
19909 l_actual_upg_option           VARCHAR2(1);
19910 l_enc_upg_option           VARCHAR2(1);
19911 
19912 --
19913 BEGIN
19914 --
19915 IF g_log_enabled THEN
19916       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
19917 END IF;
19918 --
19919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19920 
19921       trace
19922          (p_msg      => 'BEGIN of AcctLineType_50'
19923          ,p_level    => C_LEVEL_PROCEDURE
19924          ,p_module   => l_log_module);
19925 
19926 END IF;
19927 --
19928 l_component_type             := 'AMB_JLT';
19929 l_component_code             := 'PA_RAW_COST_ADJ';
19930 l_component_type_code        := 'S';
19931 l_component_appl_id          :=  275;
19932 l_amb_context_code           := 'DEFAULT';
19933 l_entity_code                := 'EXPENDITURES';
19934 l_event_class_code           := 'INVENTORY_COST_ADJ';
19935 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
19936 l_line_definition_owner_code := 'S';
19937 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
19938 --
19939 l_balance_type_code          := 'A';
19940 l_segment                     := NULL;
19941 l_ccid                        := NULL;
19942 l_adr_transaction_coa_id      := NULL;
19943 l_adr_accounting_coa_id       := NULL;
19944 l_adr_flexfield_segment_code  := NULL;
19945 l_adr_flex_value_set_id       := NULL;
19946 l_adr_value_type_code         := NULL;
19950 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19947 l_adr_value_combination_id    := NULL;
19948 l_adr_value_segment_code      := NULL;
19949 
19951 l_bflow_class_code           := '';    -- 4219869 Business Flow
19952 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19953 l_budgetary_control_flag     := 'N';
19954 
19955 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19956 l_bflow_applied_to_amt       := NULL; -- 5132302
19957 l_entered_amt_idx            := NULL;          -- 4262811
19958 l_accted_amt_idx             := NULL;          -- 4262811
19959 l_acc_rev_flag               := NULL;          -- 4262811
19960 l_accrual_line_num           := NULL;          -- 4262811
19961 l_tmp_amt                    := NULL;          -- 4262811
19962 --
19963  
19964 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19965     l_balance_type_code <> 'B' THEN
19966 
19967    --
19968    XLA_AE_LINES_PKG.SetNewLine;
19969 
19970    p_balance_type_code          := l_balance_type_code;
19971    -- set the flag so later we will know whether the gain loss line needs to be created
19972    
19973    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19974      p_actual_flag :='A';
19975    END IF;
19976 
19977    --
19978    -- bulk performance
19979    --
19980    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19981                                       p_header_num   => 0); -- 4262811
19982    --
19983    -- set accounting line options
19984    --
19985    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19986            p_natural_side_code          => 'D'
19987          , p_gain_or_loss_flag          => 'N'
19988          , p_gl_transfer_mode_code      => 'S'
19989          , p_acct_entry_type_code       => 'A'
19990          , p_switch_side_flag           => 'Y'
19991          , p_merge_duplicate_code       => 'N'
19992          );
19993    --
19994    l_acc_rev_natural_side_code := 'C';  -- 4262811
19995    -- 
19996    --
19997    -- set accounting line type info
19998    --
19999    xla_ae_lines_pkg.SetAcctLineType
20000       (p_component_type             => l_component_type
20001       ,p_event_type_code            => l_event_type_code
20002       ,p_line_definition_owner_code => l_line_definition_owner_code
20003       ,p_line_definition_code       => l_line_definition_code
20004       ,p_accounting_line_code       => l_component_code
20005       ,p_accounting_line_type_code  => l_component_type_code
20006       ,p_accounting_line_appl_id    => l_component_appl_id
20007       ,p_amb_context_code           => l_amb_context_code
20008       ,p_entity_code                => l_entity_code
20009       ,p_event_class_code           => l_event_class_code);
20010    --
20011    -- set accounting class
20012    --
20013    xla_ae_lines_pkg.SetAcctClass(
20014            p_accounting_class_code  => 'COST'
20015          , p_ae_header_id           => l_ae_header_id
20016          );
20017 
20018    --
20019    -- set rounding class
20020    --
20021    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20022                       'COST';
20023 
20024    --
20025    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20026    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20027    --
20028    -- bulk performance
20029    --
20030    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20031 
20032    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20033       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20034 
20035    -- 4955764
20036    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20037       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20038 
20039    -- 4458381 Public Sector Enh
20040    
20041    --
20042    -- set accounting attributes for the line type
20043    --
20044    l_entered_amt_idx := 22;
20045    l_accted_amt_idx  := 27;
20046    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20047    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20048    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
20049    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
20050    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
20051    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
20052    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
20053    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
20054    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
20055    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
20056    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
20057    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
20058    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
20059    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
20060    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
20061    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
20062    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
20063    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
20064    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
20065    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
20066    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
20067    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
20068    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
20069    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
20073    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
20070    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
20071    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
20072    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
20074    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
20075    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
20076    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
20077    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
20078    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
20079    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
20080    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
20081    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
20082    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
20083    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
20084    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
20085    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
20086    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
20087    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
20088    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
20089    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
20090    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
20091    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
20092    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
20093    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
20094    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
20095    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
20096    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
20097    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
20098    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
20099    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
20100    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
20101    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
20102    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
20103    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
20104    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
20105    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
20106    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
20107 
20108    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20109    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20110 
20111    ---------------------------------------------------------------------------------------------------------------
20112    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20113    ---------------------------------------------------------------------------------------------------------------
20114    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20115 
20116    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20117    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20118 
20119    IF xla_accounting_cache_pkg.GetValueChar
20120          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20121          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20122    AND l_bflow_method_code = 'PRIOR_ENTRY'
20123 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20124    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20125          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20126        )
20127    THEN
20128          xla_ae_lines_pkg.BflowUpgEntry
20129            (p_business_method_code    => l_bflow_method_code
20130            ,p_business_class_code     => l_bflow_class_code
20131            ,p_balance_type            => l_balance_type_code);
20132    ELSE
20133       NULL;
20134 -- No business flow processing for business flow method of NONE.
20135    END IF;
20136 
20137    --
20138    -- call analytical criteria
20139    --
20140    
20141    --
20142    -- call description
20143    --
20144    -- No description or it is inherited.
20145    --
20146    -- call ADRs
20147    -- Bug 4922099
20148    --
20149    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20150         (NVL(l_actual_upg_option, 'N') = 'O') OR
20151         (NVL(l_enc_upg_option, 'N') = 'O')
20152       )
20153    THEN
20154    NULL;
20155    --
20156    --
20157    
20158   l_ccid := AcctDerRule_4(
20159            p_application_id           => p_application_id
20160          , p_ae_header_id             => l_ae_header_id 
20161 , p_source_4 => p_source_4
20162 , p_source_5 => p_source_5
20163          , x_transaction_coa_id       => l_adr_transaction_coa_id
20164          , x_accounting_coa_id        => l_adr_accounting_coa_id
20165          , x_value_type_code          => l_adr_value_type_code
20166          , p_side                     => 'NA'
20167    );
20168 
20169    xla_ae_lines_pkg.set_ccid(
20170     p_code_combination_id          => l_ccid
20171   , p_value_type_code              => l_adr_value_type_code
20172   , p_transaction_coa_id           => l_adr_transaction_coa_id
20173   , p_accounting_coa_id            => l_adr_accounting_coa_id
20174   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
20175   , p_adr_type_code                => 'S'
20176   , p_component_type               => l_component_type
20177   , p_component_code               => l_component_code
20178   , p_component_type_code          => l_component_type_code
20179   , p_component_appl_id            => l_component_appl_id
20180   , p_amb_context_code             => l_amb_context_code
20184 
20181   , p_side                         => 'NA'
20182   );
20183 
20185    --
20186    --
20187    END IF;
20188    --
20189    -- Bug 4922099
20190    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20191           (NVL(l_enc_upg_option, 'N') = 'O')
20192         ) AND
20193         (l_bflow_method_code = 'PRIOR_ENTRY')
20194       )
20195    THEN
20196       IF
20197       --
20198       1 = 2
20199       --
20200       THEN
20201       xla_accounting_err_pkg.build_message
20202                                     (p_appli_s_name            => 'XLA'
20203                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20204                                     ,p_token_1                 => 'LINE_NUMBER'
20205                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20206                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20207                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20208                                                                              l_component_type
20209                                                                             ,l_component_code
20210                                                                             ,l_component_type_code
20211                                                                             ,l_component_appl_id
20212                                                                             ,l_amb_context_code
20213                                                                             ,l_entity_code
20214                                                                             ,l_event_class_code
20215                                                                            )
20216                                     ,p_token_3                 => 'OWNER'
20217                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20218                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20219                                                                           ,p_lookup_code    => l_component_type_code
20220                                                                          )
20221                                     ,p_token_4                 => 'PRODUCT_NAME'
20222                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20223                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20224                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20225                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20226                                     ,p_ae_header_id            =>  NULL
20227                                        );
20228 
20229         IF (C_LEVEL_ERROR>= g_log_level) THEN
20230                  trace
20231                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20232                       ,p_level    => C_LEVEL_ERROR
20233                       ,p_module   => l_log_module);
20234         END IF;
20235       END IF;
20236    END IF;
20237    --
20238    --
20239    ------------------------------------------------------------------------------------------------
20240    -- 4219869 Business Flow
20241    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20242    -- Prior Entry.  Currently, the following code is always generated.
20243    ------------------------------------------------------------------------------------------------
20244    XLA_AE_LINES_PKG.ValidateCurrentLine;
20245 
20246    ------------------------------------------------------------------------------------
20247    -- 4219869 Business Flow
20248    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20249    ------------------------------------------------------------------------------------
20250    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20251 
20252    ----------------------------------------------------------------------------------
20253    -- 4219869 Business Flow
20254    -- Update journal entry status -- Need to generate this within IF <condition>
20255    ----------------------------------------------------------------------------------
20256    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20257          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20258          ,p_balance_type_code => l_balance_type_code
20259          );
20260 
20261    -------------------------------------------------------------------------------------------
20262    -- 4262811 - Generate the Accrual Reversal lines
20263    -------------------------------------------------------------------------------------------
20264    BEGIN
20265       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20266                               (g_array_event(p_event_id).array_value_num('header_index'));
20267       IF l_acc_rev_flag IS NULL THEN
20268          l_acc_rev_flag := 'N';
20269       END IF;
20270    EXCEPTION
20271       WHEN OTHERS THEN
20272          l_acc_rev_flag := 'N';
20273    END;
20274    --
20275    IF (l_acc_rev_flag = 'Y') THEN
20276 
20277        -- 4645092  ------------------------------------------------------------------------------
20278        -- To allow MPA report to determine if it should generate report process
20279        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20280        ------------------------------------------------------------------------------------------
20281 
20282        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20283        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20284 
20285        --
20286        -- Update the line information that should be overwritten
20287        --
20291 
20288        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20289                                          p_header_num   => 1);
20290        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20292        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20293 
20294        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20295           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20296        END IF;
20297 
20298       --
20299       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20300       --
20301       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20302           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20303       ELSE
20304           ---------------------------------------------------------------------------------------------------
20305           -- 4262811a Switch Sign
20306           ---------------------------------------------------------------------------------------------------
20307           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20308           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20309                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20310           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20311                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20312           -- 5132302
20313           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20314                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20315 
20316       END IF;
20317 
20318       -- 4955764
20319       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20320       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20321 
20322 
20323       XLA_AE_LINES_PKG.ValidateCurrentLine;
20324       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20325 
20326       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20327                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20328                ,p_balance_type_code => l_balance_type_code);
20329 
20330    END IF;
20331 
20332    -----------------------------------------------------------------------------------------
20333    -- 4262811 Multiperiod Accounting
20334    -----------------------------------------------------------------------------------------
20335      -- No MPA option is assigned.
20336 
20337 
20338 END IF;
20339 --
20340 
20341 --
20342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20343    trace
20344       (p_msg      => 'END of AcctLineType_50'
20345       ,p_level    => C_LEVEL_PROCEDURE
20346       ,p_module   => l_log_module);
20347 END IF;
20348 --
20349 EXCEPTION
20350   WHEN xla_exceptions_pkg.application_exception THEN
20351       RAISE;
20352   WHEN OTHERS THEN
20353        xla_exceptions_pkg.raise_message
20354            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_50');
20355 END AcctLineType_50;
20356 --
20357 
20358 ---------------------------------------
20359 --
20360 -- PRIVATE FUNCTION
20361 --         AcctLineType_51
20362 --
20363 ---------------------------------------
20364 PROCEDURE AcctLineType_51 (
20365   p_application_id        IN NUMBER
20366  ,p_event_id              IN NUMBER
20367  ,p_calculate_acctd_flag  IN VARCHAR2
20368  ,p_calculate_g_l_flag    IN VARCHAR2
20369  ,p_actual_flag           IN OUT VARCHAR2
20370  ,p_balance_type_code     OUT VARCHAR2
20371  ,p_gain_or_loss_ref      OUT VARCHAR2
20372  
20373 --Cost CCID
20374  , p_source_3            IN NUMBER
20375 --Allow Account Override Flag
20376  , p_source_4            IN VARCHAR2
20377 --Adjustment Cost CCID
20378  , p_source_5            IN NUMBER
20379 --Cost Clearing CCID
20380  , p_source_6            IN NUMBER
20381 --Reversing Line Flag
20382  , p_source_22            IN VARCHAR2
20383 --Actual Upgrade Credit Accounting Class
20384  , p_source_23            IN VARCHAR2
20385 --Entered Raw Cost
20386  , p_source_24            IN NUMBER
20387 --Entered Currency Code
20388  , p_source_25            IN VARCHAR2
20389 --Accounted Raw Cost
20390  , p_source_26            IN NUMBER
20391 --Exchange Rate Date
20392  , p_source_27            IN DATE
20393 --Exchange Rate
20394  , p_source_28            IN NUMBER
20395 --Exchange Rate Type
20396  , p_source_29            IN VARCHAR2
20397 --Actual Upgrade Debit Accounting Class
20398  , p_source_30            IN VARCHAR2
20399 --Use Actuals Upgrade Attributes Flag
20400  , p_source_31            IN VARCHAR2
20401 --Expenditure Item ID
20402  , p_source_32            IN NUMBER
20403 --Cost Distribution Line Number
20404  , p_source_33            IN NUMBER
20405 --Line Type
20406  , p_source_34            IN VARCHAR2
20407  , p_source_34_meaning    IN VARCHAR2
20408 --Reversed Line Number
20409  , p_source_35            IN NUMBER
20410 )
20411 IS
20412 
20413 l_component_type              VARCHAR2(80);
20414 l_component_code              VARCHAR2(30);
20415 l_component_type_code         VARCHAR2(1);
20416 l_component_appl_id           INTEGER;
20417 l_amb_context_code            VARCHAR2(30);
20418 l_entity_code                 VARCHAR2(30);
20419 l_event_class_code            VARCHAR2(30);
20420 l_ae_header_id                NUMBER;
20421 l_event_type_code             VARCHAR2(30);
20425 -- adr variables
20422 l_line_definition_code        VARCHAR2(30);
20423 l_line_definition_owner_code  VARCHAR2(1);
20424 --
20426 l_segment                     VARCHAR2(30);
20427 l_ccid                        NUMBER;
20428 l_adr_transaction_coa_id      NUMBER;
20429 l_adr_accounting_coa_id       NUMBER;
20430 l_adr_flexfield_segment_code  VARCHAR2(30);
20431 l_adr_flex_value_set_id       NUMBER;
20432 l_adr_value_type_code         VARCHAR2(30);
20433 l_adr_value_combination_id    NUMBER;
20434 l_adr_value_segment_code      VARCHAR2(30);
20435 
20436 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20437 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20438 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20439 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20440 
20441 -- 4262811 Variables ------------------------------------------------------------------------------------------
20442 l_entered_amt_idx             NUMBER;
20443 l_accted_amt_idx              NUMBER;
20444 l_acc_rev_flag                VARCHAR2(1);
20445 l_accrual_line_num            NUMBER;
20446 l_tmp_amt                     NUMBER;
20447 l_acc_rev_natural_side_code   VARCHAR2(1);
20448 
20449 l_num_entries                 NUMBER;
20450 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20451 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20452 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20453 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20454 l_recog_line_1                NUMBER;
20455 l_recog_line_2                NUMBER;
20456 
20457 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20458 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20459 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20460 
20461 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20462 
20463 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20464 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20465 
20466 ---------------------------------------------------------------------------------------------------------------
20467 
20468 
20469 --
20470 -- bulk performance
20471 --
20472 l_balance_type_code           VARCHAR2(1);
20473 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20474 l_log_module                  VARCHAR2(240);
20475 
20476 --
20477 -- Upgrade strategy
20478 --
20479 l_actual_upg_option           VARCHAR2(1);
20480 l_enc_upg_option           VARCHAR2(1);
20481 
20482 --
20483 BEGIN
20484 --
20485 IF g_log_enabled THEN
20486       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
20487 END IF;
20488 --
20489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20490 
20491       trace
20492          (p_msg      => 'BEGIN of AcctLineType_51'
20493          ,p_level    => C_LEVEL_PROCEDURE
20494          ,p_module   => l_log_module);
20495 
20496 END IF;
20497 --
20498 l_component_type             := 'AMB_JLT';
20499 l_component_code             := 'PA_RAW_COST_ADJ';
20500 l_component_type_code        := 'S';
20501 l_component_appl_id          :=  275;
20502 l_amb_context_code           := 'DEFAULT';
20503 l_entity_code                := 'EXPENDITURES';
20504 l_event_class_code           := 'LABOR_COST_ADJ';
20505 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
20506 l_line_definition_owner_code := 'S';
20507 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
20508 --
20509 l_balance_type_code          := 'A';
20510 l_segment                     := NULL;
20511 l_ccid                        := NULL;
20512 l_adr_transaction_coa_id      := NULL;
20513 l_adr_accounting_coa_id       := NULL;
20514 l_adr_flexfield_segment_code  := NULL;
20515 l_adr_flex_value_set_id       := NULL;
20516 l_adr_value_type_code         := NULL;
20517 l_adr_value_combination_id    := NULL;
20518 l_adr_value_segment_code      := NULL;
20519 
20520 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20521 l_bflow_class_code           := '';    -- 4219869 Business Flow
20522 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20523 l_budgetary_control_flag     := 'N';
20524 
20525 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20526 l_bflow_applied_to_amt       := NULL; -- 5132302
20527 l_entered_amt_idx            := NULL;          -- 4262811
20528 l_accted_amt_idx             := NULL;          -- 4262811
20529 l_acc_rev_flag               := NULL;          -- 4262811
20530 l_accrual_line_num           := NULL;          -- 4262811
20531 l_tmp_amt                    := NULL;          -- 4262811
20532 --
20533  
20534 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20535     l_balance_type_code <> 'B' THEN
20536 
20537    --
20538    XLA_AE_LINES_PKG.SetNewLine;
20539 
20540    p_balance_type_code          := l_balance_type_code;
20541    -- set the flag so later we will know whether the gain loss line needs to be created
20542    
20543    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20544      p_actual_flag :='A';
20545    END IF;
20546 
20547    --
20548    -- bulk performance
20549    --
20550    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20551                                       p_header_num   => 0); -- 4262811
20552    --
20553    -- set accounting line options
20554    --
20555    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20556            p_natural_side_code          => 'D'
20557          , p_gain_or_loss_flag          => 'N'
20558          , p_gl_transfer_mode_code      => 'S'
20562          );
20559          , p_acct_entry_type_code       => 'A'
20560          , p_switch_side_flag           => 'Y'
20561          , p_merge_duplicate_code       => 'N'
20563    --
20564    l_acc_rev_natural_side_code := 'C';  -- 4262811
20565    -- 
20566    --
20567    -- set accounting line type info
20568    --
20569    xla_ae_lines_pkg.SetAcctLineType
20570       (p_component_type             => l_component_type
20571       ,p_event_type_code            => l_event_type_code
20572       ,p_line_definition_owner_code => l_line_definition_owner_code
20573       ,p_line_definition_code       => l_line_definition_code
20574       ,p_accounting_line_code       => l_component_code
20575       ,p_accounting_line_type_code  => l_component_type_code
20576       ,p_accounting_line_appl_id    => l_component_appl_id
20577       ,p_amb_context_code           => l_amb_context_code
20578       ,p_entity_code                => l_entity_code
20579       ,p_event_class_code           => l_event_class_code);
20580    --
20581    -- set accounting class
20582    --
20583    xla_ae_lines_pkg.SetAcctClass(
20584            p_accounting_class_code  => 'COST'
20585          , p_ae_header_id           => l_ae_header_id
20586          );
20587 
20588    --
20589    -- set rounding class
20590    --
20591    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20592                       'COST';
20593 
20594    --
20595    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20596    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20597    --
20598    -- bulk performance
20599    --
20600    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20601 
20602    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20603       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20604 
20605    -- 4955764
20606    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20607       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20608 
20609    -- 4458381 Public Sector Enh
20610    
20611    --
20612    -- set accounting attributes for the line type
20613    --
20614    l_entered_amt_idx := 22;
20615    l_accted_amt_idx  := 27;
20616    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20617    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20618    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
20619    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
20620    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
20621    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
20622    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
20623    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
20624    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
20625    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
20626    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
20627    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
20628    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
20629    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
20630    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
20631    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
20632    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
20633    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
20634    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
20635    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
20636    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
20637    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
20638    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
20639    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
20640    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
20641    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
20642    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
20643    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
20644    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
20645    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
20646    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
20647    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
20648    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
20649    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
20650    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
20651    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
20652    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
20653    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
20654    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
20655    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
20656    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
20657    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
20658    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
20659    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
20660    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
20661    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
20662    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
20663    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
20664    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
20665    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
20666    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
20667    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
20671    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
20668    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
20669    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
20670    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
20672    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
20673    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
20674    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
20675    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
20676    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
20677 
20678    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20679    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20680 
20681    ---------------------------------------------------------------------------------------------------------------
20682    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20683    ---------------------------------------------------------------------------------------------------------------
20684    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20685 
20686    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20687    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20688 
20689    IF xla_accounting_cache_pkg.GetValueChar
20690          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20691          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20692    AND l_bflow_method_code = 'PRIOR_ENTRY'
20693 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20694    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20695          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20696        )
20697    THEN
20698          xla_ae_lines_pkg.BflowUpgEntry
20699            (p_business_method_code    => l_bflow_method_code
20700            ,p_business_class_code     => l_bflow_class_code
20701            ,p_balance_type            => l_balance_type_code);
20702    ELSE
20703       NULL;
20704 -- No business flow processing for business flow method of NONE.
20705    END IF;
20706 
20707    --
20708    -- call analytical criteria
20709    --
20710    
20711    --
20712    -- call description
20713    --
20714    -- No description or it is inherited.
20715    --
20716    -- call ADRs
20717    -- Bug 4922099
20718    --
20719    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20720         (NVL(l_actual_upg_option, 'N') = 'O') OR
20721         (NVL(l_enc_upg_option, 'N') = 'O')
20722       )
20723    THEN
20724    NULL;
20725    --
20726    --
20727    
20728   l_ccid := AcctDerRule_4(
20729            p_application_id           => p_application_id
20730          , p_ae_header_id             => l_ae_header_id 
20731 , p_source_4 => p_source_4
20732 , p_source_5 => p_source_5
20733          , x_transaction_coa_id       => l_adr_transaction_coa_id
20734          , x_accounting_coa_id        => l_adr_accounting_coa_id
20735          , x_value_type_code          => l_adr_value_type_code
20736          , p_side                     => 'NA'
20737    );
20738 
20739    xla_ae_lines_pkg.set_ccid(
20740     p_code_combination_id          => l_ccid
20741   , p_value_type_code              => l_adr_value_type_code
20742   , p_transaction_coa_id           => l_adr_transaction_coa_id
20743   , p_accounting_coa_id            => l_adr_accounting_coa_id
20744   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
20745   , p_adr_type_code                => 'S'
20746   , p_component_type               => l_component_type
20747   , p_component_code               => l_component_code
20748   , p_component_type_code          => l_component_type_code
20749   , p_component_appl_id            => l_component_appl_id
20750   , p_amb_context_code             => l_amb_context_code
20751   , p_side                         => 'NA'
20752   );
20753 
20754 
20755    --
20756    --
20757    END IF;
20758    --
20759    -- Bug 4922099
20760    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20761           (NVL(l_enc_upg_option, 'N') = 'O')
20762         ) AND
20763         (l_bflow_method_code = 'PRIOR_ENTRY')
20764       )
20765    THEN
20766       IF
20767       --
20768       1 = 2
20769       --
20770       THEN
20771       xla_accounting_err_pkg.build_message
20772                                     (p_appli_s_name            => 'XLA'
20773                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20774                                     ,p_token_1                 => 'LINE_NUMBER'
20775                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20776                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20777                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20778                                                                              l_component_type
20779                                                                             ,l_component_code
20780                                                                             ,l_component_type_code
20781                                                                             ,l_component_appl_id
20782                                                                             ,l_amb_context_code
20783                                                                             ,l_entity_code
20784                                                                             ,l_event_class_code
20785                                                                            )
20786                                     ,p_token_3                 => 'OWNER'
20790                                                                          )
20787                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20788                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20789                                                                           ,p_lookup_code    => l_component_type_code
20791                                     ,p_token_4                 => 'PRODUCT_NAME'
20792                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20793                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20794                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20795                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20796                                     ,p_ae_header_id            =>  NULL
20797                                        );
20798 
20799         IF (C_LEVEL_ERROR>= g_log_level) THEN
20800                  trace
20801                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20802                       ,p_level    => C_LEVEL_ERROR
20803                       ,p_module   => l_log_module);
20804         END IF;
20805       END IF;
20806    END IF;
20807    --
20808    --
20809    ------------------------------------------------------------------------------------------------
20810    -- 4219869 Business Flow
20811    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20812    -- Prior Entry.  Currently, the following code is always generated.
20813    ------------------------------------------------------------------------------------------------
20814    XLA_AE_LINES_PKG.ValidateCurrentLine;
20815 
20816    ------------------------------------------------------------------------------------
20817    -- 4219869 Business Flow
20818    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20819    ------------------------------------------------------------------------------------
20820    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20821 
20822    ----------------------------------------------------------------------------------
20823    -- 4219869 Business Flow
20824    -- Update journal entry status -- Need to generate this within IF <condition>
20825    ----------------------------------------------------------------------------------
20826    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20827          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20828          ,p_balance_type_code => l_balance_type_code
20829          );
20830 
20831    -------------------------------------------------------------------------------------------
20832    -- 4262811 - Generate the Accrual Reversal lines
20833    -------------------------------------------------------------------------------------------
20834    BEGIN
20835       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20836                               (g_array_event(p_event_id).array_value_num('header_index'));
20837       IF l_acc_rev_flag IS NULL THEN
20838          l_acc_rev_flag := 'N';
20839       END IF;
20840    EXCEPTION
20841       WHEN OTHERS THEN
20842          l_acc_rev_flag := 'N';
20843    END;
20844    --
20845    IF (l_acc_rev_flag = 'Y') THEN
20846 
20847        -- 4645092  ------------------------------------------------------------------------------
20848        -- To allow MPA report to determine if it should generate report process
20849        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20850        ------------------------------------------------------------------------------------------
20851 
20852        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20853        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20854 
20855        --
20856        -- Update the line information that should be overwritten
20857        --
20858        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20859                                          p_header_num   => 1);
20860        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20861 
20862        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20863 
20864        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20865           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20866        END IF;
20867 
20868       --
20869       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20870       --
20871       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20872           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20873       ELSE
20874           ---------------------------------------------------------------------------------------------------
20875           -- 4262811a Switch Sign
20876           ---------------------------------------------------------------------------------------------------
20877           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20878           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20879                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20880           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20881                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20882           -- 5132302
20883           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20884                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20885 
20889       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20886       END IF;
20887 
20888       -- 4955764
20890       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20891 
20892 
20893       XLA_AE_LINES_PKG.ValidateCurrentLine;
20894       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20895 
20896       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20897                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20898                ,p_balance_type_code => l_balance_type_code);
20899 
20900    END IF;
20901 
20902    -----------------------------------------------------------------------------------------
20903    -- 4262811 Multiperiod Accounting
20904    -----------------------------------------------------------------------------------------
20905      -- No MPA option is assigned.
20906 
20907 
20908 END IF;
20909 --
20910 
20911 --
20912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20913    trace
20914       (p_msg      => 'END of AcctLineType_51'
20915       ,p_level    => C_LEVEL_PROCEDURE
20916       ,p_module   => l_log_module);
20917 END IF;
20918 --
20919 EXCEPTION
20920   WHEN xla_exceptions_pkg.application_exception THEN
20921       RAISE;
20922   WHEN OTHERS THEN
20923        xla_exceptions_pkg.raise_message
20924            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_51');
20925 END AcctLineType_51;
20926 --
20927 
20928 ---------------------------------------
20929 --
20930 -- PRIVATE FUNCTION
20931 --         AcctLineType_52
20932 --
20933 ---------------------------------------
20934 PROCEDURE AcctLineType_52 (
20935   p_application_id        IN NUMBER
20936  ,p_event_id              IN NUMBER
20937  ,p_calculate_acctd_flag  IN VARCHAR2
20938  ,p_calculate_g_l_flag    IN VARCHAR2
20939  ,p_actual_flag           IN OUT VARCHAR2
20940  ,p_balance_type_code     OUT VARCHAR2
20941  ,p_gain_or_loss_ref      OUT VARCHAR2
20942  
20943 --Cost CCID
20944  , p_source_3            IN NUMBER
20945 --Allow Account Override Flag
20946  , p_source_4            IN VARCHAR2
20947 --Adjustment Cost CCID
20948  , p_source_5            IN NUMBER
20949 --Cost Clearing CCID
20950  , p_source_6            IN NUMBER
20951 --Reversing Line Flag
20952  , p_source_22            IN VARCHAR2
20953 --Actual Upgrade Credit Accounting Class
20954  , p_source_23            IN VARCHAR2
20955 --Entered Raw Cost
20956  , p_source_24            IN NUMBER
20957 --Entered Currency Code
20958  , p_source_25            IN VARCHAR2
20959 --Accounted Raw Cost
20960  , p_source_26            IN NUMBER
20961 --Exchange Rate Date
20962  , p_source_27            IN DATE
20963 --Exchange Rate
20964  , p_source_28            IN NUMBER
20965 --Exchange Rate Type
20966  , p_source_29            IN VARCHAR2
20967 --Actual Upgrade Debit Accounting Class
20968  , p_source_30            IN VARCHAR2
20969 --Use Actuals Upgrade Attributes Flag
20970  , p_source_31            IN VARCHAR2
20971 --Expenditure Item ID
20972  , p_source_32            IN NUMBER
20973 --Cost Distribution Line Number
20974  , p_source_33            IN NUMBER
20975 --Line Type
20976  , p_source_34            IN VARCHAR2
20977  , p_source_34_meaning    IN VARCHAR2
20978 --Reversed Line Number
20979  , p_source_35            IN NUMBER
20980 )
20981 IS
20982 
20983 l_component_type              VARCHAR2(80);
20984 l_component_code              VARCHAR2(30);
20985 l_component_type_code         VARCHAR2(1);
20986 l_component_appl_id           INTEGER;
20987 l_amb_context_code            VARCHAR2(30);
20988 l_entity_code                 VARCHAR2(30);
20989 l_event_class_code            VARCHAR2(30);
20990 l_ae_header_id                NUMBER;
20991 l_event_type_code             VARCHAR2(30);
20992 l_line_definition_code        VARCHAR2(30);
20993 l_line_definition_owner_code  VARCHAR2(1);
20994 --
20995 -- adr variables
20996 l_segment                     VARCHAR2(30);
20997 l_ccid                        NUMBER;
20998 l_adr_transaction_coa_id      NUMBER;
20999 l_adr_accounting_coa_id       NUMBER;
21000 l_adr_flexfield_segment_code  VARCHAR2(30);
21001 l_adr_flex_value_set_id       NUMBER;
21002 l_adr_value_type_code         VARCHAR2(30);
21003 l_adr_value_combination_id    NUMBER;
21004 l_adr_value_segment_code      VARCHAR2(30);
21005 
21006 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21007 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21008 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21009 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21010 
21011 -- 4262811 Variables ------------------------------------------------------------------------------------------
21012 l_entered_amt_idx             NUMBER;
21013 l_accted_amt_idx              NUMBER;
21014 l_acc_rev_flag                VARCHAR2(1);
21015 l_accrual_line_num            NUMBER;
21016 l_tmp_amt                     NUMBER;
21017 l_acc_rev_natural_side_code   VARCHAR2(1);
21018 
21019 l_num_entries                 NUMBER;
21020 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21021 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21022 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21023 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21024 l_recog_line_1                NUMBER;
21025 l_recog_line_2                NUMBER;
21026 
21027 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21028 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21029 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21030 
21034 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21031 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21032 
21033 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21035 
21036 ---------------------------------------------------------------------------------------------------------------
21037 
21038 
21039 --
21040 -- bulk performance
21041 --
21042 l_balance_type_code           VARCHAR2(1);
21043 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21044 l_log_module                  VARCHAR2(240);
21045 
21046 --
21047 -- Upgrade strategy
21048 --
21049 l_actual_upg_option           VARCHAR2(1);
21050 l_enc_upg_option           VARCHAR2(1);
21051 
21052 --
21053 BEGIN
21054 --
21055 IF g_log_enabled THEN
21056       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
21057 END IF;
21058 --
21059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21060 
21061       trace
21062          (p_msg      => 'BEGIN of AcctLineType_52'
21063          ,p_level    => C_LEVEL_PROCEDURE
21064          ,p_module   => l_log_module);
21065 
21066 END IF;
21067 --
21068 l_component_type             := 'AMB_JLT';
21069 l_component_code             := 'PA_RAW_COST_ADJ';
21070 l_component_type_code        := 'S';
21071 l_component_appl_id          :=  275;
21072 l_amb_context_code           := 'DEFAULT';
21073 l_entity_code                := 'EXPENDITURES';
21074 l_event_class_code           := 'WIP_COST_ADJ';
21075 l_event_type_code            := 'WIP_COST_ADJ_ALL';
21076 l_line_definition_owner_code := 'S';
21077 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
21078 --
21079 l_balance_type_code          := 'A';
21080 l_segment                     := NULL;
21081 l_ccid                        := NULL;
21082 l_adr_transaction_coa_id      := NULL;
21083 l_adr_accounting_coa_id       := NULL;
21084 l_adr_flexfield_segment_code  := NULL;
21085 l_adr_flex_value_set_id       := NULL;
21086 l_adr_value_type_code         := NULL;
21087 l_adr_value_combination_id    := NULL;
21088 l_adr_value_segment_code      := NULL;
21089 
21090 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21091 l_bflow_class_code           := '';    -- 4219869 Business Flow
21092 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21093 l_budgetary_control_flag     := 'N';
21094 
21095 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21096 l_bflow_applied_to_amt       := NULL; -- 5132302
21097 l_entered_amt_idx            := NULL;          -- 4262811
21098 l_accted_amt_idx             := NULL;          -- 4262811
21099 l_acc_rev_flag               := NULL;          -- 4262811
21100 l_accrual_line_num           := NULL;          -- 4262811
21101 l_tmp_amt                    := NULL;          -- 4262811
21102 --
21103  
21104 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21105     l_balance_type_code <> 'B' THEN
21106 
21107    --
21108    XLA_AE_LINES_PKG.SetNewLine;
21109 
21110    p_balance_type_code          := l_balance_type_code;
21111    -- set the flag so later we will know whether the gain loss line needs to be created
21112    
21113    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21114      p_actual_flag :='A';
21115    END IF;
21116 
21117    --
21118    -- bulk performance
21119    --
21120    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21121                                       p_header_num   => 0); -- 4262811
21122    --
21123    -- set accounting line options
21124    --
21125    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21126            p_natural_side_code          => 'D'
21127          , p_gain_or_loss_flag          => 'N'
21128          , p_gl_transfer_mode_code      => 'S'
21129          , p_acct_entry_type_code       => 'A'
21130          , p_switch_side_flag           => 'Y'
21131          , p_merge_duplicate_code       => 'N'
21132          );
21133    --
21134    l_acc_rev_natural_side_code := 'C';  -- 4262811
21135    -- 
21136    --
21137    -- set accounting line type info
21138    --
21139    xla_ae_lines_pkg.SetAcctLineType
21140       (p_component_type             => l_component_type
21141       ,p_event_type_code            => l_event_type_code
21142       ,p_line_definition_owner_code => l_line_definition_owner_code
21143       ,p_line_definition_code       => l_line_definition_code
21144       ,p_accounting_line_code       => l_component_code
21145       ,p_accounting_line_type_code  => l_component_type_code
21146       ,p_accounting_line_appl_id    => l_component_appl_id
21147       ,p_amb_context_code           => l_amb_context_code
21148       ,p_entity_code                => l_entity_code
21149       ,p_event_class_code           => l_event_class_code);
21150    --
21151    -- set accounting class
21152    --
21153    xla_ae_lines_pkg.SetAcctClass(
21154            p_accounting_class_code  => 'COST'
21155          , p_ae_header_id           => l_ae_header_id
21156          );
21157 
21158    --
21159    -- set rounding class
21160    --
21161    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21162                       'COST';
21163 
21164    --
21165    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21166    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21167    --
21168    -- bulk performance
21169    --
21170    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21171 
21172    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21176    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21173       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21174 
21175    -- 4955764
21177       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21178 
21179    -- 4458381 Public Sector Enh
21180    
21181    --
21182    -- set accounting attributes for the line type
21183    --
21184    l_entered_amt_idx := 22;
21185    l_accted_amt_idx  := 27;
21186    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21187    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21188    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
21189    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
21190    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
21191    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
21192    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
21193    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
21194    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
21195    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
21196    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
21197    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
21198    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
21199    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
21200    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
21201    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
21202    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
21203    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
21204    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
21205    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
21206    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
21207    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
21208    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
21209    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
21210    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
21211    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
21212    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
21213    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
21214    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
21215    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
21216    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
21217    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
21218    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
21219    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
21220    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
21221    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
21222    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
21223    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
21224    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
21225    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
21226    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
21227    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
21228    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
21229    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
21230    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
21231    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
21232    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
21233    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
21234    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
21235    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
21236    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
21237    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
21238    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
21239    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
21240    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
21241    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
21242    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
21243    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
21244    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
21245    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
21246    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
21247 
21248    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21249    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21250 
21251    ---------------------------------------------------------------------------------------------------------------
21252    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21253    ---------------------------------------------------------------------------------------------------------------
21254    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21255 
21256    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21257    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21258 
21259    IF xla_accounting_cache_pkg.GetValueChar
21260          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21261          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21262    AND l_bflow_method_code = 'PRIOR_ENTRY'
21263 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21264    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21265          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21266        )
21267    THEN
21271            ,p_balance_type            => l_balance_type_code);
21268          xla_ae_lines_pkg.BflowUpgEntry
21269            (p_business_method_code    => l_bflow_method_code
21270            ,p_business_class_code     => l_bflow_class_code
21272    ELSE
21273       NULL;
21274 -- No business flow processing for business flow method of NONE.
21275    END IF;
21276 
21277    --
21278    -- call analytical criteria
21279    --
21280    
21281    --
21282    -- call description
21283    --
21284    -- No description or it is inherited.
21285    --
21286    -- call ADRs
21287    -- Bug 4922099
21288    --
21289    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21290         (NVL(l_actual_upg_option, 'N') = 'O') OR
21291         (NVL(l_enc_upg_option, 'N') = 'O')
21292       )
21293    THEN
21294    NULL;
21295    --
21296    --
21297    
21298   l_ccid := AcctDerRule_4(
21299            p_application_id           => p_application_id
21300          , p_ae_header_id             => l_ae_header_id 
21301 , p_source_4 => p_source_4
21302 , p_source_5 => p_source_5
21303          , x_transaction_coa_id       => l_adr_transaction_coa_id
21304          , x_accounting_coa_id        => l_adr_accounting_coa_id
21305          , x_value_type_code          => l_adr_value_type_code
21306          , p_side                     => 'NA'
21307    );
21308 
21309    xla_ae_lines_pkg.set_ccid(
21310     p_code_combination_id          => l_ccid
21311   , p_value_type_code              => l_adr_value_type_code
21312   , p_transaction_coa_id           => l_adr_transaction_coa_id
21313   , p_accounting_coa_id            => l_adr_accounting_coa_id
21314   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
21315   , p_adr_type_code                => 'S'
21316   , p_component_type               => l_component_type
21317   , p_component_code               => l_component_code
21318   , p_component_type_code          => l_component_type_code
21319   , p_component_appl_id            => l_component_appl_id
21320   , p_amb_context_code             => l_amb_context_code
21321   , p_side                         => 'NA'
21322   );
21323 
21324 
21325    --
21326    --
21327    END IF;
21328    --
21329    -- Bug 4922099
21330    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21331           (NVL(l_enc_upg_option, 'N') = 'O')
21332         ) AND
21333         (l_bflow_method_code = 'PRIOR_ENTRY')
21334       )
21335    THEN
21336       IF
21337       --
21338       1 = 2
21339       --
21340       THEN
21341       xla_accounting_err_pkg.build_message
21342                                     (p_appli_s_name            => 'XLA'
21343                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21344                                     ,p_token_1                 => 'LINE_NUMBER'
21345                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21346                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21347                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21348                                                                              l_component_type
21349                                                                             ,l_component_code
21350                                                                             ,l_component_type_code
21351                                                                             ,l_component_appl_id
21352                                                                             ,l_amb_context_code
21353                                                                             ,l_entity_code
21354                                                                             ,l_event_class_code
21355                                                                            )
21356                                     ,p_token_3                 => 'OWNER'
21357                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21358                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21359                                                                           ,p_lookup_code    => l_component_type_code
21360                                                                          )
21361                                     ,p_token_4                 => 'PRODUCT_NAME'
21362                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21363                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21364                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21365                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21366                                     ,p_ae_header_id            =>  NULL
21367                                        );
21368 
21369         IF (C_LEVEL_ERROR>= g_log_level) THEN
21370                  trace
21371                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21372                       ,p_level    => C_LEVEL_ERROR
21373                       ,p_module   => l_log_module);
21374         END IF;
21375       END IF;
21376    END IF;
21377    --
21378    --
21379    ------------------------------------------------------------------------------------------------
21380    -- 4219869 Business Flow
21381    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21382    -- Prior Entry.  Currently, the following code is always generated.
21383    ------------------------------------------------------------------------------------------------
21384    XLA_AE_LINES_PKG.ValidateCurrentLine;
21385 
21386    ------------------------------------------------------------------------------------
21390    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21387    -- 4219869 Business Flow
21388    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21389    ------------------------------------------------------------------------------------
21391 
21392    ----------------------------------------------------------------------------------
21393    -- 4219869 Business Flow
21394    -- Update journal entry status -- Need to generate this within IF <condition>
21395    ----------------------------------------------------------------------------------
21396    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21397          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21398          ,p_balance_type_code => l_balance_type_code
21399          );
21400 
21401    -------------------------------------------------------------------------------------------
21402    -- 4262811 - Generate the Accrual Reversal lines
21403    -------------------------------------------------------------------------------------------
21404    BEGIN
21405       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21406                               (g_array_event(p_event_id).array_value_num('header_index'));
21407       IF l_acc_rev_flag IS NULL THEN
21408          l_acc_rev_flag := 'N';
21409       END IF;
21410    EXCEPTION
21411       WHEN OTHERS THEN
21412          l_acc_rev_flag := 'N';
21413    END;
21414    --
21415    IF (l_acc_rev_flag = 'Y') THEN
21416 
21417        -- 4645092  ------------------------------------------------------------------------------
21418        -- To allow MPA report to determine if it should generate report process
21419        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21420        ------------------------------------------------------------------------------------------
21421 
21422        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21423        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21424 
21425        --
21426        -- Update the line information that should be overwritten
21427        --
21428        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21429                                          p_header_num   => 1);
21430        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21431 
21432        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21433 
21434        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21435           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21436        END IF;
21437 
21438       --
21439       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21440       --
21441       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21442           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21443       ELSE
21444           ---------------------------------------------------------------------------------------------------
21445           -- 4262811a Switch Sign
21446           ---------------------------------------------------------------------------------------------------
21447           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21448           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21449                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21450           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21451                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21452           -- 5132302
21453           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21454                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21455 
21456       END IF;
21457 
21458       -- 4955764
21459       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21460       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21461 
21462 
21463       XLA_AE_LINES_PKG.ValidateCurrentLine;
21464       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21465 
21466       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21467                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21468                ,p_balance_type_code => l_balance_type_code);
21469 
21470    END IF;
21471 
21472    -----------------------------------------------------------------------------------------
21473    -- 4262811 Multiperiod Accounting
21474    -----------------------------------------------------------------------------------------
21475      -- No MPA option is assigned.
21476 
21477 
21478 END IF;
21479 --
21480 
21481 --
21482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21483    trace
21484       (p_msg      => 'END of AcctLineType_52'
21485       ,p_level    => C_LEVEL_PROCEDURE
21486       ,p_module   => l_log_module);
21487 END IF;
21488 --
21489 EXCEPTION
21490   WHEN xla_exceptions_pkg.application_exception THEN
21491       RAISE;
21492   WHEN OTHERS THEN
21493        xla_exceptions_pkg.raise_message
21494            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_52');
21495 END AcctLineType_52;
21496 --
21497 
21498 ---------------------------------------
21499 --
21500 -- PRIVATE FUNCTION
21501 --         AcctLineType_53
21502 --
21503 ---------------------------------------
21504 PROCEDURE AcctLineType_53 (
21505   p_application_id        IN NUMBER
21506  ,p_event_id              IN NUMBER
21507  ,p_calculate_acctd_flag  IN VARCHAR2
21511  ,p_gain_or_loss_ref      OUT VARCHAR2
21508  ,p_calculate_g_l_flag    IN VARCHAR2
21509  ,p_actual_flag           IN OUT VARCHAR2
21510  ,p_balance_type_code     OUT VARCHAR2
21512  
21513 --Cost CCID
21514  , p_source_3            IN NUMBER
21515 --Allow Account Override Flag
21516  , p_source_4            IN VARCHAR2
21517 --Cost Clearing CCID
21518  , p_source_6            IN NUMBER
21519 --Adjustment Cost Clearing CCID
21520  , p_source_7            IN NUMBER
21521 --Reversing Line Flag
21522  , p_source_22            IN VARCHAR2
21523 --Actual Upgrade Credit Accounting Class
21524  , p_source_23            IN VARCHAR2
21525 --Entered Raw Cost
21526  , p_source_24            IN NUMBER
21527 --Entered Currency Code
21528  , p_source_25            IN VARCHAR2
21529 --Accounted Raw Cost
21530  , p_source_26            IN NUMBER
21531 --Exchange Rate Date
21532  , p_source_27            IN DATE
21533 --Exchange Rate
21534  , p_source_28            IN NUMBER
21535 --Exchange Rate Type
21536  , p_source_29            IN VARCHAR2
21537 --Actual Upgrade Debit Accounting Class
21538  , p_source_30            IN VARCHAR2
21539 --Use Actuals Upgrade Attributes Flag
21540  , p_source_31            IN VARCHAR2
21541 --Expenditure Item ID
21542  , p_source_32            IN NUMBER
21543 --Cost Distribution Line Number
21544  , p_source_33            IN NUMBER
21545 --Line Type
21546  , p_source_34            IN VARCHAR2
21547  , p_source_34_meaning    IN VARCHAR2
21548 --Reversed Line Number
21549  , p_source_35            IN NUMBER
21550 )
21551 IS
21552 
21553 l_component_type              VARCHAR2(80);
21554 l_component_code              VARCHAR2(30);
21555 l_component_type_code         VARCHAR2(1);
21556 l_component_appl_id           INTEGER;
21557 l_amb_context_code            VARCHAR2(30);
21558 l_entity_code                 VARCHAR2(30);
21559 l_event_class_code            VARCHAR2(30);
21560 l_ae_header_id                NUMBER;
21561 l_event_type_code             VARCHAR2(30);
21562 l_line_definition_code        VARCHAR2(30);
21563 l_line_definition_owner_code  VARCHAR2(1);
21564 --
21565 -- adr variables
21566 l_segment                     VARCHAR2(30);
21567 l_ccid                        NUMBER;
21568 l_adr_transaction_coa_id      NUMBER;
21569 l_adr_accounting_coa_id       NUMBER;
21570 l_adr_flexfield_segment_code  VARCHAR2(30);
21571 l_adr_flex_value_set_id       NUMBER;
21572 l_adr_value_type_code         VARCHAR2(30);
21573 l_adr_value_combination_id    NUMBER;
21574 l_adr_value_segment_code      VARCHAR2(30);
21575 
21576 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21577 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21578 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21579 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21580 
21581 -- 4262811 Variables ------------------------------------------------------------------------------------------
21582 l_entered_amt_idx             NUMBER;
21583 l_accted_amt_idx              NUMBER;
21584 l_acc_rev_flag                VARCHAR2(1);
21585 l_accrual_line_num            NUMBER;
21586 l_tmp_amt                     NUMBER;
21587 l_acc_rev_natural_side_code   VARCHAR2(1);
21588 
21589 l_num_entries                 NUMBER;
21590 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21591 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21592 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21593 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21594 l_recog_line_1                NUMBER;
21595 l_recog_line_2                NUMBER;
21596 
21597 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21598 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21599 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21600 
21601 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21602 
21603 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21604 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21605 
21606 ---------------------------------------------------------------------------------------------------------------
21607 
21608 
21609 --
21610 -- bulk performance
21611 --
21612 l_balance_type_code           VARCHAR2(1);
21613 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21614 l_log_module                  VARCHAR2(240);
21615 
21616 --
21617 -- Upgrade strategy
21618 --
21619 l_actual_upg_option           VARCHAR2(1);
21620 l_enc_upg_option           VARCHAR2(1);
21621 
21622 --
21623 BEGIN
21624 --
21625 IF g_log_enabled THEN
21626       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
21627 END IF;
21628 --
21629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21630 
21631       trace
21632          (p_msg      => 'BEGIN of AcctLineType_53'
21633          ,p_level    => C_LEVEL_PROCEDURE
21634          ,p_module   => l_log_module);
21635 
21636 END IF;
21637 --
21638 l_component_type             := 'AMB_JLT';
21639 l_component_code             := 'PA_RAW_COST_CLEARING';
21640 l_component_type_code        := 'S';
21641 l_component_appl_id          :=  275;
21642 l_amb_context_code           := 'DEFAULT';
21643 l_entity_code                := 'EXPENDITURES';
21644 l_event_class_code           := 'WIP_COST';
21645 l_event_type_code            := 'WIP_COST_ALL';
21646 l_line_definition_owner_code := 'S';
21647 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
21648 --
21649 l_balance_type_code          := 'A';
21650 l_segment                     := NULL;
21654 l_adr_flexfield_segment_code  := NULL;
21651 l_ccid                        := NULL;
21652 l_adr_transaction_coa_id      := NULL;
21653 l_adr_accounting_coa_id       := NULL;
21655 l_adr_flex_value_set_id       := NULL;
21656 l_adr_value_type_code         := NULL;
21657 l_adr_value_combination_id    := NULL;
21658 l_adr_value_segment_code      := NULL;
21659 
21660 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21661 l_bflow_class_code           := '';    -- 4219869 Business Flow
21662 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21663 l_budgetary_control_flag     := 'N';
21664 
21665 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21666 l_bflow_applied_to_amt       := NULL; -- 5132302
21667 l_entered_amt_idx            := NULL;          -- 4262811
21668 l_accted_amt_idx             := NULL;          -- 4262811
21669 l_acc_rev_flag               := NULL;          -- 4262811
21670 l_accrual_line_num           := NULL;          -- 4262811
21671 l_tmp_amt                    := NULL;          -- 4262811
21672 --
21673  
21674 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21675     l_balance_type_code <> 'B' THEN
21676 
21677    --
21678    XLA_AE_LINES_PKG.SetNewLine;
21679 
21680    p_balance_type_code          := l_balance_type_code;
21681    -- set the flag so later we will know whether the gain loss line needs to be created
21682    
21683    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21684      p_actual_flag :='A';
21685    END IF;
21686 
21687    --
21688    -- bulk performance
21689    --
21690    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21691                                       p_header_num   => 0); -- 4262811
21692    --
21693    -- set accounting line options
21694    --
21695    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21696            p_natural_side_code          => 'C'
21697          , p_gain_or_loss_flag          => 'N'
21698          , p_gl_transfer_mode_code      => 'S'
21699          , p_acct_entry_type_code       => 'A'
21700          , p_switch_side_flag           => 'Y'
21701          , p_merge_duplicate_code       => 'N'
21702          );
21703    --
21704    l_acc_rev_natural_side_code := 'D';  -- 4262811
21705    -- 
21706    --
21707    -- set accounting line type info
21708    --
21709    xla_ae_lines_pkg.SetAcctLineType
21710       (p_component_type             => l_component_type
21711       ,p_event_type_code            => l_event_type_code
21712       ,p_line_definition_owner_code => l_line_definition_owner_code
21713       ,p_line_definition_code       => l_line_definition_code
21714       ,p_accounting_line_code       => l_component_code
21715       ,p_accounting_line_type_code  => l_component_type_code
21716       ,p_accounting_line_appl_id    => l_component_appl_id
21717       ,p_amb_context_code           => l_amb_context_code
21718       ,p_entity_code                => l_entity_code
21719       ,p_event_class_code           => l_event_class_code);
21720    --
21721    -- set accounting class
21722    --
21723    xla_ae_lines_pkg.SetAcctClass(
21724            p_accounting_class_code  => 'COST_CLEARING'
21725          , p_ae_header_id           => l_ae_header_id
21726          );
21727 
21728    --
21729    -- set rounding class
21730    --
21731    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21732                       'COST_CLEARING';
21733 
21734    --
21735    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21736    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21737    --
21738    -- bulk performance
21739    --
21740    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21741 
21742    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21743       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21744 
21745    -- 4955764
21746    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21747       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21748 
21749    -- 4458381 Public Sector Enh
21750    
21751    --
21752    -- set accounting attributes for the line type
21753    --
21754    l_entered_amt_idx := 22;
21755    l_accted_amt_idx  := 27;
21756    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21757    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21758    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
21759    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
21760    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
21761    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
21762    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
21763    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
21764    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
21765    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
21766    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
21767    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
21768    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
21769    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
21770    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
21771    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
21772    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
21773    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
21774    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
21775    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
21779    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
21776    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
21777    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
21778    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
21780    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
21781    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
21782    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
21783    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
21784    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
21785    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
21786    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
21787    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
21788    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
21789    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
21790    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
21791    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
21792    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
21793    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
21794    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
21795    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
21796    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
21797    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
21798    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
21799    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
21800    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
21801    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
21802    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
21803    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
21804    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
21805    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
21806    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
21807    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
21808    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
21809    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
21810    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
21811    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
21812    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
21813    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
21814    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
21815    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
21816    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
21817 
21818    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21819    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21820 
21821    ---------------------------------------------------------------------------------------------------------------
21822    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21823    ---------------------------------------------------------------------------------------------------------------
21824    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21825 
21826    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21827    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21828 
21829    IF xla_accounting_cache_pkg.GetValueChar
21830          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21831          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21832    AND l_bflow_method_code = 'PRIOR_ENTRY'
21833 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21834    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21835          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21836        )
21837    THEN
21838          xla_ae_lines_pkg.BflowUpgEntry
21839            (p_business_method_code    => l_bflow_method_code
21840            ,p_business_class_code     => l_bflow_class_code
21841            ,p_balance_type            => l_balance_type_code);
21842    ELSE
21843       NULL;
21844 -- No business flow processing for business flow method of NONE.
21845    END IF;
21846 
21847    --
21848    -- call analytical criteria
21849    --
21850    
21851    --
21852    -- call description
21853    --
21854    -- No description or it is inherited.
21855    --
21856    -- call ADRs
21857    -- Bug 4922099
21858    --
21859    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21860         (NVL(l_actual_upg_option, 'N') = 'O') OR
21861         (NVL(l_enc_upg_option, 'N') = 'O')
21862       )
21863    THEN
21864    NULL;
21865    --
21866    --
21867    
21868   l_ccid := AcctDerRule_5(
21869            p_application_id           => p_application_id
21870          , p_ae_header_id             => l_ae_header_id 
21871 , p_source_4 => p_source_4
21872 , p_source_6 => p_source_6
21873 , p_source_7 => p_source_7
21874          , x_transaction_coa_id       => l_adr_transaction_coa_id
21875          , x_accounting_coa_id        => l_adr_accounting_coa_id
21876          , x_value_type_code          => l_adr_value_type_code
21877          , p_side                     => 'NA'
21878    );
21879 
21880    xla_ae_lines_pkg.set_ccid(
21881     p_code_combination_id          => l_ccid
21882   , p_value_type_code              => l_adr_value_type_code
21883   , p_transaction_coa_id           => l_adr_transaction_coa_id
21884   , p_accounting_coa_id            => l_adr_accounting_coa_id
21885   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
21889   , p_component_type_code          => l_component_type_code
21886   , p_adr_type_code                => 'S'
21887   , p_component_type               => l_component_type
21888   , p_component_code               => l_component_code
21890   , p_component_appl_id            => l_component_appl_id
21891   , p_amb_context_code             => l_amb_context_code
21892   , p_side                         => 'NA'
21893   );
21894 
21895 
21896    --
21897    --
21898    END IF;
21899    --
21900    -- Bug 4922099
21901    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21902           (NVL(l_enc_upg_option, 'N') = 'O')
21903         ) AND
21904         (l_bflow_method_code = 'PRIOR_ENTRY')
21905       )
21906    THEN
21907       IF
21908       --
21909       1 = 2
21910       --
21911       THEN
21912       xla_accounting_err_pkg.build_message
21913                                     (p_appli_s_name            => 'XLA'
21914                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21915                                     ,p_token_1                 => 'LINE_NUMBER'
21916                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21917                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21918                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21919                                                                              l_component_type
21920                                                                             ,l_component_code
21921                                                                             ,l_component_type_code
21922                                                                             ,l_component_appl_id
21923                                                                             ,l_amb_context_code
21924                                                                             ,l_entity_code
21925                                                                             ,l_event_class_code
21926                                                                            )
21927                                     ,p_token_3                 => 'OWNER'
21928                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21929                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21930                                                                           ,p_lookup_code    => l_component_type_code
21931                                                                          )
21932                                     ,p_token_4                 => 'PRODUCT_NAME'
21933                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21934                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21935                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21936                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21937                                     ,p_ae_header_id            =>  NULL
21938                                        );
21939 
21940         IF (C_LEVEL_ERROR>= g_log_level) THEN
21941                  trace
21942                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21943                       ,p_level    => C_LEVEL_ERROR
21944                       ,p_module   => l_log_module);
21945         END IF;
21946       END IF;
21947    END IF;
21948    --
21949    --
21950    ------------------------------------------------------------------------------------------------
21951    -- 4219869 Business Flow
21952    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21953    -- Prior Entry.  Currently, the following code is always generated.
21954    ------------------------------------------------------------------------------------------------
21955    XLA_AE_LINES_PKG.ValidateCurrentLine;
21956 
21957    ------------------------------------------------------------------------------------
21958    -- 4219869 Business Flow
21959    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21960    ------------------------------------------------------------------------------------
21961    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21962 
21963    ----------------------------------------------------------------------------------
21964    -- 4219869 Business Flow
21965    -- Update journal entry status -- Need to generate this within IF <condition>
21966    ----------------------------------------------------------------------------------
21967    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21968          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21969          ,p_balance_type_code => l_balance_type_code
21970          );
21971 
21972    -------------------------------------------------------------------------------------------
21973    -- 4262811 - Generate the Accrual Reversal lines
21974    -------------------------------------------------------------------------------------------
21975    BEGIN
21976       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21977                               (g_array_event(p_event_id).array_value_num('header_index'));
21978       IF l_acc_rev_flag IS NULL THEN
21979          l_acc_rev_flag := 'N';
21980       END IF;
21981    EXCEPTION
21982       WHEN OTHERS THEN
21983          l_acc_rev_flag := 'N';
21984    END;
21985    --
21986    IF (l_acc_rev_flag = 'Y') THEN
21987 
21988        -- 4645092  ------------------------------------------------------------------------------
21989        -- To allow MPA report to determine if it should generate report process
21990        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21994        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21991        ------------------------------------------------------------------------------------------
21992 
21993        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21995 
21996        --
21997        -- Update the line information that should be overwritten
21998        --
21999        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22000                                          p_header_num   => 1);
22001        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22002 
22003        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22004 
22005        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22006           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22007        END IF;
22008 
22009       --
22010       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22011       --
22012       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22013           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22014       ELSE
22015           ---------------------------------------------------------------------------------------------------
22016           -- 4262811a Switch Sign
22017           ---------------------------------------------------------------------------------------------------
22018           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22019           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22020                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22021           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22022                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22023           -- 5132302
22024           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22025                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22026 
22027       END IF;
22028 
22029       -- 4955764
22030       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22031       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22032 
22033 
22034       XLA_AE_LINES_PKG.ValidateCurrentLine;
22035       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22036 
22037       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22038                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22039                ,p_balance_type_code => l_balance_type_code);
22040 
22041    END IF;
22042 
22043    -----------------------------------------------------------------------------------------
22044    -- 4262811 Multiperiod Accounting
22045    -----------------------------------------------------------------------------------------
22046      -- No MPA option is assigned.
22047 
22048 
22049 END IF;
22050 --
22051 
22052 --
22053 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22054    trace
22055       (p_msg      => 'END of AcctLineType_53'
22056       ,p_level    => C_LEVEL_PROCEDURE
22057       ,p_module   => l_log_module);
22058 END IF;
22059 --
22060 EXCEPTION
22061   WHEN xla_exceptions_pkg.application_exception THEN
22062       RAISE;
22063   WHEN OTHERS THEN
22064        xla_exceptions_pkg.raise_message
22065            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_53');
22066 END AcctLineType_53;
22067 --
22068 
22069 ---------------------------------------
22070 --
22071 -- PRIVATE FUNCTION
22072 --         AcctLineType_54
22073 --
22074 ---------------------------------------
22075 PROCEDURE AcctLineType_54 (
22076   p_application_id        IN NUMBER
22077  ,p_event_id              IN NUMBER
22078  ,p_calculate_acctd_flag  IN VARCHAR2
22079  ,p_calculate_g_l_flag    IN VARCHAR2
22080  ,p_actual_flag           IN OUT VARCHAR2
22081  ,p_balance_type_code     OUT VARCHAR2
22082  ,p_gain_or_loss_ref      OUT VARCHAR2
22083  
22084 --Cost CCID
22085  , p_source_3            IN NUMBER
22086 --Allow Account Override Flag
22087  , p_source_4            IN VARCHAR2
22088 --Cost Clearing CCID
22089  , p_source_6            IN NUMBER
22090 --Adjustment Cost Clearing CCID
22091  , p_source_7            IN NUMBER
22092 --Reversing Line Flag
22093  , p_source_22            IN VARCHAR2
22094 --Actual Upgrade Credit Accounting Class
22095  , p_source_23            IN VARCHAR2
22096 --Entered Raw Cost
22097  , p_source_24            IN NUMBER
22098 --Entered Currency Code
22099  , p_source_25            IN VARCHAR2
22100 --Accounted Raw Cost
22101  , p_source_26            IN NUMBER
22102 --Exchange Rate Date
22103  , p_source_27            IN DATE
22104 --Exchange Rate
22105  , p_source_28            IN NUMBER
22106 --Exchange Rate Type
22107  , p_source_29            IN VARCHAR2
22108 --Actual Upgrade Debit Accounting Class
22109  , p_source_30            IN VARCHAR2
22110 --Use Actuals Upgrade Attributes Flag
22111  , p_source_31            IN VARCHAR2
22112 --Expenditure Item ID
22113  , p_source_32            IN NUMBER
22114 --Cost Distribution Line Number
22115  , p_source_33            IN NUMBER
22116 --Line Type
22117  , p_source_34            IN VARCHAR2
22118  , p_source_34_meaning    IN VARCHAR2
22119 --Reversed Line Number
22120  , p_source_35            IN NUMBER
22121 )
22122 IS
22123 
22124 l_component_type              VARCHAR2(80);
22125 l_component_code              VARCHAR2(30);
22129 l_entity_code                 VARCHAR2(30);
22126 l_component_type_code         VARCHAR2(1);
22127 l_component_appl_id           INTEGER;
22128 l_amb_context_code            VARCHAR2(30);
22130 l_event_class_code            VARCHAR2(30);
22131 l_ae_header_id                NUMBER;
22132 l_event_type_code             VARCHAR2(30);
22133 l_line_definition_code        VARCHAR2(30);
22134 l_line_definition_owner_code  VARCHAR2(1);
22135 --
22136 -- adr variables
22137 l_segment                     VARCHAR2(30);
22138 l_ccid                        NUMBER;
22139 l_adr_transaction_coa_id      NUMBER;
22140 l_adr_accounting_coa_id       NUMBER;
22141 l_adr_flexfield_segment_code  VARCHAR2(30);
22142 l_adr_flex_value_set_id       NUMBER;
22143 l_adr_value_type_code         VARCHAR2(30);
22144 l_adr_value_combination_id    NUMBER;
22145 l_adr_value_segment_code      VARCHAR2(30);
22146 
22147 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22148 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22149 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22150 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22151 
22152 -- 4262811 Variables ------------------------------------------------------------------------------------------
22153 l_entered_amt_idx             NUMBER;
22154 l_accted_amt_idx              NUMBER;
22155 l_acc_rev_flag                VARCHAR2(1);
22156 l_accrual_line_num            NUMBER;
22157 l_tmp_amt                     NUMBER;
22158 l_acc_rev_natural_side_code   VARCHAR2(1);
22159 
22160 l_num_entries                 NUMBER;
22161 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22162 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22163 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22164 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22165 l_recog_line_1                NUMBER;
22166 l_recog_line_2                NUMBER;
22167 
22168 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22169 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22170 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22171 
22172 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22173 
22174 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22175 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22176 
22177 ---------------------------------------------------------------------------------------------------------------
22178 
22179 
22180 --
22181 -- bulk performance
22182 --
22183 l_balance_type_code           VARCHAR2(1);
22184 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22185 l_log_module                  VARCHAR2(240);
22186 
22187 --
22188 -- Upgrade strategy
22189 --
22190 l_actual_upg_option           VARCHAR2(1);
22191 l_enc_upg_option           VARCHAR2(1);
22192 
22193 --
22194 BEGIN
22195 --
22196 IF g_log_enabled THEN
22197       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
22198 END IF;
22199 --
22200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22201 
22202       trace
22203          (p_msg      => 'BEGIN of AcctLineType_54'
22204          ,p_level    => C_LEVEL_PROCEDURE
22205          ,p_module   => l_log_module);
22206 
22207 END IF;
22208 --
22209 l_component_type             := 'AMB_JLT';
22210 l_component_code             := 'PA_RAW_COST_CLEARING';
22211 l_component_type_code        := 'S';
22212 l_component_appl_id          :=  275;
22213 l_amb_context_code           := 'DEFAULT';
22214 l_entity_code                := 'EXPENDITURES';
22215 l_event_class_code           := 'USG_COST';
22216 l_event_type_code            := 'USG_COST_ALL';
22217 l_line_definition_owner_code := 'S';
22218 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
22219 --
22220 l_balance_type_code          := 'A';
22221 l_segment                     := NULL;
22222 l_ccid                        := NULL;
22223 l_adr_transaction_coa_id      := NULL;
22224 l_adr_accounting_coa_id       := NULL;
22225 l_adr_flexfield_segment_code  := NULL;
22226 l_adr_flex_value_set_id       := NULL;
22227 l_adr_value_type_code         := NULL;
22228 l_adr_value_combination_id    := NULL;
22229 l_adr_value_segment_code      := NULL;
22230 
22231 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22232 l_bflow_class_code           := '';    -- 4219869 Business Flow
22233 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22234 l_budgetary_control_flag     := 'N';
22235 
22236 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22237 l_bflow_applied_to_amt       := NULL; -- 5132302
22238 l_entered_amt_idx            := NULL;          -- 4262811
22239 l_accted_amt_idx             := NULL;          -- 4262811
22240 l_acc_rev_flag               := NULL;          -- 4262811
22241 l_accrual_line_num           := NULL;          -- 4262811
22242 l_tmp_amt                    := NULL;          -- 4262811
22243 --
22244  
22245 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22246     l_balance_type_code <> 'B' THEN
22247 
22248    --
22249    XLA_AE_LINES_PKG.SetNewLine;
22250 
22251    p_balance_type_code          := l_balance_type_code;
22252    -- set the flag so later we will know whether the gain loss line needs to be created
22253    
22254    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22255      p_actual_flag :='A';
22256    END IF;
22257 
22258    --
22259    -- bulk performance
22260    --
22261    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22265    --
22262                                       p_header_num   => 0); -- 4262811
22263    --
22264    -- set accounting line options
22266    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22267            p_natural_side_code          => 'C'
22268          , p_gain_or_loss_flag          => 'N'
22269          , p_gl_transfer_mode_code      => 'S'
22270          , p_acct_entry_type_code       => 'A'
22271          , p_switch_side_flag           => 'Y'
22272          , p_merge_duplicate_code       => 'N'
22273          );
22274    --
22275    l_acc_rev_natural_side_code := 'D';  -- 4262811
22276    -- 
22277    --
22278    -- set accounting line type info
22279    --
22280    xla_ae_lines_pkg.SetAcctLineType
22281       (p_component_type             => l_component_type
22282       ,p_event_type_code            => l_event_type_code
22283       ,p_line_definition_owner_code => l_line_definition_owner_code
22284       ,p_line_definition_code       => l_line_definition_code
22285       ,p_accounting_line_code       => l_component_code
22286       ,p_accounting_line_type_code  => l_component_type_code
22287       ,p_accounting_line_appl_id    => l_component_appl_id
22288       ,p_amb_context_code           => l_amb_context_code
22289       ,p_entity_code                => l_entity_code
22290       ,p_event_class_code           => l_event_class_code);
22291    --
22292    -- set accounting class
22293    --
22294    xla_ae_lines_pkg.SetAcctClass(
22295            p_accounting_class_code  => 'COST_CLEARING'
22296          , p_ae_header_id           => l_ae_header_id
22297          );
22298 
22299    --
22300    -- set rounding class
22301    --
22302    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22303                       'COST_CLEARING';
22304 
22305    --
22306    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22307    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22308    --
22309    -- bulk performance
22310    --
22311    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22312 
22313    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22314       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22315 
22316    -- 4955764
22317    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22318       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22319 
22320    -- 4458381 Public Sector Enh
22321    
22322    --
22323    -- set accounting attributes for the line type
22324    --
22325    l_entered_amt_idx := 22;
22326    l_accted_amt_idx  := 27;
22327    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22328    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22329    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
22330    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
22331    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
22332    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
22333    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
22334    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
22335    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
22336    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
22337    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
22338    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
22339    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
22340    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
22341    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
22342    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
22343    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
22344    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
22345    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
22346    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
22347    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
22348    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
22349    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
22350    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
22351    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
22352    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
22353    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
22354    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
22355    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
22356    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
22357    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
22358    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
22359    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
22360    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
22361    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
22362    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
22363    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
22364    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
22365    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
22366    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
22367    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
22368    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
22369    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
22370    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
22371    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
22372    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
22376    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
22373    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
22374    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
22375    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
22377    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
22378    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
22379    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
22380    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
22381    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
22382    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
22383    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
22384    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
22385    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
22386    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
22387    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
22388 
22389    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22390    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22391 
22392    ---------------------------------------------------------------------------------------------------------------
22393    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22394    ---------------------------------------------------------------------------------------------------------------
22395    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22396 
22397    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22398    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22399 
22400    IF xla_accounting_cache_pkg.GetValueChar
22401          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22402          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22403    AND l_bflow_method_code = 'PRIOR_ENTRY'
22404 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22405    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22406          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22407        )
22408    THEN
22409          xla_ae_lines_pkg.BflowUpgEntry
22410            (p_business_method_code    => l_bflow_method_code
22411            ,p_business_class_code     => l_bflow_class_code
22412            ,p_balance_type            => l_balance_type_code);
22413    ELSE
22414       NULL;
22415 -- No business flow processing for business flow method of NONE.
22416    END IF;
22417 
22418    --
22419    -- call analytical criteria
22420    --
22421    
22422    --
22423    -- call description
22424    --
22425    -- No description or it is inherited.
22426    --
22427    -- call ADRs
22428    -- Bug 4922099
22429    --
22430    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22431         (NVL(l_actual_upg_option, 'N') = 'O') OR
22432         (NVL(l_enc_upg_option, 'N') = 'O')
22433       )
22434    THEN
22435    NULL;
22436    --
22437    --
22438    
22439   l_ccid := AcctDerRule_5(
22440            p_application_id           => p_application_id
22441          , p_ae_header_id             => l_ae_header_id 
22442 , p_source_4 => p_source_4
22443 , p_source_6 => p_source_6
22444 , p_source_7 => p_source_7
22445          , x_transaction_coa_id       => l_adr_transaction_coa_id
22446          , x_accounting_coa_id        => l_adr_accounting_coa_id
22447          , x_value_type_code          => l_adr_value_type_code
22448          , p_side                     => 'NA'
22449    );
22450 
22451    xla_ae_lines_pkg.set_ccid(
22452     p_code_combination_id          => l_ccid
22453   , p_value_type_code              => l_adr_value_type_code
22454   , p_transaction_coa_id           => l_adr_transaction_coa_id
22455   , p_accounting_coa_id            => l_adr_accounting_coa_id
22456   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
22457   , p_adr_type_code                => 'S'
22458   , p_component_type               => l_component_type
22459   , p_component_code               => l_component_code
22460   , p_component_type_code          => l_component_type_code
22461   , p_component_appl_id            => l_component_appl_id
22462   , p_amb_context_code             => l_amb_context_code
22463   , p_side                         => 'NA'
22464   );
22465 
22466 
22467    --
22468    --
22469    END IF;
22470    --
22471    -- Bug 4922099
22472    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22473           (NVL(l_enc_upg_option, 'N') = 'O')
22474         ) AND
22475         (l_bflow_method_code = 'PRIOR_ENTRY')
22476       )
22477    THEN
22478       IF
22479       --
22480       1 = 2
22481       --
22482       THEN
22483       xla_accounting_err_pkg.build_message
22484                                     (p_appli_s_name            => 'XLA'
22485                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22486                                     ,p_token_1                 => 'LINE_NUMBER'
22487                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22488                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22489                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22490                                                                              l_component_type
22491                                                                             ,l_component_code
22492                                                                             ,l_component_type_code
22493                                                                             ,l_component_appl_id
22497                                                                            )
22494                                                                             ,l_amb_context_code
22495                                                                             ,l_entity_code
22496                                                                             ,l_event_class_code
22498                                     ,p_token_3                 => 'OWNER'
22499                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22500                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22501                                                                           ,p_lookup_code    => l_component_type_code
22502                                                                          )
22503                                     ,p_token_4                 => 'PRODUCT_NAME'
22504                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22505                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22506                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22507                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22508                                     ,p_ae_header_id            =>  NULL
22509                                        );
22510 
22511         IF (C_LEVEL_ERROR>= g_log_level) THEN
22512                  trace
22513                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22514                       ,p_level    => C_LEVEL_ERROR
22515                       ,p_module   => l_log_module);
22516         END IF;
22517       END IF;
22518    END IF;
22519    --
22520    --
22521    ------------------------------------------------------------------------------------------------
22522    -- 4219869 Business Flow
22523    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22524    -- Prior Entry.  Currently, the following code is always generated.
22525    ------------------------------------------------------------------------------------------------
22526    XLA_AE_LINES_PKG.ValidateCurrentLine;
22527 
22528    ------------------------------------------------------------------------------------
22529    -- 4219869 Business Flow
22530    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22531    ------------------------------------------------------------------------------------
22532    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22533 
22534    ----------------------------------------------------------------------------------
22535    -- 4219869 Business Flow
22536    -- Update journal entry status -- Need to generate this within IF <condition>
22537    ----------------------------------------------------------------------------------
22538    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22539          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22540          ,p_balance_type_code => l_balance_type_code
22541          );
22542 
22543    -------------------------------------------------------------------------------------------
22544    -- 4262811 - Generate the Accrual Reversal lines
22545    -------------------------------------------------------------------------------------------
22546    BEGIN
22547       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22548                               (g_array_event(p_event_id).array_value_num('header_index'));
22549       IF l_acc_rev_flag IS NULL THEN
22550          l_acc_rev_flag := 'N';
22551       END IF;
22552    EXCEPTION
22553       WHEN OTHERS THEN
22554          l_acc_rev_flag := 'N';
22555    END;
22556    --
22557    IF (l_acc_rev_flag = 'Y') THEN
22558 
22559        -- 4645092  ------------------------------------------------------------------------------
22560        -- To allow MPA report to determine if it should generate report process
22561        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22562        ------------------------------------------------------------------------------------------
22563 
22564        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22565        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22566 
22567        --
22568        -- Update the line information that should be overwritten
22569        --
22570        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22571                                          p_header_num   => 1);
22572        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22573 
22574        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22575 
22576        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22577           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22578        END IF;
22579 
22580       --
22581       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22582       --
22583       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22584           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22585       ELSE
22586           ---------------------------------------------------------------------------------------------------
22587           -- 4262811a Switch Sign
22588           ---------------------------------------------------------------------------------------------------
22589           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22590           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22591                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22595           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22592           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22593                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22594           -- 5132302
22596                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22597 
22598       END IF;
22599 
22600       -- 4955764
22601       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22602       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22603 
22604 
22605       XLA_AE_LINES_PKG.ValidateCurrentLine;
22606       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22607 
22608       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22609                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22610                ,p_balance_type_code => l_balance_type_code);
22611 
22612    END IF;
22613 
22614    -----------------------------------------------------------------------------------------
22615    -- 4262811 Multiperiod Accounting
22616    -----------------------------------------------------------------------------------------
22617      -- No MPA option is assigned.
22618 
22619 
22620 END IF;
22621 --
22622 
22623 --
22624 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22625    trace
22626       (p_msg      => 'END of AcctLineType_54'
22627       ,p_level    => C_LEVEL_PROCEDURE
22628       ,p_module   => l_log_module);
22629 END IF;
22630 --
22631 EXCEPTION
22632   WHEN xla_exceptions_pkg.application_exception THEN
22633       RAISE;
22634   WHEN OTHERS THEN
22635        xla_exceptions_pkg.raise_message
22636            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_54');
22637 END AcctLineType_54;
22638 --
22639 
22640 ---------------------------------------
22641 --
22642 -- PRIVATE FUNCTION
22643 --         AcctLineType_55
22644 --
22645 ---------------------------------------
22646 PROCEDURE AcctLineType_55 (
22647   p_application_id        IN NUMBER
22648  ,p_event_id              IN NUMBER
22649  ,p_calculate_acctd_flag  IN VARCHAR2
22650  ,p_calculate_g_l_flag    IN VARCHAR2
22651  ,p_actual_flag           IN OUT VARCHAR2
22652  ,p_balance_type_code     OUT VARCHAR2
22653  ,p_gain_or_loss_ref      OUT VARCHAR2
22654  
22655 --Cost CCID
22656  , p_source_3            IN NUMBER
22657 --Allow Account Override Flag
22658  , p_source_4            IN VARCHAR2
22659 --Cost Clearing CCID
22660  , p_source_6            IN NUMBER
22661 --Adjustment Cost Clearing CCID
22662  , p_source_7            IN NUMBER
22663 --Reversing Line Flag
22664  , p_source_22            IN VARCHAR2
22665 --Actual Upgrade Credit Accounting Class
22666  , p_source_23            IN VARCHAR2
22667 --Entered Raw Cost
22668  , p_source_24            IN NUMBER
22669 --Entered Currency Code
22670  , p_source_25            IN VARCHAR2
22671 --Accounted Raw Cost
22672  , p_source_26            IN NUMBER
22673 --Exchange Rate Date
22674  , p_source_27            IN DATE
22675 --Exchange Rate
22676  , p_source_28            IN NUMBER
22677 --Exchange Rate Type
22678  , p_source_29            IN VARCHAR2
22679 --Actual Upgrade Debit Accounting Class
22680  , p_source_30            IN VARCHAR2
22681 --Use Actuals Upgrade Attributes Flag
22682  , p_source_31            IN VARCHAR2
22683 --Expenditure Item ID
22684  , p_source_32            IN NUMBER
22685 --Cost Distribution Line Number
22686  , p_source_33            IN NUMBER
22687 --Line Type
22688  , p_source_34            IN VARCHAR2
22689  , p_source_34_meaning    IN VARCHAR2
22690 --Reversed Line Number
22691  , p_source_35            IN NUMBER
22692 )
22693 IS
22694 
22695 l_component_type              VARCHAR2(80);
22696 l_component_code              VARCHAR2(30);
22697 l_component_type_code         VARCHAR2(1);
22698 l_component_appl_id           INTEGER;
22699 l_amb_context_code            VARCHAR2(30);
22700 l_entity_code                 VARCHAR2(30);
22701 l_event_class_code            VARCHAR2(30);
22702 l_ae_header_id                NUMBER;
22703 l_event_type_code             VARCHAR2(30);
22704 l_line_definition_code        VARCHAR2(30);
22705 l_line_definition_owner_code  VARCHAR2(1);
22706 --
22707 -- adr variables
22708 l_segment                     VARCHAR2(30);
22709 l_ccid                        NUMBER;
22710 l_adr_transaction_coa_id      NUMBER;
22711 l_adr_accounting_coa_id       NUMBER;
22712 l_adr_flexfield_segment_code  VARCHAR2(30);
22713 l_adr_flex_value_set_id       NUMBER;
22714 l_adr_value_type_code         VARCHAR2(30);
22715 l_adr_value_combination_id    NUMBER;
22716 l_adr_value_segment_code      VARCHAR2(30);
22717 
22718 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22719 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22720 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22721 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22722 
22723 -- 4262811 Variables ------------------------------------------------------------------------------------------
22724 l_entered_amt_idx             NUMBER;
22725 l_accted_amt_idx              NUMBER;
22726 l_acc_rev_flag                VARCHAR2(1);
22727 l_accrual_line_num            NUMBER;
22728 l_tmp_amt                     NUMBER;
22729 l_acc_rev_natural_side_code   VARCHAR2(1);
22730 
22731 l_num_entries                 NUMBER;
22732 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22733 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22737 l_recog_line_2                NUMBER;
22734 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22735 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22736 l_recog_line_1                NUMBER;
22738 
22739 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22740 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22741 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22742 
22743 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22744 
22745 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22746 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22747 
22748 ---------------------------------------------------------------------------------------------------------------
22749 
22750 
22751 --
22752 -- bulk performance
22753 --
22754 l_balance_type_code           VARCHAR2(1);
22755 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22756 l_log_module                  VARCHAR2(240);
22757 
22758 --
22759 -- Upgrade strategy
22760 --
22761 l_actual_upg_option           VARCHAR2(1);
22762 l_enc_upg_option           VARCHAR2(1);
22763 
22764 --
22765 BEGIN
22766 --
22767 IF g_log_enabled THEN
22768       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
22769 END IF;
22770 --
22771 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22772 
22773       trace
22774          (p_msg      => 'BEGIN of AcctLineType_55'
22775          ,p_level    => C_LEVEL_PROCEDURE
22776          ,p_module   => l_log_module);
22777 
22778 END IF;
22779 --
22780 l_component_type             := 'AMB_JLT';
22781 l_component_code             := 'PA_RAW_COST_CLEARING';
22782 l_component_type_code        := 'S';
22783 l_component_appl_id          :=  275;
22784 l_amb_context_code           := 'DEFAULT';
22785 l_entity_code                := 'EXPENDITURES';
22786 l_event_class_code           := 'LABOR_COST';
22787 l_event_type_code            := 'LABOR_COST_ALL';
22788 l_line_definition_owner_code := 'S';
22789 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
22790 --
22791 l_balance_type_code          := 'A';
22792 l_segment                     := NULL;
22793 l_ccid                        := NULL;
22794 l_adr_transaction_coa_id      := NULL;
22795 l_adr_accounting_coa_id       := NULL;
22796 l_adr_flexfield_segment_code  := NULL;
22797 l_adr_flex_value_set_id       := NULL;
22798 l_adr_value_type_code         := NULL;
22799 l_adr_value_combination_id    := NULL;
22800 l_adr_value_segment_code      := NULL;
22801 
22802 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22803 l_bflow_class_code           := '';    -- 4219869 Business Flow
22804 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22805 l_budgetary_control_flag     := 'N';
22806 
22807 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22808 l_bflow_applied_to_amt       := NULL; -- 5132302
22809 l_entered_amt_idx            := NULL;          -- 4262811
22810 l_accted_amt_idx             := NULL;          -- 4262811
22811 l_acc_rev_flag               := NULL;          -- 4262811
22812 l_accrual_line_num           := NULL;          -- 4262811
22813 l_tmp_amt                    := NULL;          -- 4262811
22814 --
22815  
22816 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22817     l_balance_type_code <> 'B' THEN
22818 
22819    --
22820    XLA_AE_LINES_PKG.SetNewLine;
22821 
22822    p_balance_type_code          := l_balance_type_code;
22823    -- set the flag so later we will know whether the gain loss line needs to be created
22824    
22825    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22826      p_actual_flag :='A';
22827    END IF;
22828 
22829    --
22830    -- bulk performance
22831    --
22832    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22833                                       p_header_num   => 0); -- 4262811
22834    --
22835    -- set accounting line options
22836    --
22837    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22838            p_natural_side_code          => 'C'
22839          , p_gain_or_loss_flag          => 'N'
22840          , p_gl_transfer_mode_code      => 'S'
22841          , p_acct_entry_type_code       => 'A'
22842          , p_switch_side_flag           => 'Y'
22843          , p_merge_duplicate_code       => 'N'
22844          );
22845    --
22846    l_acc_rev_natural_side_code := 'D';  -- 4262811
22847    -- 
22848    --
22849    -- set accounting line type info
22850    --
22851    xla_ae_lines_pkg.SetAcctLineType
22852       (p_component_type             => l_component_type
22853       ,p_event_type_code            => l_event_type_code
22854       ,p_line_definition_owner_code => l_line_definition_owner_code
22855       ,p_line_definition_code       => l_line_definition_code
22856       ,p_accounting_line_code       => l_component_code
22857       ,p_accounting_line_type_code  => l_component_type_code
22858       ,p_accounting_line_appl_id    => l_component_appl_id
22859       ,p_amb_context_code           => l_amb_context_code
22860       ,p_entity_code                => l_entity_code
22861       ,p_event_class_code           => l_event_class_code);
22862    --
22863    -- set accounting class
22864    --
22865    xla_ae_lines_pkg.SetAcctClass(
22866            p_accounting_class_code  => 'COST_CLEARING'
22867          , p_ae_header_id           => l_ae_header_id
22868          );
22869 
22870    --
22871    -- set rounding class
22872    --
22873    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22874                       'COST_CLEARING';
22878    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22875 
22876    --
22877    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22879    --
22880    -- bulk performance
22881    --
22882    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22883 
22884    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22885       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22886 
22887    -- 4955764
22888    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22889       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22890 
22891    -- 4458381 Public Sector Enh
22892    
22893    --
22894    -- set accounting attributes for the line type
22895    --
22896    l_entered_amt_idx := 22;
22897    l_accted_amt_idx  := 27;
22898    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22899    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22900    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
22901    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
22902    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
22903    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
22904    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
22905    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
22906    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
22907    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
22908    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
22909    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
22910    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
22911    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
22912    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
22913    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
22914    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
22915    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
22916    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
22917    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
22918    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
22919    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
22920    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
22921    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
22922    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
22923    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
22924    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
22925    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
22926    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
22927    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
22928    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
22929    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
22930    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
22931    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
22932    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
22933    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
22934    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
22935    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
22936    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
22937    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
22938    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
22939    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
22940    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
22941    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
22942    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
22943    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
22944    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
22945    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
22946    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
22947    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
22948    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
22949    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
22950    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
22951    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
22952    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
22953    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
22954    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
22955    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
22956    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
22957    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
22958    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
22959 
22960    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22961    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22962 
22963    ---------------------------------------------------------------------------------------------------------------
22964    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22965    ---------------------------------------------------------------------------------------------------------------
22966    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22967 
22968    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22969    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22970 
22974    AND l_bflow_method_code = 'PRIOR_ENTRY'
22971    IF xla_accounting_cache_pkg.GetValueChar
22972          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22973          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22975 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22976    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22977          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22978        )
22979    THEN
22980          xla_ae_lines_pkg.BflowUpgEntry
22981            (p_business_method_code    => l_bflow_method_code
22982            ,p_business_class_code     => l_bflow_class_code
22983            ,p_balance_type            => l_balance_type_code);
22984    ELSE
22985       NULL;
22986 -- No business flow processing for business flow method of NONE.
22987    END IF;
22988 
22989    --
22990    -- call analytical criteria
22991    --
22992    
22993    --
22994    -- call description
22995    --
22996    -- No description or it is inherited.
22997    --
22998    -- call ADRs
22999    -- Bug 4922099
23000    --
23001    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23002         (NVL(l_actual_upg_option, 'N') = 'O') OR
23003         (NVL(l_enc_upg_option, 'N') = 'O')
23004       )
23005    THEN
23006    NULL;
23007    --
23008    --
23009    
23010   l_ccid := AcctDerRule_5(
23011            p_application_id           => p_application_id
23012          , p_ae_header_id             => l_ae_header_id 
23013 , p_source_4 => p_source_4
23014 , p_source_6 => p_source_6
23015 , p_source_7 => p_source_7
23016          , x_transaction_coa_id       => l_adr_transaction_coa_id
23017          , x_accounting_coa_id        => l_adr_accounting_coa_id
23018          , x_value_type_code          => l_adr_value_type_code
23019          , p_side                     => 'NA'
23020    );
23021 
23022    xla_ae_lines_pkg.set_ccid(
23023     p_code_combination_id          => l_ccid
23024   , p_value_type_code              => l_adr_value_type_code
23025   , p_transaction_coa_id           => l_adr_transaction_coa_id
23026   , p_accounting_coa_id            => l_adr_accounting_coa_id
23027   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
23028   , p_adr_type_code                => 'S'
23029   , p_component_type               => l_component_type
23030   , p_component_code               => l_component_code
23031   , p_component_type_code          => l_component_type_code
23032   , p_component_appl_id            => l_component_appl_id
23033   , p_amb_context_code             => l_amb_context_code
23034   , p_side                         => 'NA'
23035   );
23036 
23037 
23038    --
23039    --
23040    END IF;
23041    --
23042    -- Bug 4922099
23043    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23044           (NVL(l_enc_upg_option, 'N') = 'O')
23045         ) AND
23046         (l_bflow_method_code = 'PRIOR_ENTRY')
23047       )
23048    THEN
23049       IF
23050       --
23051       1 = 2
23052       --
23053       THEN
23054       xla_accounting_err_pkg.build_message
23055                                     (p_appli_s_name            => 'XLA'
23056                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23057                                     ,p_token_1                 => 'LINE_NUMBER'
23058                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23059                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23060                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23061                                                                              l_component_type
23062                                                                             ,l_component_code
23063                                                                             ,l_component_type_code
23064                                                                             ,l_component_appl_id
23065                                                                             ,l_amb_context_code
23066                                                                             ,l_entity_code
23067                                                                             ,l_event_class_code
23068                                                                            )
23069                                     ,p_token_3                 => 'OWNER'
23070                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23071                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23072                                                                           ,p_lookup_code    => l_component_type_code
23073                                                                          )
23074                                     ,p_token_4                 => 'PRODUCT_NAME'
23075                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23076                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23077                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23078                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23079                                     ,p_ae_header_id            =>  NULL
23080                                        );
23081 
23082         IF (C_LEVEL_ERROR>= g_log_level) THEN
23083                  trace
23084                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23085                       ,p_level    => C_LEVEL_ERROR
23086                       ,p_module   => l_log_module);
23087         END IF;
23088       END IF;
23089    END IF;
23090    --
23091    --
23095    -- Prior Entry.  Currently, the following code is always generated.
23092    ------------------------------------------------------------------------------------------------
23093    -- 4219869 Business Flow
23094    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23096    ------------------------------------------------------------------------------------------------
23097    XLA_AE_LINES_PKG.ValidateCurrentLine;
23098 
23099    ------------------------------------------------------------------------------------
23100    -- 4219869 Business Flow
23101    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23102    ------------------------------------------------------------------------------------
23103    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23104 
23105    ----------------------------------------------------------------------------------
23106    -- 4219869 Business Flow
23107    -- Update journal entry status -- Need to generate this within IF <condition>
23108    ----------------------------------------------------------------------------------
23109    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23110          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23111          ,p_balance_type_code => l_balance_type_code
23112          );
23113 
23114    -------------------------------------------------------------------------------------------
23115    -- 4262811 - Generate the Accrual Reversal lines
23116    -------------------------------------------------------------------------------------------
23117    BEGIN
23118       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23119                               (g_array_event(p_event_id).array_value_num('header_index'));
23120       IF l_acc_rev_flag IS NULL THEN
23121          l_acc_rev_flag := 'N';
23122       END IF;
23123    EXCEPTION
23124       WHEN OTHERS THEN
23125          l_acc_rev_flag := 'N';
23126    END;
23127    --
23128    IF (l_acc_rev_flag = 'Y') THEN
23129 
23130        -- 4645092  ------------------------------------------------------------------------------
23131        -- To allow MPA report to determine if it should generate report process
23132        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23133        ------------------------------------------------------------------------------------------
23134 
23135        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23136        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23137 
23138        --
23139        -- Update the line information that should be overwritten
23140        --
23141        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23142                                          p_header_num   => 1);
23143        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23144 
23145        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23146 
23147        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23148           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23149        END IF;
23150 
23151       --
23152       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23153       --
23154       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23155           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23156       ELSE
23157           ---------------------------------------------------------------------------------------------------
23158           -- 4262811a Switch Sign
23159           ---------------------------------------------------------------------------------------------------
23160           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23161           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23162                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23163           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23164                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23165           -- 5132302
23166           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23167                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23168 
23169       END IF;
23170 
23171       -- 4955764
23172       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23173       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23174 
23175 
23176       XLA_AE_LINES_PKG.ValidateCurrentLine;
23177       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23178 
23179       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23180                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23181                ,p_balance_type_code => l_balance_type_code);
23182 
23183    END IF;
23184 
23185    -----------------------------------------------------------------------------------------
23186    -- 4262811 Multiperiod Accounting
23187    -----------------------------------------------------------------------------------------
23188      -- No MPA option is assigned.
23189 
23190 
23191 END IF;
23192 --
23193 
23194 --
23195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23196    trace
23197       (p_msg      => 'END of AcctLineType_55'
23198       ,p_level    => C_LEVEL_PROCEDURE
23199       ,p_module   => l_log_module);
23200 END IF;
23201 --
23202 EXCEPTION
23203   WHEN xla_exceptions_pkg.application_exception THEN
23204       RAISE;
23205   WHEN OTHERS THEN
23209 --
23206        xla_exceptions_pkg.raise_message
23207            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_55');
23208 END AcctLineType_55;
23210 
23211 ---------------------------------------
23212 --
23213 -- PRIVATE FUNCTION
23214 --         AcctLineType_56
23215 --
23216 ---------------------------------------
23217 PROCEDURE AcctLineType_56 (
23218   p_application_id        IN NUMBER
23219  ,p_event_id              IN NUMBER
23220  ,p_calculate_acctd_flag  IN VARCHAR2
23221  ,p_calculate_g_l_flag    IN VARCHAR2
23222  ,p_actual_flag           IN OUT VARCHAR2
23223  ,p_balance_type_code     OUT VARCHAR2
23224  ,p_gain_or_loss_ref      OUT VARCHAR2
23225  
23226 --Cost CCID
23227  , p_source_3            IN NUMBER
23228 --Allow Account Override Flag
23229  , p_source_4            IN VARCHAR2
23230 --Cost Clearing CCID
23231  , p_source_6            IN NUMBER
23232 --Adjustment Cost Clearing CCID
23233  , p_source_7            IN NUMBER
23234 --Exchange Rate Variance Flag
23235  , p_source_21            IN VARCHAR2
23236 --Reversing Line Flag
23237  , p_source_22            IN VARCHAR2
23238 --Actual Upgrade Credit Accounting Class
23239  , p_source_23            IN VARCHAR2
23240 --Entered Raw Cost
23241  , p_source_24            IN NUMBER
23242 --Entered Currency Code
23243  , p_source_25            IN VARCHAR2
23244 --Accounted Raw Cost
23245  , p_source_26            IN NUMBER
23246 --Exchange Rate Date
23247  , p_source_27            IN DATE
23248 --Exchange Rate
23249  , p_source_28            IN NUMBER
23250 --Exchange Rate Type
23251  , p_source_29            IN VARCHAR2
23252 --Actual Upgrade Debit Accounting Class
23253  , p_source_30            IN VARCHAR2
23254 --Use Actuals Upgrade Attributes Flag
23255  , p_source_31            IN VARCHAR2
23256 --Expenditure Item ID
23257  , p_source_32            IN NUMBER
23258 --Cost Distribution Line Number
23259  , p_source_33            IN NUMBER
23260 --Line Type
23261  , p_source_34            IN VARCHAR2
23262  , p_source_34_meaning    IN VARCHAR2
23263 --Reversed Line Number
23264  , p_source_35            IN NUMBER
23265 )
23266 IS
23267 
23268 l_component_type              VARCHAR2(80);
23269 l_component_code              VARCHAR2(30);
23270 l_component_type_code         VARCHAR2(1);
23271 l_component_appl_id           INTEGER;
23272 l_amb_context_code            VARCHAR2(30);
23273 l_entity_code                 VARCHAR2(30);
23274 l_event_class_code            VARCHAR2(30);
23275 l_ae_header_id                NUMBER;
23276 l_event_type_code             VARCHAR2(30);
23277 l_line_definition_code        VARCHAR2(30);
23278 l_line_definition_owner_code  VARCHAR2(1);
23279 --
23280 -- adr variables
23281 l_segment                     VARCHAR2(30);
23282 l_ccid                        NUMBER;
23283 l_adr_transaction_coa_id      NUMBER;
23284 l_adr_accounting_coa_id       NUMBER;
23285 l_adr_flexfield_segment_code  VARCHAR2(30);
23286 l_adr_flex_value_set_id       NUMBER;
23287 l_adr_value_type_code         VARCHAR2(30);
23288 l_adr_value_combination_id    NUMBER;
23289 l_adr_value_segment_code      VARCHAR2(30);
23290 
23291 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23292 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23293 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23294 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23295 
23296 -- 4262811 Variables ------------------------------------------------------------------------------------------
23297 l_entered_amt_idx             NUMBER;
23298 l_accted_amt_idx              NUMBER;
23299 l_acc_rev_flag                VARCHAR2(1);
23300 l_accrual_line_num            NUMBER;
23301 l_tmp_amt                     NUMBER;
23302 l_acc_rev_natural_side_code   VARCHAR2(1);
23303 
23304 l_num_entries                 NUMBER;
23305 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23306 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23307 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23308 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23309 l_recog_line_1                NUMBER;
23310 l_recog_line_2                NUMBER;
23311 
23312 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23313 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23314 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23315 
23316 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23317 
23318 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23319 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23320 
23321 ---------------------------------------------------------------------------------------------------------------
23322 
23323 
23324 --
23325 -- bulk performance
23326 --
23327 l_balance_type_code           VARCHAR2(1);
23328 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23329 l_log_module                  VARCHAR2(240);
23330 
23331 --
23332 -- Upgrade strategy
23333 --
23334 l_actual_upg_option           VARCHAR2(1);
23335 l_enc_upg_option           VARCHAR2(1);
23336 
23337 --
23338 BEGIN
23339 --
23340 IF g_log_enabled THEN
23341       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
23342 END IF;
23343 --
23344 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23345 
23346       trace
23347          (p_msg      => 'BEGIN of AcctLineType_56'
23348          ,p_level    => C_LEVEL_PROCEDURE
23349          ,p_module   => l_log_module);
23350 
23351 END IF;
23352 --
23356 l_component_appl_id          :=  275;
23353 l_component_type             := 'AMB_JLT';
23354 l_component_code             := 'PA_RAW_COST_CLEARING';
23355 l_component_type_code        := 'S';
23357 l_amb_context_code           := 'DEFAULT';
23358 l_entity_code                := 'EXPENDITURES';
23359 l_event_class_code           := 'SUPPLIER_COST';
23360 l_event_type_code            := 'SUPPLIER_COST_ALL';
23361 l_line_definition_owner_code := 'S';
23362 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
23363 --
23364 l_balance_type_code          := 'A';
23365 l_segment                     := NULL;
23366 l_ccid                        := NULL;
23367 l_adr_transaction_coa_id      := NULL;
23368 l_adr_accounting_coa_id       := NULL;
23369 l_adr_flexfield_segment_code  := NULL;
23370 l_adr_flex_value_set_id       := NULL;
23371 l_adr_value_type_code         := NULL;
23372 l_adr_value_combination_id    := NULL;
23373 l_adr_value_segment_code      := NULL;
23374 
23375 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23376 l_bflow_class_code           := '';    -- 4219869 Business Flow
23377 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23378 l_budgetary_control_flag     := 'N';
23379 
23380 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23381 l_bflow_applied_to_amt       := NULL; -- 5132302
23382 l_entered_amt_idx            := NULL;          -- 4262811
23383 l_accted_amt_idx             := NULL;          -- 4262811
23384 l_acc_rev_flag               := NULL;          -- 4262811
23385 l_accrual_line_num           := NULL;          -- 4262811
23386 l_tmp_amt                    := NULL;          -- 4262811
23387 --
23388  
23389 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23390     l_balance_type_code <> 'B' THEN
23391 IF NVL(p_source_21,'
23392 ') =  'N'
23393  THEN 
23394 
23395    --
23396    XLA_AE_LINES_PKG.SetNewLine;
23397 
23398    p_balance_type_code          := l_balance_type_code;
23399    -- set the flag so later we will know whether the gain loss line needs to be created
23400    
23401    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23402      p_actual_flag :='A';
23403    END IF;
23404 
23405    --
23406    -- bulk performance
23407    --
23408    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23409                                       p_header_num   => 0); -- 4262811
23410    --
23411    -- set accounting line options
23412    --
23413    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23414            p_natural_side_code          => 'C'
23415          , p_gain_or_loss_flag          => 'N'
23416          , p_gl_transfer_mode_code      => 'S'
23417          , p_acct_entry_type_code       => 'A'
23418          , p_switch_side_flag           => 'Y'
23419          , p_merge_duplicate_code       => 'N'
23420          );
23421    --
23422    l_acc_rev_natural_side_code := 'D';  -- 4262811
23423    -- 
23424    --
23425    -- set accounting line type info
23426    --
23427    xla_ae_lines_pkg.SetAcctLineType
23428       (p_component_type             => l_component_type
23429       ,p_event_type_code            => l_event_type_code
23430       ,p_line_definition_owner_code => l_line_definition_owner_code
23431       ,p_line_definition_code       => l_line_definition_code
23432       ,p_accounting_line_code       => l_component_code
23433       ,p_accounting_line_type_code  => l_component_type_code
23434       ,p_accounting_line_appl_id    => l_component_appl_id
23435       ,p_amb_context_code           => l_amb_context_code
23436       ,p_entity_code                => l_entity_code
23437       ,p_event_class_code           => l_event_class_code);
23438    --
23439    -- set accounting class
23440    --
23441    xla_ae_lines_pkg.SetAcctClass(
23442            p_accounting_class_code  => 'COST_CLEARING'
23443          , p_ae_header_id           => l_ae_header_id
23444          );
23445 
23446    --
23447    -- set rounding class
23448    --
23449    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23450                       'COST_CLEARING';
23451 
23452    --
23453    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23454    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23455    --
23456    -- bulk performance
23457    --
23458    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23459 
23460    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23461       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23462 
23463    -- 4955764
23464    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23465       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23466 
23467    -- 4458381 Public Sector Enh
23468    
23469    --
23470    -- set accounting attributes for the line type
23471    --
23472    l_entered_amt_idx := 22;
23473    l_accted_amt_idx  := 27;
23474    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23475    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23476    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
23477    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
23478    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
23479    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
23480    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
23481    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
23482    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
23483    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
23487    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
23484    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
23485    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
23486    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
23488    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
23489    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
23490    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
23491    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
23492    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
23493    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
23494    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
23495    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
23496    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
23497    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
23498    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
23499    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
23500    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
23501    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
23502    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
23503    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
23504    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
23505    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
23506    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
23507    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
23508    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
23509    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
23510    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
23511    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
23512    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
23513    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
23514    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
23515    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
23516    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
23517    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
23518    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
23519    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
23520    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
23521    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
23522    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
23523    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
23524    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
23525    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
23526    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
23527    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
23528    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
23529    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
23530    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
23531    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
23532    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
23533    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
23534    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
23535 
23536    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23537    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23538 
23539    ---------------------------------------------------------------------------------------------------------------
23540    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23541    ---------------------------------------------------------------------------------------------------------------
23542    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23543 
23544    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23545    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23546 
23547    IF xla_accounting_cache_pkg.GetValueChar
23548          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23549          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23550    AND l_bflow_method_code = 'PRIOR_ENTRY'
23551 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23552    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23553          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23554        )
23555    THEN
23556          xla_ae_lines_pkg.BflowUpgEntry
23557            (p_business_method_code    => l_bflow_method_code
23558            ,p_business_class_code     => l_bflow_class_code
23559            ,p_balance_type            => l_balance_type_code);
23560    ELSE
23561       NULL;
23562 -- No business flow processing for business flow method of NONE.
23563    END IF;
23564 
23565    --
23566    -- call analytical criteria
23567    --
23568    
23569    --
23570    -- call description
23571    --
23572    -- No description or it is inherited.
23573    --
23574    -- call ADRs
23575    -- Bug 4922099
23576    --
23577    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23578         (NVL(l_actual_upg_option, 'N') = 'O') OR
23579         (NVL(l_enc_upg_option, 'N') = 'O')
23580       )
23581    THEN
23582    NULL;
23583    --
23584    --
23585    
23586   l_ccid := AcctDerRule_5(
23587            p_application_id           => p_application_id
23588          , p_ae_header_id             => l_ae_header_id 
23589 , p_source_4 => p_source_4
23590 , p_source_6 => p_source_6
23591 , p_source_7 => p_source_7
23595          , p_side                     => 'NA'
23592          , x_transaction_coa_id       => l_adr_transaction_coa_id
23593          , x_accounting_coa_id        => l_adr_accounting_coa_id
23594          , x_value_type_code          => l_adr_value_type_code
23596    );
23597 
23598    xla_ae_lines_pkg.set_ccid(
23599     p_code_combination_id          => l_ccid
23600   , p_value_type_code              => l_adr_value_type_code
23601   , p_transaction_coa_id           => l_adr_transaction_coa_id
23602   , p_accounting_coa_id            => l_adr_accounting_coa_id
23603   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
23604   , p_adr_type_code                => 'S'
23605   , p_component_type               => l_component_type
23606   , p_component_code               => l_component_code
23607   , p_component_type_code          => l_component_type_code
23608   , p_component_appl_id            => l_component_appl_id
23609   , p_amb_context_code             => l_amb_context_code
23610   , p_side                         => 'NA'
23611   );
23612 
23613 
23614    --
23615    --
23616    END IF;
23617    --
23618    -- Bug 4922099
23619    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23620           (NVL(l_enc_upg_option, 'N') = 'O')
23621         ) AND
23622         (l_bflow_method_code = 'PRIOR_ENTRY')
23623       )
23624    THEN
23625       IF
23626       --
23627       1 = 2
23628       --
23629       THEN
23630       xla_accounting_err_pkg.build_message
23631                                     (p_appli_s_name            => 'XLA'
23632                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23633                                     ,p_token_1                 => 'LINE_NUMBER'
23634                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23635                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23636                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23637                                                                              l_component_type
23638                                                                             ,l_component_code
23639                                                                             ,l_component_type_code
23640                                                                             ,l_component_appl_id
23641                                                                             ,l_amb_context_code
23642                                                                             ,l_entity_code
23643                                                                             ,l_event_class_code
23644                                                                            )
23645                                     ,p_token_3                 => 'OWNER'
23646                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23647                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23648                                                                           ,p_lookup_code    => l_component_type_code
23649                                                                          )
23650                                     ,p_token_4                 => 'PRODUCT_NAME'
23651                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23652                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23653                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23654                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23655                                     ,p_ae_header_id            =>  NULL
23656                                        );
23657 
23658         IF (C_LEVEL_ERROR>= g_log_level) THEN
23659                  trace
23660                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23661                       ,p_level    => C_LEVEL_ERROR
23662                       ,p_module   => l_log_module);
23663         END IF;
23664       END IF;
23665    END IF;
23666    --
23667    --
23668    ------------------------------------------------------------------------------------------------
23669    -- 4219869 Business Flow
23670    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23671    -- Prior Entry.  Currently, the following code is always generated.
23672    ------------------------------------------------------------------------------------------------
23673    XLA_AE_LINES_PKG.ValidateCurrentLine;
23674 
23675    ------------------------------------------------------------------------------------
23676    -- 4219869 Business Flow
23677    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23678    ------------------------------------------------------------------------------------
23679    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23680 
23681    ----------------------------------------------------------------------------------
23682    -- 4219869 Business Flow
23683    -- Update journal entry status -- Need to generate this within IF <condition>
23684    ----------------------------------------------------------------------------------
23685    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23686          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23687          ,p_balance_type_code => l_balance_type_code
23688          );
23689 
23690    -------------------------------------------------------------------------------------------
23691    -- 4262811 - Generate the Accrual Reversal lines
23692    -------------------------------------------------------------------------------------------
23693    BEGIN
23694       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23698       END IF;
23695                               (g_array_event(p_event_id).array_value_num('header_index'));
23696       IF l_acc_rev_flag IS NULL THEN
23697          l_acc_rev_flag := 'N';
23699    EXCEPTION
23700       WHEN OTHERS THEN
23701          l_acc_rev_flag := 'N';
23702    END;
23703    --
23704    IF (l_acc_rev_flag = 'Y') THEN
23705 
23706        -- 4645092  ------------------------------------------------------------------------------
23707        -- To allow MPA report to determine if it should generate report process
23708        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23709        ------------------------------------------------------------------------------------------
23710 
23711        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23712        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23713 
23714        --
23715        -- Update the line information that should be overwritten
23716        --
23717        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23718                                          p_header_num   => 1);
23719        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23720 
23721        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23722 
23723        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23724           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23725        END IF;
23726 
23727       --
23728       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23729       --
23730       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23731           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23732       ELSE
23733           ---------------------------------------------------------------------------------------------------
23734           -- 4262811a Switch Sign
23735           ---------------------------------------------------------------------------------------------------
23736           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23737           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23738                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23739           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23740                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23741           -- 5132302
23742           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23743                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23744 
23745       END IF;
23746 
23747       -- 4955764
23748       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23749       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23750 
23751 
23752       XLA_AE_LINES_PKG.ValidateCurrentLine;
23753       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23754 
23755       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23756                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23757                ,p_balance_type_code => l_balance_type_code);
23758 
23759    END IF;
23760 
23761    -----------------------------------------------------------------------------------------
23762    -- 4262811 Multiperiod Accounting
23763    -----------------------------------------------------------------------------------------
23764      -- No MPA option is assigned.
23765 
23766 
23767 END IF;
23768 END IF;
23769 --
23770 
23771 --
23772 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23773    trace
23774       (p_msg      => 'END of AcctLineType_56'
23775       ,p_level    => C_LEVEL_PROCEDURE
23776       ,p_module   => l_log_module);
23777 END IF;
23778 --
23779 EXCEPTION
23780   WHEN xla_exceptions_pkg.application_exception THEN
23781       RAISE;
23782   WHEN OTHERS THEN
23783        xla_exceptions_pkg.raise_message
23784            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_56');
23785 END AcctLineType_56;
23786 --
23787 
23788 ---------------------------------------
23789 --
23790 -- PRIVATE FUNCTION
23791 --         AcctLineType_57
23792 --
23793 ---------------------------------------
23794 PROCEDURE AcctLineType_57 (
23795   p_application_id        IN NUMBER
23796  ,p_event_id              IN NUMBER
23797  ,p_calculate_acctd_flag  IN VARCHAR2
23798  ,p_calculate_g_l_flag    IN VARCHAR2
23799  ,p_actual_flag           IN OUT VARCHAR2
23800  ,p_balance_type_code     OUT VARCHAR2
23801  ,p_gain_or_loss_ref      OUT VARCHAR2
23802  
23803 --Cost CCID
23804  , p_source_3            IN NUMBER
23805 --Allow Account Override Flag
23806  , p_source_4            IN VARCHAR2
23807 --Cost Clearing CCID
23808  , p_source_6            IN NUMBER
23809 --Adjustment Cost Clearing CCID
23810  , p_source_7            IN NUMBER
23811 --Reversing Line Flag
23812  , p_source_22            IN VARCHAR2
23813 --Actual Upgrade Credit Accounting Class
23814  , p_source_23            IN VARCHAR2
23815 --Entered Raw Cost
23816  , p_source_24            IN NUMBER
23817 --Entered Currency Code
23818  , p_source_25            IN VARCHAR2
23819 --Accounted Raw Cost
23820  , p_source_26            IN NUMBER
23821 --Exchange Rate Date
23822  , p_source_27            IN DATE
23823 --Exchange Rate
23824  , p_source_28            IN NUMBER
23825 --Exchange Rate Type
23826  , p_source_29            IN VARCHAR2
23830  , p_source_31            IN VARCHAR2
23827 --Actual Upgrade Debit Accounting Class
23828  , p_source_30            IN VARCHAR2
23829 --Use Actuals Upgrade Attributes Flag
23831 --Expenditure Item ID
23832  , p_source_32            IN NUMBER
23833 --Cost Distribution Line Number
23834  , p_source_33            IN NUMBER
23835 --Line Type
23836  , p_source_34            IN VARCHAR2
23837  , p_source_34_meaning    IN VARCHAR2
23838 --Reversed Line Number
23839  , p_source_35            IN NUMBER
23840 )
23841 IS
23842 
23843 l_component_type              VARCHAR2(80);
23844 l_component_code              VARCHAR2(30);
23845 l_component_type_code         VARCHAR2(1);
23846 l_component_appl_id           INTEGER;
23847 l_amb_context_code            VARCHAR2(30);
23848 l_entity_code                 VARCHAR2(30);
23849 l_event_class_code            VARCHAR2(30);
23850 l_ae_header_id                NUMBER;
23851 l_event_type_code             VARCHAR2(30);
23852 l_line_definition_code        VARCHAR2(30);
23853 l_line_definition_owner_code  VARCHAR2(1);
23854 --
23855 -- adr variables
23856 l_segment                     VARCHAR2(30);
23857 l_ccid                        NUMBER;
23858 l_adr_transaction_coa_id      NUMBER;
23859 l_adr_accounting_coa_id       NUMBER;
23860 l_adr_flexfield_segment_code  VARCHAR2(30);
23861 l_adr_flex_value_set_id       NUMBER;
23862 l_adr_value_type_code         VARCHAR2(30);
23863 l_adr_value_combination_id    NUMBER;
23864 l_adr_value_segment_code      VARCHAR2(30);
23865 
23866 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23867 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23868 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23869 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23870 
23871 -- 4262811 Variables ------------------------------------------------------------------------------------------
23872 l_entered_amt_idx             NUMBER;
23873 l_accted_amt_idx              NUMBER;
23874 l_acc_rev_flag                VARCHAR2(1);
23875 l_accrual_line_num            NUMBER;
23876 l_tmp_amt                     NUMBER;
23877 l_acc_rev_natural_side_code   VARCHAR2(1);
23878 
23879 l_num_entries                 NUMBER;
23880 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23881 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23882 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23883 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23884 l_recog_line_1                NUMBER;
23885 l_recog_line_2                NUMBER;
23886 
23887 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23888 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23889 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23890 
23891 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23892 
23893 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23894 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23895 
23896 ---------------------------------------------------------------------------------------------------------------
23897 
23898 
23899 --
23900 -- bulk performance
23901 --
23902 l_balance_type_code           VARCHAR2(1);
23903 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23904 l_log_module                  VARCHAR2(240);
23905 
23906 --
23907 -- Upgrade strategy
23908 --
23909 l_actual_upg_option           VARCHAR2(1);
23910 l_enc_upg_option           VARCHAR2(1);
23911 
23912 --
23913 BEGIN
23914 --
23915 IF g_log_enabled THEN
23916       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
23917 END IF;
23918 --
23919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23920 
23921       trace
23922          (p_msg      => 'BEGIN of AcctLineType_57'
23923          ,p_level    => C_LEVEL_PROCEDURE
23924          ,p_module   => l_log_module);
23925 
23926 END IF;
23927 --
23928 l_component_type             := 'AMB_JLT';
23929 l_component_code             := 'PA_RAW_COST_CLEARING';
23930 l_component_type_code        := 'S';
23931 l_component_appl_id          :=  275;
23932 l_amb_context_code           := 'DEFAULT';
23933 l_entity_code                := 'EXPENDITURES';
23934 l_event_class_code           := 'INVENTORY_COST';
23935 l_event_type_code            := 'INVENTORY_COST_ALL';
23936 l_line_definition_owner_code := 'S';
23937 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
23938 --
23939 l_balance_type_code          := 'A';
23940 l_segment                     := NULL;
23941 l_ccid                        := NULL;
23942 l_adr_transaction_coa_id      := NULL;
23943 l_adr_accounting_coa_id       := NULL;
23944 l_adr_flexfield_segment_code  := NULL;
23945 l_adr_flex_value_set_id       := NULL;
23946 l_adr_value_type_code         := NULL;
23947 l_adr_value_combination_id    := NULL;
23948 l_adr_value_segment_code      := NULL;
23949 
23950 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23951 l_bflow_class_code           := '';    -- 4219869 Business Flow
23952 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23953 l_budgetary_control_flag     := 'N';
23954 
23955 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23956 l_bflow_applied_to_amt       := NULL; -- 5132302
23957 l_entered_amt_idx            := NULL;          -- 4262811
23958 l_accted_amt_idx             := NULL;          -- 4262811
23959 l_acc_rev_flag               := NULL;          -- 4262811
23960 l_accrual_line_num           := NULL;          -- 4262811
23961 l_tmp_amt                    := NULL;          -- 4262811
23962 --
23963  
23967    --
23964 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23965     l_balance_type_code <> 'B' THEN
23966 
23968    XLA_AE_LINES_PKG.SetNewLine;
23969 
23970    p_balance_type_code          := l_balance_type_code;
23971    -- set the flag so later we will know whether the gain loss line needs to be created
23972    
23973    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23974      p_actual_flag :='A';
23975    END IF;
23976 
23977    --
23978    -- bulk performance
23979    --
23980    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23981                                       p_header_num   => 0); -- 4262811
23982    --
23983    -- set accounting line options
23984    --
23985    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23986            p_natural_side_code          => 'C'
23987          , p_gain_or_loss_flag          => 'N'
23988          , p_gl_transfer_mode_code      => 'S'
23989          , p_acct_entry_type_code       => 'A'
23990          , p_switch_side_flag           => 'Y'
23991          , p_merge_duplicate_code       => 'N'
23992          );
23993    --
23994    l_acc_rev_natural_side_code := 'D';  -- 4262811
23995    -- 
23996    --
23997    -- set accounting line type info
23998    --
23999    xla_ae_lines_pkg.SetAcctLineType
24000       (p_component_type             => l_component_type
24001       ,p_event_type_code            => l_event_type_code
24002       ,p_line_definition_owner_code => l_line_definition_owner_code
24003       ,p_line_definition_code       => l_line_definition_code
24004       ,p_accounting_line_code       => l_component_code
24005       ,p_accounting_line_type_code  => l_component_type_code
24006       ,p_accounting_line_appl_id    => l_component_appl_id
24007       ,p_amb_context_code           => l_amb_context_code
24008       ,p_entity_code                => l_entity_code
24009       ,p_event_class_code           => l_event_class_code);
24010    --
24011    -- set accounting class
24012    --
24013    xla_ae_lines_pkg.SetAcctClass(
24014            p_accounting_class_code  => 'COST_CLEARING'
24015          , p_ae_header_id           => l_ae_header_id
24016          );
24017 
24018    --
24019    -- set rounding class
24020    --
24021    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24022                       'COST_CLEARING';
24023 
24024    --
24025    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24026    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24027    --
24028    -- bulk performance
24029    --
24030    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24031 
24032    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24033       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24034 
24035    -- 4955764
24036    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24037       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24038 
24039    -- 4458381 Public Sector Enh
24040    
24041    --
24042    -- set accounting attributes for the line type
24043    --
24044    l_entered_amt_idx := 22;
24045    l_accted_amt_idx  := 27;
24046    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24047    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24048    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
24049    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
24050    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
24051    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
24052    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
24053    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
24054    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
24055    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
24056    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
24057    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
24058    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
24059    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
24060    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
24061    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
24062    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
24063    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
24064    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
24065    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
24066    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
24067    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
24068    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
24069    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
24070    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
24071    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
24072    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
24073    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
24074    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
24075    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
24076    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
24077    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
24078    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
24079    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
24080    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
24081    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
24085    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
24082    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
24083    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
24084    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
24086    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
24087    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
24088    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
24089    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
24090    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
24091    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
24092    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
24093    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
24094    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
24095    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
24096    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
24097    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
24098    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
24099    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
24100    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
24101    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
24102    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
24103    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
24104    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
24105    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
24106    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
24107 
24108    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24109    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24110 
24111    ---------------------------------------------------------------------------------------------------------------
24112    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24113    ---------------------------------------------------------------------------------------------------------------
24114    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24115 
24116    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24117    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24118 
24119    IF xla_accounting_cache_pkg.GetValueChar
24120          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24121          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24122    AND l_bflow_method_code = 'PRIOR_ENTRY'
24123 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24124    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24125          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24126        )
24127    THEN
24128          xla_ae_lines_pkg.BflowUpgEntry
24129            (p_business_method_code    => l_bflow_method_code
24130            ,p_business_class_code     => l_bflow_class_code
24131            ,p_balance_type            => l_balance_type_code);
24132    ELSE
24133       NULL;
24134 -- No business flow processing for business flow method of NONE.
24135    END IF;
24136 
24137    --
24138    -- call analytical criteria
24139    --
24140    
24141    --
24142    -- call description
24143    --
24144    -- No description or it is inherited.
24145    --
24146    -- call ADRs
24147    -- Bug 4922099
24148    --
24149    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24150         (NVL(l_actual_upg_option, 'N') = 'O') OR
24151         (NVL(l_enc_upg_option, 'N') = 'O')
24152       )
24153    THEN
24154    NULL;
24155    --
24156    --
24157    
24158   l_ccid := AcctDerRule_5(
24159            p_application_id           => p_application_id
24160          , p_ae_header_id             => l_ae_header_id 
24161 , p_source_4 => p_source_4
24162 , p_source_6 => p_source_6
24163 , p_source_7 => p_source_7
24164          , x_transaction_coa_id       => l_adr_transaction_coa_id
24165          , x_accounting_coa_id        => l_adr_accounting_coa_id
24166          , x_value_type_code          => l_adr_value_type_code
24167          , p_side                     => 'NA'
24168    );
24169 
24170    xla_ae_lines_pkg.set_ccid(
24171     p_code_combination_id          => l_ccid
24172   , p_value_type_code              => l_adr_value_type_code
24173   , p_transaction_coa_id           => l_adr_transaction_coa_id
24174   , p_accounting_coa_id            => l_adr_accounting_coa_id
24175   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
24176   , p_adr_type_code                => 'S'
24177   , p_component_type               => l_component_type
24178   , p_component_code               => l_component_code
24179   , p_component_type_code          => l_component_type_code
24180   , p_component_appl_id            => l_component_appl_id
24181   , p_amb_context_code             => l_amb_context_code
24182   , p_side                         => 'NA'
24183   );
24184 
24185 
24186    --
24187    --
24188    END IF;
24189    --
24190    -- Bug 4922099
24191    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24192           (NVL(l_enc_upg_option, 'N') = 'O')
24193         ) AND
24194         (l_bflow_method_code = 'PRIOR_ENTRY')
24195       )
24196    THEN
24197       IF
24198       --
24199       1 = 2
24200       --
24201       THEN
24202       xla_accounting_err_pkg.build_message
24203                                     (p_appli_s_name            => 'XLA'
24204                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24208                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24205                                     ,p_token_1                 => 'LINE_NUMBER'
24206                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24207                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24209                                                                              l_component_type
24210                                                                             ,l_component_code
24211                                                                             ,l_component_type_code
24212                                                                             ,l_component_appl_id
24213                                                                             ,l_amb_context_code
24214                                                                             ,l_entity_code
24215                                                                             ,l_event_class_code
24216                                                                            )
24217                                     ,p_token_3                 => 'OWNER'
24218                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24219                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24220                                                                           ,p_lookup_code    => l_component_type_code
24221                                                                          )
24222                                     ,p_token_4                 => 'PRODUCT_NAME'
24223                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24224                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24225                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24226                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24227                                     ,p_ae_header_id            =>  NULL
24228                                        );
24229 
24230         IF (C_LEVEL_ERROR>= g_log_level) THEN
24231                  trace
24232                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24233                       ,p_level    => C_LEVEL_ERROR
24234                       ,p_module   => l_log_module);
24235         END IF;
24236       END IF;
24237    END IF;
24238    --
24239    --
24240    ------------------------------------------------------------------------------------------------
24241    -- 4219869 Business Flow
24242    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24243    -- Prior Entry.  Currently, the following code is always generated.
24244    ------------------------------------------------------------------------------------------------
24245    XLA_AE_LINES_PKG.ValidateCurrentLine;
24246 
24247    ------------------------------------------------------------------------------------
24248    -- 4219869 Business Flow
24249    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24250    ------------------------------------------------------------------------------------
24251    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24252 
24253    ----------------------------------------------------------------------------------
24254    -- 4219869 Business Flow
24255    -- Update journal entry status -- Need to generate this within IF <condition>
24256    ----------------------------------------------------------------------------------
24257    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24258          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24259          ,p_balance_type_code => l_balance_type_code
24260          );
24261 
24262    -------------------------------------------------------------------------------------------
24263    -- 4262811 - Generate the Accrual Reversal lines
24264    -------------------------------------------------------------------------------------------
24265    BEGIN
24266       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24267                               (g_array_event(p_event_id).array_value_num('header_index'));
24268       IF l_acc_rev_flag IS NULL THEN
24269          l_acc_rev_flag := 'N';
24270       END IF;
24271    EXCEPTION
24272       WHEN OTHERS THEN
24273          l_acc_rev_flag := 'N';
24274    END;
24275    --
24276    IF (l_acc_rev_flag = 'Y') THEN
24277 
24278        -- 4645092  ------------------------------------------------------------------------------
24279        -- To allow MPA report to determine if it should generate report process
24280        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24281        ------------------------------------------------------------------------------------------
24282 
24283        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24284        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24285 
24286        --
24287        -- Update the line information that should be overwritten
24288        --
24289        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24290                                          p_header_num   => 1);
24291        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24292 
24293        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24294 
24295        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24296           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24297        END IF;
24298 
24299       --
24300       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24301       --
24305           ---------------------------------------------------------------------------------------------------
24302       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24303           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24304       ELSE
24306           -- 4262811a Switch Sign
24307           ---------------------------------------------------------------------------------------------------
24308           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24309           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24310                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24311           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24312                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24313           -- 5132302
24314           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24315                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24316 
24317       END IF;
24318 
24319       -- 4955764
24320       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24321       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24322 
24323 
24324       XLA_AE_LINES_PKG.ValidateCurrentLine;
24325       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24326 
24327       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24328                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24329                ,p_balance_type_code => l_balance_type_code);
24330 
24331    END IF;
24332 
24333    -----------------------------------------------------------------------------------------
24334    -- 4262811 Multiperiod Accounting
24335    -----------------------------------------------------------------------------------------
24336      -- No MPA option is assigned.
24337 
24338 
24339 END IF;
24340 --
24341 
24342 --
24343 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24344    trace
24345       (p_msg      => 'END of AcctLineType_57'
24346       ,p_level    => C_LEVEL_PROCEDURE
24347       ,p_module   => l_log_module);
24348 END IF;
24349 --
24350 EXCEPTION
24351   WHEN xla_exceptions_pkg.application_exception THEN
24352       RAISE;
24353   WHEN OTHERS THEN
24354        xla_exceptions_pkg.raise_message
24355            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_57');
24356 END AcctLineType_57;
24357 --
24358 
24359 ---------------------------------------
24360 --
24361 -- PRIVATE FUNCTION
24362 --         AcctLineType_58
24363 --
24364 ---------------------------------------
24365 PROCEDURE AcctLineType_58 (
24366   p_application_id        IN NUMBER
24367  ,p_event_id              IN NUMBER
24368  ,p_calculate_acctd_flag  IN VARCHAR2
24369  ,p_calculate_g_l_flag    IN VARCHAR2
24370  ,p_actual_flag           IN OUT VARCHAR2
24371  ,p_balance_type_code     OUT VARCHAR2
24372  ,p_gain_or_loss_ref      OUT VARCHAR2
24373  
24374 --Cost CCID
24375  , p_source_3            IN NUMBER
24376 --Allow Account Override Flag
24377  , p_source_4            IN VARCHAR2
24378 --Cost Clearing CCID
24379  , p_source_6            IN NUMBER
24380 --Adjustment Cost Clearing CCID
24381  , p_source_7            IN NUMBER
24382 --Reversing Line Flag
24383  , p_source_22            IN VARCHAR2
24384 --Actual Upgrade Credit Accounting Class
24385  , p_source_23            IN VARCHAR2
24386 --Entered Raw Cost
24387  , p_source_24            IN NUMBER
24388 --Entered Currency Code
24389  , p_source_25            IN VARCHAR2
24390 --Accounted Raw Cost
24391  , p_source_26            IN NUMBER
24392 --Exchange Rate Date
24393  , p_source_27            IN DATE
24394 --Exchange Rate
24395  , p_source_28            IN NUMBER
24396 --Exchange Rate Type
24397  , p_source_29            IN VARCHAR2
24398 --Actual Upgrade Debit Accounting Class
24399  , p_source_30            IN VARCHAR2
24400 --Use Actuals Upgrade Attributes Flag
24401  , p_source_31            IN VARCHAR2
24402 --Expenditure Item ID
24403  , p_source_32            IN NUMBER
24404 --Cost Distribution Line Number
24405  , p_source_33            IN NUMBER
24406 --Line Type
24407  , p_source_34            IN VARCHAR2
24408  , p_source_34_meaning    IN VARCHAR2
24409 --Reversed Line Number
24410  , p_source_35            IN NUMBER
24411 --Project Number
24412  , p_source_68            IN VARCHAR2
24413 )
24414 IS
24415 
24416 l_component_type              VARCHAR2(80);
24417 l_component_code              VARCHAR2(30);
24418 l_component_type_code         VARCHAR2(1);
24419 l_component_appl_id           INTEGER;
24420 l_amb_context_code            VARCHAR2(30);
24421 l_entity_code                 VARCHAR2(30);
24422 l_event_class_code            VARCHAR2(30);
24423 l_ae_header_id                NUMBER;
24424 l_event_type_code             VARCHAR2(30);
24425 l_line_definition_code        VARCHAR2(30);
24426 l_line_definition_owner_code  VARCHAR2(1);
24427 --
24428 -- adr variables
24429 l_segment                     VARCHAR2(30);
24430 l_ccid                        NUMBER;
24431 l_adr_transaction_coa_id      NUMBER;
24432 l_adr_accounting_coa_id       NUMBER;
24433 l_adr_flexfield_segment_code  VARCHAR2(30);
24434 l_adr_flex_value_set_id       NUMBER;
24435 l_adr_value_type_code         VARCHAR2(30);
24436 l_adr_value_combination_id    NUMBER;
24437 l_adr_value_segment_code      VARCHAR2(30);
24438 
24439 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24443 
24440 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24441 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24442 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24444 -- 4262811 Variables ------------------------------------------------------------------------------------------
24445 l_entered_amt_idx             NUMBER;
24446 l_accted_amt_idx              NUMBER;
24447 l_acc_rev_flag                VARCHAR2(1);
24448 l_accrual_line_num            NUMBER;
24449 l_tmp_amt                     NUMBER;
24450 l_acc_rev_natural_side_code   VARCHAR2(1);
24451 
24452 l_num_entries                 NUMBER;
24453 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24454 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24455 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24456 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24457 l_recog_line_1                NUMBER;
24458 l_recog_line_2                NUMBER;
24459 
24460 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24461 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24462 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24463 
24464 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24465 
24466 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24467 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24468 
24469 ---------------------------------------------------------------------------------------------------------------
24470 
24471 
24472 --
24473 -- bulk performance
24474 --
24475 l_balance_type_code           VARCHAR2(1);
24476 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24477 l_log_module                  VARCHAR2(240);
24478 
24479 --
24480 -- Upgrade strategy
24481 --
24482 l_actual_upg_option           VARCHAR2(1);
24483 l_enc_upg_option           VARCHAR2(1);
24484 
24485 --
24486 BEGIN
24487 --
24488 IF g_log_enabled THEN
24489       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
24490 END IF;
24491 --
24492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24493 
24494       trace
24495          (p_msg      => 'BEGIN of AcctLineType_58'
24496          ,p_level    => C_LEVEL_PROCEDURE
24497          ,p_module   => l_log_module);
24498 
24499 END IF;
24500 --
24501 l_component_type             := 'AMB_JLT';
24502 l_component_code             := 'PA_RAW_COST_CLEARING';
24503 l_component_type_code        := 'S';
24504 l_component_appl_id          :=  275;
24505 l_amb_context_code           := 'DEFAULT';
24506 l_entity_code                := 'EXPENDITURES';
24507 l_event_class_code           := 'MISC_COST';
24508 l_event_type_code            := 'MISC_COST_ALL';
24509 l_line_definition_owner_code := 'S';
24510 l_line_definition_code       := 'JA_CN_PA_ACCRUAL_MIS_COST';
24511 --
24512 l_balance_type_code          := 'A';
24513 l_segment                     := NULL;
24514 l_ccid                        := NULL;
24515 l_adr_transaction_coa_id      := NULL;
24516 l_adr_accounting_coa_id       := NULL;
24517 l_adr_flexfield_segment_code  := NULL;
24518 l_adr_flex_value_set_id       := NULL;
24519 l_adr_value_type_code         := NULL;
24520 l_adr_value_combination_id    := NULL;
24521 l_adr_value_segment_code      := NULL;
24522 
24523 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24524 l_bflow_class_code           := '';    -- 4219869 Business Flow
24525 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24526 l_budgetary_control_flag     := 'N';
24527 
24528 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24529 l_bflow_applied_to_amt       := NULL; -- 5132302
24530 l_entered_amt_idx            := NULL;          -- 4262811
24531 l_accted_amt_idx             := NULL;          -- 4262811
24532 l_acc_rev_flag               := NULL;          -- 4262811
24533 l_accrual_line_num           := NULL;          -- 4262811
24534 l_tmp_amt                    := NULL;          -- 4262811
24535 --
24536  
24537 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24538     l_balance_type_code <> 'B' THEN
24539 
24540    --
24541    XLA_AE_LINES_PKG.SetNewLine;
24542 
24543    p_balance_type_code          := l_balance_type_code;
24544    -- set the flag so later we will know whether the gain loss line needs to be created
24545    
24546    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24547      p_actual_flag :='A';
24548    END IF;
24549 
24550    --
24551    -- bulk performance
24552    --
24553    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24554                                       p_header_num   => 0); -- 4262811
24555    --
24556    -- set accounting line options
24557    --
24558    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24559            p_natural_side_code          => 'C'
24560          , p_gain_or_loss_flag          => 'N'
24561          , p_gl_transfer_mode_code      => 'S'
24562          , p_acct_entry_type_code       => 'A'
24563          , p_switch_side_flag           => 'Y'
24564          , p_merge_duplicate_code       => 'N'
24565          );
24566    --
24567    l_acc_rev_natural_side_code := 'D';  -- 4262811
24568    -- 
24569    --
24570    -- set accounting line type info
24571    --
24572    xla_ae_lines_pkg.SetAcctLineType
24573       (p_component_type             => l_component_type
24574       ,p_event_type_code            => l_event_type_code
24575       ,p_line_definition_owner_code => l_line_definition_owner_code
24576       ,p_line_definition_code       => l_line_definition_code
24580       ,p_amb_context_code           => l_amb_context_code
24577       ,p_accounting_line_code       => l_component_code
24578       ,p_accounting_line_type_code  => l_component_type_code
24579       ,p_accounting_line_appl_id    => l_component_appl_id
24581       ,p_entity_code                => l_entity_code
24582       ,p_event_class_code           => l_event_class_code);
24583    --
24584    -- set accounting class
24585    --
24586    xla_ae_lines_pkg.SetAcctClass(
24587            p_accounting_class_code  => 'COST_CLEARING'
24588          , p_ae_header_id           => l_ae_header_id
24589          );
24590 
24591    --
24592    -- set rounding class
24593    --
24594    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24595                       'COST_CLEARING';
24596 
24597    --
24598    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24599    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24600    --
24601    -- bulk performance
24602    --
24603    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24604 
24605    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24606       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24607 
24608    -- 4955764
24609    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24610       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24611 
24612    -- 4458381 Public Sector Enh
24613    
24614    --
24615    -- set accounting attributes for the line type
24616    --
24617    l_entered_amt_idx := 22;
24618    l_accted_amt_idx  := 27;
24619    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24620    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24621    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
24622    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
24623    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
24624    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
24625    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
24626    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
24627    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
24628    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
24629    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
24630    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
24631    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
24632    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
24633    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
24634    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
24635    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
24636    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
24637    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
24638    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
24639    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
24640    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
24641    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
24642    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
24643    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
24644    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
24645    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
24646    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
24647    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
24648    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
24649    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
24650    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
24651    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
24652    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
24653    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
24654    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
24655    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
24656    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
24657    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
24658    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
24659    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
24660    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
24661    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
24662    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
24663    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
24664    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
24665    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
24666    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
24667    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
24668    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
24669    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
24670    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
24671    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
24672    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
24673    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
24674    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
24675    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
24676    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
24677    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
24678    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
24679    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
24680 
24684    ---------------------------------------------------------------------------------------------------------------
24681    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24682    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24683 
24685    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24686    ---------------------------------------------------------------------------------------------------------------
24687    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24688 
24689    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24690    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24691 
24692    IF xla_accounting_cache_pkg.GetValueChar
24693          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24694          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24695    AND l_bflow_method_code = 'PRIOR_ENTRY'
24696 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24697    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24698          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24699        )
24700    THEN
24701          xla_ae_lines_pkg.BflowUpgEntry
24702            (p_business_method_code    => l_bflow_method_code
24703            ,p_business_class_code     => l_bflow_class_code
24704            ,p_balance_type            => l_balance_type_code);
24705    ELSE
24706       NULL;
24707 -- No business flow processing for business flow method of NONE.
24708    END IF;
24709 
24710    --
24711    -- call analytical criteria
24712    --
24713    
24714 
24715 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
24716 xla_ae_lines_pkg.SetAnalyticalCriteria(
24717    p_analytical_criterion_name    => 'Project Number'
24718  , p_analytical_criterion_owner   => 'S'
24719  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
24720  , p_amb_context_code             => 'DEFAULT'
24721  , p_balancing_flag               => 'N'
24722  
24723  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_68)
24724  , p_analytical_detail_num_1     =>  NULL
24725  , p_analytical_detail_date_1    =>  NULL
24726 
24727  , p_ae_header_id                 => l_ae_header_id
24728 )
24729 ;
24730 --
24731 
24732    --
24733    -- call description
24734    --
24735    -- No description or it is inherited.
24736    --
24737    -- call ADRs
24738    -- Bug 4922099
24739    --
24740    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24741         (NVL(l_actual_upg_option, 'N') = 'O') OR
24742         (NVL(l_enc_upg_option, 'N') = 'O')
24743       )
24744    THEN
24745    NULL;
24746    --
24747    --
24748    
24749   l_ccid := AcctDerRule_5(
24750            p_application_id           => p_application_id
24751          , p_ae_header_id             => l_ae_header_id 
24752 , p_source_4 => p_source_4
24753 , p_source_6 => p_source_6
24754 , p_source_7 => p_source_7
24755          , x_transaction_coa_id       => l_adr_transaction_coa_id
24756          , x_accounting_coa_id        => l_adr_accounting_coa_id
24757          , x_value_type_code          => l_adr_value_type_code
24758          , p_side                     => 'NA'
24759    );
24760 
24761    xla_ae_lines_pkg.set_ccid(
24762     p_code_combination_id          => l_ccid
24763   , p_value_type_code              => l_adr_value_type_code
24764   , p_transaction_coa_id           => l_adr_transaction_coa_id
24765   , p_accounting_coa_id            => l_adr_accounting_coa_id
24766   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
24767   , p_adr_type_code                => 'S'
24768   , p_component_type               => l_component_type
24769   , p_component_code               => l_component_code
24770   , p_component_type_code          => l_component_type_code
24771   , p_component_appl_id            => l_component_appl_id
24772   , p_amb_context_code             => l_amb_context_code
24773   , p_side                         => 'NA'
24774   );
24775 
24776 
24777    --
24778    --
24779    END IF;
24780    --
24781    -- Bug 4922099
24782    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24783           (NVL(l_enc_upg_option, 'N') = 'O')
24784         ) AND
24785         (l_bflow_method_code = 'PRIOR_ENTRY')
24786       )
24787    THEN
24788       IF
24789       --
24790       1 = 2
24791       --
24792       THEN
24793       xla_accounting_err_pkg.build_message
24794                                     (p_appli_s_name            => 'XLA'
24795                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24796                                     ,p_token_1                 => 'LINE_NUMBER'
24797                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24798                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24799                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24800                                                                              l_component_type
24801                                                                             ,l_component_code
24802                                                                             ,l_component_type_code
24803                                                                             ,l_component_appl_id
24804                                                                             ,l_amb_context_code
24805                                                                             ,l_entity_code
24806                                                                             ,l_event_class_code
24810                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24807                                                                            )
24808                                     ,p_token_3                 => 'OWNER'
24809                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24811                                                                           ,p_lookup_code    => l_component_type_code
24812                                                                          )
24813                                     ,p_token_4                 => 'PRODUCT_NAME'
24814                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24815                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24816                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24817                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24818                                     ,p_ae_header_id            =>  NULL
24819                                        );
24820 
24821         IF (C_LEVEL_ERROR>= g_log_level) THEN
24822                  trace
24823                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24824                       ,p_level    => C_LEVEL_ERROR
24825                       ,p_module   => l_log_module);
24826         END IF;
24827       END IF;
24828    END IF;
24829    --
24830    --
24831    ------------------------------------------------------------------------------------------------
24832    -- 4219869 Business Flow
24833    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24834    -- Prior Entry.  Currently, the following code is always generated.
24835    ------------------------------------------------------------------------------------------------
24836    XLA_AE_LINES_PKG.ValidateCurrentLine;
24837 
24838    ------------------------------------------------------------------------------------
24839    -- 4219869 Business Flow
24840    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24841    ------------------------------------------------------------------------------------
24842    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24843 
24844    ----------------------------------------------------------------------------------
24845    -- 4219869 Business Flow
24846    -- Update journal entry status -- Need to generate this within IF <condition>
24847    ----------------------------------------------------------------------------------
24848    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24849          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24850          ,p_balance_type_code => l_balance_type_code
24851          );
24852 
24853    -------------------------------------------------------------------------------------------
24854    -- 4262811 - Generate the Accrual Reversal lines
24855    -------------------------------------------------------------------------------------------
24856    BEGIN
24857       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24858                               (g_array_event(p_event_id).array_value_num('header_index'));
24859       IF l_acc_rev_flag IS NULL THEN
24860          l_acc_rev_flag := 'N';
24861       END IF;
24862    EXCEPTION
24863       WHEN OTHERS THEN
24864          l_acc_rev_flag := 'N';
24865    END;
24866    --
24867    IF (l_acc_rev_flag = 'Y') THEN
24868 
24869        -- 4645092  ------------------------------------------------------------------------------
24870        -- To allow MPA report to determine if it should generate report process
24871        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24872        ------------------------------------------------------------------------------------------
24873 
24874        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24875        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24876 
24877        --
24878        -- Update the line information that should be overwritten
24879        --
24880        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24881                                          p_header_num   => 1);
24882        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24883 
24884        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24885 
24886        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24887           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24888        END IF;
24889 
24890       --
24891       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24892       --
24893       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24894           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24895       ELSE
24896           ---------------------------------------------------------------------------------------------------
24897           -- 4262811a Switch Sign
24898           ---------------------------------------------------------------------------------------------------
24899           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24900           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24901                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24902           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24903                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24904           -- 5132302
24908       END IF;
24905           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24906                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24907 
24909 
24910       -- 4955764
24911       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24913 
24914 
24915       XLA_AE_LINES_PKG.ValidateCurrentLine;
24916       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24917 
24918       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24919                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24920                ,p_balance_type_code => l_balance_type_code);
24921 
24922    END IF;
24923 
24924    -----------------------------------------------------------------------------------------
24925    -- 4262811 Multiperiod Accounting
24926    -----------------------------------------------------------------------------------------
24927      -- No MPA option is assigned.
24928 
24929 
24930 END IF;
24931 --
24932 
24933 --
24934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24935    trace
24936       (p_msg      => 'END of AcctLineType_58'
24937       ,p_level    => C_LEVEL_PROCEDURE
24938       ,p_module   => l_log_module);
24939 END IF;
24940 --
24941 EXCEPTION
24942   WHEN xla_exceptions_pkg.application_exception THEN
24943       RAISE;
24944   WHEN OTHERS THEN
24945        xla_exceptions_pkg.raise_message
24946            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_58');
24947 END AcctLineType_58;
24948 --
24949 
24950 ---------------------------------------
24951 --
24952 -- PRIVATE FUNCTION
24953 --         AcctLineType_59
24954 --
24955 ---------------------------------------
24956 PROCEDURE AcctLineType_59 (
24957   p_application_id        IN NUMBER
24958  ,p_event_id              IN NUMBER
24959  ,p_calculate_acctd_flag  IN VARCHAR2
24960  ,p_calculate_g_l_flag    IN VARCHAR2
24961  ,p_actual_flag           IN OUT VARCHAR2
24962  ,p_balance_type_code     OUT VARCHAR2
24963  ,p_gain_or_loss_ref      OUT VARCHAR2
24964  
24965 --Cost CCID
24966  , p_source_3            IN NUMBER
24967 --Allow Account Override Flag
24968  , p_source_4            IN VARCHAR2
24969 --Cost Clearing CCID
24970  , p_source_6            IN NUMBER
24971 --Adjustment Cost Clearing CCID
24972  , p_source_7            IN NUMBER
24973 --Exchange Rate Variance Flag
24974  , p_source_21            IN VARCHAR2
24975 --Reversing Line Flag
24976  , p_source_22            IN VARCHAR2
24977 --Actual Upgrade Credit Accounting Class
24978  , p_source_23            IN VARCHAR2
24979 --Entered Raw Cost
24980  , p_source_24            IN NUMBER
24981 --Entered Currency Code
24982  , p_source_25            IN VARCHAR2
24983 --Accounted Raw Cost
24984  , p_source_26            IN NUMBER
24985 --Exchange Rate Date
24986  , p_source_27            IN DATE
24987 --Exchange Rate
24988  , p_source_28            IN NUMBER
24989 --Exchange Rate Type
24990  , p_source_29            IN VARCHAR2
24991 --Actual Upgrade Debit Accounting Class
24992  , p_source_30            IN VARCHAR2
24993 --Use Actuals Upgrade Attributes Flag
24994  , p_source_31            IN VARCHAR2
24995 --Expenditure Item ID
24996  , p_source_32            IN NUMBER
24997 --Cost Distribution Line Number
24998  , p_source_33            IN NUMBER
24999 --Line Type
25000  , p_source_34            IN VARCHAR2
25001  , p_source_34_meaning    IN VARCHAR2
25002 --Reversed Line Number
25003  , p_source_35            IN NUMBER
25004 )
25005 IS
25006 
25007 l_component_type              VARCHAR2(80);
25008 l_component_code              VARCHAR2(30);
25009 l_component_type_code         VARCHAR2(1);
25010 l_component_appl_id           INTEGER;
25011 l_amb_context_code            VARCHAR2(30);
25012 l_entity_code                 VARCHAR2(30);
25013 l_event_class_code            VARCHAR2(30);
25014 l_ae_header_id                NUMBER;
25015 l_event_type_code             VARCHAR2(30);
25016 l_line_definition_code        VARCHAR2(30);
25017 l_line_definition_owner_code  VARCHAR2(1);
25018 --
25019 -- adr variables
25020 l_segment                     VARCHAR2(30);
25021 l_ccid                        NUMBER;
25022 l_adr_transaction_coa_id      NUMBER;
25023 l_adr_accounting_coa_id       NUMBER;
25024 l_adr_flexfield_segment_code  VARCHAR2(30);
25025 l_adr_flex_value_set_id       NUMBER;
25026 l_adr_value_type_code         VARCHAR2(30);
25027 l_adr_value_combination_id    NUMBER;
25028 l_adr_value_segment_code      VARCHAR2(30);
25029 
25030 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25031 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25032 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25033 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25034 
25035 -- 4262811 Variables ------------------------------------------------------------------------------------------
25036 l_entered_amt_idx             NUMBER;
25037 l_accted_amt_idx              NUMBER;
25038 l_acc_rev_flag                VARCHAR2(1);
25039 l_accrual_line_num            NUMBER;
25040 l_tmp_amt                     NUMBER;
25041 l_acc_rev_natural_side_code   VARCHAR2(1);
25042 
25043 l_num_entries                 NUMBER;
25044 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25045 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25046 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25047 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25048 l_recog_line_1                NUMBER;
25052 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25049 l_recog_line_2                NUMBER;
25050 
25051 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25053 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25054 
25055 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25056 
25057 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25058 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25059 
25060 ---------------------------------------------------------------------------------------------------------------
25061 
25062 
25063 --
25064 -- bulk performance
25065 --
25066 l_balance_type_code           VARCHAR2(1);
25067 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25068 l_log_module                  VARCHAR2(240);
25069 
25070 --
25071 -- Upgrade strategy
25072 --
25073 l_actual_upg_option           VARCHAR2(1);
25074 l_enc_upg_option           VARCHAR2(1);
25075 
25076 --
25077 BEGIN
25078 --
25079 IF g_log_enabled THEN
25080       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
25081 END IF;
25082 --
25083 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25084 
25085       trace
25086          (p_msg      => 'BEGIN of AcctLineType_59'
25087          ,p_level    => C_LEVEL_PROCEDURE
25088          ,p_module   => l_log_module);
25089 
25090 END IF;
25091 --
25092 l_component_type             := 'AMB_JLT';
25093 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
25094 l_component_type_code        := 'S';
25095 l_component_appl_id          :=  275;
25096 l_amb_context_code           := 'DEFAULT';
25097 l_entity_code                := 'EXPENDITURES';
25098 l_event_class_code           := 'SUPPLIER_COST_ADJ';
25099 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
25100 l_line_definition_owner_code := 'S';
25101 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
25102 --
25103 l_balance_type_code          := 'A';
25104 l_segment                     := NULL;
25105 l_ccid                        := NULL;
25106 l_adr_transaction_coa_id      := NULL;
25107 l_adr_accounting_coa_id       := NULL;
25108 l_adr_flexfield_segment_code  := NULL;
25109 l_adr_flex_value_set_id       := NULL;
25110 l_adr_value_type_code         := NULL;
25111 l_adr_value_combination_id    := NULL;
25112 l_adr_value_segment_code      := NULL;
25113 
25114 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25115 l_bflow_class_code           := '';    -- 4219869 Business Flow
25116 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25117 l_budgetary_control_flag     := 'N';
25118 
25119 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25120 l_bflow_applied_to_amt       := NULL; -- 5132302
25121 l_entered_amt_idx            := NULL;          -- 4262811
25122 l_accted_amt_idx             := NULL;          -- 4262811
25123 l_acc_rev_flag               := NULL;          -- 4262811
25124 l_accrual_line_num           := NULL;          -- 4262811
25125 l_tmp_amt                    := NULL;          -- 4262811
25126 --
25127  
25128 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25129     l_balance_type_code <> 'B' THEN
25130 IF NVL(p_source_21,'
25131 ') =  'N'
25132  THEN 
25133 
25134    --
25135    XLA_AE_LINES_PKG.SetNewLine;
25136 
25137    p_balance_type_code          := l_balance_type_code;
25138    -- set the flag so later we will know whether the gain loss line needs to be created
25139    
25140    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25141      p_actual_flag :='A';
25142    END IF;
25143 
25144    --
25145    -- bulk performance
25146    --
25147    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25148                                       p_header_num   => 0); -- 4262811
25149    --
25150    -- set accounting line options
25151    --
25152    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25153            p_natural_side_code          => 'C'
25154          , p_gain_or_loss_flag          => 'N'
25155          , p_gl_transfer_mode_code      => 'S'
25156          , p_acct_entry_type_code       => 'A'
25157          , p_switch_side_flag           => 'Y'
25158          , p_merge_duplicate_code       => 'N'
25159          );
25160    --
25161    l_acc_rev_natural_side_code := 'D';  -- 4262811
25162    -- 
25163    --
25164    -- set accounting line type info
25165    --
25166    xla_ae_lines_pkg.SetAcctLineType
25167       (p_component_type             => l_component_type
25168       ,p_event_type_code            => l_event_type_code
25169       ,p_line_definition_owner_code => l_line_definition_owner_code
25170       ,p_line_definition_code       => l_line_definition_code
25171       ,p_accounting_line_code       => l_component_code
25172       ,p_accounting_line_type_code  => l_component_type_code
25173       ,p_accounting_line_appl_id    => l_component_appl_id
25174       ,p_amb_context_code           => l_amb_context_code
25175       ,p_entity_code                => l_entity_code
25176       ,p_event_class_code           => l_event_class_code);
25177    --
25178    -- set accounting class
25179    --
25180    xla_ae_lines_pkg.SetAcctClass(
25181            p_accounting_class_code  => 'COST_CLEARING'
25182          , p_ae_header_id           => l_ae_header_id
25183          );
25184 
25185    --
25186    -- set rounding class
25187    --
25188    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25189                       'COST_CLEARING';
25190 
25191    --
25195    -- bulk performance
25192    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25193    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25194    --
25196    --
25197    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25198 
25199    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25200       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25201 
25202    -- 4955764
25203    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25204       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25205 
25206    -- 4458381 Public Sector Enh
25207    
25208    --
25209    -- set accounting attributes for the line type
25210    --
25211    l_entered_amt_idx := 22;
25212    l_accted_amt_idx  := 27;
25213    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25214    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25215    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
25216    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
25217    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
25218    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
25219    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
25220    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
25221    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
25222    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
25223    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
25224    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
25225    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
25226    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
25227    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
25228    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
25229    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
25230    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
25231    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
25232    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
25233    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
25234    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
25235    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
25236    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
25237    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
25238    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
25239    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
25240    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
25241    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
25242    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
25243    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
25244    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
25245    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
25246    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
25247    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
25248    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
25249    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
25250    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
25251    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
25252    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
25253    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
25254    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
25255    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
25256    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
25257    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
25258    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
25259    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
25260    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
25261    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
25262    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
25263    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
25264    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
25265    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
25266    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
25267    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
25268    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
25269    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
25270    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
25271    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
25272    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
25273    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
25274 
25275    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25276    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25277 
25278    ---------------------------------------------------------------------------------------------------------------
25279    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25280    ---------------------------------------------------------------------------------------------------------------
25281    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25282 
25283    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25284    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25285 
25289    AND l_bflow_method_code = 'PRIOR_ENTRY'
25286    IF xla_accounting_cache_pkg.GetValueChar
25287          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25288          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25290 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25291    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25292          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25293        )
25294    THEN
25295          xla_ae_lines_pkg.BflowUpgEntry
25296            (p_business_method_code    => l_bflow_method_code
25297            ,p_business_class_code     => l_bflow_class_code
25298            ,p_balance_type            => l_balance_type_code);
25299    ELSE
25300       NULL;
25301 -- No business flow processing for business flow method of NONE.
25302    END IF;
25303 
25304    --
25305    -- call analytical criteria
25306    --
25307    
25308    --
25309    -- call description
25310    --
25311    -- No description or it is inherited.
25312    --
25313    -- call ADRs
25314    -- Bug 4922099
25315    --
25316    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25317         (NVL(l_actual_upg_option, 'N') = 'O') OR
25318         (NVL(l_enc_upg_option, 'N') = 'O')
25319       )
25320    THEN
25321    NULL;
25322    --
25323    --
25324    
25325   l_ccid := AcctDerRule_6(
25326            p_application_id           => p_application_id
25327          , p_ae_header_id             => l_ae_header_id 
25328 , p_source_4 => p_source_4
25329 , p_source_7 => p_source_7
25330          , x_transaction_coa_id       => l_adr_transaction_coa_id
25331          , x_accounting_coa_id        => l_adr_accounting_coa_id
25332          , x_value_type_code          => l_adr_value_type_code
25333          , p_side                     => 'NA'
25334    );
25335 
25336    xla_ae_lines_pkg.set_ccid(
25337     p_code_combination_id          => l_ccid
25338   , p_value_type_code              => l_adr_value_type_code
25339   , p_transaction_coa_id           => l_adr_transaction_coa_id
25340   , p_accounting_coa_id            => l_adr_accounting_coa_id
25341   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
25342   , p_adr_type_code                => 'S'
25343   , p_component_type               => l_component_type
25344   , p_component_code               => l_component_code
25345   , p_component_type_code          => l_component_type_code
25346   , p_component_appl_id            => l_component_appl_id
25347   , p_amb_context_code             => l_amb_context_code
25348   , p_side                         => 'NA'
25349   );
25350 
25351 
25352    --
25353    --
25354    END IF;
25355    --
25356    -- Bug 4922099
25357    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25358           (NVL(l_enc_upg_option, 'N') = 'O')
25359         ) AND
25360         (l_bflow_method_code = 'PRIOR_ENTRY')
25361       )
25362    THEN
25363       IF
25364       --
25365       1 = 2
25366       --
25367       THEN
25368       xla_accounting_err_pkg.build_message
25369                                     (p_appli_s_name            => 'XLA'
25370                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25371                                     ,p_token_1                 => 'LINE_NUMBER'
25372                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25373                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25374                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25375                                                                              l_component_type
25376                                                                             ,l_component_code
25377                                                                             ,l_component_type_code
25378                                                                             ,l_component_appl_id
25379                                                                             ,l_amb_context_code
25380                                                                             ,l_entity_code
25381                                                                             ,l_event_class_code
25382                                                                            )
25383                                     ,p_token_3                 => 'OWNER'
25384                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25385                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25386                                                                           ,p_lookup_code    => l_component_type_code
25387                                                                          )
25388                                     ,p_token_4                 => 'PRODUCT_NAME'
25389                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25390                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25391                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25392                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25393                                     ,p_ae_header_id            =>  NULL
25394                                        );
25395 
25396         IF (C_LEVEL_ERROR>= g_log_level) THEN
25397                  trace
25398                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25399                       ,p_level    => C_LEVEL_ERROR
25400                       ,p_module   => l_log_module);
25401         END IF;
25402       END IF;
25403    END IF;
25404    --
25405    --
25409    -- Prior Entry.  Currently, the following code is always generated.
25406    ------------------------------------------------------------------------------------------------
25407    -- 4219869 Business Flow
25408    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25410    ------------------------------------------------------------------------------------------------
25411    XLA_AE_LINES_PKG.ValidateCurrentLine;
25412 
25413    ------------------------------------------------------------------------------------
25414    -- 4219869 Business Flow
25415    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25416    ------------------------------------------------------------------------------------
25417    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25418 
25419    ----------------------------------------------------------------------------------
25420    -- 4219869 Business Flow
25421    -- Update journal entry status -- Need to generate this within IF <condition>
25422    ----------------------------------------------------------------------------------
25423    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25424          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25425          ,p_balance_type_code => l_balance_type_code
25426          );
25427 
25428    -------------------------------------------------------------------------------------------
25429    -- 4262811 - Generate the Accrual Reversal lines
25430    -------------------------------------------------------------------------------------------
25431    BEGIN
25432       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25433                               (g_array_event(p_event_id).array_value_num('header_index'));
25434       IF l_acc_rev_flag IS NULL THEN
25435          l_acc_rev_flag := 'N';
25436       END IF;
25437    EXCEPTION
25438       WHEN OTHERS THEN
25439          l_acc_rev_flag := 'N';
25440    END;
25441    --
25442    IF (l_acc_rev_flag = 'Y') THEN
25443 
25444        -- 4645092  ------------------------------------------------------------------------------
25445        -- To allow MPA report to determine if it should generate report process
25446        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25447        ------------------------------------------------------------------------------------------
25448 
25449        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25450        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25451 
25452        --
25453        -- Update the line information that should be overwritten
25454        --
25455        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25456                                          p_header_num   => 1);
25457        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25458 
25459        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25460 
25461        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25462           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25463        END IF;
25464 
25465       --
25466       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25467       --
25468       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25469           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25470       ELSE
25471           ---------------------------------------------------------------------------------------------------
25472           -- 4262811a Switch Sign
25473           ---------------------------------------------------------------------------------------------------
25474           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25475           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25476                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25477           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25478                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25479           -- 5132302
25480           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25481                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25482 
25483       END IF;
25484 
25485       -- 4955764
25486       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25487       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25488 
25489 
25490       XLA_AE_LINES_PKG.ValidateCurrentLine;
25491       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25492 
25493       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25494                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25495                ,p_balance_type_code => l_balance_type_code);
25496 
25497    END IF;
25498 
25499    -----------------------------------------------------------------------------------------
25500    -- 4262811 Multiperiod Accounting
25501    -----------------------------------------------------------------------------------------
25502      -- No MPA option is assigned.
25503 
25504 
25505 END IF;
25506 END IF;
25507 --
25508 
25509 --
25510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25511    trace
25512       (p_msg      => 'END of AcctLineType_59'
25513       ,p_level    => C_LEVEL_PROCEDURE
25514       ,p_module   => l_log_module);
25515 END IF;
25516 --
25517 EXCEPTION
25518   WHEN xla_exceptions_pkg.application_exception THEN
25519       RAISE;
25520   WHEN OTHERS THEN
25524 --
25521        xla_exceptions_pkg.raise_message
25522            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_59');
25523 END AcctLineType_59;
25525 
25526 ---------------------------------------
25527 --
25528 -- PRIVATE FUNCTION
25529 --         AcctLineType_60
25530 --
25531 ---------------------------------------
25532 PROCEDURE AcctLineType_60 (
25533   p_application_id        IN NUMBER
25534  ,p_event_id              IN NUMBER
25535  ,p_calculate_acctd_flag  IN VARCHAR2
25536  ,p_calculate_g_l_flag    IN VARCHAR2
25537  ,p_actual_flag           IN OUT VARCHAR2
25538  ,p_balance_type_code     OUT VARCHAR2
25539  ,p_gain_or_loss_ref      OUT VARCHAR2
25540  
25541 --Cost CCID
25542  , p_source_3            IN NUMBER
25543 --Allow Account Override Flag
25544  , p_source_4            IN VARCHAR2
25545 --Cost Clearing CCID
25546  , p_source_6            IN NUMBER
25547 --Adjustment Cost Clearing CCID
25548  , p_source_7            IN NUMBER
25549 --Reversing Line Flag
25550  , p_source_22            IN VARCHAR2
25551 --Actual Upgrade Credit Accounting Class
25552  , p_source_23            IN VARCHAR2
25553 --Entered Raw Cost
25554  , p_source_24            IN NUMBER
25555 --Entered Currency Code
25556  , p_source_25            IN VARCHAR2
25557 --Accounted Raw Cost
25558  , p_source_26            IN NUMBER
25559 --Exchange Rate Date
25560  , p_source_27            IN DATE
25561 --Exchange Rate
25562  , p_source_28            IN NUMBER
25563 --Exchange Rate Type
25564  , p_source_29            IN VARCHAR2
25565 --Actual Upgrade Debit Accounting Class
25566  , p_source_30            IN VARCHAR2
25567 --Use Actuals Upgrade Attributes Flag
25568  , p_source_31            IN VARCHAR2
25569 --Expenditure Item ID
25570  , p_source_32            IN NUMBER
25571 --Cost Distribution Line Number
25572  , p_source_33            IN NUMBER
25573 --Line Type
25574  , p_source_34            IN VARCHAR2
25575  , p_source_34_meaning    IN VARCHAR2
25576 --Reversed Line Number
25577  , p_source_35            IN NUMBER
25578 )
25579 IS
25580 
25581 l_component_type              VARCHAR2(80);
25582 l_component_code              VARCHAR2(30);
25583 l_component_type_code         VARCHAR2(1);
25584 l_component_appl_id           INTEGER;
25585 l_amb_context_code            VARCHAR2(30);
25586 l_entity_code                 VARCHAR2(30);
25587 l_event_class_code            VARCHAR2(30);
25588 l_ae_header_id                NUMBER;
25589 l_event_type_code             VARCHAR2(30);
25590 l_line_definition_code        VARCHAR2(30);
25591 l_line_definition_owner_code  VARCHAR2(1);
25592 --
25593 -- adr variables
25594 l_segment                     VARCHAR2(30);
25595 l_ccid                        NUMBER;
25596 l_adr_transaction_coa_id      NUMBER;
25597 l_adr_accounting_coa_id       NUMBER;
25598 l_adr_flexfield_segment_code  VARCHAR2(30);
25599 l_adr_flex_value_set_id       NUMBER;
25600 l_adr_value_type_code         VARCHAR2(30);
25601 l_adr_value_combination_id    NUMBER;
25602 l_adr_value_segment_code      VARCHAR2(30);
25603 
25604 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25605 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25606 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25607 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25608 
25609 -- 4262811 Variables ------------------------------------------------------------------------------------------
25610 l_entered_amt_idx             NUMBER;
25611 l_accted_amt_idx              NUMBER;
25612 l_acc_rev_flag                VARCHAR2(1);
25613 l_accrual_line_num            NUMBER;
25614 l_tmp_amt                     NUMBER;
25615 l_acc_rev_natural_side_code   VARCHAR2(1);
25616 
25617 l_num_entries                 NUMBER;
25618 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25619 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25620 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25621 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25622 l_recog_line_1                NUMBER;
25623 l_recog_line_2                NUMBER;
25624 
25625 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25626 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25627 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25628 
25629 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25630 
25631 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25632 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25633 
25634 ---------------------------------------------------------------------------------------------------------------
25635 
25636 
25637 --
25638 -- bulk performance
25639 --
25640 l_balance_type_code           VARCHAR2(1);
25641 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25642 l_log_module                  VARCHAR2(240);
25643 
25644 --
25645 -- Upgrade strategy
25646 --
25647 l_actual_upg_option           VARCHAR2(1);
25648 l_enc_upg_option           VARCHAR2(1);
25649 
25650 --
25651 BEGIN
25652 --
25653 IF g_log_enabled THEN
25654       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
25655 END IF;
25656 --
25657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25658 
25659       trace
25660          (p_msg      => 'BEGIN of AcctLineType_60'
25661          ,p_level    => C_LEVEL_PROCEDURE
25662          ,p_module   => l_log_module);
25663 
25664 END IF;
25665 --
25666 l_component_type             := 'AMB_JLT';
25667 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
25671 l_entity_code                := 'EXPENDITURES';
25668 l_component_type_code        := 'S';
25669 l_component_appl_id          :=  275;
25670 l_amb_context_code           := 'DEFAULT';
25672 l_event_class_code           := 'LABOR_COST_ADJ';
25673 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
25674 l_line_definition_owner_code := 'S';
25675 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
25676 --
25677 l_balance_type_code          := 'A';
25678 l_segment                     := NULL;
25679 l_ccid                        := NULL;
25680 l_adr_transaction_coa_id      := NULL;
25681 l_adr_accounting_coa_id       := NULL;
25682 l_adr_flexfield_segment_code  := NULL;
25683 l_adr_flex_value_set_id       := NULL;
25684 l_adr_value_type_code         := NULL;
25685 l_adr_value_combination_id    := NULL;
25686 l_adr_value_segment_code      := NULL;
25687 
25688 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25689 l_bflow_class_code           := '';    -- 4219869 Business Flow
25690 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25691 l_budgetary_control_flag     := 'N';
25692 
25693 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25694 l_bflow_applied_to_amt       := NULL; -- 5132302
25695 l_entered_amt_idx            := NULL;          -- 4262811
25696 l_accted_amt_idx             := NULL;          -- 4262811
25697 l_acc_rev_flag               := NULL;          -- 4262811
25698 l_accrual_line_num           := NULL;          -- 4262811
25699 l_tmp_amt                    := NULL;          -- 4262811
25700 --
25701  
25702 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25703     l_balance_type_code <> 'B' THEN
25704 
25705    --
25706    XLA_AE_LINES_PKG.SetNewLine;
25707 
25708    p_balance_type_code          := l_balance_type_code;
25709    -- set the flag so later we will know whether the gain loss line needs to be created
25710    
25711    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25712      p_actual_flag :='A';
25713    END IF;
25714 
25715    --
25716    -- bulk performance
25717    --
25718    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25719                                       p_header_num   => 0); -- 4262811
25720    --
25721    -- set accounting line options
25722    --
25723    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25724            p_natural_side_code          => 'C'
25725          , p_gain_or_loss_flag          => 'N'
25726          , p_gl_transfer_mode_code      => 'S'
25727          , p_acct_entry_type_code       => 'A'
25728          , p_switch_side_flag           => 'Y'
25729          , p_merge_duplicate_code       => 'N'
25730          );
25731    --
25732    l_acc_rev_natural_side_code := 'D';  -- 4262811
25733    -- 
25734    --
25735    -- set accounting line type info
25736    --
25737    xla_ae_lines_pkg.SetAcctLineType
25738       (p_component_type             => l_component_type
25739       ,p_event_type_code            => l_event_type_code
25740       ,p_line_definition_owner_code => l_line_definition_owner_code
25741       ,p_line_definition_code       => l_line_definition_code
25742       ,p_accounting_line_code       => l_component_code
25743       ,p_accounting_line_type_code  => l_component_type_code
25744       ,p_accounting_line_appl_id    => l_component_appl_id
25745       ,p_amb_context_code           => l_amb_context_code
25746       ,p_entity_code                => l_entity_code
25747       ,p_event_class_code           => l_event_class_code);
25748    --
25749    -- set accounting class
25750    --
25751    xla_ae_lines_pkg.SetAcctClass(
25752            p_accounting_class_code  => 'COST_CLEARING'
25753          , p_ae_header_id           => l_ae_header_id
25754          );
25755 
25756    --
25757    -- set rounding class
25758    --
25759    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25760                       'COST_CLEARING';
25761 
25762    --
25763    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25764    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25765    --
25766    -- bulk performance
25767    --
25768    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25769 
25770    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25771       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25772 
25773    -- 4955764
25774    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25775       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25776 
25777    -- 4458381 Public Sector Enh
25778    
25779    --
25780    -- set accounting attributes for the line type
25781    --
25782    l_entered_amt_idx := 22;
25783    l_accted_amt_idx  := 27;
25784    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25785    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25786    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
25787    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
25788    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
25789    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
25790    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
25791    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
25792    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
25793    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
25794    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
25795    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
25799    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
25796    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
25797    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
25798    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
25800    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
25801    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
25802    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
25803    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
25804    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
25805    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
25806    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
25807    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
25808    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
25809    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
25810    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
25811    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
25812    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
25813    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
25814    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
25815    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
25816    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
25817    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
25818    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
25819    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
25820    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
25821    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
25822    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
25823    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
25824    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
25825    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
25826    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
25827    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
25828    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
25829    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
25830    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
25831    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
25832    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
25833    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
25834    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
25835    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
25836    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
25837    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
25838    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
25839    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
25840    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
25841    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
25842    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
25843    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
25844    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
25845 
25846    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25847    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25848 
25849    ---------------------------------------------------------------------------------------------------------------
25850    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25851    ---------------------------------------------------------------------------------------------------------------
25852    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25853 
25854    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25855    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25856 
25857    IF xla_accounting_cache_pkg.GetValueChar
25858          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25859          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25860    AND l_bflow_method_code = 'PRIOR_ENTRY'
25861 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25862    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25863          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25864        )
25865    THEN
25866          xla_ae_lines_pkg.BflowUpgEntry
25867            (p_business_method_code    => l_bflow_method_code
25868            ,p_business_class_code     => l_bflow_class_code
25869            ,p_balance_type            => l_balance_type_code);
25870    ELSE
25871       NULL;
25872 -- No business flow processing for business flow method of NONE.
25873    END IF;
25874 
25875    --
25876    -- call analytical criteria
25877    --
25878    
25879    --
25880    -- call description
25881    --
25882    -- No description or it is inherited.
25883    --
25884    -- call ADRs
25885    -- Bug 4922099
25886    --
25887    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25888         (NVL(l_actual_upg_option, 'N') = 'O') OR
25889         (NVL(l_enc_upg_option, 'N') = 'O')
25890       )
25891    THEN
25892    NULL;
25893    --
25894    --
25895    
25896   l_ccid := AcctDerRule_6(
25897            p_application_id           => p_application_id
25898          , p_ae_header_id             => l_ae_header_id 
25899 , p_source_4 => p_source_4
25900 , p_source_7 => p_source_7
25901          , x_transaction_coa_id       => l_adr_transaction_coa_id
25902          , x_accounting_coa_id        => l_adr_accounting_coa_id
25906 
25903          , x_value_type_code          => l_adr_value_type_code
25904          , p_side                     => 'NA'
25905    );
25907    xla_ae_lines_pkg.set_ccid(
25908     p_code_combination_id          => l_ccid
25909   , p_value_type_code              => l_adr_value_type_code
25910   , p_transaction_coa_id           => l_adr_transaction_coa_id
25911   , p_accounting_coa_id            => l_adr_accounting_coa_id
25912   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
25913   , p_adr_type_code                => 'S'
25914   , p_component_type               => l_component_type
25915   , p_component_code               => l_component_code
25916   , p_component_type_code          => l_component_type_code
25917   , p_component_appl_id            => l_component_appl_id
25918   , p_amb_context_code             => l_amb_context_code
25919   , p_side                         => 'NA'
25920   );
25921 
25922 
25923    --
25924    --
25925    END IF;
25926    --
25927    -- Bug 4922099
25928    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25929           (NVL(l_enc_upg_option, 'N') = 'O')
25930         ) AND
25931         (l_bflow_method_code = 'PRIOR_ENTRY')
25932       )
25933    THEN
25934       IF
25935       --
25936       1 = 2
25937       --
25938       THEN
25939       xla_accounting_err_pkg.build_message
25940                                     (p_appli_s_name            => 'XLA'
25941                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25942                                     ,p_token_1                 => 'LINE_NUMBER'
25943                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25944                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25945                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25946                                                                              l_component_type
25947                                                                             ,l_component_code
25948                                                                             ,l_component_type_code
25949                                                                             ,l_component_appl_id
25950                                                                             ,l_amb_context_code
25951                                                                             ,l_entity_code
25952                                                                             ,l_event_class_code
25953                                                                            )
25954                                     ,p_token_3                 => 'OWNER'
25955                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25956                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25957                                                                           ,p_lookup_code    => l_component_type_code
25958                                                                          )
25959                                     ,p_token_4                 => 'PRODUCT_NAME'
25960                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25961                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25962                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25963                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25964                                     ,p_ae_header_id            =>  NULL
25965                                        );
25966 
25967         IF (C_LEVEL_ERROR>= g_log_level) THEN
25968                  trace
25969                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25970                       ,p_level    => C_LEVEL_ERROR
25971                       ,p_module   => l_log_module);
25972         END IF;
25973       END IF;
25974    END IF;
25975    --
25976    --
25977    ------------------------------------------------------------------------------------------------
25978    -- 4219869 Business Flow
25979    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25980    -- Prior Entry.  Currently, the following code is always generated.
25981    ------------------------------------------------------------------------------------------------
25982    XLA_AE_LINES_PKG.ValidateCurrentLine;
25983 
25984    ------------------------------------------------------------------------------------
25985    -- 4219869 Business Flow
25986    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25987    ------------------------------------------------------------------------------------
25988    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25989 
25990    ----------------------------------------------------------------------------------
25991    -- 4219869 Business Flow
25992    -- Update journal entry status -- Need to generate this within IF <condition>
25993    ----------------------------------------------------------------------------------
25994    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25995          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25996          ,p_balance_type_code => l_balance_type_code
25997          );
25998 
25999    -------------------------------------------------------------------------------------------
26000    -- 4262811 - Generate the Accrual Reversal lines
26001    -------------------------------------------------------------------------------------------
26002    BEGIN
26003       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26004                               (g_array_event(p_event_id).array_value_num('header_index'));
26005       IF l_acc_rev_flag IS NULL THEN
26006          l_acc_rev_flag := 'N';
26010          l_acc_rev_flag := 'N';
26007       END IF;
26008    EXCEPTION
26009       WHEN OTHERS THEN
26011    END;
26012    --
26013    IF (l_acc_rev_flag = 'Y') THEN
26014 
26015        -- 4645092  ------------------------------------------------------------------------------
26016        -- To allow MPA report to determine if it should generate report process
26017        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26018        ------------------------------------------------------------------------------------------
26019 
26020        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26021        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26022 
26023        --
26024        -- Update the line information that should be overwritten
26025        --
26026        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26027                                          p_header_num   => 1);
26028        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26029 
26030        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26031 
26032        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26033           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26034        END IF;
26035 
26036       --
26037       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26038       --
26039       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26040           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26041       ELSE
26042           ---------------------------------------------------------------------------------------------------
26043           -- 4262811a Switch Sign
26044           ---------------------------------------------------------------------------------------------------
26045           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26046           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26047                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26048           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26049                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26050           -- 5132302
26051           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26052                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26053 
26054       END IF;
26055 
26056       -- 4955764
26057       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26058       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26059 
26060 
26061       XLA_AE_LINES_PKG.ValidateCurrentLine;
26062       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26063 
26064       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26065                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26066                ,p_balance_type_code => l_balance_type_code);
26067 
26068    END IF;
26069 
26070    -----------------------------------------------------------------------------------------
26071    -- 4262811 Multiperiod Accounting
26072    -----------------------------------------------------------------------------------------
26073      -- No MPA option is assigned.
26074 
26075 
26076 END IF;
26077 --
26078 
26079 --
26080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26081    trace
26082       (p_msg      => 'END of AcctLineType_60'
26083       ,p_level    => C_LEVEL_PROCEDURE
26084       ,p_module   => l_log_module);
26085 END IF;
26086 --
26087 EXCEPTION
26088   WHEN xla_exceptions_pkg.application_exception THEN
26089       RAISE;
26090   WHEN OTHERS THEN
26091        xla_exceptions_pkg.raise_message
26092            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_60');
26093 END AcctLineType_60;
26094 --
26095 
26096 ---------------------------------------
26097 --
26098 -- PRIVATE FUNCTION
26099 --         AcctLineType_61
26100 --
26101 ---------------------------------------
26102 PROCEDURE AcctLineType_61 (
26103   p_application_id        IN NUMBER
26104  ,p_event_id              IN NUMBER
26105  ,p_calculate_acctd_flag  IN VARCHAR2
26106  ,p_calculate_g_l_flag    IN VARCHAR2
26107  ,p_actual_flag           IN OUT VARCHAR2
26108  ,p_balance_type_code     OUT VARCHAR2
26109  ,p_gain_or_loss_ref      OUT VARCHAR2
26110  
26111 --Cost CCID
26112  , p_source_3            IN NUMBER
26113 --Allow Account Override Flag
26114  , p_source_4            IN VARCHAR2
26115 --Cost Clearing CCID
26116  , p_source_6            IN NUMBER
26117 --Adjustment Cost Clearing CCID
26118  , p_source_7            IN NUMBER
26119 --Reversing Line Flag
26120  , p_source_22            IN VARCHAR2
26121 --Actual Upgrade Credit Accounting Class
26122  , p_source_23            IN VARCHAR2
26123 --Entered Raw Cost
26124  , p_source_24            IN NUMBER
26125 --Entered Currency Code
26126  , p_source_25            IN VARCHAR2
26127 --Accounted Raw Cost
26128  , p_source_26            IN NUMBER
26129 --Exchange Rate Date
26130  , p_source_27            IN DATE
26131 --Exchange Rate
26132  , p_source_28            IN NUMBER
26133 --Exchange Rate Type
26134  , p_source_29            IN VARCHAR2
26135 --Actual Upgrade Debit Accounting Class
26136  , p_source_30            IN VARCHAR2
26137 --Use Actuals Upgrade Attributes Flag
26138  , p_source_31            IN VARCHAR2
26139 --Expenditure Item ID
26143 --Line Type
26140  , p_source_32            IN NUMBER
26141 --Cost Distribution Line Number
26142  , p_source_33            IN NUMBER
26144  , p_source_34            IN VARCHAR2
26145  , p_source_34_meaning    IN VARCHAR2
26146 --Reversed Line Number
26147  , p_source_35            IN NUMBER
26148 )
26149 IS
26150 
26151 l_component_type              VARCHAR2(80);
26152 l_component_code              VARCHAR2(30);
26153 l_component_type_code         VARCHAR2(1);
26154 l_component_appl_id           INTEGER;
26155 l_amb_context_code            VARCHAR2(30);
26156 l_entity_code                 VARCHAR2(30);
26157 l_event_class_code            VARCHAR2(30);
26158 l_ae_header_id                NUMBER;
26159 l_event_type_code             VARCHAR2(30);
26160 l_line_definition_code        VARCHAR2(30);
26161 l_line_definition_owner_code  VARCHAR2(1);
26162 --
26163 -- adr variables
26164 l_segment                     VARCHAR2(30);
26165 l_ccid                        NUMBER;
26166 l_adr_transaction_coa_id      NUMBER;
26167 l_adr_accounting_coa_id       NUMBER;
26168 l_adr_flexfield_segment_code  VARCHAR2(30);
26169 l_adr_flex_value_set_id       NUMBER;
26170 l_adr_value_type_code         VARCHAR2(30);
26171 l_adr_value_combination_id    NUMBER;
26172 l_adr_value_segment_code      VARCHAR2(30);
26173 
26174 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26175 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26176 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26177 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26178 
26179 -- 4262811 Variables ------------------------------------------------------------------------------------------
26180 l_entered_amt_idx             NUMBER;
26181 l_accted_amt_idx              NUMBER;
26182 l_acc_rev_flag                VARCHAR2(1);
26183 l_accrual_line_num            NUMBER;
26184 l_tmp_amt                     NUMBER;
26185 l_acc_rev_natural_side_code   VARCHAR2(1);
26186 
26187 l_num_entries                 NUMBER;
26188 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26189 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26190 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26191 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26192 l_recog_line_1                NUMBER;
26193 l_recog_line_2                NUMBER;
26194 
26195 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26196 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26197 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26198 
26199 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26200 
26201 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26202 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26203 
26204 ---------------------------------------------------------------------------------------------------------------
26205 
26206 
26207 --
26208 -- bulk performance
26209 --
26210 l_balance_type_code           VARCHAR2(1);
26211 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26212 l_log_module                  VARCHAR2(240);
26213 
26214 --
26215 -- Upgrade strategy
26216 --
26217 l_actual_upg_option           VARCHAR2(1);
26218 l_enc_upg_option           VARCHAR2(1);
26219 
26220 --
26221 BEGIN
26222 --
26223 IF g_log_enabled THEN
26224       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
26225 END IF;
26226 --
26227 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26228 
26229       trace
26230          (p_msg      => 'BEGIN of AcctLineType_61'
26231          ,p_level    => C_LEVEL_PROCEDURE
26232          ,p_module   => l_log_module);
26233 
26234 END IF;
26235 --
26236 l_component_type             := 'AMB_JLT';
26237 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
26238 l_component_type_code        := 'S';
26239 l_component_appl_id          :=  275;
26240 l_amb_context_code           := 'DEFAULT';
26241 l_entity_code                := 'EXPENDITURES';
26242 l_event_class_code           := 'USG_COST_ADJ';
26243 l_event_type_code            := 'USG_COST_ADJ_ALL';
26244 l_line_definition_owner_code := 'S';
26245 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
26246 --
26247 l_balance_type_code          := 'A';
26248 l_segment                     := NULL;
26249 l_ccid                        := NULL;
26250 l_adr_transaction_coa_id      := NULL;
26251 l_adr_accounting_coa_id       := NULL;
26252 l_adr_flexfield_segment_code  := NULL;
26253 l_adr_flex_value_set_id       := NULL;
26254 l_adr_value_type_code         := NULL;
26255 l_adr_value_combination_id    := NULL;
26256 l_adr_value_segment_code      := NULL;
26257 
26258 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26259 l_bflow_class_code           := '';    -- 4219869 Business Flow
26260 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26261 l_budgetary_control_flag     := 'N';
26262 
26263 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26264 l_bflow_applied_to_amt       := NULL; -- 5132302
26265 l_entered_amt_idx            := NULL;          -- 4262811
26266 l_accted_amt_idx             := NULL;          -- 4262811
26267 l_acc_rev_flag               := NULL;          -- 4262811
26268 l_accrual_line_num           := NULL;          -- 4262811
26269 l_tmp_amt                    := NULL;          -- 4262811
26270 --
26271  
26272 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26273     l_balance_type_code <> 'B' THEN
26274 
26275    --
26276    XLA_AE_LINES_PKG.SetNewLine;
26277 
26281    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26278    p_balance_type_code          := l_balance_type_code;
26279    -- set the flag so later we will know whether the gain loss line needs to be created
26280    
26282      p_actual_flag :='A';
26283    END IF;
26284 
26285    --
26286    -- bulk performance
26287    --
26288    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26289                                       p_header_num   => 0); -- 4262811
26290    --
26291    -- set accounting line options
26292    --
26293    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26294            p_natural_side_code          => 'C'
26295          , p_gain_or_loss_flag          => 'N'
26296          , p_gl_transfer_mode_code      => 'S'
26297          , p_acct_entry_type_code       => 'A'
26298          , p_switch_side_flag           => 'Y'
26299          , p_merge_duplicate_code       => 'N'
26300          );
26301    --
26302    l_acc_rev_natural_side_code := 'D';  -- 4262811
26303    -- 
26304    --
26305    -- set accounting line type info
26306    --
26307    xla_ae_lines_pkg.SetAcctLineType
26308       (p_component_type             => l_component_type
26309       ,p_event_type_code            => l_event_type_code
26310       ,p_line_definition_owner_code => l_line_definition_owner_code
26311       ,p_line_definition_code       => l_line_definition_code
26312       ,p_accounting_line_code       => l_component_code
26313       ,p_accounting_line_type_code  => l_component_type_code
26314       ,p_accounting_line_appl_id    => l_component_appl_id
26315       ,p_amb_context_code           => l_amb_context_code
26316       ,p_entity_code                => l_entity_code
26317       ,p_event_class_code           => l_event_class_code);
26318    --
26319    -- set accounting class
26320    --
26321    xla_ae_lines_pkg.SetAcctClass(
26322            p_accounting_class_code  => 'COST_CLEARING'
26323          , p_ae_header_id           => l_ae_header_id
26324          );
26325 
26326    --
26327    -- set rounding class
26328    --
26329    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26330                       'COST_CLEARING';
26331 
26332    --
26333    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26334    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26335    --
26336    -- bulk performance
26337    --
26338    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26339 
26340    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26341       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26342 
26343    -- 4955764
26344    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26345       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26346 
26347    -- 4458381 Public Sector Enh
26348    
26349    --
26350    -- set accounting attributes for the line type
26351    --
26352    l_entered_amt_idx := 22;
26353    l_accted_amt_idx  := 27;
26354    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26355    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26356    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
26357    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
26358    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
26359    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
26360    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
26361    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
26362    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
26363    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
26364    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
26365    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
26366    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
26367    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
26368    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
26369    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
26370    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
26371    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
26372    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
26373    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
26374    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
26375    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
26376    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
26377    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
26378    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
26379    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
26380    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
26381    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
26382    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
26383    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
26384    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
26385    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
26386    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
26387    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
26388    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
26389    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
26390    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
26391    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
26392    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
26396    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
26393    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
26394    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
26395    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
26397    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
26398    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
26399    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
26400    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
26401    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
26402    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
26403    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
26404    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
26405    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
26406    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
26407    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
26408    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
26409    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
26410    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
26411    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
26412    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
26413    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
26414    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
26415 
26416    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26417    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26418 
26419    ---------------------------------------------------------------------------------------------------------------
26420    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26421    ---------------------------------------------------------------------------------------------------------------
26422    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26423 
26424    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26425    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26426 
26427    IF xla_accounting_cache_pkg.GetValueChar
26428          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26429          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26430    AND l_bflow_method_code = 'PRIOR_ENTRY'
26431 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26432    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26433          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26434        )
26435    THEN
26436          xla_ae_lines_pkg.BflowUpgEntry
26437            (p_business_method_code    => l_bflow_method_code
26438            ,p_business_class_code     => l_bflow_class_code
26439            ,p_balance_type            => l_balance_type_code);
26440    ELSE
26441       NULL;
26442 -- No business flow processing for business flow method of NONE.
26443    END IF;
26444 
26445    --
26446    -- call analytical criteria
26447    --
26448    
26449    --
26450    -- call description
26451    --
26452    -- No description or it is inherited.
26453    --
26454    -- call ADRs
26455    -- Bug 4922099
26456    --
26457    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26458         (NVL(l_actual_upg_option, 'N') = 'O') OR
26459         (NVL(l_enc_upg_option, 'N') = 'O')
26460       )
26461    THEN
26462    NULL;
26463    --
26464    --
26465    
26466   l_ccid := AcctDerRule_6(
26467            p_application_id           => p_application_id
26468          , p_ae_header_id             => l_ae_header_id 
26469 , p_source_4 => p_source_4
26470 , p_source_7 => p_source_7
26471          , x_transaction_coa_id       => l_adr_transaction_coa_id
26472          , x_accounting_coa_id        => l_adr_accounting_coa_id
26473          , x_value_type_code          => l_adr_value_type_code
26474          , p_side                     => 'NA'
26475    );
26476 
26477    xla_ae_lines_pkg.set_ccid(
26478     p_code_combination_id          => l_ccid
26479   , p_value_type_code              => l_adr_value_type_code
26480   , p_transaction_coa_id           => l_adr_transaction_coa_id
26481   , p_accounting_coa_id            => l_adr_accounting_coa_id
26482   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
26483   , p_adr_type_code                => 'S'
26484   , p_component_type               => l_component_type
26485   , p_component_code               => l_component_code
26486   , p_component_type_code          => l_component_type_code
26487   , p_component_appl_id            => l_component_appl_id
26488   , p_amb_context_code             => l_amb_context_code
26489   , p_side                         => 'NA'
26490   );
26491 
26492 
26493    --
26494    --
26495    END IF;
26496    --
26497    -- Bug 4922099
26498    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26499           (NVL(l_enc_upg_option, 'N') = 'O')
26500         ) AND
26501         (l_bflow_method_code = 'PRIOR_ENTRY')
26502       )
26503    THEN
26504       IF
26505       --
26506       1 = 2
26507       --
26508       THEN
26509       xla_accounting_err_pkg.build_message
26510                                     (p_appli_s_name            => 'XLA'
26511                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26512                                     ,p_token_1                 => 'LINE_NUMBER'
26513                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26514                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26518                                                                             ,l_component_type_code
26515                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26516                                                                              l_component_type
26517                                                                             ,l_component_code
26519                                                                             ,l_component_appl_id
26520                                                                             ,l_amb_context_code
26521                                                                             ,l_entity_code
26522                                                                             ,l_event_class_code
26523                                                                            )
26524                                     ,p_token_3                 => 'OWNER'
26525                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26526                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26527                                                                           ,p_lookup_code    => l_component_type_code
26528                                                                          )
26529                                     ,p_token_4                 => 'PRODUCT_NAME'
26530                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26531                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26532                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26533                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26534                                     ,p_ae_header_id            =>  NULL
26535                                        );
26536 
26537         IF (C_LEVEL_ERROR>= g_log_level) THEN
26538                  trace
26539                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26540                       ,p_level    => C_LEVEL_ERROR
26541                       ,p_module   => l_log_module);
26542         END IF;
26543       END IF;
26544    END IF;
26545    --
26546    --
26547    ------------------------------------------------------------------------------------------------
26548    -- 4219869 Business Flow
26549    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26550    -- Prior Entry.  Currently, the following code is always generated.
26551    ------------------------------------------------------------------------------------------------
26552    XLA_AE_LINES_PKG.ValidateCurrentLine;
26553 
26554    ------------------------------------------------------------------------------------
26555    -- 4219869 Business Flow
26556    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26557    ------------------------------------------------------------------------------------
26558    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26559 
26560    ----------------------------------------------------------------------------------
26561    -- 4219869 Business Flow
26562    -- Update journal entry status -- Need to generate this within IF <condition>
26563    ----------------------------------------------------------------------------------
26564    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26565          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26566          ,p_balance_type_code => l_balance_type_code
26567          );
26568 
26569    -------------------------------------------------------------------------------------------
26570    -- 4262811 - Generate the Accrual Reversal lines
26571    -------------------------------------------------------------------------------------------
26572    BEGIN
26573       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26574                               (g_array_event(p_event_id).array_value_num('header_index'));
26575       IF l_acc_rev_flag IS NULL THEN
26576          l_acc_rev_flag := 'N';
26577       END IF;
26578    EXCEPTION
26579       WHEN OTHERS THEN
26580          l_acc_rev_flag := 'N';
26581    END;
26582    --
26583    IF (l_acc_rev_flag = 'Y') THEN
26584 
26585        -- 4645092  ------------------------------------------------------------------------------
26586        -- To allow MPA report to determine if it should generate report process
26587        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26588        ------------------------------------------------------------------------------------------
26589 
26590        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26591        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26592 
26593        --
26594        -- Update the line information that should be overwritten
26595        --
26596        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26597                                          p_header_num   => 1);
26598        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26599 
26600        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26601 
26602        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26603           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26604        END IF;
26605 
26606       --
26607       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26608       --
26609       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26610           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26611       ELSE
26612           ---------------------------------------------------------------------------------------------------
26616           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26613           -- 4262811a Switch Sign
26614           ---------------------------------------------------------------------------------------------------
26615           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26617                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26618           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26619                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26620           -- 5132302
26621           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26622                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26623 
26624       END IF;
26625 
26626       -- 4955764
26627       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26628       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26629 
26630 
26631       XLA_AE_LINES_PKG.ValidateCurrentLine;
26632       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26633 
26634       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26635                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26636                ,p_balance_type_code => l_balance_type_code);
26637 
26638    END IF;
26639 
26640    -----------------------------------------------------------------------------------------
26641    -- 4262811 Multiperiod Accounting
26642    -----------------------------------------------------------------------------------------
26643      -- No MPA option is assigned.
26644 
26645 
26646 END IF;
26647 --
26648 
26649 --
26650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26651    trace
26652       (p_msg      => 'END of AcctLineType_61'
26653       ,p_level    => C_LEVEL_PROCEDURE
26654       ,p_module   => l_log_module);
26655 END IF;
26656 --
26657 EXCEPTION
26658   WHEN xla_exceptions_pkg.application_exception THEN
26659       RAISE;
26660   WHEN OTHERS THEN
26661        xla_exceptions_pkg.raise_message
26662            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_61');
26663 END AcctLineType_61;
26664 --
26665 
26666 ---------------------------------------
26667 --
26668 -- PRIVATE FUNCTION
26669 --         AcctLineType_62
26670 --
26671 ---------------------------------------
26672 PROCEDURE AcctLineType_62 (
26673   p_application_id        IN NUMBER
26674  ,p_event_id              IN NUMBER
26675  ,p_calculate_acctd_flag  IN VARCHAR2
26676  ,p_calculate_g_l_flag    IN VARCHAR2
26677  ,p_actual_flag           IN OUT VARCHAR2
26678  ,p_balance_type_code     OUT VARCHAR2
26679  ,p_gain_or_loss_ref      OUT VARCHAR2
26680  
26681 --Cost CCID
26682  , p_source_3            IN NUMBER
26683 --Allow Account Override Flag
26684  , p_source_4            IN VARCHAR2
26685 --Cost Clearing CCID
26686  , p_source_6            IN NUMBER
26687 --Adjustment Cost Clearing CCID
26688  , p_source_7            IN NUMBER
26689 --Reversing Line Flag
26690  , p_source_22            IN VARCHAR2
26691 --Actual Upgrade Credit Accounting Class
26692  , p_source_23            IN VARCHAR2
26693 --Entered Raw Cost
26694  , p_source_24            IN NUMBER
26695 --Entered Currency Code
26696  , p_source_25            IN VARCHAR2
26697 --Accounted Raw Cost
26698  , p_source_26            IN NUMBER
26699 --Exchange Rate Date
26700  , p_source_27            IN DATE
26701 --Exchange Rate
26702  , p_source_28            IN NUMBER
26703 --Exchange Rate Type
26704  , p_source_29            IN VARCHAR2
26705 --Actual Upgrade Debit Accounting Class
26706  , p_source_30            IN VARCHAR2
26707 --Use Actuals Upgrade Attributes Flag
26708  , p_source_31            IN VARCHAR2
26709 --Expenditure Item ID
26710  , p_source_32            IN NUMBER
26711 --Cost Distribution Line Number
26712  , p_source_33            IN NUMBER
26713 --Line Type
26714  , p_source_34            IN VARCHAR2
26715  , p_source_34_meaning    IN VARCHAR2
26716 --Reversed Line Number
26717  , p_source_35            IN NUMBER
26718 --Project Number
26719  , p_source_68            IN VARCHAR2
26720 )
26721 IS
26722 
26723 l_component_type              VARCHAR2(80);
26724 l_component_code              VARCHAR2(30);
26725 l_component_type_code         VARCHAR2(1);
26726 l_component_appl_id           INTEGER;
26727 l_amb_context_code            VARCHAR2(30);
26728 l_entity_code                 VARCHAR2(30);
26729 l_event_class_code            VARCHAR2(30);
26730 l_ae_header_id                NUMBER;
26731 l_event_type_code             VARCHAR2(30);
26732 l_line_definition_code        VARCHAR2(30);
26733 l_line_definition_owner_code  VARCHAR2(1);
26734 --
26735 -- adr variables
26736 l_segment                     VARCHAR2(30);
26737 l_ccid                        NUMBER;
26738 l_adr_transaction_coa_id      NUMBER;
26739 l_adr_accounting_coa_id       NUMBER;
26740 l_adr_flexfield_segment_code  VARCHAR2(30);
26741 l_adr_flex_value_set_id       NUMBER;
26742 l_adr_value_type_code         VARCHAR2(30);
26743 l_adr_value_combination_id    NUMBER;
26744 l_adr_value_segment_code      VARCHAR2(30);
26745 
26746 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26747 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26748 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26749 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26750 
26751 -- 4262811 Variables ------------------------------------------------------------------------------------------
26755 l_accrual_line_num            NUMBER;
26752 l_entered_amt_idx             NUMBER;
26753 l_accted_amt_idx              NUMBER;
26754 l_acc_rev_flag                VARCHAR2(1);
26756 l_tmp_amt                     NUMBER;
26757 l_acc_rev_natural_side_code   VARCHAR2(1);
26758 
26759 l_num_entries                 NUMBER;
26760 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26761 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26762 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26763 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26764 l_recog_line_1                NUMBER;
26765 l_recog_line_2                NUMBER;
26766 
26767 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26768 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26769 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26770 
26771 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26772 
26773 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26774 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26775 
26776 ---------------------------------------------------------------------------------------------------------------
26777 
26778 
26779 --
26780 -- bulk performance
26781 --
26782 l_balance_type_code           VARCHAR2(1);
26783 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26784 l_log_module                  VARCHAR2(240);
26785 
26786 --
26787 -- Upgrade strategy
26788 --
26789 l_actual_upg_option           VARCHAR2(1);
26790 l_enc_upg_option           VARCHAR2(1);
26791 
26792 --
26793 BEGIN
26794 --
26795 IF g_log_enabled THEN
26796       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
26797 END IF;
26798 --
26799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26800 
26801       trace
26802          (p_msg      => 'BEGIN of AcctLineType_62'
26803          ,p_level    => C_LEVEL_PROCEDURE
26804          ,p_module   => l_log_module);
26805 
26806 END IF;
26807 --
26808 l_component_type             := 'AMB_JLT';
26809 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
26810 l_component_type_code        := 'S';
26811 l_component_appl_id          :=  275;
26812 l_amb_context_code           := 'DEFAULT';
26813 l_entity_code                := 'EXPENDITURES';
26814 l_event_class_code           := 'MISC_COST_ADJ';
26815 l_event_type_code            := 'MISC_COST_ADJ_ALL';
26816 l_line_definition_owner_code := 'S';
26817 l_line_definition_code       := 'JA_CN_PA_ACCRUAL_MIS_COSTADJ';
26818 --
26819 l_balance_type_code          := 'A';
26820 l_segment                     := NULL;
26821 l_ccid                        := NULL;
26822 l_adr_transaction_coa_id      := NULL;
26823 l_adr_accounting_coa_id       := NULL;
26824 l_adr_flexfield_segment_code  := NULL;
26825 l_adr_flex_value_set_id       := NULL;
26826 l_adr_value_type_code         := NULL;
26827 l_adr_value_combination_id    := NULL;
26828 l_adr_value_segment_code      := NULL;
26829 
26830 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26831 l_bflow_class_code           := '';    -- 4219869 Business Flow
26832 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26833 l_budgetary_control_flag     := 'N';
26834 
26835 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26836 l_bflow_applied_to_amt       := NULL; -- 5132302
26837 l_entered_amt_idx            := NULL;          -- 4262811
26838 l_accted_amt_idx             := NULL;          -- 4262811
26839 l_acc_rev_flag               := NULL;          -- 4262811
26840 l_accrual_line_num           := NULL;          -- 4262811
26841 l_tmp_amt                    := NULL;          -- 4262811
26842 --
26843  
26844 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26845     l_balance_type_code <> 'B' THEN
26846 
26847    --
26848    XLA_AE_LINES_PKG.SetNewLine;
26849 
26850    p_balance_type_code          := l_balance_type_code;
26851    -- set the flag so later we will know whether the gain loss line needs to be created
26852    
26853    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26854      p_actual_flag :='A';
26855    END IF;
26856 
26857    --
26858    -- bulk performance
26859    --
26860    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26861                                       p_header_num   => 0); -- 4262811
26862    --
26863    -- set accounting line options
26864    --
26865    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26866            p_natural_side_code          => 'C'
26867          , p_gain_or_loss_flag          => 'N'
26868          , p_gl_transfer_mode_code      => 'S'
26869          , p_acct_entry_type_code       => 'A'
26870          , p_switch_side_flag           => 'Y'
26871          , p_merge_duplicate_code       => 'N'
26872          );
26873    --
26874    l_acc_rev_natural_side_code := 'D';  -- 4262811
26875    -- 
26876    --
26877    -- set accounting line type info
26878    --
26879    xla_ae_lines_pkg.SetAcctLineType
26880       (p_component_type             => l_component_type
26881       ,p_event_type_code            => l_event_type_code
26882       ,p_line_definition_owner_code => l_line_definition_owner_code
26883       ,p_line_definition_code       => l_line_definition_code
26884       ,p_accounting_line_code       => l_component_code
26885       ,p_accounting_line_type_code  => l_component_type_code
26886       ,p_accounting_line_appl_id    => l_component_appl_id
26887       ,p_amb_context_code           => l_amb_context_code
26888       ,p_entity_code                => l_entity_code
26892    --
26889       ,p_event_class_code           => l_event_class_code);
26890    --
26891    -- set accounting class
26893    xla_ae_lines_pkg.SetAcctClass(
26894            p_accounting_class_code  => 'COST_CLEARING'
26895          , p_ae_header_id           => l_ae_header_id
26896          );
26897 
26898    --
26899    -- set rounding class
26900    --
26901    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26902                       'COST_CLEARING';
26903 
26904    --
26905    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26906    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26907    --
26908    -- bulk performance
26909    --
26910    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26911 
26912    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26913       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26914 
26915    -- 4955764
26916    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26917       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26918 
26919    -- 4458381 Public Sector Enh
26920    
26921    --
26922    -- set accounting attributes for the line type
26923    --
26924    l_entered_amt_idx := 22;
26925    l_accted_amt_idx  := 27;
26926    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26927    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26928    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
26929    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
26930    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
26931    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
26932    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
26933    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
26934    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
26935    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
26936    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
26937    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
26938    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
26939    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
26940    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
26941    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
26942    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
26943    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
26944    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
26945    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
26946    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
26947    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
26948    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
26949    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
26950    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
26951    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
26952    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
26953    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
26954    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
26955    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
26956    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
26957    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
26958    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
26959    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
26960    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
26961    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
26962    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
26963    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
26964    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
26965    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
26966    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
26967    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
26968    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
26969    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
26970    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
26971    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
26972    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
26973    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
26974    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
26975    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
26976    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
26977    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
26978    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
26979    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
26980    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
26981    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
26982    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
26983    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
26984    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
26985    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
26986    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
26987 
26988    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26989    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26990 
26991    ---------------------------------------------------------------------------------------------------------------
26995 
26992    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26993    ---------------------------------------------------------------------------------------------------------------
26994    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26996    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26997    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26998 
26999    IF xla_accounting_cache_pkg.GetValueChar
27000          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27001          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27002    AND l_bflow_method_code = 'PRIOR_ENTRY'
27003 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27004    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27005          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27006        )
27007    THEN
27008          xla_ae_lines_pkg.BflowUpgEntry
27009            (p_business_method_code    => l_bflow_method_code
27010            ,p_business_class_code     => l_bflow_class_code
27011            ,p_balance_type            => l_balance_type_code);
27012    ELSE
27013       NULL;
27014 -- No business flow processing for business flow method of NONE.
27015    END IF;
27016 
27017    --
27018    -- call analytical criteria
27019    --
27020    
27021 
27022 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
27023 xla_ae_lines_pkg.SetAnalyticalCriteria(
27024    p_analytical_criterion_name    => 'Project Number'
27025  , p_analytical_criterion_owner   => 'S'
27026  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
27027  , p_amb_context_code             => 'DEFAULT'
27028  , p_balancing_flag               => 'N'
27029  
27030  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_68)
27031  , p_analytical_detail_num_1     =>  NULL
27032  , p_analytical_detail_date_1    =>  NULL
27033 
27034  , p_ae_header_id                 => l_ae_header_id
27035 )
27036 ;
27037 --
27038 
27039    --
27040    -- call description
27041    --
27042    -- No description or it is inherited.
27043    --
27044    -- call ADRs
27045    -- Bug 4922099
27046    --
27047    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27048         (NVL(l_actual_upg_option, 'N') = 'O') OR
27049         (NVL(l_enc_upg_option, 'N') = 'O')
27050       )
27051    THEN
27052    NULL;
27053    --
27054    --
27055    
27056   l_ccid := AcctDerRule_6(
27057            p_application_id           => p_application_id
27058          , p_ae_header_id             => l_ae_header_id 
27059 , p_source_4 => p_source_4
27060 , p_source_7 => p_source_7
27061          , x_transaction_coa_id       => l_adr_transaction_coa_id
27062          , x_accounting_coa_id        => l_adr_accounting_coa_id
27063          , x_value_type_code          => l_adr_value_type_code
27064          , p_side                     => 'NA'
27065    );
27066 
27067    xla_ae_lines_pkg.set_ccid(
27068     p_code_combination_id          => l_ccid
27069   , p_value_type_code              => l_adr_value_type_code
27070   , p_transaction_coa_id           => l_adr_transaction_coa_id
27071   , p_accounting_coa_id            => l_adr_accounting_coa_id
27072   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
27073   , p_adr_type_code                => 'S'
27074   , p_component_type               => l_component_type
27075   , p_component_code               => l_component_code
27076   , p_component_type_code          => l_component_type_code
27077   , p_component_appl_id            => l_component_appl_id
27078   , p_amb_context_code             => l_amb_context_code
27079   , p_side                         => 'NA'
27080   );
27081 
27082 
27083    --
27084    --
27085    END IF;
27086    --
27087    -- Bug 4922099
27088    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27089           (NVL(l_enc_upg_option, 'N') = 'O')
27090         ) AND
27091         (l_bflow_method_code = 'PRIOR_ENTRY')
27092       )
27093    THEN
27094       IF
27095       --
27096       1 = 2
27097       --
27098       THEN
27099       xla_accounting_err_pkg.build_message
27100                                     (p_appli_s_name            => 'XLA'
27101                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27102                                     ,p_token_1                 => 'LINE_NUMBER'
27103                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27104                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27105                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27106                                                                              l_component_type
27107                                                                             ,l_component_code
27108                                                                             ,l_component_type_code
27109                                                                             ,l_component_appl_id
27110                                                                             ,l_amb_context_code
27111                                                                             ,l_entity_code
27112                                                                             ,l_event_class_code
27113                                                                            )
27114                                     ,p_token_3                 => 'OWNER'
27115                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27116                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27120                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27117                                                                           ,p_lookup_code    => l_component_type_code
27118                                                                          )
27119                                     ,p_token_4                 => 'PRODUCT_NAME'
27121                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27122                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27123                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27124                                     ,p_ae_header_id            =>  NULL
27125                                        );
27126 
27127         IF (C_LEVEL_ERROR>= g_log_level) THEN
27128                  trace
27129                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27130                       ,p_level    => C_LEVEL_ERROR
27131                       ,p_module   => l_log_module);
27132         END IF;
27133       END IF;
27134    END IF;
27135    --
27136    --
27137    ------------------------------------------------------------------------------------------------
27138    -- 4219869 Business Flow
27139    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27140    -- Prior Entry.  Currently, the following code is always generated.
27141    ------------------------------------------------------------------------------------------------
27142    XLA_AE_LINES_PKG.ValidateCurrentLine;
27143 
27144    ------------------------------------------------------------------------------------
27145    -- 4219869 Business Flow
27146    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27147    ------------------------------------------------------------------------------------
27148    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27149 
27150    ----------------------------------------------------------------------------------
27151    -- 4219869 Business Flow
27152    -- Update journal entry status -- Need to generate this within IF <condition>
27153    ----------------------------------------------------------------------------------
27154    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27155          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27156          ,p_balance_type_code => l_balance_type_code
27157          );
27158 
27159    -------------------------------------------------------------------------------------------
27160    -- 4262811 - Generate the Accrual Reversal lines
27161    -------------------------------------------------------------------------------------------
27162    BEGIN
27163       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27164                               (g_array_event(p_event_id).array_value_num('header_index'));
27165       IF l_acc_rev_flag IS NULL THEN
27166          l_acc_rev_flag := 'N';
27167       END IF;
27168    EXCEPTION
27169       WHEN OTHERS THEN
27170          l_acc_rev_flag := 'N';
27171    END;
27172    --
27173    IF (l_acc_rev_flag = 'Y') THEN
27174 
27175        -- 4645092  ------------------------------------------------------------------------------
27176        -- To allow MPA report to determine if it should generate report process
27177        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27178        ------------------------------------------------------------------------------------------
27179 
27180        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27181        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27182 
27183        --
27184        -- Update the line information that should be overwritten
27185        --
27186        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27187                                          p_header_num   => 1);
27188        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27189 
27190        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27191 
27192        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27193           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27194        END IF;
27195 
27196       --
27197       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27198       --
27199       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27200           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27201       ELSE
27202           ---------------------------------------------------------------------------------------------------
27203           -- 4262811a Switch Sign
27204           ---------------------------------------------------------------------------------------------------
27205           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27206           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27207                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27208           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27209                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27210           -- 5132302
27211           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27212                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27213 
27214       END IF;
27215 
27216       -- 4955764
27217       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27221       XLA_AE_LINES_PKG.ValidateCurrentLine;
27218       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27219 
27220 
27222       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27223 
27224       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27225                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27226                ,p_balance_type_code => l_balance_type_code);
27227 
27228    END IF;
27229 
27230    -----------------------------------------------------------------------------------------
27231    -- 4262811 Multiperiod Accounting
27232    -----------------------------------------------------------------------------------------
27233      -- No MPA option is assigned.
27234 
27235 
27236 END IF;
27237 --
27238 
27239 --
27240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27241    trace
27242       (p_msg      => 'END of AcctLineType_62'
27243       ,p_level    => C_LEVEL_PROCEDURE
27244       ,p_module   => l_log_module);
27245 END IF;
27246 --
27247 EXCEPTION
27248   WHEN xla_exceptions_pkg.application_exception THEN
27249       RAISE;
27250   WHEN OTHERS THEN
27251        xla_exceptions_pkg.raise_message
27252            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_62');
27253 END AcctLineType_62;
27254 --
27255 
27256 ---------------------------------------
27257 --
27258 -- PRIVATE FUNCTION
27259 --         AcctLineType_63
27260 --
27261 ---------------------------------------
27262 PROCEDURE AcctLineType_63 (
27263   p_application_id        IN NUMBER
27264  ,p_event_id              IN NUMBER
27265  ,p_calculate_acctd_flag  IN VARCHAR2
27266  ,p_calculate_g_l_flag    IN VARCHAR2
27267  ,p_actual_flag           IN OUT VARCHAR2
27268  ,p_balance_type_code     OUT VARCHAR2
27269  ,p_gain_or_loss_ref      OUT VARCHAR2
27270  
27271 --Cost CCID
27272  , p_source_3            IN NUMBER
27273 --Allow Account Override Flag
27274  , p_source_4            IN VARCHAR2
27275 --Cost Clearing CCID
27276  , p_source_6            IN NUMBER
27277 --Adjustment Cost Clearing CCID
27278  , p_source_7            IN NUMBER
27279 --Reversing Line Flag
27280  , p_source_22            IN VARCHAR2
27281 --Actual Upgrade Credit Accounting Class
27282  , p_source_23            IN VARCHAR2
27283 --Entered Raw Cost
27284  , p_source_24            IN NUMBER
27285 --Entered Currency Code
27286  , p_source_25            IN VARCHAR2
27287 --Accounted Raw Cost
27288  , p_source_26            IN NUMBER
27289 --Exchange Rate Date
27290  , p_source_27            IN DATE
27291 --Exchange Rate
27292  , p_source_28            IN NUMBER
27293 --Exchange Rate Type
27294  , p_source_29            IN VARCHAR2
27295 --Actual Upgrade Debit Accounting Class
27296  , p_source_30            IN VARCHAR2
27297 --Use Actuals Upgrade Attributes Flag
27298  , p_source_31            IN VARCHAR2
27299 --Expenditure Item ID
27300  , p_source_32            IN NUMBER
27301 --Cost Distribution Line Number
27302  , p_source_33            IN NUMBER
27303 --Line Type
27304  , p_source_34            IN VARCHAR2
27305  , p_source_34_meaning    IN VARCHAR2
27306 --Reversed Line Number
27307  , p_source_35            IN NUMBER
27308 )
27309 IS
27310 
27311 l_component_type              VARCHAR2(80);
27312 l_component_code              VARCHAR2(30);
27313 l_component_type_code         VARCHAR2(1);
27314 l_component_appl_id           INTEGER;
27315 l_amb_context_code            VARCHAR2(30);
27316 l_entity_code                 VARCHAR2(30);
27317 l_event_class_code            VARCHAR2(30);
27318 l_ae_header_id                NUMBER;
27319 l_event_type_code             VARCHAR2(30);
27320 l_line_definition_code        VARCHAR2(30);
27321 l_line_definition_owner_code  VARCHAR2(1);
27322 --
27323 -- adr variables
27324 l_segment                     VARCHAR2(30);
27325 l_ccid                        NUMBER;
27326 l_adr_transaction_coa_id      NUMBER;
27327 l_adr_accounting_coa_id       NUMBER;
27328 l_adr_flexfield_segment_code  VARCHAR2(30);
27329 l_adr_flex_value_set_id       NUMBER;
27330 l_adr_value_type_code         VARCHAR2(30);
27331 l_adr_value_combination_id    NUMBER;
27332 l_adr_value_segment_code      VARCHAR2(30);
27333 
27334 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27335 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27336 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27337 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27338 
27339 -- 4262811 Variables ------------------------------------------------------------------------------------------
27340 l_entered_amt_idx             NUMBER;
27341 l_accted_amt_idx              NUMBER;
27342 l_acc_rev_flag                VARCHAR2(1);
27343 l_accrual_line_num            NUMBER;
27344 l_tmp_amt                     NUMBER;
27345 l_acc_rev_natural_side_code   VARCHAR2(1);
27346 
27347 l_num_entries                 NUMBER;
27348 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27349 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27350 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27351 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27352 l_recog_line_1                NUMBER;
27353 l_recog_line_2                NUMBER;
27354 
27355 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27356 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27357 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27358 
27359 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27360 
27364 ---------------------------------------------------------------------------------------------------------------
27361 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27362 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27363 
27365 
27366 
27367 --
27368 -- bulk performance
27369 --
27370 l_balance_type_code           VARCHAR2(1);
27371 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27372 l_log_module                  VARCHAR2(240);
27373 
27374 --
27375 -- Upgrade strategy
27376 --
27377 l_actual_upg_option           VARCHAR2(1);
27378 l_enc_upg_option           VARCHAR2(1);
27379 
27380 --
27381 BEGIN
27382 --
27383 IF g_log_enabled THEN
27384       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
27385 END IF;
27386 --
27387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27388 
27389       trace
27390          (p_msg      => 'BEGIN of AcctLineType_63'
27391          ,p_level    => C_LEVEL_PROCEDURE
27392          ,p_module   => l_log_module);
27393 
27394 END IF;
27395 --
27396 l_component_type             := 'AMB_JLT';
27397 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
27398 l_component_type_code        := 'S';
27399 l_component_appl_id          :=  275;
27400 l_amb_context_code           := 'DEFAULT';
27401 l_entity_code                := 'EXPENDITURES';
27402 l_event_class_code           := 'WIP_COST_ADJ';
27403 l_event_type_code            := 'WIP_COST_ADJ_ALL';
27404 l_line_definition_owner_code := 'S';
27405 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
27406 --
27407 l_balance_type_code          := 'A';
27408 l_segment                     := NULL;
27409 l_ccid                        := NULL;
27410 l_adr_transaction_coa_id      := NULL;
27411 l_adr_accounting_coa_id       := NULL;
27412 l_adr_flexfield_segment_code  := NULL;
27413 l_adr_flex_value_set_id       := NULL;
27414 l_adr_value_type_code         := NULL;
27415 l_adr_value_combination_id    := NULL;
27416 l_adr_value_segment_code      := NULL;
27417 
27418 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27419 l_bflow_class_code           := '';    -- 4219869 Business Flow
27420 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27421 l_budgetary_control_flag     := 'N';
27422 
27423 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27424 l_bflow_applied_to_amt       := NULL; -- 5132302
27425 l_entered_amt_idx            := NULL;          -- 4262811
27426 l_accted_amt_idx             := NULL;          -- 4262811
27427 l_acc_rev_flag               := NULL;          -- 4262811
27428 l_accrual_line_num           := NULL;          -- 4262811
27429 l_tmp_amt                    := NULL;          -- 4262811
27430 --
27431  
27432 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27433     l_balance_type_code <> 'B' THEN
27434 
27435    --
27436    XLA_AE_LINES_PKG.SetNewLine;
27437 
27438    p_balance_type_code          := l_balance_type_code;
27439    -- set the flag so later we will know whether the gain loss line needs to be created
27440    
27441    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27442      p_actual_flag :='A';
27443    END IF;
27444 
27445    --
27446    -- bulk performance
27447    --
27448    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27449                                       p_header_num   => 0); -- 4262811
27450    --
27451    -- set accounting line options
27452    --
27453    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27454            p_natural_side_code          => 'C'
27455          , p_gain_or_loss_flag          => 'N'
27456          , p_gl_transfer_mode_code      => 'S'
27457          , p_acct_entry_type_code       => 'A'
27458          , p_switch_side_flag           => 'Y'
27459          , p_merge_duplicate_code       => 'N'
27460          );
27461    --
27462    l_acc_rev_natural_side_code := 'D';  -- 4262811
27463    -- 
27464    --
27465    -- set accounting line type info
27466    --
27467    xla_ae_lines_pkg.SetAcctLineType
27468       (p_component_type             => l_component_type
27469       ,p_event_type_code            => l_event_type_code
27470       ,p_line_definition_owner_code => l_line_definition_owner_code
27471       ,p_line_definition_code       => l_line_definition_code
27472       ,p_accounting_line_code       => l_component_code
27473       ,p_accounting_line_type_code  => l_component_type_code
27474       ,p_accounting_line_appl_id    => l_component_appl_id
27475       ,p_amb_context_code           => l_amb_context_code
27476       ,p_entity_code                => l_entity_code
27477       ,p_event_class_code           => l_event_class_code);
27478    --
27479    -- set accounting class
27480    --
27481    xla_ae_lines_pkg.SetAcctClass(
27482            p_accounting_class_code  => 'COST_CLEARING'
27483          , p_ae_header_id           => l_ae_header_id
27484          );
27485 
27486    --
27487    -- set rounding class
27488    --
27489    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27490                       'COST_CLEARING';
27491 
27492    --
27493    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27494    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27495    --
27496    -- bulk performance
27497    --
27498    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27499 
27500    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27501       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27502 
27503    -- 4955764
27507    -- 4458381 Public Sector Enh
27504    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27505       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27506 
27508    
27509    --
27510    -- set accounting attributes for the line type
27511    --
27512    l_entered_amt_idx := 22;
27513    l_accted_amt_idx  := 27;
27514    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27515    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27516    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
27517    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
27518    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
27519    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
27520    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
27521    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
27522    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
27523    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
27524    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
27525    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
27526    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
27527    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
27528    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
27529    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
27530    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
27531    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
27532    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
27533    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
27534    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
27535    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
27536    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
27537    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
27538    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
27539    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
27540    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
27541    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
27542    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
27543    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
27544    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
27545    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
27546    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
27547    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
27548    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
27549    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
27550    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
27551    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
27552    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
27553    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
27554    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
27555    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
27556    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
27557    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
27558    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
27559    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
27560    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
27561    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
27562    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
27563    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
27564    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
27565    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
27566    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
27567    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
27568    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
27569    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
27570    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
27571    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
27572    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
27573    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
27574    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
27575 
27576    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27577    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27578 
27579    ---------------------------------------------------------------------------------------------------------------
27580    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27581    ---------------------------------------------------------------------------------------------------------------
27582    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27583 
27584    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27585    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27586 
27587    IF xla_accounting_cache_pkg.GetValueChar
27588          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27589          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27590    AND l_bflow_method_code = 'PRIOR_ENTRY'
27591 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27592    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27593          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27594        )
27595    THEN
27596          xla_ae_lines_pkg.BflowUpgEntry
27597            (p_business_method_code    => l_bflow_method_code
27601       NULL;
27598            ,p_business_class_code     => l_bflow_class_code
27599            ,p_balance_type            => l_balance_type_code);
27600    ELSE
27602 -- No business flow processing for business flow method of NONE.
27603    END IF;
27604 
27605    --
27606    -- call analytical criteria
27607    --
27608    
27609    --
27610    -- call description
27611    --
27612    -- No description or it is inherited.
27613    --
27614    -- call ADRs
27615    -- Bug 4922099
27616    --
27617    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27618         (NVL(l_actual_upg_option, 'N') = 'O') OR
27619         (NVL(l_enc_upg_option, 'N') = 'O')
27620       )
27621    THEN
27622    NULL;
27623    --
27624    --
27625    
27626   l_ccid := AcctDerRule_6(
27627            p_application_id           => p_application_id
27628          , p_ae_header_id             => l_ae_header_id 
27629 , p_source_4 => p_source_4
27630 , p_source_7 => p_source_7
27631          , x_transaction_coa_id       => l_adr_transaction_coa_id
27632          , x_accounting_coa_id        => l_adr_accounting_coa_id
27633          , x_value_type_code          => l_adr_value_type_code
27634          , p_side                     => 'NA'
27635    );
27636 
27637    xla_ae_lines_pkg.set_ccid(
27638     p_code_combination_id          => l_ccid
27639   , p_value_type_code              => l_adr_value_type_code
27640   , p_transaction_coa_id           => l_adr_transaction_coa_id
27641   , p_accounting_coa_id            => l_adr_accounting_coa_id
27642   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
27643   , p_adr_type_code                => 'S'
27644   , p_component_type               => l_component_type
27645   , p_component_code               => l_component_code
27646   , p_component_type_code          => l_component_type_code
27647   , p_component_appl_id            => l_component_appl_id
27648   , p_amb_context_code             => l_amb_context_code
27649   , p_side                         => 'NA'
27650   );
27651 
27652 
27653    --
27654    --
27655    END IF;
27656    --
27657    -- Bug 4922099
27658    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27659           (NVL(l_enc_upg_option, 'N') = 'O')
27660         ) AND
27661         (l_bflow_method_code = 'PRIOR_ENTRY')
27662       )
27663    THEN
27664       IF
27665       --
27666       1 = 2
27667       --
27668       THEN
27669       xla_accounting_err_pkg.build_message
27670                                     (p_appli_s_name            => 'XLA'
27671                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27672                                     ,p_token_1                 => 'LINE_NUMBER'
27673                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27674                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27675                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27676                                                                              l_component_type
27677                                                                             ,l_component_code
27678                                                                             ,l_component_type_code
27679                                                                             ,l_component_appl_id
27680                                                                             ,l_amb_context_code
27681                                                                             ,l_entity_code
27682                                                                             ,l_event_class_code
27683                                                                            )
27684                                     ,p_token_3                 => 'OWNER'
27685                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27686                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27687                                                                           ,p_lookup_code    => l_component_type_code
27688                                                                          )
27689                                     ,p_token_4                 => 'PRODUCT_NAME'
27690                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27691                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27692                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27693                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27694                                     ,p_ae_header_id            =>  NULL
27695                                        );
27696 
27697         IF (C_LEVEL_ERROR>= g_log_level) THEN
27698                  trace
27699                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27700                       ,p_level    => C_LEVEL_ERROR
27701                       ,p_module   => l_log_module);
27702         END IF;
27703       END IF;
27704    END IF;
27705    --
27706    --
27707    ------------------------------------------------------------------------------------------------
27708    -- 4219869 Business Flow
27709    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27710    -- Prior Entry.  Currently, the following code is always generated.
27711    ------------------------------------------------------------------------------------------------
27712    XLA_AE_LINES_PKG.ValidateCurrentLine;
27713 
27714    ------------------------------------------------------------------------------------
27715    -- 4219869 Business Flow
27719 
27716    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27717    ------------------------------------------------------------------------------------
27718    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27720    ----------------------------------------------------------------------------------
27721    -- 4219869 Business Flow
27722    -- Update journal entry status -- Need to generate this within IF <condition>
27723    ----------------------------------------------------------------------------------
27724    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27725          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27726          ,p_balance_type_code => l_balance_type_code
27727          );
27728 
27729    -------------------------------------------------------------------------------------------
27730    -- 4262811 - Generate the Accrual Reversal lines
27731    -------------------------------------------------------------------------------------------
27732    BEGIN
27733       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27734                               (g_array_event(p_event_id).array_value_num('header_index'));
27735       IF l_acc_rev_flag IS NULL THEN
27736          l_acc_rev_flag := 'N';
27737       END IF;
27738    EXCEPTION
27739       WHEN OTHERS THEN
27740          l_acc_rev_flag := 'N';
27741    END;
27742    --
27743    IF (l_acc_rev_flag = 'Y') THEN
27744 
27745        -- 4645092  ------------------------------------------------------------------------------
27746        -- To allow MPA report to determine if it should generate report process
27747        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27748        ------------------------------------------------------------------------------------------
27749 
27750        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27751        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27752 
27753        --
27754        -- Update the line information that should be overwritten
27755        --
27756        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27757                                          p_header_num   => 1);
27758        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27759 
27760        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27761 
27762        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27763           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27764        END IF;
27765 
27766       --
27767       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27768       --
27769       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27770           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27771       ELSE
27772           ---------------------------------------------------------------------------------------------------
27773           -- 4262811a Switch Sign
27774           ---------------------------------------------------------------------------------------------------
27775           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27776           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27777                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27778           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27779                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27780           -- 5132302
27781           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27782                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27783 
27784       END IF;
27785 
27786       -- 4955764
27787       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27788       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27789 
27790 
27791       XLA_AE_LINES_PKG.ValidateCurrentLine;
27792       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27793 
27794       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27795                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27796                ,p_balance_type_code => l_balance_type_code);
27797 
27798    END IF;
27799 
27800    -----------------------------------------------------------------------------------------
27801    -- 4262811 Multiperiod Accounting
27802    -----------------------------------------------------------------------------------------
27803      -- No MPA option is assigned.
27804 
27805 
27806 END IF;
27807 --
27808 
27809 --
27810 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27811    trace
27812       (p_msg      => 'END of AcctLineType_63'
27813       ,p_level    => C_LEVEL_PROCEDURE
27814       ,p_module   => l_log_module);
27815 END IF;
27816 --
27817 EXCEPTION
27818   WHEN xla_exceptions_pkg.application_exception THEN
27819       RAISE;
27820   WHEN OTHERS THEN
27821        xla_exceptions_pkg.raise_message
27822            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_63');
27823 END AcctLineType_63;
27824 --
27825 
27826 ---------------------------------------
27827 --
27828 -- PRIVATE FUNCTION
27829 --         AcctLineType_64
27830 --
27831 ---------------------------------------
27832 PROCEDURE AcctLineType_64 (
27833   p_application_id        IN NUMBER
27834  ,p_event_id              IN NUMBER
27835  ,p_calculate_acctd_flag  IN VARCHAR2
27836  ,p_calculate_g_l_flag    IN VARCHAR2
27840  
27837  ,p_actual_flag           IN OUT VARCHAR2
27838  ,p_balance_type_code     OUT VARCHAR2
27839  ,p_gain_or_loss_ref      OUT VARCHAR2
27841 --Cost CCID
27842  , p_source_3            IN NUMBER
27843 --Allow Account Override Flag
27844  , p_source_4            IN VARCHAR2
27845 --Cost Clearing CCID
27846  , p_source_6            IN NUMBER
27847 --Adjustment Cost Clearing CCID
27848  , p_source_7            IN NUMBER
27849 --Reversing Line Flag
27850  , p_source_22            IN VARCHAR2
27851 --Actual Upgrade Credit Accounting Class
27852  , p_source_23            IN VARCHAR2
27853 --Entered Raw Cost
27854  , p_source_24            IN NUMBER
27855 --Entered Currency Code
27856  , p_source_25            IN VARCHAR2
27857 --Accounted Raw Cost
27858  , p_source_26            IN NUMBER
27859 --Exchange Rate Date
27860  , p_source_27            IN DATE
27861 --Exchange Rate
27862  , p_source_28            IN NUMBER
27863 --Exchange Rate Type
27864  , p_source_29            IN VARCHAR2
27865 --Actual Upgrade Debit Accounting Class
27866  , p_source_30            IN VARCHAR2
27867 --Use Actuals Upgrade Attributes Flag
27868  , p_source_31            IN VARCHAR2
27869 --Expenditure Item ID
27870  , p_source_32            IN NUMBER
27871 --Cost Distribution Line Number
27872  , p_source_33            IN NUMBER
27873 --Line Type
27874  , p_source_34            IN VARCHAR2
27875  , p_source_34_meaning    IN VARCHAR2
27876 --Reversed Line Number
27877  , p_source_35            IN NUMBER
27878 )
27879 IS
27880 
27881 l_component_type              VARCHAR2(80);
27882 l_component_code              VARCHAR2(30);
27883 l_component_type_code         VARCHAR2(1);
27884 l_component_appl_id           INTEGER;
27885 l_amb_context_code            VARCHAR2(30);
27886 l_entity_code                 VARCHAR2(30);
27887 l_event_class_code            VARCHAR2(30);
27888 l_ae_header_id                NUMBER;
27889 l_event_type_code             VARCHAR2(30);
27890 l_line_definition_code        VARCHAR2(30);
27891 l_line_definition_owner_code  VARCHAR2(1);
27892 --
27893 -- adr variables
27894 l_segment                     VARCHAR2(30);
27895 l_ccid                        NUMBER;
27896 l_adr_transaction_coa_id      NUMBER;
27897 l_adr_accounting_coa_id       NUMBER;
27898 l_adr_flexfield_segment_code  VARCHAR2(30);
27899 l_adr_flex_value_set_id       NUMBER;
27900 l_adr_value_type_code         VARCHAR2(30);
27901 l_adr_value_combination_id    NUMBER;
27902 l_adr_value_segment_code      VARCHAR2(30);
27903 
27904 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27905 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27906 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27907 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27908 
27909 -- 4262811 Variables ------------------------------------------------------------------------------------------
27910 l_entered_amt_idx             NUMBER;
27911 l_accted_amt_idx              NUMBER;
27912 l_acc_rev_flag                VARCHAR2(1);
27913 l_accrual_line_num            NUMBER;
27914 l_tmp_amt                     NUMBER;
27915 l_acc_rev_natural_side_code   VARCHAR2(1);
27916 
27917 l_num_entries                 NUMBER;
27918 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27919 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27920 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27921 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27922 l_recog_line_1                NUMBER;
27923 l_recog_line_2                NUMBER;
27924 
27925 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27926 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27927 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27928 
27929 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27930 
27931 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27932 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27933 
27934 ---------------------------------------------------------------------------------------------------------------
27935 
27936 
27937 --
27938 -- bulk performance
27939 --
27940 l_balance_type_code           VARCHAR2(1);
27941 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27942 l_log_module                  VARCHAR2(240);
27943 
27944 --
27945 -- Upgrade strategy
27946 --
27947 l_actual_upg_option           VARCHAR2(1);
27948 l_enc_upg_option           VARCHAR2(1);
27949 
27950 --
27951 BEGIN
27952 --
27953 IF g_log_enabled THEN
27954       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
27955 END IF;
27956 --
27957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27958 
27959       trace
27960          (p_msg      => 'BEGIN of AcctLineType_64'
27961          ,p_level    => C_LEVEL_PROCEDURE
27962          ,p_module   => l_log_module);
27963 
27964 END IF;
27965 --
27966 l_component_type             := 'AMB_JLT';
27967 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
27968 l_component_type_code        := 'S';
27969 l_component_appl_id          :=  275;
27970 l_amb_context_code           := 'DEFAULT';
27971 l_entity_code                := 'EXPENDITURES';
27972 l_event_class_code           := 'INVENTORY_COST_ADJ';
27973 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
27974 l_line_definition_owner_code := 'S';
27975 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
27976 --
27977 l_balance_type_code          := 'A';
27978 l_segment                     := NULL;
27979 l_ccid                        := NULL;
27983 l_adr_flex_value_set_id       := NULL;
27980 l_adr_transaction_coa_id      := NULL;
27981 l_adr_accounting_coa_id       := NULL;
27982 l_adr_flexfield_segment_code  := NULL;
27984 l_adr_value_type_code         := NULL;
27985 l_adr_value_combination_id    := NULL;
27986 l_adr_value_segment_code      := NULL;
27987 
27988 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27989 l_bflow_class_code           := '';    -- 4219869 Business Flow
27990 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27991 l_budgetary_control_flag     := 'N';
27992 
27993 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27994 l_bflow_applied_to_amt       := NULL; -- 5132302
27995 l_entered_amt_idx            := NULL;          -- 4262811
27996 l_accted_amt_idx             := NULL;          -- 4262811
27997 l_acc_rev_flag               := NULL;          -- 4262811
27998 l_accrual_line_num           := NULL;          -- 4262811
27999 l_tmp_amt                    := NULL;          -- 4262811
28000 --
28001  
28002 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28003     l_balance_type_code <> 'B' THEN
28004 
28005    --
28006    XLA_AE_LINES_PKG.SetNewLine;
28007 
28008    p_balance_type_code          := l_balance_type_code;
28009    -- set the flag so later we will know whether the gain loss line needs to be created
28010    
28011    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28012      p_actual_flag :='A';
28013    END IF;
28014 
28015    --
28016    -- bulk performance
28017    --
28018    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28019                                       p_header_num   => 0); -- 4262811
28020    --
28021    -- set accounting line options
28022    --
28023    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28024            p_natural_side_code          => 'C'
28025          , p_gain_or_loss_flag          => 'N'
28026          , p_gl_transfer_mode_code      => 'S'
28027          , p_acct_entry_type_code       => 'A'
28028          , p_switch_side_flag           => 'Y'
28029          , p_merge_duplicate_code       => 'N'
28030          );
28031    --
28032    l_acc_rev_natural_side_code := 'D';  -- 4262811
28033    -- 
28034    --
28035    -- set accounting line type info
28036    --
28037    xla_ae_lines_pkg.SetAcctLineType
28038       (p_component_type             => l_component_type
28039       ,p_event_type_code            => l_event_type_code
28040       ,p_line_definition_owner_code => l_line_definition_owner_code
28041       ,p_line_definition_code       => l_line_definition_code
28042       ,p_accounting_line_code       => l_component_code
28043       ,p_accounting_line_type_code  => l_component_type_code
28044       ,p_accounting_line_appl_id    => l_component_appl_id
28045       ,p_amb_context_code           => l_amb_context_code
28046       ,p_entity_code                => l_entity_code
28047       ,p_event_class_code           => l_event_class_code);
28048    --
28049    -- set accounting class
28050    --
28051    xla_ae_lines_pkg.SetAcctClass(
28052            p_accounting_class_code  => 'COST_CLEARING'
28053          , p_ae_header_id           => l_ae_header_id
28054          );
28055 
28056    --
28057    -- set rounding class
28058    --
28059    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28060                       'COST_CLEARING';
28061 
28062    --
28063    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28064    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28065    --
28066    -- bulk performance
28067    --
28068    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28069 
28070    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28071       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28072 
28073    -- 4955764
28074    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28075       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28076 
28077    -- 4458381 Public Sector Enh
28078    
28079    --
28080    -- set accounting attributes for the line type
28081    --
28082    l_entered_amt_idx := 22;
28083    l_accted_amt_idx  := 27;
28084    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28085    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28086    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
28087    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
28088    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
28089    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
28090    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
28091    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
28092    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
28093    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
28094    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
28095    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
28096    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
28097    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
28098    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
28099    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
28100    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
28101    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
28102    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
28103    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
28104    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
28108    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
28105    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
28106    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
28107    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
28109    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
28110    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
28111    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
28112    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
28113    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
28114    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
28115    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
28116    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
28117    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
28118    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
28119    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
28120    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
28121    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
28122    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
28123    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
28124    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
28125    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
28126    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
28127    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
28128    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
28129    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
28130    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
28131    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
28132    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
28133    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
28134    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
28135    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
28136    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
28137    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
28138    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
28139    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
28140    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
28141    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
28142    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
28143    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
28144    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
28145 
28146    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28147    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28148 
28149    ---------------------------------------------------------------------------------------------------------------
28150    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28151    ---------------------------------------------------------------------------------------------------------------
28152    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28153 
28154    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28155    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28156 
28157    IF xla_accounting_cache_pkg.GetValueChar
28158          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28159          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28160    AND l_bflow_method_code = 'PRIOR_ENTRY'
28161 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28162    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28163          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28164        )
28165    THEN
28166          xla_ae_lines_pkg.BflowUpgEntry
28167            (p_business_method_code    => l_bflow_method_code
28168            ,p_business_class_code     => l_bflow_class_code
28169            ,p_balance_type            => l_balance_type_code);
28170    ELSE
28171       NULL;
28172 -- No business flow processing for business flow method of NONE.
28173    END IF;
28174 
28175    --
28176    -- call analytical criteria
28177    --
28178    
28179    --
28180    -- call description
28181    --
28182    -- No description or it is inherited.
28183    --
28184    -- call ADRs
28185    -- Bug 4922099
28186    --
28187    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28188         (NVL(l_actual_upg_option, 'N') = 'O') OR
28189         (NVL(l_enc_upg_option, 'N') = 'O')
28190       )
28191    THEN
28192    NULL;
28193    --
28194    --
28195    
28196   l_ccid := AcctDerRule_6(
28197            p_application_id           => p_application_id
28198          , p_ae_header_id             => l_ae_header_id 
28199 , p_source_4 => p_source_4
28200 , p_source_7 => p_source_7
28201          , x_transaction_coa_id       => l_adr_transaction_coa_id
28202          , x_accounting_coa_id        => l_adr_accounting_coa_id
28203          , x_value_type_code          => l_adr_value_type_code
28204          , p_side                     => 'NA'
28205    );
28206 
28207    xla_ae_lines_pkg.set_ccid(
28208     p_code_combination_id          => l_ccid
28209   , p_value_type_code              => l_adr_value_type_code
28210   , p_transaction_coa_id           => l_adr_transaction_coa_id
28211   , p_accounting_coa_id            => l_adr_accounting_coa_id
28212   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
28213   , p_adr_type_code                => 'S'
28214   , p_component_type               => l_component_type
28218   , p_amb_context_code             => l_amb_context_code
28215   , p_component_code               => l_component_code
28216   , p_component_type_code          => l_component_type_code
28217   , p_component_appl_id            => l_component_appl_id
28219   , p_side                         => 'NA'
28220   );
28221 
28222 
28223    --
28224    --
28225    END IF;
28226    --
28227    -- Bug 4922099
28228    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28229           (NVL(l_enc_upg_option, 'N') = 'O')
28230         ) AND
28231         (l_bflow_method_code = 'PRIOR_ENTRY')
28232       )
28233    THEN
28234       IF
28235       --
28236       1 = 2
28237       --
28238       THEN
28239       xla_accounting_err_pkg.build_message
28240                                     (p_appli_s_name            => 'XLA'
28241                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28242                                     ,p_token_1                 => 'LINE_NUMBER'
28243                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28244                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28245                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28246                                                                              l_component_type
28247                                                                             ,l_component_code
28248                                                                             ,l_component_type_code
28249                                                                             ,l_component_appl_id
28250                                                                             ,l_amb_context_code
28251                                                                             ,l_entity_code
28252                                                                             ,l_event_class_code
28253                                                                            )
28254                                     ,p_token_3                 => 'OWNER'
28255                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28256                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28257                                                                           ,p_lookup_code    => l_component_type_code
28258                                                                          )
28259                                     ,p_token_4                 => 'PRODUCT_NAME'
28260                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28261                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28262                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28263                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28264                                     ,p_ae_header_id            =>  NULL
28265                                        );
28266 
28267         IF (C_LEVEL_ERROR>= g_log_level) THEN
28268                  trace
28269                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28270                       ,p_level    => C_LEVEL_ERROR
28271                       ,p_module   => l_log_module);
28272         END IF;
28273       END IF;
28274    END IF;
28275    --
28276    --
28277    ------------------------------------------------------------------------------------------------
28278    -- 4219869 Business Flow
28279    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28280    -- Prior Entry.  Currently, the following code is always generated.
28281    ------------------------------------------------------------------------------------------------
28282    XLA_AE_LINES_PKG.ValidateCurrentLine;
28283 
28284    ------------------------------------------------------------------------------------
28285    -- 4219869 Business Flow
28286    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28287    ------------------------------------------------------------------------------------
28288    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28289 
28290    ----------------------------------------------------------------------------------
28291    -- 4219869 Business Flow
28292    -- Update journal entry status -- Need to generate this within IF <condition>
28293    ----------------------------------------------------------------------------------
28294    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28295          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28296          ,p_balance_type_code => l_balance_type_code
28297          );
28298 
28299    -------------------------------------------------------------------------------------------
28300    -- 4262811 - Generate the Accrual Reversal lines
28301    -------------------------------------------------------------------------------------------
28302    BEGIN
28303       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28304                               (g_array_event(p_event_id).array_value_num('header_index'));
28305       IF l_acc_rev_flag IS NULL THEN
28306          l_acc_rev_flag := 'N';
28307       END IF;
28308    EXCEPTION
28309       WHEN OTHERS THEN
28310          l_acc_rev_flag := 'N';
28311    END;
28312    --
28313    IF (l_acc_rev_flag = 'Y') THEN
28314 
28315        -- 4645092  ------------------------------------------------------------------------------
28316        -- To allow MPA report to determine if it should generate report process
28317        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28318        ------------------------------------------------------------------------------------------
28319 
28320        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28324        -- Update the line information that should be overwritten
28321        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28322 
28323        --
28325        --
28326        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28327                                          p_header_num   => 1);
28328        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28329 
28330        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28331 
28332        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28333           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28334        END IF;
28335 
28336       --
28337       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28338       --
28339       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28340           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28341       ELSE
28342           ---------------------------------------------------------------------------------------------------
28343           -- 4262811a Switch Sign
28344           ---------------------------------------------------------------------------------------------------
28345           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28346           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28347                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28348           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28349                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28350           -- 5132302
28351           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28352                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28353 
28354       END IF;
28355 
28356       -- 4955764
28357       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28358       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28359 
28360 
28361       XLA_AE_LINES_PKG.ValidateCurrentLine;
28362       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28363 
28364       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28365                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28366                ,p_balance_type_code => l_balance_type_code);
28367 
28368    END IF;
28369 
28370    -----------------------------------------------------------------------------------------
28371    -- 4262811 Multiperiod Accounting
28372    -----------------------------------------------------------------------------------------
28373      -- No MPA option is assigned.
28374 
28375 
28376 END IF;
28377 --
28378 
28379 --
28380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28381    trace
28382       (p_msg      => 'END of AcctLineType_64'
28383       ,p_level    => C_LEVEL_PROCEDURE
28384       ,p_module   => l_log_module);
28385 END IF;
28386 --
28387 EXCEPTION
28388   WHEN xla_exceptions_pkg.application_exception THEN
28389       RAISE;
28390   WHEN OTHERS THEN
28391        xla_exceptions_pkg.raise_message
28392            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_64');
28393 END AcctLineType_64;
28394 --
28395 
28396 ---------------------------------------
28397 --
28398 -- PRIVATE FUNCTION
28399 --         AcctLineType_65
28400 --
28401 ---------------------------------------
28402 PROCEDURE AcctLineType_65 (
28403   p_application_id        IN NUMBER
28404  ,p_event_id              IN NUMBER
28405  ,p_calculate_acctd_flag  IN VARCHAR2
28406  ,p_calculate_g_l_flag    IN VARCHAR2
28407  ,p_actual_flag           IN OUT VARCHAR2
28408  ,p_balance_type_code     OUT VARCHAR2
28409  ,p_gain_or_loss_ref      OUT VARCHAR2
28410  
28411 --Realized Gains CCID
28412  , p_source_16            IN NUMBER
28413 --Entered Currency Code
28414  , p_source_25            IN VARCHAR2
28415 --Exchange Rate Date
28416  , p_source_27            IN DATE
28417 --Exchange Rate
28418  , p_source_28            IN NUMBER
28419 --Exchange Rate Type
28420  , p_source_29            IN VARCHAR2
28421 --Revenue Distribution Type
28422  , p_source_36            IN VARCHAR2
28423 --Crediting Revenue Flag
28424  , p_source_38            IN VARCHAR2
28425 --Revenue First Distribution ID
28426  , p_source_39            IN NUMBER
28427 --Revenue Second Distribution ID
28428  , p_source_40            IN NUMBER
28429 --Entered Amount
28430  , p_source_41            IN NUMBER
28431 --Event ID
28432  , p_source_42            IN NUMBER
28433 --Accounted Amount
28434  , p_source_43            IN NUMBER
28435 )
28436 IS
28437 
28438 l_component_type              VARCHAR2(80);
28439 l_component_code              VARCHAR2(30);
28440 l_component_type_code         VARCHAR2(1);
28441 l_component_appl_id           INTEGER;
28442 l_amb_context_code            VARCHAR2(30);
28443 l_entity_code                 VARCHAR2(30);
28444 l_event_class_code            VARCHAR2(30);
28445 l_ae_header_id                NUMBER;
28446 l_event_type_code             VARCHAR2(30);
28447 l_line_definition_code        VARCHAR2(30);
28448 l_line_definition_owner_code  VARCHAR2(1);
28449 --
28450 -- adr variables
28451 l_segment                     VARCHAR2(30);
28452 l_ccid                        NUMBER;
28453 l_adr_transaction_coa_id      NUMBER;
28454 l_adr_accounting_coa_id       NUMBER;
28458 l_adr_value_combination_id    NUMBER;
28455 l_adr_flexfield_segment_code  VARCHAR2(30);
28456 l_adr_flex_value_set_id       NUMBER;
28457 l_adr_value_type_code         VARCHAR2(30);
28459 l_adr_value_segment_code      VARCHAR2(30);
28460 
28461 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28462 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28463 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28464 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28465 
28466 -- 4262811 Variables ------------------------------------------------------------------------------------------
28467 l_entered_amt_idx             NUMBER;
28468 l_accted_amt_idx              NUMBER;
28469 l_acc_rev_flag                VARCHAR2(1);
28470 l_accrual_line_num            NUMBER;
28471 l_tmp_amt                     NUMBER;
28472 l_acc_rev_natural_side_code   VARCHAR2(1);
28473 
28474 l_num_entries                 NUMBER;
28475 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28476 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28477 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28478 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28479 l_recog_line_1                NUMBER;
28480 l_recog_line_2                NUMBER;
28481 
28482 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28483 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28484 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28485 
28486 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28487 
28488 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28489 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28490 
28491 ---------------------------------------------------------------------------------------------------------------
28492 
28493 
28494 --
28495 -- bulk performance
28496 --
28497 l_balance_type_code           VARCHAR2(1);
28498 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28499 l_log_module                  VARCHAR2(240);
28500 
28501 --
28502 -- Upgrade strategy
28503 --
28504 l_actual_upg_option           VARCHAR2(1);
28505 l_enc_upg_option           VARCHAR2(1);
28506 
28507 --
28508 BEGIN
28509 --
28510 IF g_log_enabled THEN
28511       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
28512 END IF;
28513 --
28514 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28515 
28516       trace
28517          (p_msg      => 'BEGIN of AcctLineType_65'
28518          ,p_level    => C_LEVEL_PROCEDURE
28519          ,p_module   => l_log_module);
28520 
28521 END IF;
28522 --
28523 l_component_type             := 'AMB_JLT';
28524 l_component_code             := 'PA_REALIZED_GAINS';
28525 l_component_type_code        := 'S';
28526 l_component_appl_id          :=  275;
28527 l_amb_context_code           := 'DEFAULT';
28528 l_entity_code                := 'REVENUE';
28529 l_event_class_code           := 'REVENUE';
28530 l_event_type_code            := 'REVENUE_ALL';
28531 l_line_definition_owner_code := 'S';
28532 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
28533 --
28534 l_balance_type_code          := 'A';
28535 l_segment                     := NULL;
28536 l_ccid                        := NULL;
28537 l_adr_transaction_coa_id      := NULL;
28538 l_adr_accounting_coa_id       := NULL;
28539 l_adr_flexfield_segment_code  := NULL;
28540 l_adr_flex_value_set_id       := NULL;
28541 l_adr_value_type_code         := NULL;
28542 l_adr_value_combination_id    := NULL;
28543 l_adr_value_segment_code      := NULL;
28544 
28545 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28546 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
28547 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28548 l_budgetary_control_flag     := 'N';
28549 
28550 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28551 l_bflow_applied_to_amt       := NULL; -- 5132302
28552 l_entered_amt_idx            := NULL;          -- 4262811
28553 l_accted_amt_idx             := NULL;          -- 4262811
28554 l_acc_rev_flag               := NULL;          -- 4262811
28555 l_accrual_line_num           := NULL;          -- 4262811
28556 l_tmp_amt                    := NULL;          -- 4262811
28557 --
28558  
28559 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28560     l_balance_type_code <> 'B' THEN
28561 IF NVL(p_source_36,'
28562 ') =  'Revenue - Realized Gains' AND 
28563 NVL(p_source_38,'
28564 ') =  'N'
28565  THEN 
28566 
28567    --
28568    XLA_AE_LINES_PKG.SetNewLine;
28569 
28570    p_balance_type_code          := l_balance_type_code;
28571    -- set the flag so later we will know whether the gain loss line needs to be created
28572    
28573    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28574      p_actual_flag :='A';
28575    END IF;
28576 
28577    --
28578    -- bulk performance
28579    --
28580    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28581                                       p_header_num   => 0); -- 4262811
28582    --
28583    -- set accounting line options
28584    --
28585    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28586            p_natural_side_code          => 'D'
28587          , p_gain_or_loss_flag          => 'N'
28588          , p_gl_transfer_mode_code      => 'S'
28589          , p_acct_entry_type_code       => 'A'
28590          , p_switch_side_flag           => 'Y'
28591          , p_merge_duplicate_code       => 'N'
28592          );
28593    --
28597    -- set accounting line type info
28594    l_acc_rev_natural_side_code := 'C';  -- 4262811
28595    -- 
28596    --
28598    --
28599    xla_ae_lines_pkg.SetAcctLineType
28600       (p_component_type             => l_component_type
28601       ,p_event_type_code            => l_event_type_code
28602       ,p_line_definition_owner_code => l_line_definition_owner_code
28603       ,p_line_definition_code       => l_line_definition_code
28604       ,p_accounting_line_code       => l_component_code
28605       ,p_accounting_line_type_code  => l_component_type_code
28606       ,p_accounting_line_appl_id    => l_component_appl_id
28607       ,p_amb_context_code           => l_amb_context_code
28608       ,p_entity_code                => l_entity_code
28609       ,p_event_class_code           => l_event_class_code);
28610    --
28611    -- set accounting class
28612    --
28613    xla_ae_lines_pkg.SetAcctClass(
28614            p_accounting_class_code  => 'REALIZED_GAINS'
28615          , p_ae_header_id           => l_ae_header_id
28616          );
28617 
28618    --
28619    -- set rounding class
28620    --
28621    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28622                       'REALIZED_GAINS';
28623 
28624    --
28625    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28626    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28627    --
28628    -- bulk performance
28629    --
28630    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28631 
28632    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28633       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28634 
28635    -- 4955764
28636    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28637       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28638 
28639    -- 4458381 Public Sector Enh
28640    
28641    --
28642    -- set accounting attributes for the line type
28643    --
28644    l_entered_amt_idx := 4;
28645    l_accted_amt_idx  := 10;
28646    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28647    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28648    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
28649    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
28650    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
28651    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
28652    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
28653    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
28654    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
28655    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
28656    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
28657    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
28658    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
28659    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
28660    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
28661    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
28662    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
28663    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
28664    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
28665    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
28666    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
28667 
28668    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28669    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28670 
28671    ---------------------------------------------------------------------------------------------------------------
28672    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28673    ---------------------------------------------------------------------------------------------------------------
28674    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28675 
28676    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28677    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28678 
28679    IF xla_accounting_cache_pkg.GetValueChar
28680          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28681          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28682    AND l_bflow_method_code = 'PRIOR_ENTRY'
28683 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28684    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28685          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28686        )
28687    THEN
28688          xla_ae_lines_pkg.BflowUpgEntry
28689            (p_business_method_code    => l_bflow_method_code
28690            ,p_business_class_code     => l_bflow_class_code
28691            ,p_balance_type            => l_balance_type_code);
28692    ELSE
28693       NULL;
28694 -- No business flow processing for business flow method of NONE.
28695    END IF;
28696 
28697    --
28698    -- call analytical criteria
28699    --
28700    
28701    --
28702    -- call description
28703    --
28704    -- No description or it is inherited.
28705    --
28706    -- call ADRs
28707    -- Bug 4922099
28708    --
28709    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28710         (NVL(l_actual_upg_option, 'N') = 'O') OR
28711         (NVL(l_enc_upg_option, 'N') = 'O')
28712       )
28713    THEN
28714    NULL;
28715    --
28716    --
28717    
28721 , p_source_16 => p_source_16
28718   l_ccid := AcctDerRule_15(
28719            p_application_id           => p_application_id
28720          , p_ae_header_id             => l_ae_header_id 
28722          , x_transaction_coa_id       => l_adr_transaction_coa_id
28723          , x_accounting_coa_id        => l_adr_accounting_coa_id
28724          , x_value_type_code          => l_adr_value_type_code
28725          , p_side                     => 'NA'
28726    );
28727 
28728    xla_ae_lines_pkg.set_ccid(
28729     p_code_combination_id          => l_ccid
28730   , p_value_type_code              => l_adr_value_type_code
28731   , p_transaction_coa_id           => l_adr_transaction_coa_id
28732   , p_accounting_coa_id            => l_adr_accounting_coa_id
28733   , p_adr_code                     => 'REALIZED_GAINS_RULE'
28734   , p_adr_type_code                => 'S'
28735   , p_component_type               => l_component_type
28736   , p_component_code               => l_component_code
28737   , p_component_type_code          => l_component_type_code
28738   , p_component_appl_id            => l_component_appl_id
28739   , p_amb_context_code             => l_amb_context_code
28740   , p_side                         => 'NA'
28741   );
28742 
28743 
28744    --
28745    --
28746    END IF;
28747    --
28748    -- Bug 4922099
28749    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28750           (NVL(l_enc_upg_option, 'N') = 'O')
28751         ) AND
28752         (l_bflow_method_code = 'PRIOR_ENTRY')
28753       )
28754    THEN
28755       IF
28756       --
28757       1 = 2
28758       --
28759       THEN
28760       xla_accounting_err_pkg.build_message
28761                                     (p_appli_s_name            => 'XLA'
28762                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28763                                     ,p_token_1                 => 'LINE_NUMBER'
28764                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28765                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28766                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28767                                                                              l_component_type
28768                                                                             ,l_component_code
28769                                                                             ,l_component_type_code
28770                                                                             ,l_component_appl_id
28771                                                                             ,l_amb_context_code
28772                                                                             ,l_entity_code
28773                                                                             ,l_event_class_code
28774                                                                            )
28775                                     ,p_token_3                 => 'OWNER'
28776                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28777                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28778                                                                           ,p_lookup_code    => l_component_type_code
28779                                                                          )
28780                                     ,p_token_4                 => 'PRODUCT_NAME'
28781                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28782                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28783                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28784                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28785                                     ,p_ae_header_id            =>  NULL
28786                                        );
28787 
28788         IF (C_LEVEL_ERROR>= g_log_level) THEN
28789                  trace
28790                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28791                       ,p_level    => C_LEVEL_ERROR
28792                       ,p_module   => l_log_module);
28793         END IF;
28794       END IF;
28795    END IF;
28796    --
28797    --
28798    ------------------------------------------------------------------------------------------------
28799    -- 4219869 Business Flow
28800    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28801    -- Prior Entry.  Currently, the following code is always generated.
28802    ------------------------------------------------------------------------------------------------
28803    XLA_AE_LINES_PKG.ValidateCurrentLine;
28804 
28805    ------------------------------------------------------------------------------------
28806    -- 4219869 Business Flow
28807    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28808    ------------------------------------------------------------------------------------
28809    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28810 
28811    ----------------------------------------------------------------------------------
28812    -- 4219869 Business Flow
28813    -- Update journal entry status -- Need to generate this within IF <condition>
28814    ----------------------------------------------------------------------------------
28815    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28816          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28817          ,p_balance_type_code => l_balance_type_code
28818          );
28819 
28820    -------------------------------------------------------------------------------------------
28821    -- 4262811 - Generate the Accrual Reversal lines
28825                               (g_array_event(p_event_id).array_value_num('header_index'));
28822    -------------------------------------------------------------------------------------------
28823    BEGIN
28824       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28826       IF l_acc_rev_flag IS NULL THEN
28827          l_acc_rev_flag := 'N';
28828       END IF;
28829    EXCEPTION
28830       WHEN OTHERS THEN
28831          l_acc_rev_flag := 'N';
28832    END;
28833    --
28834    IF (l_acc_rev_flag = 'Y') THEN
28835 
28836        -- 4645092  ------------------------------------------------------------------------------
28837        -- To allow MPA report to determine if it should generate report process
28838        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28839        ------------------------------------------------------------------------------------------
28840 
28841        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28842        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28843 
28844        --
28845        -- Update the line information that should be overwritten
28846        --
28847        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28848                                          p_header_num   => 1);
28849        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28850 
28851        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28852 
28853        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28854           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28855        END IF;
28856 
28857       --
28858       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28859       --
28860       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28861           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28862       ELSE
28863           ---------------------------------------------------------------------------------------------------
28864           -- 4262811a Switch Sign
28865           ---------------------------------------------------------------------------------------------------
28866           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28867           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28868                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28869           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28870                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28871           -- 5132302
28872           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28873                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28874 
28875       END IF;
28876 
28877       -- 4955764
28878       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28879       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28880 
28881 
28882       XLA_AE_LINES_PKG.ValidateCurrentLine;
28883       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28884 
28885       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28886                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28887                ,p_balance_type_code => l_balance_type_code);
28888 
28889    END IF;
28890 
28891    -----------------------------------------------------------------------------------------
28892    -- 4262811 Multiperiod Accounting
28893    -----------------------------------------------------------------------------------------
28894      -- No MPA option is assigned.
28895 
28896 
28897 END IF;
28898 END IF;
28899 --
28900 
28901 --
28902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28903    trace
28904       (p_msg      => 'END of AcctLineType_65'
28905       ,p_level    => C_LEVEL_PROCEDURE
28906       ,p_module   => l_log_module);
28907 END IF;
28908 --
28909 EXCEPTION
28910   WHEN xla_exceptions_pkg.application_exception THEN
28911       RAISE;
28912   WHEN OTHERS THEN
28913        xla_exceptions_pkg.raise_message
28914            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_65');
28915 END AcctLineType_65;
28916 --
28917 
28918 ---------------------------------------
28919 --
28920 -- PRIVATE FUNCTION
28921 --         AcctLineType_66
28922 --
28923 ---------------------------------------
28924 PROCEDURE AcctLineType_66 (
28925   p_application_id        IN NUMBER
28926  ,p_event_id              IN NUMBER
28927  ,p_calculate_acctd_flag  IN VARCHAR2
28928  ,p_calculate_g_l_flag    IN VARCHAR2
28929  ,p_actual_flag           IN OUT VARCHAR2
28930  ,p_balance_type_code     OUT VARCHAR2
28931  ,p_gain_or_loss_ref      OUT VARCHAR2
28932  
28933 --Actual Upgrade Credit Accounting Class
28934  , p_source_23            IN VARCHAR2
28935 --Entered Currency Code
28936  , p_source_25            IN VARCHAR2
28937 --Exchange Rate Date
28938  , p_source_27            IN DATE
28939 --Exchange Rate
28940  , p_source_28            IN NUMBER
28941 --Exchange Rate Type
28942  , p_source_29            IN VARCHAR2
28943 --Actual Upgrade Debit Accounting Class
28944  , p_source_30            IN VARCHAR2
28945 --Use Actuals Upgrade Attributes Flag
28946  , p_source_31            IN VARCHAR2
28947 --Revenue Distribution Type
28948  , p_source_36            IN VARCHAR2
28949 --Crediting Revenue Flag
28950  , p_source_38            IN VARCHAR2
28954  , p_source_40            IN NUMBER
28951 --Revenue First Distribution ID
28952  , p_source_39            IN NUMBER
28953 --Revenue Second Distribution ID
28955 --Entered Amount
28956  , p_source_41            IN NUMBER
28957 --Event ID
28958  , p_source_42            IN NUMBER
28959 --Accounted Amount
28960  , p_source_43            IN NUMBER
28961 --Actual Upgrade Credit CCID
28962  , p_source_59            IN NUMBER
28963 --Actual Upgrade Debit CCID
28964  , p_source_60            IN NUMBER
28965 --Application ID
28966  , p_source_61            IN NUMBER
28967 --Revenue Entity Code
28968  , p_source_62            IN VARCHAR2
28969 --Crediting Revenue First Distribution ID
28970  , p_source_63            IN NUMBER
28971 --Project ID
28972  , p_source_64            IN NUMBER
28973 --Crediting Revenue Second Distribution ID
28974  , p_source_65            IN NUMBER
28975 --Draft Revenue Number Credited
28976  , p_source_66            IN NUMBER
28977 )
28978 IS
28979 
28980 l_component_type              VARCHAR2(80);
28981 l_component_code              VARCHAR2(30);
28982 l_component_type_code         VARCHAR2(1);
28983 l_component_appl_id           INTEGER;
28984 l_amb_context_code            VARCHAR2(30);
28985 l_entity_code                 VARCHAR2(30);
28986 l_event_class_code            VARCHAR2(30);
28987 l_ae_header_id                NUMBER;
28988 l_event_type_code             VARCHAR2(30);
28989 l_line_definition_code        VARCHAR2(30);
28990 l_line_definition_owner_code  VARCHAR2(1);
28991 --
28992 -- adr variables
28993 l_segment                     VARCHAR2(30);
28994 l_ccid                        NUMBER;
28995 l_adr_transaction_coa_id      NUMBER;
28996 l_adr_accounting_coa_id       NUMBER;
28997 l_adr_flexfield_segment_code  VARCHAR2(30);
28998 l_adr_flex_value_set_id       NUMBER;
28999 l_adr_value_type_code         VARCHAR2(30);
29000 l_adr_value_combination_id    NUMBER;
29001 l_adr_value_segment_code      VARCHAR2(30);
29002 
29003 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29004 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29005 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29006 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29007 
29008 -- 4262811 Variables ------------------------------------------------------------------------------------------
29009 l_entered_amt_idx             NUMBER;
29010 l_accted_amt_idx              NUMBER;
29011 l_acc_rev_flag                VARCHAR2(1);
29012 l_accrual_line_num            NUMBER;
29013 l_tmp_amt                     NUMBER;
29014 l_acc_rev_natural_side_code   VARCHAR2(1);
29015 
29016 l_num_entries                 NUMBER;
29017 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29018 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29019 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29020 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29021 l_recog_line_1                NUMBER;
29022 l_recog_line_2                NUMBER;
29023 
29024 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29025 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29026 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29027 
29028 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29029 
29030 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29031 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29032 
29033 ---------------------------------------------------------------------------------------------------------------
29034 
29035 
29036 --
29037 -- bulk performance
29038 --
29039 l_balance_type_code           VARCHAR2(1);
29040 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29041 l_log_module                  VARCHAR2(240);
29042 
29043 --
29044 -- Upgrade strategy
29045 --
29046 l_actual_upg_option           VARCHAR2(1);
29047 l_enc_upg_option           VARCHAR2(1);
29048 
29049 --
29050 BEGIN
29051 --
29052 IF g_log_enabled THEN
29053       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
29054 END IF;
29055 --
29056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29057 
29058       trace
29059          (p_msg      => 'BEGIN of AcctLineType_66'
29060          ,p_level    => C_LEVEL_PROCEDURE
29061          ,p_module   => l_log_module);
29062 
29063 END IF;
29064 --
29065 l_component_type             := 'AMB_JLT';
29066 l_component_code             := 'PA_REALIZED_GAINS_ADJ';
29067 l_component_type_code        := 'S';
29068 l_component_appl_id          :=  275;
29069 l_amb_context_code           := 'DEFAULT';
29070 l_entity_code                := 'REVENUE';
29071 l_event_class_code           := 'REVENUE_ADJ';
29072 l_event_type_code            := 'REVENUE_ADJ_ALL';
29073 l_line_definition_owner_code := 'S';
29074 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
29075 --
29076 l_balance_type_code          := 'A';
29077 l_segment                     := NULL;
29078 l_ccid                        := NULL;
29079 l_adr_transaction_coa_id      := NULL;
29080 l_adr_accounting_coa_id       := NULL;
29081 l_adr_flexfield_segment_code  := NULL;
29082 l_adr_flex_value_set_id       := NULL;
29083 l_adr_value_type_code         := NULL;
29084 l_adr_value_combination_id    := NULL;
29085 l_adr_value_segment_code      := NULL;
29086 
29087 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
29088 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
29089 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
29090 l_budgetary_control_flag     := 'N';
29091 
29095 l_accted_amt_idx             := NULL;          -- 4262811
29092 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29093 l_bflow_applied_to_amt       := NULL; -- 5132302
29094 l_entered_amt_idx            := NULL;          -- 4262811
29096 l_acc_rev_flag               := NULL;          -- 4262811
29097 l_accrual_line_num           := NULL;          -- 4262811
29098 l_tmp_amt                    := NULL;          -- 4262811
29099 --
29100  
29101 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29102     l_balance_type_code <> 'B' THEN
29103 IF NVL(p_source_36,'
29104 ') =  'Revenue - Realized Gains' AND 
29105 NVL(p_source_38,'
29106 ') =  'Y'
29107  THEN 
29108 
29109    --
29110    XLA_AE_LINES_PKG.SetNewLine;
29111 
29112    p_balance_type_code          := l_balance_type_code;
29113    -- set the flag so later we will know whether the gain loss line needs to be created
29114    
29115    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29116      p_actual_flag :='A';
29117    END IF;
29118 
29119    --
29120    -- bulk performance
29121    --
29122    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29123                                       p_header_num   => 0); -- 4262811
29124    --
29125    -- set accounting line options
29126    --
29127    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29128            p_natural_side_code          => 'D'
29129          , p_gain_or_loss_flag          => 'N'
29130          , p_gl_transfer_mode_code      => 'S'
29131          , p_acct_entry_type_code       => 'A'
29132          , p_switch_side_flag           => 'Y'
29133          , p_merge_duplicate_code       => 'N'
29134          );
29135    --
29136    l_acc_rev_natural_side_code := 'C';  -- 4262811
29137    -- 
29138    --
29139    -- set accounting line type info
29140    --
29141    xla_ae_lines_pkg.SetAcctLineType
29142       (p_component_type             => l_component_type
29143       ,p_event_type_code            => l_event_type_code
29144       ,p_line_definition_owner_code => l_line_definition_owner_code
29145       ,p_line_definition_code       => l_line_definition_code
29146       ,p_accounting_line_code       => l_component_code
29147       ,p_accounting_line_type_code  => l_component_type_code
29148       ,p_accounting_line_appl_id    => l_component_appl_id
29149       ,p_amb_context_code           => l_amb_context_code
29150       ,p_entity_code                => l_entity_code
29151       ,p_event_class_code           => l_event_class_code);
29152    --
29153    -- set accounting class
29154    --
29155    xla_ae_lines_pkg.SetAcctClass(
29156            p_accounting_class_code  => 'REALIZED_GAINS'
29157          , p_ae_header_id           => l_ae_header_id
29158          );
29159 
29160    --
29161    -- set rounding class
29162    --
29163    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29164                       'REALIZED_GAINS';
29165 
29166    --
29167    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29168    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29169    --
29170    -- bulk performance
29171    --
29172    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29173 
29174    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29175       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29176 
29177    -- 4955764
29178    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29179       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29180 
29181    -- 4458381 Public Sector Enh
29182    
29183    --
29184    -- set accounting attributes for the line type
29185    --
29186    l_entered_amt_idx := 28;
29187    l_accted_amt_idx  := 31;
29188    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29189    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
29190    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
29191    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
29192    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
29193    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
29194    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
29195    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
29196    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
29197    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
29198    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
29199    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
29200    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
29201    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
29202    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
29203    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
29204    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
29205    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
29206    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
29207    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
29208    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
29209    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
29210    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
29211    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
29212    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
29213    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
29214    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
29218    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
29215    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
29216    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
29217    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
29219    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
29220    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
29221    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
29222    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
29223    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
29224    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
29225    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29226    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
29227    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
29228    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
29229    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
29230    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
29231    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29232    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
29233    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
29234    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
29235    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
29236    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
29237    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
29238    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
29239    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
29240    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
29241    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
29242    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
29243    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
29244    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
29245    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
29246    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
29247    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
29248    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
29249    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
29250    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
29251 
29252    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29253    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29254 
29255    ---------------------------------------------------------------------------------------------------------------
29256    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29257    ---------------------------------------------------------------------------------------------------------------
29258    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29259 
29260    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29261    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29262 
29263    IF xla_accounting_cache_pkg.GetValueChar
29264          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29265          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29266    AND l_bflow_method_code = 'PRIOR_ENTRY'
29267 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29268    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29269          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29270        )
29271    THEN
29272          xla_ae_lines_pkg.BflowUpgEntry
29273            (p_business_method_code    => l_bflow_method_code
29274            ,p_business_class_code     => l_bflow_class_code
29275            ,p_balance_type            => l_balance_type_code);
29276    ELSE
29277       NULL;
29278 XLA_AE_LINES_PKG.business_flow_validation(
29279                                 p_business_method_code     => l_bflow_method_code
29280                                ,p_business_class_code      => l_bflow_class_code
29281                                ,p_inherit_description_flag => l_inherit_desc_flag);
29282    END IF;
29283 
29284    --
29285    -- call analytical criteria
29286    --
29287    -- Inherited Analytical Criteria for business flow method of Prior Entry.
29288    --
29289    -- call description
29290    --
29291    -- No description or it is inherited.
29292    --
29293    -- call ADRs
29294    -- Bug 4922099
29295    --
29296    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29297         (NVL(l_actual_upg_option, 'N') = 'O') OR
29298         (NVL(l_enc_upg_option, 'N') = 'O')
29299       )
29300    THEN
29301    NULL;
29302    --
29303    --
29304    
29305    --
29306    --
29307    END IF;
29308    --
29309    -- Bug 4922099
29310    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29311           (NVL(l_enc_upg_option, 'N') = 'O')
29312         ) AND
29313         (l_bflow_method_code = 'PRIOR_ENTRY')
29314       )
29315    THEN
29316       IF
29317       --
29318       1 = 1
29319       --
29320       THEN
29321       xla_accounting_err_pkg.build_message
29322                                     (p_appli_s_name            => 'XLA'
29323                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29324                                     ,p_token_1                 => 'LINE_NUMBER'
29325                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29326                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29330                                                                             ,l_component_type_code
29327                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29328                                                                              l_component_type
29329                                                                             ,l_component_code
29331                                                                             ,l_component_appl_id
29332                                                                             ,l_amb_context_code
29333                                                                             ,l_entity_code
29334                                                                             ,l_event_class_code
29335                                                                            )
29336                                     ,p_token_3                 => 'OWNER'
29337                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29338                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29339                                                                           ,p_lookup_code    => l_component_type_code
29340                                                                          )
29341                                     ,p_token_4                 => 'PRODUCT_NAME'
29342                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29343                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29344                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29345                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29346                                     ,p_ae_header_id            =>  NULL
29347                                        );
29348 
29349         IF (C_LEVEL_ERROR>= g_log_level) THEN
29350                  trace
29351                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29352                       ,p_level    => C_LEVEL_ERROR
29353                       ,p_module   => l_log_module);
29354         END IF;
29355       END IF;
29356    END IF;
29357    --
29358    --
29359    ------------------------------------------------------------------------------------------------
29360    -- 4219869 Business Flow
29361    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29362    -- Prior Entry.  Currently, the following code is always generated.
29363    ------------------------------------------------------------------------------------------------
29364    -- No ValidateCurrentLine for business flow method of Prior Entry
29365 
29366    ------------------------------------------------------------------------------------
29367    -- 4219869 Business Flow
29368    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29369    ------------------------------------------------------------------------------------
29370    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29371 
29372    ----------------------------------------------------------------------------------
29373    -- 4219869 Business Flow
29374    -- Update journal entry status -- Need to generate this within IF <condition>
29375    ----------------------------------------------------------------------------------
29376    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29377          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29378          ,p_balance_type_code => l_balance_type_code
29379          );
29380 
29381    -------------------------------------------------------------------------------------------
29382    -- 4262811 - Generate the Accrual Reversal lines
29383    -------------------------------------------------------------------------------------------
29384    BEGIN
29385       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29386                               (g_array_event(p_event_id).array_value_num('header_index'));
29387       IF l_acc_rev_flag IS NULL THEN
29388          l_acc_rev_flag := 'N';
29389       END IF;
29390    EXCEPTION
29391       WHEN OTHERS THEN
29392          l_acc_rev_flag := 'N';
29393    END;
29394    --
29395    IF (l_acc_rev_flag = 'Y') THEN
29396 
29397        -- 4645092  ------------------------------------------------------------------------------
29398        -- To allow MPA report to determine if it should generate report process
29399        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29400        ------------------------------------------------------------------------------------------
29401 
29402        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29403        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29404 
29405        --
29406        -- Update the line information that should be overwritten
29407        --
29408        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29409                                          p_header_num   => 1);
29410        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29411 
29412        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29413 
29414        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29415           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29416        END IF;
29417 
29418       --
29419       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29420       --
29421       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29422           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29423       ELSE
29427           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29424           ---------------------------------------------------------------------------------------------------
29425           -- 4262811a Switch Sign
29426           ---------------------------------------------------------------------------------------------------
29428           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29429                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29430           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29431                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29432           -- 5132302
29433           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29434                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29435 
29436       END IF;
29437 
29438       -- 4955764
29439       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29440       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29441 
29442 
29443       XLA_AE_LINES_PKG.ValidateCurrentLine;
29444       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29445 
29446       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29447                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29448                ,p_balance_type_code => l_balance_type_code);
29449 
29450    END IF;
29451 
29452    -----------------------------------------------------------------------------------------
29453    -- 4262811 Multiperiod Accounting
29454    -----------------------------------------------------------------------------------------
29455      -- No MPA option is assigned.
29456 
29457 
29458 END IF;
29459 END IF;
29460 --
29461 
29462 --
29463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29464    trace
29465       (p_msg      => 'END of AcctLineType_66'
29466       ,p_level    => C_LEVEL_PROCEDURE
29467       ,p_module   => l_log_module);
29468 END IF;
29469 --
29470 EXCEPTION
29471   WHEN xla_exceptions_pkg.application_exception THEN
29472       RAISE;
29473   WHEN OTHERS THEN
29474        xla_exceptions_pkg.raise_message
29475            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_66');
29476 END AcctLineType_66;
29477 --
29478 
29479 ---------------------------------------
29480 --
29481 -- PRIVATE FUNCTION
29482 --         AcctLineType_67
29483 --
29484 ---------------------------------------
29485 PROCEDURE AcctLineType_67 (
29486   p_application_id        IN NUMBER
29487  ,p_event_id              IN NUMBER
29488  ,p_calculate_acctd_flag  IN VARCHAR2
29489  ,p_calculate_g_l_flag    IN VARCHAR2
29490  ,p_actual_flag           IN OUT VARCHAR2
29491  ,p_balance_type_code     OUT VARCHAR2
29492  ,p_gain_or_loss_ref      OUT VARCHAR2
29493  
29494 --Realized Losses CCID
29495  , p_source_17            IN NUMBER
29496 --Entered Currency Code
29497  , p_source_25            IN VARCHAR2
29498 --Exchange Rate Date
29499  , p_source_27            IN DATE
29500 --Exchange Rate
29501  , p_source_28            IN NUMBER
29502 --Exchange Rate Type
29503  , p_source_29            IN VARCHAR2
29504 --Revenue Distribution Type
29505  , p_source_36            IN VARCHAR2
29506 --Crediting Revenue Flag
29507  , p_source_38            IN VARCHAR2
29508 --Revenue First Distribution ID
29509  , p_source_39            IN NUMBER
29510 --Revenue Second Distribution ID
29511  , p_source_40            IN NUMBER
29512 --Entered Amount
29513  , p_source_41            IN NUMBER
29514 --Event ID
29515  , p_source_42            IN NUMBER
29516 --Accounted Amount
29517  , p_source_43            IN NUMBER
29518 )
29519 IS
29520 
29521 l_component_type              VARCHAR2(80);
29522 l_component_code              VARCHAR2(30);
29523 l_component_type_code         VARCHAR2(1);
29524 l_component_appl_id           INTEGER;
29525 l_amb_context_code            VARCHAR2(30);
29526 l_entity_code                 VARCHAR2(30);
29527 l_event_class_code            VARCHAR2(30);
29528 l_ae_header_id                NUMBER;
29529 l_event_type_code             VARCHAR2(30);
29530 l_line_definition_code        VARCHAR2(30);
29531 l_line_definition_owner_code  VARCHAR2(1);
29532 --
29533 -- adr variables
29534 l_segment                     VARCHAR2(30);
29535 l_ccid                        NUMBER;
29536 l_adr_transaction_coa_id      NUMBER;
29537 l_adr_accounting_coa_id       NUMBER;
29538 l_adr_flexfield_segment_code  VARCHAR2(30);
29539 l_adr_flex_value_set_id       NUMBER;
29540 l_adr_value_type_code         VARCHAR2(30);
29541 l_adr_value_combination_id    NUMBER;
29542 l_adr_value_segment_code      VARCHAR2(30);
29543 
29544 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29545 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29546 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29547 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29548 
29549 -- 4262811 Variables ------------------------------------------------------------------------------------------
29550 l_entered_amt_idx             NUMBER;
29551 l_accted_amt_idx              NUMBER;
29552 l_acc_rev_flag                VARCHAR2(1);
29553 l_accrual_line_num            NUMBER;
29554 l_tmp_amt                     NUMBER;
29555 l_acc_rev_natural_side_code   VARCHAR2(1);
29556 
29557 l_num_entries                 NUMBER;
29558 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29559 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29563 l_recog_line_2                NUMBER;
29560 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29561 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29562 l_recog_line_1                NUMBER;
29564 
29565 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29566 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29567 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29568 
29569 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29570 
29571 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29572 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29573 
29574 ---------------------------------------------------------------------------------------------------------------
29575 
29576 
29577 --
29578 -- bulk performance
29579 --
29580 l_balance_type_code           VARCHAR2(1);
29581 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29582 l_log_module                  VARCHAR2(240);
29583 
29584 --
29585 -- Upgrade strategy
29586 --
29587 l_actual_upg_option           VARCHAR2(1);
29588 l_enc_upg_option           VARCHAR2(1);
29589 
29590 --
29591 BEGIN
29592 --
29593 IF g_log_enabled THEN
29594       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
29595 END IF;
29596 --
29597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29598 
29599       trace
29600          (p_msg      => 'BEGIN of AcctLineType_67'
29601          ,p_level    => C_LEVEL_PROCEDURE
29602          ,p_module   => l_log_module);
29603 
29604 END IF;
29605 --
29606 l_component_type             := 'AMB_JLT';
29607 l_component_code             := 'PA_REALIZED_LOSSES';
29608 l_component_type_code        := 'S';
29609 l_component_appl_id          :=  275;
29610 l_amb_context_code           := 'DEFAULT';
29611 l_entity_code                := 'REVENUE';
29612 l_event_class_code           := 'REVENUE';
29613 l_event_type_code            := 'REVENUE_ALL';
29614 l_line_definition_owner_code := 'S';
29615 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
29616 --
29617 l_balance_type_code          := 'A';
29618 l_segment                     := NULL;
29619 l_ccid                        := NULL;
29620 l_adr_transaction_coa_id      := NULL;
29621 l_adr_accounting_coa_id       := NULL;
29622 l_adr_flexfield_segment_code  := NULL;
29623 l_adr_flex_value_set_id       := NULL;
29624 l_adr_value_type_code         := NULL;
29625 l_adr_value_combination_id    := NULL;
29626 l_adr_value_segment_code      := NULL;
29627 
29628 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29629 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
29630 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29631 l_budgetary_control_flag     := 'N';
29632 
29633 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29634 l_bflow_applied_to_amt       := NULL; -- 5132302
29635 l_entered_amt_idx            := NULL;          -- 4262811
29636 l_accted_amt_idx             := NULL;          -- 4262811
29637 l_acc_rev_flag               := NULL;          -- 4262811
29638 l_accrual_line_num           := NULL;          -- 4262811
29639 l_tmp_amt                    := NULL;          -- 4262811
29640 --
29641  
29642 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29643     l_balance_type_code <> 'B' THEN
29644 IF NVL(p_source_36,'
29645 ') =  'Revenue - Realized Losses' AND 
29646 NVL(p_source_38,'
29647 ') =  'N'
29648  THEN 
29649 
29650    --
29651    XLA_AE_LINES_PKG.SetNewLine;
29652 
29653    p_balance_type_code          := l_balance_type_code;
29654    -- set the flag so later we will know whether the gain loss line needs to be created
29655    
29656    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29657      p_actual_flag :='A';
29658    END IF;
29659 
29660    --
29661    -- bulk performance
29662    --
29663    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29664                                       p_header_num   => 0); -- 4262811
29665    --
29666    -- set accounting line options
29667    --
29668    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29669            p_natural_side_code          => 'C'
29670          , p_gain_or_loss_flag          => 'N'
29671          , p_gl_transfer_mode_code      => 'S'
29672          , p_acct_entry_type_code       => 'A'
29673          , p_switch_side_flag           => 'Y'
29674          , p_merge_duplicate_code       => 'N'
29675          );
29676    --
29677    l_acc_rev_natural_side_code := 'D';  -- 4262811
29678    -- 
29679    --
29680    -- set accounting line type info
29681    --
29682    xla_ae_lines_pkg.SetAcctLineType
29683       (p_component_type             => l_component_type
29684       ,p_event_type_code            => l_event_type_code
29685       ,p_line_definition_owner_code => l_line_definition_owner_code
29686       ,p_line_definition_code       => l_line_definition_code
29687       ,p_accounting_line_code       => l_component_code
29688       ,p_accounting_line_type_code  => l_component_type_code
29689       ,p_accounting_line_appl_id    => l_component_appl_id
29690       ,p_amb_context_code           => l_amb_context_code
29691       ,p_entity_code                => l_entity_code
29692       ,p_event_class_code           => l_event_class_code);
29693    --
29694    -- set accounting class
29695    --
29696    xla_ae_lines_pkg.SetAcctClass(
29697            p_accounting_class_code  => 'REALIZED_LOSS'
29698          , p_ae_header_id           => l_ae_header_id
29699          );
29700 
29701    --
29702    -- set rounding class
29703    --
29707    --
29704    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29705                       'REALIZED_LOSS';
29706 
29708    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29709    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29710    --
29711    -- bulk performance
29712    --
29713    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29714 
29715    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29716       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29717 
29718    -- 4955764
29719    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29720       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29721 
29722    -- 4458381 Public Sector Enh
29723    
29724    --
29725    -- set accounting attributes for the line type
29726    --
29727    l_entered_amt_idx := 4;
29728    l_accted_amt_idx  := 10;
29729    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29730    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29731    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
29732    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
29733    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
29734    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
29735    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
29736    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
29737    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
29738    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
29739    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
29740    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
29741    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
29742    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
29743    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
29744    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
29745    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
29746    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
29747    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
29748    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
29749    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
29750 
29751    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29752    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29753 
29754    ---------------------------------------------------------------------------------------------------------------
29755    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29756    ---------------------------------------------------------------------------------------------------------------
29757    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29758 
29759    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29760    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29761 
29762    IF xla_accounting_cache_pkg.GetValueChar
29763          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29764          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29765    AND l_bflow_method_code = 'PRIOR_ENTRY'
29766 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29767    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29768          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29769        )
29770    THEN
29771          xla_ae_lines_pkg.BflowUpgEntry
29772            (p_business_method_code    => l_bflow_method_code
29773            ,p_business_class_code     => l_bflow_class_code
29774            ,p_balance_type            => l_balance_type_code);
29775    ELSE
29776       NULL;
29777 -- No business flow processing for business flow method of NONE.
29778    END IF;
29779 
29780    --
29781    -- call analytical criteria
29782    --
29783    
29784    --
29785    -- call description
29786    --
29787    -- No description or it is inherited.
29788    --
29789    -- call ADRs
29790    -- Bug 4922099
29791    --
29792    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29793         (NVL(l_actual_upg_option, 'N') = 'O') OR
29794         (NVL(l_enc_upg_option, 'N') = 'O')
29795       )
29796    THEN
29797    NULL;
29798    --
29799    --
29800    
29801   l_ccid := AcctDerRule_16(
29802            p_application_id           => p_application_id
29803          , p_ae_header_id             => l_ae_header_id 
29804 , p_source_17 => p_source_17
29805          , x_transaction_coa_id       => l_adr_transaction_coa_id
29806          , x_accounting_coa_id        => l_adr_accounting_coa_id
29807          , x_value_type_code          => l_adr_value_type_code
29808          , p_side                     => 'NA'
29809    );
29810 
29811    xla_ae_lines_pkg.set_ccid(
29812     p_code_combination_id          => l_ccid
29813   , p_value_type_code              => l_adr_value_type_code
29814   , p_transaction_coa_id           => l_adr_transaction_coa_id
29815   , p_accounting_coa_id            => l_adr_accounting_coa_id
29816   , p_adr_code                     => 'REALIZED_LOSSES_RULE'
29817   , p_adr_type_code                => 'S'
29818   , p_component_type               => l_component_type
29819   , p_component_code               => l_component_code
29820   , p_component_type_code          => l_component_type_code
29821   , p_component_appl_id            => l_component_appl_id
29825 
29822   , p_amb_context_code             => l_amb_context_code
29823   , p_side                         => 'NA'
29824   );
29826 
29827    --
29828    --
29829    END IF;
29830    --
29831    -- Bug 4922099
29832    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29833           (NVL(l_enc_upg_option, 'N') = 'O')
29834         ) AND
29835         (l_bflow_method_code = 'PRIOR_ENTRY')
29836       )
29837    THEN
29838       IF
29839       --
29840       1 = 2
29841       --
29842       THEN
29843       xla_accounting_err_pkg.build_message
29844                                     (p_appli_s_name            => 'XLA'
29845                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29846                                     ,p_token_1                 => 'LINE_NUMBER'
29847                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29848                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29849                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29850                                                                              l_component_type
29851                                                                             ,l_component_code
29852                                                                             ,l_component_type_code
29853                                                                             ,l_component_appl_id
29854                                                                             ,l_amb_context_code
29855                                                                             ,l_entity_code
29856                                                                             ,l_event_class_code
29857                                                                            )
29858                                     ,p_token_3                 => 'OWNER'
29859                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29860                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29861                                                                           ,p_lookup_code    => l_component_type_code
29862                                                                          )
29863                                     ,p_token_4                 => 'PRODUCT_NAME'
29864                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29865                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29866                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29867                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29868                                     ,p_ae_header_id            =>  NULL
29869                                        );
29870 
29871         IF (C_LEVEL_ERROR>= g_log_level) THEN
29872                  trace
29873                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29874                       ,p_level    => C_LEVEL_ERROR
29875                       ,p_module   => l_log_module);
29876         END IF;
29877       END IF;
29878    END IF;
29879    --
29880    --
29881    ------------------------------------------------------------------------------------------------
29882    -- 4219869 Business Flow
29883    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29884    -- Prior Entry.  Currently, the following code is always generated.
29885    ------------------------------------------------------------------------------------------------
29886    XLA_AE_LINES_PKG.ValidateCurrentLine;
29887 
29888    ------------------------------------------------------------------------------------
29889    -- 4219869 Business Flow
29890    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29891    ------------------------------------------------------------------------------------
29892    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29893 
29894    ----------------------------------------------------------------------------------
29895    -- 4219869 Business Flow
29896    -- Update journal entry status -- Need to generate this within IF <condition>
29897    ----------------------------------------------------------------------------------
29898    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29899          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29900          ,p_balance_type_code => l_balance_type_code
29901          );
29902 
29903    -------------------------------------------------------------------------------------------
29904    -- 4262811 - Generate the Accrual Reversal lines
29905    -------------------------------------------------------------------------------------------
29906    BEGIN
29907       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29908                               (g_array_event(p_event_id).array_value_num('header_index'));
29909       IF l_acc_rev_flag IS NULL THEN
29910          l_acc_rev_flag := 'N';
29911       END IF;
29912    EXCEPTION
29913       WHEN OTHERS THEN
29914          l_acc_rev_flag := 'N';
29915    END;
29916    --
29917    IF (l_acc_rev_flag = 'Y') THEN
29918 
29919        -- 4645092  ------------------------------------------------------------------------------
29920        -- To allow MPA report to determine if it should generate report process
29921        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29922        ------------------------------------------------------------------------------------------
29923 
29924        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29925        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29926 
29927        --
29928        -- Update the line information that should be overwritten
29929        --
29933 
29930        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29931                                          p_header_num   => 1);
29932        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29934        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29935 
29936        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29937           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29938        END IF;
29939 
29940       --
29941       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29942       --
29943       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29944           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29945       ELSE
29946           ---------------------------------------------------------------------------------------------------
29947           -- 4262811a Switch Sign
29948           ---------------------------------------------------------------------------------------------------
29949           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29950           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29951                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29952           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29953                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29954           -- 5132302
29955           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29956                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29957 
29958       END IF;
29959 
29960       -- 4955764
29961       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29962       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29963 
29964 
29965       XLA_AE_LINES_PKG.ValidateCurrentLine;
29966       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29967 
29968       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29969                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29970                ,p_balance_type_code => l_balance_type_code);
29971 
29972    END IF;
29973 
29974    -----------------------------------------------------------------------------------------
29975    -- 4262811 Multiperiod Accounting
29976    -----------------------------------------------------------------------------------------
29977      -- No MPA option is assigned.
29978 
29979 
29980 END IF;
29981 END IF;
29982 --
29983 
29984 --
29985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29986    trace
29987       (p_msg      => 'END of AcctLineType_67'
29988       ,p_level    => C_LEVEL_PROCEDURE
29989       ,p_module   => l_log_module);
29990 END IF;
29991 --
29992 EXCEPTION
29993   WHEN xla_exceptions_pkg.application_exception THEN
29994       RAISE;
29995   WHEN OTHERS THEN
29996        xla_exceptions_pkg.raise_message
29997            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_67');
29998 END AcctLineType_67;
29999 --
30000 
30001 ---------------------------------------
30002 --
30003 -- PRIVATE FUNCTION
30004 --         AcctLineType_68
30005 --
30006 ---------------------------------------
30007 PROCEDURE AcctLineType_68 (
30008   p_application_id        IN NUMBER
30009  ,p_event_id              IN NUMBER
30010  ,p_calculate_acctd_flag  IN VARCHAR2
30011  ,p_calculate_g_l_flag    IN VARCHAR2
30012  ,p_actual_flag           IN OUT VARCHAR2
30013  ,p_balance_type_code     OUT VARCHAR2
30014  ,p_gain_or_loss_ref      OUT VARCHAR2
30015  
30016 --Actual Upgrade Credit Accounting Class
30017  , p_source_23            IN VARCHAR2
30018 --Entered Currency Code
30019  , p_source_25            IN VARCHAR2
30020 --Exchange Rate Date
30021  , p_source_27            IN DATE
30022 --Exchange Rate
30023  , p_source_28            IN NUMBER
30024 --Exchange Rate Type
30025  , p_source_29            IN VARCHAR2
30026 --Actual Upgrade Debit Accounting Class
30027  , p_source_30            IN VARCHAR2
30028 --Use Actuals Upgrade Attributes Flag
30029  , p_source_31            IN VARCHAR2
30030 --Revenue Distribution Type
30031  , p_source_36            IN VARCHAR2
30032 --Crediting Revenue Flag
30033  , p_source_38            IN VARCHAR2
30034 --Revenue First Distribution ID
30035  , p_source_39            IN NUMBER
30036 --Revenue Second Distribution ID
30037  , p_source_40            IN NUMBER
30038 --Entered Amount
30039  , p_source_41            IN NUMBER
30040 --Event ID
30041  , p_source_42            IN NUMBER
30042 --Accounted Amount
30043  , p_source_43            IN NUMBER
30044 --Actual Upgrade Credit CCID
30045  , p_source_59            IN NUMBER
30046 --Actual Upgrade Debit CCID
30047  , p_source_60            IN NUMBER
30048 --Application ID
30049  , p_source_61            IN NUMBER
30050 --Revenue Entity Code
30051  , p_source_62            IN VARCHAR2
30052 --Crediting Revenue First Distribution ID
30053  , p_source_63            IN NUMBER
30054 --Project ID
30055  , p_source_64            IN NUMBER
30056 --Crediting Revenue Second Distribution ID
30057  , p_source_65            IN NUMBER
30058 --Draft Revenue Number Credited
30059  , p_source_66            IN NUMBER
30060 )
30061 IS
30062 
30063 l_component_type              VARCHAR2(80);
30064 l_component_code              VARCHAR2(30);
30068 l_entity_code                 VARCHAR2(30);
30065 l_component_type_code         VARCHAR2(1);
30066 l_component_appl_id           INTEGER;
30067 l_amb_context_code            VARCHAR2(30);
30069 l_event_class_code            VARCHAR2(30);
30070 l_ae_header_id                NUMBER;
30071 l_event_type_code             VARCHAR2(30);
30072 l_line_definition_code        VARCHAR2(30);
30073 l_line_definition_owner_code  VARCHAR2(1);
30074 --
30075 -- adr variables
30076 l_segment                     VARCHAR2(30);
30077 l_ccid                        NUMBER;
30078 l_adr_transaction_coa_id      NUMBER;
30079 l_adr_accounting_coa_id       NUMBER;
30080 l_adr_flexfield_segment_code  VARCHAR2(30);
30081 l_adr_flex_value_set_id       NUMBER;
30082 l_adr_value_type_code         VARCHAR2(30);
30083 l_adr_value_combination_id    NUMBER;
30084 l_adr_value_segment_code      VARCHAR2(30);
30085 
30086 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30087 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30088 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30089 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30090 
30091 -- 4262811 Variables ------------------------------------------------------------------------------------------
30092 l_entered_amt_idx             NUMBER;
30093 l_accted_amt_idx              NUMBER;
30094 l_acc_rev_flag                VARCHAR2(1);
30095 l_accrual_line_num            NUMBER;
30096 l_tmp_amt                     NUMBER;
30097 l_acc_rev_natural_side_code   VARCHAR2(1);
30098 
30099 l_num_entries                 NUMBER;
30100 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30101 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30102 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30103 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30104 l_recog_line_1                NUMBER;
30105 l_recog_line_2                NUMBER;
30106 
30107 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30108 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30109 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30110 
30111 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30112 
30113 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30114 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30115 
30116 ---------------------------------------------------------------------------------------------------------------
30117 
30118 
30119 --
30120 -- bulk performance
30121 --
30122 l_balance_type_code           VARCHAR2(1);
30123 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30124 l_log_module                  VARCHAR2(240);
30125 
30126 --
30127 -- Upgrade strategy
30128 --
30129 l_actual_upg_option           VARCHAR2(1);
30130 l_enc_upg_option           VARCHAR2(1);
30131 
30132 --
30133 BEGIN
30134 --
30135 IF g_log_enabled THEN
30136       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
30137 END IF;
30138 --
30139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30140 
30141       trace
30142          (p_msg      => 'BEGIN of AcctLineType_68'
30143          ,p_level    => C_LEVEL_PROCEDURE
30144          ,p_module   => l_log_module);
30145 
30146 END IF;
30147 --
30148 l_component_type             := 'AMB_JLT';
30149 l_component_code             := 'PA_REALIZED_LOSSES_ADJ';
30150 l_component_type_code        := 'S';
30151 l_component_appl_id          :=  275;
30152 l_amb_context_code           := 'DEFAULT';
30153 l_entity_code                := 'REVENUE';
30154 l_event_class_code           := 'REVENUE_ADJ';
30155 l_event_type_code            := 'REVENUE_ADJ_ALL';
30156 l_line_definition_owner_code := 'S';
30157 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
30158 --
30159 l_balance_type_code          := 'A';
30160 l_segment                     := NULL;
30161 l_ccid                        := NULL;
30162 l_adr_transaction_coa_id      := NULL;
30163 l_adr_accounting_coa_id       := NULL;
30164 l_adr_flexfield_segment_code  := NULL;
30165 l_adr_flex_value_set_id       := NULL;
30166 l_adr_value_type_code         := NULL;
30167 l_adr_value_combination_id    := NULL;
30168 l_adr_value_segment_code      := NULL;
30169 
30170 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
30171 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
30172 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
30173 l_budgetary_control_flag     := 'N';
30174 
30175 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30176 l_bflow_applied_to_amt       := NULL; -- 5132302
30177 l_entered_amt_idx            := NULL;          -- 4262811
30178 l_accted_amt_idx             := NULL;          -- 4262811
30179 l_acc_rev_flag               := NULL;          -- 4262811
30180 l_accrual_line_num           := NULL;          -- 4262811
30181 l_tmp_amt                    := NULL;          -- 4262811
30182 --
30183  
30184 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30185     l_balance_type_code <> 'B' THEN
30186 IF NVL(p_source_36,'
30187 ') =  'Revenue - Realized Losses' AND 
30188 NVL(p_source_38,'
30189 ') =  'Y'
30190  THEN 
30191 
30192    --
30193    XLA_AE_LINES_PKG.SetNewLine;
30194 
30195    p_balance_type_code          := l_balance_type_code;
30196    -- set the flag so later we will know whether the gain loss line needs to be created
30197    
30198    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30199      p_actual_flag :='A';
30200    END IF;
30201 
30202    --
30206                                       p_header_num   => 0); -- 4262811
30203    -- bulk performance
30204    --
30205    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30207    --
30208    -- set accounting line options
30209    --
30210    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30211            p_natural_side_code          => 'C'
30212          , p_gain_or_loss_flag          => 'N'
30213          , p_gl_transfer_mode_code      => 'S'
30214          , p_acct_entry_type_code       => 'A'
30215          , p_switch_side_flag           => 'Y'
30216          , p_merge_duplicate_code       => 'N'
30217          );
30218    --
30219    l_acc_rev_natural_side_code := 'D';  -- 4262811
30220    -- 
30221    --
30222    -- set accounting line type info
30223    --
30224    xla_ae_lines_pkg.SetAcctLineType
30225       (p_component_type             => l_component_type
30226       ,p_event_type_code            => l_event_type_code
30227       ,p_line_definition_owner_code => l_line_definition_owner_code
30228       ,p_line_definition_code       => l_line_definition_code
30229       ,p_accounting_line_code       => l_component_code
30230       ,p_accounting_line_type_code  => l_component_type_code
30231       ,p_accounting_line_appl_id    => l_component_appl_id
30232       ,p_amb_context_code           => l_amb_context_code
30233       ,p_entity_code                => l_entity_code
30234       ,p_event_class_code           => l_event_class_code);
30235    --
30236    -- set accounting class
30237    --
30238    xla_ae_lines_pkg.SetAcctClass(
30239            p_accounting_class_code  => 'REALIZED_LOSS'
30240          , p_ae_header_id           => l_ae_header_id
30241          );
30242 
30243    --
30244    -- set rounding class
30245    --
30246    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30247                       'REALIZED_LOSS';
30248 
30249    --
30250    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30251    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30252    --
30253    -- bulk performance
30254    --
30255    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30256 
30257    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30258       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30259 
30260    -- 4955764
30261    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30262       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30263 
30264    -- 4458381 Public Sector Enh
30265    
30266    --
30267    -- set accounting attributes for the line type
30268    --
30269    l_entered_amt_idx := 28;
30270    l_accted_amt_idx  := 31;
30271    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30272    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
30273    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
30274    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
30275    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
30276    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
30277    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
30278    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
30279    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
30280    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
30281    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
30282    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
30283    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
30284    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
30285    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
30286    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
30287    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
30288    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
30289    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
30290    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
30291    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
30292    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
30293    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
30294    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
30295    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
30296    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
30297    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
30298    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
30299    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
30300    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
30301    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
30302    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
30303    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
30304    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
30305    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
30306    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
30307    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
30308    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30309    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
30310    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
30311    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
30312    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
30313    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
30314    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30318    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
30315    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
30316    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
30317    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
30319    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
30320    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
30321    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
30322    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
30323    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
30324    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
30325    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
30326    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
30327    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
30328    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
30329    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
30330    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
30331    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
30332    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
30333    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
30334 
30335    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30336    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30337 
30338    ---------------------------------------------------------------------------------------------------------------
30339    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30340    ---------------------------------------------------------------------------------------------------------------
30341    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30342 
30343    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30344    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30345 
30346    IF xla_accounting_cache_pkg.GetValueChar
30347          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30348          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30349    AND l_bflow_method_code = 'PRIOR_ENTRY'
30350 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30351    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30352          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30353        )
30354    THEN
30355          xla_ae_lines_pkg.BflowUpgEntry
30356            (p_business_method_code    => l_bflow_method_code
30357            ,p_business_class_code     => l_bflow_class_code
30358            ,p_balance_type            => l_balance_type_code);
30359    ELSE
30360       NULL;
30361 XLA_AE_LINES_PKG.business_flow_validation(
30362                                 p_business_method_code     => l_bflow_method_code
30363                                ,p_business_class_code      => l_bflow_class_code
30364                                ,p_inherit_description_flag => l_inherit_desc_flag);
30365    END IF;
30366 
30367    --
30368    -- call analytical criteria
30369    --
30370    -- Inherited Analytical Criteria for business flow method of Prior Entry.
30371    --
30372    -- call description
30373    --
30374    -- No description or it is inherited.
30375    --
30376    -- call ADRs
30377    -- Bug 4922099
30378    --
30379    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30380         (NVL(l_actual_upg_option, 'N') = 'O') OR
30381         (NVL(l_enc_upg_option, 'N') = 'O')
30382       )
30383    THEN
30384    NULL;
30385    --
30386    --
30387    
30388    --
30389    --
30390    END IF;
30391    --
30392    -- Bug 4922099
30393    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30394           (NVL(l_enc_upg_option, 'N') = 'O')
30395         ) AND
30396         (l_bflow_method_code = 'PRIOR_ENTRY')
30397       )
30398    THEN
30399       IF
30400       --
30401       1 = 1
30402       --
30403       THEN
30404       xla_accounting_err_pkg.build_message
30405                                     (p_appli_s_name            => 'XLA'
30406                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30407                                     ,p_token_1                 => 'LINE_NUMBER'
30408                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30409                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30410                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30411                                                                              l_component_type
30412                                                                             ,l_component_code
30413                                                                             ,l_component_type_code
30414                                                                             ,l_component_appl_id
30415                                                                             ,l_amb_context_code
30416                                                                             ,l_entity_code
30417                                                                             ,l_event_class_code
30418                                                                            )
30419                                     ,p_token_3                 => 'OWNER'
30420                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30421                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30422                                                                           ,p_lookup_code    => l_component_type_code
30426                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30423                                                                          )
30424                                     ,p_token_4                 => 'PRODUCT_NAME'
30425                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30427                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30428                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30429                                     ,p_ae_header_id            =>  NULL
30430                                        );
30431 
30432         IF (C_LEVEL_ERROR>= g_log_level) THEN
30433                  trace
30434                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30435                       ,p_level    => C_LEVEL_ERROR
30436                       ,p_module   => l_log_module);
30437         END IF;
30438       END IF;
30439    END IF;
30440    --
30441    --
30442    ------------------------------------------------------------------------------------------------
30443    -- 4219869 Business Flow
30444    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30445    -- Prior Entry.  Currently, the following code is always generated.
30446    ------------------------------------------------------------------------------------------------
30447    -- No ValidateCurrentLine for business flow method of Prior Entry
30448 
30449    ------------------------------------------------------------------------------------
30450    -- 4219869 Business Flow
30451    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30452    ------------------------------------------------------------------------------------
30453    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30454 
30455    ----------------------------------------------------------------------------------
30456    -- 4219869 Business Flow
30457    -- Update journal entry status -- Need to generate this within IF <condition>
30458    ----------------------------------------------------------------------------------
30459    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30460          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30461          ,p_balance_type_code => l_balance_type_code
30462          );
30463 
30464    -------------------------------------------------------------------------------------------
30465    -- 4262811 - Generate the Accrual Reversal lines
30466    -------------------------------------------------------------------------------------------
30467    BEGIN
30468       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30469                               (g_array_event(p_event_id).array_value_num('header_index'));
30470       IF l_acc_rev_flag IS NULL THEN
30471          l_acc_rev_flag := 'N';
30472       END IF;
30473    EXCEPTION
30474       WHEN OTHERS THEN
30475          l_acc_rev_flag := 'N';
30476    END;
30477    --
30478    IF (l_acc_rev_flag = 'Y') THEN
30479 
30480        -- 4645092  ------------------------------------------------------------------------------
30481        -- To allow MPA report to determine if it should generate report process
30482        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30483        ------------------------------------------------------------------------------------------
30484 
30485        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30486        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30487 
30488        --
30489        -- Update the line information that should be overwritten
30490        --
30491        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30492                                          p_header_num   => 1);
30493        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30494 
30495        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30496 
30497        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30498           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30499        END IF;
30500 
30501       --
30502       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30503       --
30504       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30505           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30506       ELSE
30507           ---------------------------------------------------------------------------------------------------
30508           -- 4262811a Switch Sign
30509           ---------------------------------------------------------------------------------------------------
30510           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30511           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30512                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30513           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30514                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30515           -- 5132302
30516           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30517                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30518 
30519       END IF;
30520 
30521       -- 4955764
30522       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30523       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30524 
30525 
30529       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30526       XLA_AE_LINES_PKG.ValidateCurrentLine;
30527       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30528 
30530                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30531                ,p_balance_type_code => l_balance_type_code);
30532 
30533    END IF;
30534 
30535    -----------------------------------------------------------------------------------------
30536    -- 4262811 Multiperiod Accounting
30537    -----------------------------------------------------------------------------------------
30538      -- No MPA option is assigned.
30539 
30540 
30541 END IF;
30542 END IF;
30543 --
30544 
30545 --
30546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30547    trace
30548       (p_msg      => 'END of AcctLineType_68'
30549       ,p_level    => C_LEVEL_PROCEDURE
30550       ,p_module   => l_log_module);
30551 END IF;
30552 --
30553 EXCEPTION
30554   WHEN xla_exceptions_pkg.application_exception THEN
30555       RAISE;
30556   WHEN OTHERS THEN
30557        xla_exceptions_pkg.raise_message
30558            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_68');
30559 END AcctLineType_68;
30560 --
30561 
30562 ---------------------------------------
30563 --
30564 -- PRIVATE FUNCTION
30565 --         AcctLineType_69
30566 --
30567 ---------------------------------------
30568 PROCEDURE AcctLineType_69 (
30569   p_application_id        IN NUMBER
30570  ,p_event_id              IN NUMBER
30571  ,p_calculate_acctd_flag  IN VARCHAR2
30572  ,p_calculate_g_l_flag    IN VARCHAR2
30573  ,p_actual_flag           IN OUT VARCHAR2
30574  ,p_balance_type_code     OUT VARCHAR2
30575  ,p_gain_or_loss_ref      OUT VARCHAR2
30576  
30577 --Allow Account Override Flag
30578  , p_source_4            IN VARCHAR2
30579 --Provider Cost/ Revenue CCID
30580  , p_source_8            IN NUMBER
30581 --Adjustment Receiver Cost/ Revenue CCID
30582  , p_source_10            IN NUMBER
30583 --Receiver Cost/ Revenue CCID
30584  , p_source_15            IN NUMBER
30585 --Reversing Line Flag
30586  , p_source_22            IN VARCHAR2
30587 --Actual Upgrade Credit Accounting Class
30588  , p_source_23            IN VARCHAR2
30589 --Entered Currency Code
30590  , p_source_25            IN VARCHAR2
30591 --Exchange Rate Date
30592  , p_source_27            IN DATE
30593 --Exchange Rate
30594  , p_source_28            IN NUMBER
30595 --Exchange Rate Type
30596  , p_source_29            IN VARCHAR2
30597 --Actual Upgrade Debit Accounting Class
30598  , p_source_30            IN VARCHAR2
30599 --Use Actuals Upgrade Attributes Flag
30600  , p_source_31            IN VARCHAR2
30601 --Expenditure Item ID
30602  , p_source_32            IN NUMBER
30603 --Cost Distribution Line Number
30604  , p_source_33            IN NUMBER
30605 --Line Type
30606  , p_source_34            IN VARCHAR2
30607  , p_source_34_meaning    IN VARCHAR2
30608 --Reversed Line Number
30609  , p_source_35            IN NUMBER
30610 --Entered Amount
30611  , p_source_41            IN NUMBER
30612 --Accounted Amount
30613  , p_source_43            IN NUMBER
30614 --Transfer Amount Type
30615  , p_source_67            IN VARCHAR2
30616  , p_source_67_meaning    IN VARCHAR2
30617 )
30618 IS
30619 
30620 l_component_type              VARCHAR2(80);
30621 l_component_code              VARCHAR2(30);
30622 l_component_type_code         VARCHAR2(1);
30623 l_component_appl_id           INTEGER;
30624 l_amb_context_code            VARCHAR2(30);
30625 l_entity_code                 VARCHAR2(30);
30626 l_event_class_code            VARCHAR2(30);
30627 l_ae_header_id                NUMBER;
30628 l_event_type_code             VARCHAR2(30);
30629 l_line_definition_code        VARCHAR2(30);
30630 l_line_definition_owner_code  VARCHAR2(1);
30631 --
30632 -- adr variables
30633 l_segment                     VARCHAR2(30);
30634 l_ccid                        NUMBER;
30635 l_adr_transaction_coa_id      NUMBER;
30636 l_adr_accounting_coa_id       NUMBER;
30637 l_adr_flexfield_segment_code  VARCHAR2(30);
30638 l_adr_flex_value_set_id       NUMBER;
30639 l_adr_value_type_code         VARCHAR2(30);
30640 l_adr_value_combination_id    NUMBER;
30641 l_adr_value_segment_code      VARCHAR2(30);
30642 
30643 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30644 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30645 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30646 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30647 
30648 -- 4262811 Variables ------------------------------------------------------------------------------------------
30649 l_entered_amt_idx             NUMBER;
30650 l_accted_amt_idx              NUMBER;
30651 l_acc_rev_flag                VARCHAR2(1);
30652 l_accrual_line_num            NUMBER;
30653 l_tmp_amt                     NUMBER;
30654 l_acc_rev_natural_side_code   VARCHAR2(1);
30655 
30656 l_num_entries                 NUMBER;
30657 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30658 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30659 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30660 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30661 l_recog_line_1                NUMBER;
30662 l_recog_line_2                NUMBER;
30663 
30664 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30665 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30666 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30667 
30668 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30669 
30673 ---------------------------------------------------------------------------------------------------------------
30670 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30671 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30672 
30674 
30675 
30676 --
30677 -- bulk performance
30678 --
30679 l_balance_type_code           VARCHAR2(1);
30680 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30681 l_log_module                  VARCHAR2(240);
30682 
30683 --
30684 -- Upgrade strategy
30685 --
30686 l_actual_upg_option           VARCHAR2(1);
30687 l_enc_upg_option           VARCHAR2(1);
30688 
30689 --
30690 BEGIN
30691 --
30692 IF g_log_enabled THEN
30693       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
30694 END IF;
30695 --
30696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30697 
30698       trace
30699          (p_msg      => 'BEGIN of AcctLineType_69'
30700          ,p_level    => C_LEVEL_PROCEDURE
30701          ,p_module   => l_log_module);
30702 
30703 END IF;
30704 --
30705 l_component_type             := 'AMB_JLT';
30706 l_component_code             := 'PA_RECEIVER_COST';
30707 l_component_type_code        := 'S';
30708 l_component_appl_id          :=  275;
30709 l_amb_context_code           := 'DEFAULT';
30710 l_entity_code                := 'EXPENDITURES';
30711 l_event_class_code           := 'BORROWED_AND_LENT';
30712 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
30713 l_line_definition_owner_code := 'S';
30714 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
30715 --
30716 l_balance_type_code          := 'A';
30717 l_segment                     := NULL;
30718 l_ccid                        := NULL;
30719 l_adr_transaction_coa_id      := NULL;
30720 l_adr_accounting_coa_id       := NULL;
30721 l_adr_flexfield_segment_code  := NULL;
30722 l_adr_flex_value_set_id       := NULL;
30723 l_adr_value_type_code         := NULL;
30724 l_adr_value_combination_id    := NULL;
30725 l_adr_value_segment_code      := NULL;
30726 
30727 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30728 l_bflow_class_code           := '';    -- 4219869 Business Flow
30729 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30730 l_budgetary_control_flag     := 'N';
30731 
30732 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30733 l_bflow_applied_to_amt       := NULL; -- 5132302
30734 l_entered_amt_idx            := NULL;          -- 4262811
30735 l_accted_amt_idx             := NULL;          -- 4262811
30736 l_acc_rev_flag               := NULL;          -- 4262811
30737 l_accrual_line_num           := NULL;          -- 4262811
30738 l_tmp_amt                    := NULL;          -- 4262811
30739 --
30740  
30741 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30742     l_balance_type_code <> 'B' THEN
30743 IF NVL(p_source_67,'
30744 ') =  'COST_TRANSFER' OR 
30745 NVL(p_source_67,'
30746 ') =  'COST_REVENUE' OR 
30747 p_source_67 IS NULL 
30748  THEN 
30749 
30750    --
30751    XLA_AE_LINES_PKG.SetNewLine;
30752 
30753    p_balance_type_code          := l_balance_type_code;
30754    -- set the flag so later we will know whether the gain loss line needs to be created
30755    
30756    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30757      p_actual_flag :='A';
30758    END IF;
30759 
30760    --
30761    -- bulk performance
30762    --
30763    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30764                                       p_header_num   => 0); -- 4262811
30765    --
30766    -- set accounting line options
30767    --
30768    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30769            p_natural_side_code          => 'D'
30770          , p_gain_or_loss_flag          => 'N'
30771          , p_gl_transfer_mode_code      => 'S'
30772          , p_acct_entry_type_code       => 'A'
30773          , p_switch_side_flag           => 'Y'
30774          , p_merge_duplicate_code       => 'N'
30775          );
30776    --
30777    l_acc_rev_natural_side_code := 'C';  -- 4262811
30778    -- 
30779    --
30780    -- set accounting line type info
30781    --
30782    xla_ae_lines_pkg.SetAcctLineType
30783       (p_component_type             => l_component_type
30784       ,p_event_type_code            => l_event_type_code
30785       ,p_line_definition_owner_code => l_line_definition_owner_code
30786       ,p_line_definition_code       => l_line_definition_code
30787       ,p_accounting_line_code       => l_component_code
30788       ,p_accounting_line_type_code  => l_component_type_code
30789       ,p_accounting_line_appl_id    => l_component_appl_id
30790       ,p_amb_context_code           => l_amb_context_code
30791       ,p_entity_code                => l_entity_code
30792       ,p_event_class_code           => l_event_class_code);
30793    --
30794    -- set accounting class
30795    --
30796    xla_ae_lines_pkg.SetAcctClass(
30797            p_accounting_class_code  => 'RECEIVER_COST'
30798          , p_ae_header_id           => l_ae_header_id
30799          );
30800 
30801    --
30802    -- set rounding class
30803    --
30804    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30805                       'RECEIVER_COST';
30806 
30807    --
30808    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30809    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30810    --
30811    -- bulk performance
30812    --
30813    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30814 
30818    -- 4955764
30815    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30816       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30817 
30819    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30820       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30821 
30822    -- 4458381 Public Sector Enh
30823    
30824    --
30825    -- set accounting attributes for the line type
30826    --
30827    l_entered_amt_idx := 22;
30828    l_accted_amt_idx  := 27;
30829    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30830    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30831    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
30832    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
30833    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
30834    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
30835    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
30836    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
30837    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
30838    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
30839    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
30840    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
30841    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
30842    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
30843    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
30844    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
30845    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
30846    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
30847    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
30848    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
30849    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
30850    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
30851    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
30852    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
30853    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
30854    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
30855    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
30856    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
30857    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
30858    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
30859    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
30860    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
30861    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
30862    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
30863    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
30864    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
30865    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
30866    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
30867    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
30868    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
30869    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
30870    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
30871    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
30872    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
30873    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
30874    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
30875    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
30876    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
30877    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
30878    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
30879    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
30880    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
30881    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
30882    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
30883    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
30884    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
30885    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
30886    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
30887    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
30888    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
30889    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
30890 
30891    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30892    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30893 
30894    ---------------------------------------------------------------------------------------------------------------
30895    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30896    ---------------------------------------------------------------------------------------------------------------
30897    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30898 
30899    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30900    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30901 
30902    IF xla_accounting_cache_pkg.GetValueChar
30903          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30904          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30905    AND l_bflow_method_code = 'PRIOR_ENTRY'
30906 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30907    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30911          xla_ae_lines_pkg.BflowUpgEntry
30908          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30909        )
30910    THEN
30912            (p_business_method_code    => l_bflow_method_code
30913            ,p_business_class_code     => l_bflow_class_code
30914            ,p_balance_type            => l_balance_type_code);
30915    ELSE
30916       NULL;
30917 -- No business flow processing for business flow method of NONE.
30918    END IF;
30919 
30920    --
30921    -- call analytical criteria
30922    --
30923    
30924    --
30925    -- call description
30926    --
30927    -- No description or it is inherited.
30928    --
30929    -- call ADRs
30930    -- Bug 4922099
30931    --
30932    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30933         (NVL(l_actual_upg_option, 'N') = 'O') OR
30934         (NVL(l_enc_upg_option, 'N') = 'O')
30935       )
30936    THEN
30937    NULL;
30938    --
30939    --
30940    
30941   l_ccid := AcctDerRule_14(
30942            p_application_id           => p_application_id
30943          , p_ae_header_id             => l_ae_header_id 
30944 , p_source_4 => p_source_4
30945 , p_source_10 => p_source_10
30946 , p_source_15 => p_source_15
30947          , x_transaction_coa_id       => l_adr_transaction_coa_id
30948          , x_accounting_coa_id        => l_adr_accounting_coa_id
30949          , x_value_type_code          => l_adr_value_type_code
30950          , p_side                     => 'NA'
30951    );
30952 
30953    xla_ae_lines_pkg.set_ccid(
30954     p_code_combination_id          => l_ccid
30955   , p_value_type_code              => l_adr_value_type_code
30956   , p_transaction_coa_id           => l_adr_transaction_coa_id
30957   , p_accounting_coa_id            => l_adr_accounting_coa_id
30958   , p_adr_code                     => 'PA_RECVR_COST_REV_ACCT_RULE'
30959   , p_adr_type_code                => 'S'
30960   , p_component_type               => l_component_type
30961   , p_component_code               => l_component_code
30962   , p_component_type_code          => l_component_type_code
30963   , p_component_appl_id            => l_component_appl_id
30964   , p_amb_context_code             => l_amb_context_code
30965   , p_side                         => 'NA'
30966   );
30967 
30968 
30969    --
30970    --
30971    END IF;
30972    --
30973    -- Bug 4922099
30974    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30975           (NVL(l_enc_upg_option, 'N') = 'O')
30976         ) AND
30977         (l_bflow_method_code = 'PRIOR_ENTRY')
30978       )
30979    THEN
30980       IF
30981       --
30982       1 = 2
30983       --
30984       THEN
30985       xla_accounting_err_pkg.build_message
30986                                     (p_appli_s_name            => 'XLA'
30987                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30988                                     ,p_token_1                 => 'LINE_NUMBER'
30989                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30990                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30991                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30992                                                                              l_component_type
30993                                                                             ,l_component_code
30994                                                                             ,l_component_type_code
30995                                                                             ,l_component_appl_id
30996                                                                             ,l_amb_context_code
30997                                                                             ,l_entity_code
30998                                                                             ,l_event_class_code
30999                                                                            )
31000                                     ,p_token_3                 => 'OWNER'
31001                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31002                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31003                                                                           ,p_lookup_code    => l_component_type_code
31004                                                                          )
31005                                     ,p_token_4                 => 'PRODUCT_NAME'
31006                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31007                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31008                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31009                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31010                                     ,p_ae_header_id            =>  NULL
31011                                        );
31012 
31013         IF (C_LEVEL_ERROR>= g_log_level) THEN
31014                  trace
31015                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31016                       ,p_level    => C_LEVEL_ERROR
31017                       ,p_module   => l_log_module);
31018         END IF;
31019       END IF;
31020    END IF;
31021    --
31022    --
31023    ------------------------------------------------------------------------------------------------
31024    -- 4219869 Business Flow
31025    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31026    -- Prior Entry.  Currently, the following code is always generated.
31027    ------------------------------------------------------------------------------------------------
31031    -- 4219869 Business Flow
31028    XLA_AE_LINES_PKG.ValidateCurrentLine;
31029 
31030    ------------------------------------------------------------------------------------
31032    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31033    ------------------------------------------------------------------------------------
31034    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31035 
31036    ----------------------------------------------------------------------------------
31037    -- 4219869 Business Flow
31038    -- Update journal entry status -- Need to generate this within IF <condition>
31039    ----------------------------------------------------------------------------------
31040    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31041          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31042          ,p_balance_type_code => l_balance_type_code
31043          );
31044 
31045    -------------------------------------------------------------------------------------------
31046    -- 4262811 - Generate the Accrual Reversal lines
31047    -------------------------------------------------------------------------------------------
31048    BEGIN
31049       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31050                               (g_array_event(p_event_id).array_value_num('header_index'));
31051       IF l_acc_rev_flag IS NULL THEN
31052          l_acc_rev_flag := 'N';
31053       END IF;
31054    EXCEPTION
31055       WHEN OTHERS THEN
31056          l_acc_rev_flag := 'N';
31057    END;
31058    --
31059    IF (l_acc_rev_flag = 'Y') THEN
31060 
31061        -- 4645092  ------------------------------------------------------------------------------
31062        -- To allow MPA report to determine if it should generate report process
31063        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31064        ------------------------------------------------------------------------------------------
31065 
31066        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31067        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31068 
31069        --
31070        -- Update the line information that should be overwritten
31071        --
31072        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31073                                          p_header_num   => 1);
31074        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31075 
31076        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31077 
31078        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31079           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31080        END IF;
31081 
31082       --
31083       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31084       --
31085       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31086           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31087       ELSE
31088           ---------------------------------------------------------------------------------------------------
31089           -- 4262811a Switch Sign
31090           ---------------------------------------------------------------------------------------------------
31091           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31092           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31093                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31094           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31095                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31096           -- 5132302
31097           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31098                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31099 
31100       END IF;
31101 
31102       -- 4955764
31103       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31104       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31105 
31106 
31107       XLA_AE_LINES_PKG.ValidateCurrentLine;
31108       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31109 
31110       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31111                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31112                ,p_balance_type_code => l_balance_type_code);
31113 
31114    END IF;
31115 
31116    -----------------------------------------------------------------------------------------
31117    -- 4262811 Multiperiod Accounting
31118    -----------------------------------------------------------------------------------------
31119      -- No MPA option is assigned.
31120 
31121 
31122 END IF;
31123 END IF;
31124 --
31125 
31126 --
31127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31128    trace
31129       (p_msg      => 'END of AcctLineType_69'
31130       ,p_level    => C_LEVEL_PROCEDURE
31131       ,p_module   => l_log_module);
31132 END IF;
31133 --
31134 EXCEPTION
31135   WHEN xla_exceptions_pkg.application_exception THEN
31136       RAISE;
31137   WHEN OTHERS THEN
31138        xla_exceptions_pkg.raise_message
31139            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_69');
31140 END AcctLineType_69;
31141 --
31142 
31143 ---------------------------------------
31144 --
31145 -- PRIVATE FUNCTION
31146 --         AcctLineType_70
31147 --
31148 ---------------------------------------
31152  ,p_calculate_acctd_flag  IN VARCHAR2
31149 PROCEDURE AcctLineType_70 (
31150   p_application_id        IN NUMBER
31151  ,p_event_id              IN NUMBER
31153  ,p_calculate_g_l_flag    IN VARCHAR2
31154  ,p_actual_flag           IN OUT VARCHAR2
31155  ,p_balance_type_code     OUT VARCHAR2
31156  ,p_gain_or_loss_ref      OUT VARCHAR2
31157  
31158 --Allow Account Override Flag
31159  , p_source_4            IN VARCHAR2
31160 --Provider Cost/ Revenue CCID
31161  , p_source_8            IN NUMBER
31162 --Adjustment Receiver Cost/ Revenue CCID
31163  , p_source_10            IN NUMBER
31164 --Receiver Cost/ Revenue CCID
31165  , p_source_15            IN NUMBER
31166 --Reversing Line Flag
31167  , p_source_22            IN VARCHAR2
31168 --Actual Upgrade Credit Accounting Class
31169  , p_source_23            IN VARCHAR2
31170 --Entered Currency Code
31171  , p_source_25            IN VARCHAR2
31172 --Exchange Rate Date
31173  , p_source_27            IN DATE
31174 --Exchange Rate
31175  , p_source_28            IN NUMBER
31176 --Exchange Rate Type
31177  , p_source_29            IN VARCHAR2
31178 --Actual Upgrade Debit Accounting Class
31179  , p_source_30            IN VARCHAR2
31180 --Use Actuals Upgrade Attributes Flag
31181  , p_source_31            IN VARCHAR2
31182 --Expenditure Item ID
31183  , p_source_32            IN NUMBER
31184 --Cost Distribution Line Number
31185  , p_source_33            IN NUMBER
31186 --Line Type
31187  , p_source_34            IN VARCHAR2
31188  , p_source_34_meaning    IN VARCHAR2
31189 --Reversed Line Number
31190  , p_source_35            IN NUMBER
31191 --Entered Amount
31192  , p_source_41            IN NUMBER
31193 --Accounted Amount
31194  , p_source_43            IN NUMBER
31195 --Transfer Amount Type
31196  , p_source_67            IN VARCHAR2
31197  , p_source_67_meaning    IN VARCHAR2
31198 )
31199 IS
31200 
31201 l_component_type              VARCHAR2(80);
31202 l_component_code              VARCHAR2(30);
31203 l_component_type_code         VARCHAR2(1);
31204 l_component_appl_id           INTEGER;
31205 l_amb_context_code            VARCHAR2(30);
31206 l_entity_code                 VARCHAR2(30);
31207 l_event_class_code            VARCHAR2(30);
31208 l_ae_header_id                NUMBER;
31209 l_event_type_code             VARCHAR2(30);
31210 l_line_definition_code        VARCHAR2(30);
31211 l_line_definition_owner_code  VARCHAR2(1);
31212 --
31213 -- adr variables
31214 l_segment                     VARCHAR2(30);
31215 l_ccid                        NUMBER;
31216 l_adr_transaction_coa_id      NUMBER;
31217 l_adr_accounting_coa_id       NUMBER;
31218 l_adr_flexfield_segment_code  VARCHAR2(30);
31219 l_adr_flex_value_set_id       NUMBER;
31220 l_adr_value_type_code         VARCHAR2(30);
31221 l_adr_value_combination_id    NUMBER;
31222 l_adr_value_segment_code      VARCHAR2(30);
31223 
31224 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31225 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31226 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31227 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31228 
31229 -- 4262811 Variables ------------------------------------------------------------------------------------------
31230 l_entered_amt_idx             NUMBER;
31231 l_accted_amt_idx              NUMBER;
31232 l_acc_rev_flag                VARCHAR2(1);
31233 l_accrual_line_num            NUMBER;
31234 l_tmp_amt                     NUMBER;
31235 l_acc_rev_natural_side_code   VARCHAR2(1);
31236 
31237 l_num_entries                 NUMBER;
31238 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31239 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31240 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31241 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31242 l_recog_line_1                NUMBER;
31243 l_recog_line_2                NUMBER;
31244 
31245 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31246 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31247 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31248 
31249 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31250 
31251 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31252 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31253 
31254 ---------------------------------------------------------------------------------------------------------------
31255 
31256 
31257 --
31258 -- bulk performance
31259 --
31260 l_balance_type_code           VARCHAR2(1);
31261 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31262 l_log_module                  VARCHAR2(240);
31263 
31264 --
31265 -- Upgrade strategy
31266 --
31267 l_actual_upg_option           VARCHAR2(1);
31268 l_enc_upg_option           VARCHAR2(1);
31269 
31270 --
31271 BEGIN
31272 --
31273 IF g_log_enabled THEN
31274       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
31275 END IF;
31276 --
31277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31278 
31279       trace
31280          (p_msg      => 'BEGIN of AcctLineType_70'
31281          ,p_level    => C_LEVEL_PROCEDURE
31282          ,p_module   => l_log_module);
31283 
31284 END IF;
31285 --
31286 l_component_type             := 'AMB_JLT';
31287 l_component_code             := 'PA_RECEIVER_COST_ADJ';
31288 l_component_type_code        := 'S';
31289 l_component_appl_id          :=  275;
31290 l_amb_context_code           := 'DEFAULT';
31291 l_entity_code                := 'EXPENDITURES';
31295 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
31292 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
31293 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
31294 l_line_definition_owner_code := 'S';
31296 --
31297 l_balance_type_code          := 'A';
31298 l_segment                     := NULL;
31299 l_ccid                        := NULL;
31300 l_adr_transaction_coa_id      := NULL;
31301 l_adr_accounting_coa_id       := NULL;
31302 l_adr_flexfield_segment_code  := NULL;
31303 l_adr_flex_value_set_id       := NULL;
31304 l_adr_value_type_code         := NULL;
31305 l_adr_value_combination_id    := NULL;
31306 l_adr_value_segment_code      := NULL;
31307 
31308 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31309 l_bflow_class_code           := '';    -- 4219869 Business Flow
31310 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31311 l_budgetary_control_flag     := 'N';
31312 
31313 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31314 l_bflow_applied_to_amt       := NULL; -- 5132302
31315 l_entered_amt_idx            := NULL;          -- 4262811
31316 l_accted_amt_idx             := NULL;          -- 4262811
31317 l_acc_rev_flag               := NULL;          -- 4262811
31318 l_accrual_line_num           := NULL;          -- 4262811
31319 l_tmp_amt                    := NULL;          -- 4262811
31320 --
31321  
31322 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31323     l_balance_type_code <> 'B' THEN
31324 IF NVL(p_source_67,'
31325 ') =  'COST_TRANSFER' OR 
31326 NVL(p_source_67,'
31327 ') =  'COST_REVENUE' OR 
31328 p_source_67 IS NULL 
31329  THEN 
31330 
31331    --
31332    XLA_AE_LINES_PKG.SetNewLine;
31333 
31334    p_balance_type_code          := l_balance_type_code;
31335    -- set the flag so later we will know whether the gain loss line needs to be created
31336    
31337    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31338      p_actual_flag :='A';
31339    END IF;
31340 
31341    --
31342    -- bulk performance
31343    --
31344    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31345                                       p_header_num   => 0); -- 4262811
31346    --
31347    -- set accounting line options
31348    --
31349    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31350            p_natural_side_code          => 'D'
31351          , p_gain_or_loss_flag          => 'N'
31352          , p_gl_transfer_mode_code      => 'S'
31353          , p_acct_entry_type_code       => 'A'
31354          , p_switch_side_flag           => 'Y'
31355          , p_merge_duplicate_code       => 'N'
31356          );
31357    --
31358    l_acc_rev_natural_side_code := 'C';  -- 4262811
31359    -- 
31360    --
31361    -- set accounting line type info
31362    --
31363    xla_ae_lines_pkg.SetAcctLineType
31364       (p_component_type             => l_component_type
31365       ,p_event_type_code            => l_event_type_code
31366       ,p_line_definition_owner_code => l_line_definition_owner_code
31367       ,p_line_definition_code       => l_line_definition_code
31368       ,p_accounting_line_code       => l_component_code
31369       ,p_accounting_line_type_code  => l_component_type_code
31370       ,p_accounting_line_appl_id    => l_component_appl_id
31371       ,p_amb_context_code           => l_amb_context_code
31372       ,p_entity_code                => l_entity_code
31373       ,p_event_class_code           => l_event_class_code);
31374    --
31375    -- set accounting class
31376    --
31377    xla_ae_lines_pkg.SetAcctClass(
31378            p_accounting_class_code  => 'RECEIVER_COST'
31379          , p_ae_header_id           => l_ae_header_id
31380          );
31381 
31382    --
31383    -- set rounding class
31384    --
31385    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31386                       'RECEIVER_COST';
31387 
31388    --
31389    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31390    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31391    --
31392    -- bulk performance
31393    --
31394    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31395 
31396    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31397       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31398 
31399    -- 4955764
31400    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31401       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31402 
31403    -- 4458381 Public Sector Enh
31404    
31405    --
31406    -- set accounting attributes for the line type
31407    --
31408    l_entered_amt_idx := 22;
31409    l_accted_amt_idx  := 27;
31410    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31411    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31412    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
31413    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
31414    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
31415    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
31416    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
31417    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
31418    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
31419    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
31420    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
31421    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
31425    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
31422    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
31423    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
31424    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
31426    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
31427    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
31428    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
31429    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
31430    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
31431    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
31432    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
31433    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
31434    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
31435    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
31436    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
31437    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
31438    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
31439    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
31440    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
31441    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
31442    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
31443    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
31444    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
31445    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
31446    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
31447    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
31448    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
31449    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
31450    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
31451    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
31452    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
31453    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
31454    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
31455    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
31456    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
31457    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
31458    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
31459    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
31460    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
31461    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
31462    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
31463    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
31464    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
31465    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
31466    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
31467    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
31468    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
31469    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
31470    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
31471 
31472    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31473    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31474 
31475    ---------------------------------------------------------------------------------------------------------------
31476    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31477    ---------------------------------------------------------------------------------------------------------------
31478    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31479 
31480    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31481    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31482 
31483    IF xla_accounting_cache_pkg.GetValueChar
31484          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31485          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31486    AND l_bflow_method_code = 'PRIOR_ENTRY'
31487 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31488    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31489          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31490        )
31491    THEN
31492          xla_ae_lines_pkg.BflowUpgEntry
31493            (p_business_method_code    => l_bflow_method_code
31494            ,p_business_class_code     => l_bflow_class_code
31495            ,p_balance_type            => l_balance_type_code);
31496    ELSE
31497       NULL;
31498 -- No business flow processing for business flow method of NONE.
31499    END IF;
31500 
31501    --
31502    -- call analytical criteria
31503    --
31504    
31505    --
31506    -- call description
31507    --
31508    -- No description or it is inherited.
31509    --
31510    -- call ADRs
31511    -- Bug 4922099
31512    --
31513    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31514         (NVL(l_actual_upg_option, 'N') = 'O') OR
31515         (NVL(l_enc_upg_option, 'N') = 'O')
31516       )
31517    THEN
31518    NULL;
31519    --
31520    --
31521    
31522   l_ccid := AcctDerRule_9(
31523            p_application_id           => p_application_id
31524          , p_ae_header_id             => l_ae_header_id 
31525 , p_source_4 => p_source_4
31526 , p_source_10 => p_source_10
31527          , x_transaction_coa_id       => l_adr_transaction_coa_id
31528          , x_accounting_coa_id        => l_adr_accounting_coa_id
31532 
31529          , x_value_type_code          => l_adr_value_type_code
31530          , p_side                     => 'NA'
31531    );
31533    xla_ae_lines_pkg.set_ccid(
31534     p_code_combination_id          => l_ccid
31535   , p_value_type_code              => l_adr_value_type_code
31536   , p_transaction_coa_id           => l_adr_transaction_coa_id
31537   , p_accounting_coa_id            => l_adr_accounting_coa_id
31538   , p_adr_code                     => 'PA_RCVR_COST_REV_ADJ_ACCT_RULE'
31539   , p_adr_type_code                => 'S'
31540   , p_component_type               => l_component_type
31541   , p_component_code               => l_component_code
31542   , p_component_type_code          => l_component_type_code
31543   , p_component_appl_id            => l_component_appl_id
31544   , p_amb_context_code             => l_amb_context_code
31545   , p_side                         => 'NA'
31546   );
31547 
31548 
31549    --
31550    --
31551    END IF;
31552    --
31553    -- Bug 4922099
31554    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31555           (NVL(l_enc_upg_option, 'N') = 'O')
31556         ) AND
31557         (l_bflow_method_code = 'PRIOR_ENTRY')
31558       )
31559    THEN
31560       IF
31561       --
31562       1 = 2
31563       --
31564       THEN
31565       xla_accounting_err_pkg.build_message
31566                                     (p_appli_s_name            => 'XLA'
31567                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31568                                     ,p_token_1                 => 'LINE_NUMBER'
31569                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31570                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31571                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31572                                                                              l_component_type
31573                                                                             ,l_component_code
31574                                                                             ,l_component_type_code
31575                                                                             ,l_component_appl_id
31576                                                                             ,l_amb_context_code
31577                                                                             ,l_entity_code
31578                                                                             ,l_event_class_code
31579                                                                            )
31580                                     ,p_token_3                 => 'OWNER'
31581                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31582                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31583                                                                           ,p_lookup_code    => l_component_type_code
31584                                                                          )
31585                                     ,p_token_4                 => 'PRODUCT_NAME'
31586                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31587                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31588                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31589                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31590                                     ,p_ae_header_id            =>  NULL
31591                                        );
31592 
31593         IF (C_LEVEL_ERROR>= g_log_level) THEN
31594                  trace
31595                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31596                       ,p_level    => C_LEVEL_ERROR
31597                       ,p_module   => l_log_module);
31598         END IF;
31599       END IF;
31600    END IF;
31601    --
31602    --
31603    ------------------------------------------------------------------------------------------------
31604    -- 4219869 Business Flow
31605    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31606    -- Prior Entry.  Currently, the following code is always generated.
31607    ------------------------------------------------------------------------------------------------
31608    XLA_AE_LINES_PKG.ValidateCurrentLine;
31609 
31610    ------------------------------------------------------------------------------------
31611    -- 4219869 Business Flow
31612    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31613    ------------------------------------------------------------------------------------
31614    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31615 
31616    ----------------------------------------------------------------------------------
31617    -- 4219869 Business Flow
31618    -- Update journal entry status -- Need to generate this within IF <condition>
31619    ----------------------------------------------------------------------------------
31620    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31621          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31622          ,p_balance_type_code => l_balance_type_code
31623          );
31624 
31625    -------------------------------------------------------------------------------------------
31626    -- 4262811 - Generate the Accrual Reversal lines
31627    -------------------------------------------------------------------------------------------
31628    BEGIN
31629       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31630                               (g_array_event(p_event_id).array_value_num('header_index'));
31631       IF l_acc_rev_flag IS NULL THEN
31632          l_acc_rev_flag := 'N';
31636          l_acc_rev_flag := 'N';
31633       END IF;
31634    EXCEPTION
31635       WHEN OTHERS THEN
31637    END;
31638    --
31639    IF (l_acc_rev_flag = 'Y') THEN
31640 
31641        -- 4645092  ------------------------------------------------------------------------------
31642        -- To allow MPA report to determine if it should generate report process
31643        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31644        ------------------------------------------------------------------------------------------
31645 
31646        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31647        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31648 
31649        --
31650        -- Update the line information that should be overwritten
31651        --
31652        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31653                                          p_header_num   => 1);
31654        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31655 
31656        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31657 
31658        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31659           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31660        END IF;
31661 
31662       --
31663       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31664       --
31665       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31666           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31667       ELSE
31668           ---------------------------------------------------------------------------------------------------
31669           -- 4262811a Switch Sign
31670           ---------------------------------------------------------------------------------------------------
31671           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31672           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31673                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31674           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31675                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31676           -- 5132302
31677           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31678                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31679 
31680       END IF;
31681 
31682       -- 4955764
31683       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31684       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31685 
31686 
31687       XLA_AE_LINES_PKG.ValidateCurrentLine;
31688       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31689 
31690       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31691                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31692                ,p_balance_type_code => l_balance_type_code);
31693 
31694    END IF;
31695 
31696    -----------------------------------------------------------------------------------------
31697    -- 4262811 Multiperiod Accounting
31698    -----------------------------------------------------------------------------------------
31699      -- No MPA option is assigned.
31700 
31701 
31702 END IF;
31703 END IF;
31704 --
31705 
31706 --
31707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31708    trace
31709       (p_msg      => 'END of AcctLineType_70'
31710       ,p_level    => C_LEVEL_PROCEDURE
31711       ,p_module   => l_log_module);
31712 END IF;
31713 --
31714 EXCEPTION
31715   WHEN xla_exceptions_pkg.application_exception THEN
31716       RAISE;
31717   WHEN OTHERS THEN
31718        xla_exceptions_pkg.raise_message
31719            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_70');
31720 END AcctLineType_70;
31721 --
31722 
31723 ---------------------------------------
31724 --
31725 -- PRIVATE FUNCTION
31726 --         AcctLineType_71
31727 --
31728 ---------------------------------------
31729 PROCEDURE AcctLineType_71 (
31730   p_application_id        IN NUMBER
31731  ,p_event_id              IN NUMBER
31732  ,p_calculate_acctd_flag  IN VARCHAR2
31733  ,p_calculate_g_l_flag    IN VARCHAR2
31734  ,p_actual_flag           IN OUT VARCHAR2
31735  ,p_balance_type_code     OUT VARCHAR2
31736  ,p_gain_or_loss_ref      OUT VARCHAR2
31737  
31738 --Allow Account Override Flag
31739  , p_source_4            IN VARCHAR2
31740 --Provider Cost/ Revenue CCID
31741  , p_source_8            IN NUMBER
31742 --Adjustment Receiver Cost/ Revenue CCID
31743  , p_source_10            IN NUMBER
31744 --Receiver Cost/ Revenue CCID
31745  , p_source_15            IN NUMBER
31746 --Reversing Line Flag
31747  , p_source_22            IN VARCHAR2
31748 --Actual Upgrade Credit Accounting Class
31749  , p_source_23            IN VARCHAR2
31750 --Entered Currency Code
31751  , p_source_25            IN VARCHAR2
31752 --Exchange Rate Date
31753  , p_source_27            IN DATE
31754 --Exchange Rate
31755  , p_source_28            IN NUMBER
31756 --Exchange Rate Type
31757  , p_source_29            IN VARCHAR2
31758 --Actual Upgrade Debit Accounting Class
31759  , p_source_30            IN VARCHAR2
31760 --Use Actuals Upgrade Attributes Flag
31761  , p_source_31            IN VARCHAR2
31762 --Expenditure Item ID
31763  , p_source_32            IN NUMBER
31764 --Cost Distribution Line Number
31768  , p_source_34_meaning    IN VARCHAR2
31765  , p_source_33            IN NUMBER
31766 --Line Type
31767  , p_source_34            IN VARCHAR2
31769 --Reversed Line Number
31770  , p_source_35            IN NUMBER
31771 --Entered Amount
31772  , p_source_41            IN NUMBER
31773 --Accounted Amount
31774  , p_source_43            IN NUMBER
31775 --Transfer Amount Type
31776  , p_source_67            IN VARCHAR2
31777  , p_source_67_meaning    IN VARCHAR2
31778 )
31779 IS
31780 
31781 l_component_type              VARCHAR2(80);
31782 l_component_code              VARCHAR2(30);
31783 l_component_type_code         VARCHAR2(1);
31784 l_component_appl_id           INTEGER;
31785 l_amb_context_code            VARCHAR2(30);
31786 l_entity_code                 VARCHAR2(30);
31787 l_event_class_code            VARCHAR2(30);
31788 l_ae_header_id                NUMBER;
31789 l_event_type_code             VARCHAR2(30);
31790 l_line_definition_code        VARCHAR2(30);
31791 l_line_definition_owner_code  VARCHAR2(1);
31792 --
31793 -- adr variables
31794 l_segment                     VARCHAR2(30);
31795 l_ccid                        NUMBER;
31796 l_adr_transaction_coa_id      NUMBER;
31797 l_adr_accounting_coa_id       NUMBER;
31798 l_adr_flexfield_segment_code  VARCHAR2(30);
31799 l_adr_flex_value_set_id       NUMBER;
31800 l_adr_value_type_code         VARCHAR2(30);
31801 l_adr_value_combination_id    NUMBER;
31802 l_adr_value_segment_code      VARCHAR2(30);
31803 
31804 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31805 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31806 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31807 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31808 
31809 -- 4262811 Variables ------------------------------------------------------------------------------------------
31810 l_entered_amt_idx             NUMBER;
31811 l_accted_amt_idx              NUMBER;
31812 l_acc_rev_flag                VARCHAR2(1);
31813 l_accrual_line_num            NUMBER;
31814 l_tmp_amt                     NUMBER;
31815 l_acc_rev_natural_side_code   VARCHAR2(1);
31816 
31817 l_num_entries                 NUMBER;
31818 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31819 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31820 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31821 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31822 l_recog_line_1                NUMBER;
31823 l_recog_line_2                NUMBER;
31824 
31825 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31826 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31827 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31828 
31829 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31830 
31831 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31832 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31833 
31834 ---------------------------------------------------------------------------------------------------------------
31835 
31836 
31837 --
31838 -- bulk performance
31839 --
31840 l_balance_type_code           VARCHAR2(1);
31841 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31842 l_log_module                  VARCHAR2(240);
31843 
31844 --
31845 -- Upgrade strategy
31846 --
31847 l_actual_upg_option           VARCHAR2(1);
31848 l_enc_upg_option           VARCHAR2(1);
31849 
31850 --
31851 BEGIN
31852 --
31853 IF g_log_enabled THEN
31854       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
31855 END IF;
31856 --
31857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31858 
31859       trace
31860          (p_msg      => 'BEGIN of AcctLineType_71'
31861          ,p_level    => C_LEVEL_PROCEDURE
31862          ,p_module   => l_log_module);
31863 
31864 END IF;
31865 --
31866 l_component_type             := 'AMB_JLT';
31867 l_component_code             := 'PA_RECEIVER_REVENUE';
31868 l_component_type_code        := 'S';
31869 l_component_appl_id          :=  275;
31870 l_amb_context_code           := 'DEFAULT';
31871 l_entity_code                := 'EXPENDITURES';
31872 l_event_class_code           := 'BORROWED_AND_LENT';
31873 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
31874 l_line_definition_owner_code := 'S';
31875 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
31876 --
31877 l_balance_type_code          := 'A';
31878 l_segment                     := NULL;
31879 l_ccid                        := NULL;
31880 l_adr_transaction_coa_id      := NULL;
31881 l_adr_accounting_coa_id       := NULL;
31882 l_adr_flexfield_segment_code  := NULL;
31883 l_adr_flex_value_set_id       := NULL;
31884 l_adr_value_type_code         := NULL;
31885 l_adr_value_combination_id    := NULL;
31886 l_adr_value_segment_code      := NULL;
31887 
31888 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31889 l_bflow_class_code           := '';    -- 4219869 Business Flow
31890 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31891 l_budgetary_control_flag     := 'N';
31892 
31893 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31894 l_bflow_applied_to_amt       := NULL; -- 5132302
31895 l_entered_amt_idx            := NULL;          -- 4262811
31896 l_accted_amt_idx             := NULL;          -- 4262811
31897 l_acc_rev_flag               := NULL;          -- 4262811
31898 l_accrual_line_num           := NULL;          -- 4262811
31899 l_tmp_amt                    := NULL;          -- 4262811
31900 --
31901  
31905 ') =  'REVENUE_TRANSFER'
31902 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31903     l_balance_type_code <> 'B' THEN
31904 IF NVL(p_source_67,'
31906  THEN 
31907 
31908    --
31909    XLA_AE_LINES_PKG.SetNewLine;
31910 
31911    p_balance_type_code          := l_balance_type_code;
31912    -- set the flag so later we will know whether the gain loss line needs to be created
31913    
31914    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31915      p_actual_flag :='A';
31916    END IF;
31917 
31918    --
31919    -- bulk performance
31920    --
31921    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31922                                       p_header_num   => 0); -- 4262811
31923    --
31924    -- set accounting line options
31925    --
31926    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31927            p_natural_side_code          => 'D'
31928          , p_gain_or_loss_flag          => 'N'
31929          , p_gl_transfer_mode_code      => 'S'
31930          , p_acct_entry_type_code       => 'A'
31931          , p_switch_side_flag           => 'Y'
31932          , p_merge_duplicate_code       => 'N'
31933          );
31934    --
31935    l_acc_rev_natural_side_code := 'C';  -- 4262811
31936    -- 
31937    --
31938    -- set accounting line type info
31939    --
31940    xla_ae_lines_pkg.SetAcctLineType
31941       (p_component_type             => l_component_type
31942       ,p_event_type_code            => l_event_type_code
31943       ,p_line_definition_owner_code => l_line_definition_owner_code
31944       ,p_line_definition_code       => l_line_definition_code
31945       ,p_accounting_line_code       => l_component_code
31946       ,p_accounting_line_type_code  => l_component_type_code
31947       ,p_accounting_line_appl_id    => l_component_appl_id
31948       ,p_amb_context_code           => l_amb_context_code
31949       ,p_entity_code                => l_entity_code
31950       ,p_event_class_code           => l_event_class_code);
31951    --
31952    -- set accounting class
31953    --
31954    xla_ae_lines_pkg.SetAcctClass(
31955            p_accounting_class_code  => 'RECEIVER_REVENUE'
31956          , p_ae_header_id           => l_ae_header_id
31957          );
31958 
31959    --
31960    -- set rounding class
31961    --
31962    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31963                       'RECEIVER_REVENUE';
31964 
31965    --
31966    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31967    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31968    --
31969    -- bulk performance
31970    --
31971    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31972 
31973    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31974       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31975 
31976    -- 4955764
31977    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31978       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31979 
31980    -- 4458381 Public Sector Enh
31981    
31982    --
31983    -- set accounting attributes for the line type
31984    --
31985    l_entered_amt_idx := 22;
31986    l_accted_amt_idx  := 27;
31987    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31988    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31989    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
31990    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
31991    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
31992    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
31993    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
31994    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
31995    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
31996    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
31997    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
31998    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
31999    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
32000    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
32001    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
32002    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
32003    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
32004    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
32005    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
32006    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
32007    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
32008    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
32009    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
32010    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
32011    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
32012    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
32013    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
32014    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
32015    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
32016    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
32017    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
32018    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
32019    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
32020    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
32021    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
32025    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
32022    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
32023    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
32024    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
32026    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
32027    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
32028    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
32029    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
32030    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
32031    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
32032    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
32033    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
32034    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
32035    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
32036    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
32037    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
32038    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
32039    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
32040    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
32041    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
32042    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
32043    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
32044    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
32045    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
32046    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
32047    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
32048 
32049    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32050    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32051 
32052    ---------------------------------------------------------------------------------------------------------------
32053    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32054    ---------------------------------------------------------------------------------------------------------------
32055    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32056 
32057    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32058    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32059 
32060    IF xla_accounting_cache_pkg.GetValueChar
32061          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32062          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32063    AND l_bflow_method_code = 'PRIOR_ENTRY'
32064 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32065    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32066          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32067        )
32068    THEN
32069          xla_ae_lines_pkg.BflowUpgEntry
32070            (p_business_method_code    => l_bflow_method_code
32071            ,p_business_class_code     => l_bflow_class_code
32072            ,p_balance_type            => l_balance_type_code);
32073    ELSE
32074       NULL;
32075 -- No business flow processing for business flow method of NONE.
32076    END IF;
32077 
32078    --
32079    -- call analytical criteria
32080    --
32081    
32082    --
32083    -- call description
32084    --
32085    -- No description or it is inherited.
32086    --
32087    -- call ADRs
32088    -- Bug 4922099
32089    --
32090    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32091         (NVL(l_actual_upg_option, 'N') = 'O') OR
32092         (NVL(l_enc_upg_option, 'N') = 'O')
32093       )
32094    THEN
32095    NULL;
32096    --
32097    --
32098    
32099   l_ccid := AcctDerRule_14(
32100            p_application_id           => p_application_id
32101          , p_ae_header_id             => l_ae_header_id 
32102 , p_source_4 => p_source_4
32103 , p_source_10 => p_source_10
32104 , p_source_15 => p_source_15
32105          , x_transaction_coa_id       => l_adr_transaction_coa_id
32106          , x_accounting_coa_id        => l_adr_accounting_coa_id
32107          , x_value_type_code          => l_adr_value_type_code
32108          , p_side                     => 'NA'
32109    );
32110 
32111    xla_ae_lines_pkg.set_ccid(
32112     p_code_combination_id          => l_ccid
32113   , p_value_type_code              => l_adr_value_type_code
32114   , p_transaction_coa_id           => l_adr_transaction_coa_id
32115   , p_accounting_coa_id            => l_adr_accounting_coa_id
32116   , p_adr_code                     => 'PA_RECVR_COST_REV_ACCT_RULE'
32117   , p_adr_type_code                => 'S'
32118   , p_component_type               => l_component_type
32119   , p_component_code               => l_component_code
32120   , p_component_type_code          => l_component_type_code
32121   , p_component_appl_id            => l_component_appl_id
32122   , p_amb_context_code             => l_amb_context_code
32123   , p_side                         => 'NA'
32124   );
32125 
32126 
32127    --
32128    --
32129    END IF;
32130    --
32131    -- Bug 4922099
32132    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32133           (NVL(l_enc_upg_option, 'N') = 'O')
32134         ) AND
32135         (l_bflow_method_code = 'PRIOR_ENTRY')
32136       )
32137    THEN
32138       IF
32139       --
32140       1 = 2
32141       --
32142       THEN
32143       xla_accounting_err_pkg.build_message
32144                                     (p_appli_s_name            => 'XLA'
32148                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32145                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32146                                     ,p_token_1                 => 'LINE_NUMBER'
32147                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32149                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32150                                                                              l_component_type
32151                                                                             ,l_component_code
32152                                                                             ,l_component_type_code
32153                                                                             ,l_component_appl_id
32154                                                                             ,l_amb_context_code
32155                                                                             ,l_entity_code
32156                                                                             ,l_event_class_code
32157                                                                            )
32158                                     ,p_token_3                 => 'OWNER'
32159                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32160                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32161                                                                           ,p_lookup_code    => l_component_type_code
32162                                                                          )
32163                                     ,p_token_4                 => 'PRODUCT_NAME'
32164                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32165                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32166                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32167                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32168                                     ,p_ae_header_id            =>  NULL
32169                                        );
32170 
32171         IF (C_LEVEL_ERROR>= g_log_level) THEN
32172                  trace
32173                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32174                       ,p_level    => C_LEVEL_ERROR
32175                       ,p_module   => l_log_module);
32176         END IF;
32177       END IF;
32178    END IF;
32179    --
32180    --
32181    ------------------------------------------------------------------------------------------------
32182    -- 4219869 Business Flow
32183    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32184    -- Prior Entry.  Currently, the following code is always generated.
32185    ------------------------------------------------------------------------------------------------
32186    XLA_AE_LINES_PKG.ValidateCurrentLine;
32187 
32188    ------------------------------------------------------------------------------------
32189    -- 4219869 Business Flow
32190    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32191    ------------------------------------------------------------------------------------
32192    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32193 
32194    ----------------------------------------------------------------------------------
32195    -- 4219869 Business Flow
32196    -- Update journal entry status -- Need to generate this within IF <condition>
32197    ----------------------------------------------------------------------------------
32198    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32199          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32200          ,p_balance_type_code => l_balance_type_code
32201          );
32202 
32203    -------------------------------------------------------------------------------------------
32204    -- 4262811 - Generate the Accrual Reversal lines
32205    -------------------------------------------------------------------------------------------
32206    BEGIN
32207       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32208                               (g_array_event(p_event_id).array_value_num('header_index'));
32209       IF l_acc_rev_flag IS NULL THEN
32210          l_acc_rev_flag := 'N';
32211       END IF;
32212    EXCEPTION
32213       WHEN OTHERS THEN
32214          l_acc_rev_flag := 'N';
32215    END;
32216    --
32217    IF (l_acc_rev_flag = 'Y') THEN
32218 
32219        -- 4645092  ------------------------------------------------------------------------------
32220        -- To allow MPA report to determine if it should generate report process
32221        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32222        ------------------------------------------------------------------------------------------
32223 
32224        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32225        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32226 
32227        --
32228        -- Update the line information that should be overwritten
32229        --
32230        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32231                                          p_header_num   => 1);
32232        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32233 
32234        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32235 
32236        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32237           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32238        END IF;
32239 
32240       --
32241       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32245       ELSE
32242       --
32243       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32244           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32246           ---------------------------------------------------------------------------------------------------
32247           -- 4262811a Switch Sign
32248           ---------------------------------------------------------------------------------------------------
32249           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32250           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32251                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32252           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32253                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32254           -- 5132302
32255           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32256                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32257 
32258       END IF;
32259 
32260       -- 4955764
32261       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32262       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32263 
32264 
32265       XLA_AE_LINES_PKG.ValidateCurrentLine;
32266       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32267 
32268       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32269                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32270                ,p_balance_type_code => l_balance_type_code);
32271 
32272    END IF;
32273 
32274    -----------------------------------------------------------------------------------------
32275    -- 4262811 Multiperiod Accounting
32276    -----------------------------------------------------------------------------------------
32277      -- No MPA option is assigned.
32278 
32279 
32280 END IF;
32281 END IF;
32282 --
32283 
32284 --
32285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32286    trace
32287       (p_msg      => 'END of AcctLineType_71'
32288       ,p_level    => C_LEVEL_PROCEDURE
32289       ,p_module   => l_log_module);
32290 END IF;
32291 --
32292 EXCEPTION
32293   WHEN xla_exceptions_pkg.application_exception THEN
32294       RAISE;
32295   WHEN OTHERS THEN
32296        xla_exceptions_pkg.raise_message
32297            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_71');
32298 END AcctLineType_71;
32299 --
32300 
32301 ---------------------------------------
32302 --
32303 -- PRIVATE FUNCTION
32304 --         AcctLineType_72
32305 --
32306 ---------------------------------------
32307 PROCEDURE AcctLineType_72 (
32308   p_application_id        IN NUMBER
32309  ,p_event_id              IN NUMBER
32310  ,p_calculate_acctd_flag  IN VARCHAR2
32311  ,p_calculate_g_l_flag    IN VARCHAR2
32312  ,p_actual_flag           IN OUT VARCHAR2
32313  ,p_balance_type_code     OUT VARCHAR2
32314  ,p_gain_or_loss_ref      OUT VARCHAR2
32315  
32316 --Allow Account Override Flag
32317  , p_source_4            IN VARCHAR2
32318 --Provider Cost/ Revenue CCID
32319  , p_source_8            IN NUMBER
32320 --Adjustment Receiver Cost/ Revenue CCID
32321  , p_source_10            IN NUMBER
32322 --Receiver Cost/ Revenue CCID
32323  , p_source_15            IN NUMBER
32324 --Reversing Line Flag
32325  , p_source_22            IN VARCHAR2
32326 --Actual Upgrade Credit Accounting Class
32327  , p_source_23            IN VARCHAR2
32328 --Entered Currency Code
32329  , p_source_25            IN VARCHAR2
32330 --Exchange Rate Date
32331  , p_source_27            IN DATE
32332 --Exchange Rate
32333  , p_source_28            IN NUMBER
32334 --Exchange Rate Type
32335  , p_source_29            IN VARCHAR2
32336 --Actual Upgrade Debit Accounting Class
32337  , p_source_30            IN VARCHAR2
32338 --Use Actuals Upgrade Attributes Flag
32339  , p_source_31            IN VARCHAR2
32340 --Expenditure Item ID
32341  , p_source_32            IN NUMBER
32342 --Cost Distribution Line Number
32343  , p_source_33            IN NUMBER
32344 --Line Type
32345  , p_source_34            IN VARCHAR2
32346  , p_source_34_meaning    IN VARCHAR2
32347 --Reversed Line Number
32348  , p_source_35            IN NUMBER
32349 --Entered Amount
32350  , p_source_41            IN NUMBER
32351 --Accounted Amount
32352  , p_source_43            IN NUMBER
32353 --Transfer Amount Type
32354  , p_source_67            IN VARCHAR2
32355  , p_source_67_meaning    IN VARCHAR2
32356 )
32357 IS
32358 
32359 l_component_type              VARCHAR2(80);
32360 l_component_code              VARCHAR2(30);
32361 l_component_type_code         VARCHAR2(1);
32362 l_component_appl_id           INTEGER;
32363 l_amb_context_code            VARCHAR2(30);
32364 l_entity_code                 VARCHAR2(30);
32365 l_event_class_code            VARCHAR2(30);
32366 l_ae_header_id                NUMBER;
32367 l_event_type_code             VARCHAR2(30);
32368 l_line_definition_code        VARCHAR2(30);
32369 l_line_definition_owner_code  VARCHAR2(1);
32370 --
32371 -- adr variables
32372 l_segment                     VARCHAR2(30);
32373 l_ccid                        NUMBER;
32374 l_adr_transaction_coa_id      NUMBER;
32375 l_adr_accounting_coa_id       NUMBER;
32376 l_adr_flexfield_segment_code  VARCHAR2(30);
32377 l_adr_flex_value_set_id       NUMBER;
32378 l_adr_value_type_code         VARCHAR2(30);
32379 l_adr_value_combination_id    NUMBER;
32383 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32380 l_adr_value_segment_code      VARCHAR2(30);
32381 
32382 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32384 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32385 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32386 
32387 -- 4262811 Variables ------------------------------------------------------------------------------------------
32388 l_entered_amt_idx             NUMBER;
32389 l_accted_amt_idx              NUMBER;
32390 l_acc_rev_flag                VARCHAR2(1);
32391 l_accrual_line_num            NUMBER;
32392 l_tmp_amt                     NUMBER;
32393 l_acc_rev_natural_side_code   VARCHAR2(1);
32394 
32395 l_num_entries                 NUMBER;
32396 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32397 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32398 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32399 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32400 l_recog_line_1                NUMBER;
32401 l_recog_line_2                NUMBER;
32402 
32403 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32404 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32405 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32406 
32407 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32408 
32409 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32410 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32411 
32412 ---------------------------------------------------------------------------------------------------------------
32413 
32414 
32415 --
32416 -- bulk performance
32417 --
32418 l_balance_type_code           VARCHAR2(1);
32419 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32420 l_log_module                  VARCHAR2(240);
32421 
32422 --
32423 -- Upgrade strategy
32424 --
32425 l_actual_upg_option           VARCHAR2(1);
32426 l_enc_upg_option           VARCHAR2(1);
32427 
32428 --
32429 BEGIN
32430 --
32431 IF g_log_enabled THEN
32432       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
32433 END IF;
32434 --
32435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32436 
32437       trace
32438          (p_msg      => 'BEGIN of AcctLineType_72'
32439          ,p_level    => C_LEVEL_PROCEDURE
32440          ,p_module   => l_log_module);
32441 
32442 END IF;
32443 --
32444 l_component_type             := 'AMB_JLT';
32445 l_component_code             := 'PA_RECEIVER_REVENUE_ADJ';
32446 l_component_type_code        := 'S';
32447 l_component_appl_id          :=  275;
32448 l_amb_context_code           := 'DEFAULT';
32449 l_entity_code                := 'EXPENDITURES';
32450 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
32451 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
32452 l_line_definition_owner_code := 'S';
32453 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
32454 --
32455 l_balance_type_code          := 'A';
32456 l_segment                     := NULL;
32457 l_ccid                        := NULL;
32458 l_adr_transaction_coa_id      := NULL;
32459 l_adr_accounting_coa_id       := NULL;
32460 l_adr_flexfield_segment_code  := NULL;
32461 l_adr_flex_value_set_id       := NULL;
32462 l_adr_value_type_code         := NULL;
32463 l_adr_value_combination_id    := NULL;
32464 l_adr_value_segment_code      := NULL;
32465 
32466 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32467 l_bflow_class_code           := '';    -- 4219869 Business Flow
32468 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32469 l_budgetary_control_flag     := 'N';
32470 
32471 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32472 l_bflow_applied_to_amt       := NULL; -- 5132302
32473 l_entered_amt_idx            := NULL;          -- 4262811
32474 l_accted_amt_idx             := NULL;          -- 4262811
32475 l_acc_rev_flag               := NULL;          -- 4262811
32476 l_accrual_line_num           := NULL;          -- 4262811
32477 l_tmp_amt                    := NULL;          -- 4262811
32478 --
32479  
32480 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32481     l_balance_type_code <> 'B' THEN
32482 IF NVL(p_source_67,'
32483 ') =  'REVENUE_TRANSFER'
32484  THEN 
32485 
32486    --
32487    XLA_AE_LINES_PKG.SetNewLine;
32488 
32489    p_balance_type_code          := l_balance_type_code;
32490    -- set the flag so later we will know whether the gain loss line needs to be created
32491    
32492    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32493      p_actual_flag :='A';
32494    END IF;
32495 
32496    --
32497    -- bulk performance
32498    --
32499    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32500                                       p_header_num   => 0); -- 4262811
32501    --
32502    -- set accounting line options
32503    --
32504    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32505            p_natural_side_code          => 'D'
32506          , p_gain_or_loss_flag          => 'N'
32507          , p_gl_transfer_mode_code      => 'S'
32508          , p_acct_entry_type_code       => 'A'
32509          , p_switch_side_flag           => 'Y'
32510          , p_merge_duplicate_code       => 'N'
32511          );
32512    --
32513    l_acc_rev_natural_side_code := 'C';  -- 4262811
32514    -- 
32515    --
32516    -- set accounting line type info
32517    --
32518    xla_ae_lines_pkg.SetAcctLineType
32522       ,p_line_definition_code       => l_line_definition_code
32519       (p_component_type             => l_component_type
32520       ,p_event_type_code            => l_event_type_code
32521       ,p_line_definition_owner_code => l_line_definition_owner_code
32523       ,p_accounting_line_code       => l_component_code
32524       ,p_accounting_line_type_code  => l_component_type_code
32525       ,p_accounting_line_appl_id    => l_component_appl_id
32526       ,p_amb_context_code           => l_amb_context_code
32527       ,p_entity_code                => l_entity_code
32528       ,p_event_class_code           => l_event_class_code);
32529    --
32530    -- set accounting class
32531    --
32532    xla_ae_lines_pkg.SetAcctClass(
32533            p_accounting_class_code  => 'RECEIVER_REVENUE'
32534          , p_ae_header_id           => l_ae_header_id
32535          );
32536 
32537    --
32538    -- set rounding class
32539    --
32540    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32541                       'RECEIVER_REVENUE';
32542 
32543    --
32544    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32545    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32546    --
32547    -- bulk performance
32548    --
32549    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32550 
32551    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32552       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32553 
32554    -- 4955764
32555    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32556       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32557 
32558    -- 4458381 Public Sector Enh
32559    
32560    --
32561    -- set accounting attributes for the line type
32562    --
32563    l_entered_amt_idx := 22;
32564    l_accted_amt_idx  := 27;
32565    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32566    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32567    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
32568    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
32569    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
32570    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
32571    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
32572    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
32573    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
32574    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
32575    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
32576    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
32577    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
32578    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
32579    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
32580    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
32581    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
32582    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
32583    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
32584    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
32585    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
32586    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
32587    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
32588    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
32589    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
32590    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
32591    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
32592    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
32593    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
32594    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
32595    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
32596    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
32597    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
32598    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
32599    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
32600    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
32601    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
32602    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
32603    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
32604    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
32605    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
32606    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
32607    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
32608    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
32609    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
32610    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
32611    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
32612    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
32613    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
32614    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
32615    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
32616    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
32617    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
32618    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
32619    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
32620    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
32621    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
32625    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
32622    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
32623    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
32624    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
32626 
32627    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32628    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32629 
32630    ---------------------------------------------------------------------------------------------------------------
32631    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32632    ---------------------------------------------------------------------------------------------------------------
32633    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32634 
32635    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32636    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32637 
32638    IF xla_accounting_cache_pkg.GetValueChar
32639          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32640          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32641    AND l_bflow_method_code = 'PRIOR_ENTRY'
32642 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32643    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32644          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32645        )
32646    THEN
32647          xla_ae_lines_pkg.BflowUpgEntry
32648            (p_business_method_code    => l_bflow_method_code
32649            ,p_business_class_code     => l_bflow_class_code
32650            ,p_balance_type            => l_balance_type_code);
32651    ELSE
32652       NULL;
32653 -- No business flow processing for business flow method of NONE.
32654    END IF;
32655 
32656    --
32657    -- call analytical criteria
32658    --
32659    
32660    --
32661    -- call description
32662    --
32663    -- No description or it is inherited.
32664    --
32665    -- call ADRs
32666    -- Bug 4922099
32667    --
32668    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32669         (NVL(l_actual_upg_option, 'N') = 'O') OR
32670         (NVL(l_enc_upg_option, 'N') = 'O')
32671       )
32672    THEN
32673    NULL;
32674    --
32675    --
32676    
32677   l_ccid := AcctDerRule_9(
32678            p_application_id           => p_application_id
32679          , p_ae_header_id             => l_ae_header_id 
32680 , p_source_4 => p_source_4
32681 , p_source_10 => p_source_10
32682          , x_transaction_coa_id       => l_adr_transaction_coa_id
32683          , x_accounting_coa_id        => l_adr_accounting_coa_id
32684          , x_value_type_code          => l_adr_value_type_code
32685          , p_side                     => 'NA'
32686    );
32687 
32688    xla_ae_lines_pkg.set_ccid(
32689     p_code_combination_id          => l_ccid
32690   , p_value_type_code              => l_adr_value_type_code
32691   , p_transaction_coa_id           => l_adr_transaction_coa_id
32692   , p_accounting_coa_id            => l_adr_accounting_coa_id
32693   , p_adr_code                     => 'PA_RCVR_COST_REV_ADJ_ACCT_RULE'
32694   , p_adr_type_code                => 'S'
32695   , p_component_type               => l_component_type
32696   , p_component_code               => l_component_code
32697   , p_component_type_code          => l_component_type_code
32698   , p_component_appl_id            => l_component_appl_id
32699   , p_amb_context_code             => l_amb_context_code
32700   , p_side                         => 'NA'
32701   );
32702 
32703 
32704    --
32705    --
32706    END IF;
32707    --
32708    -- Bug 4922099
32709    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32710           (NVL(l_enc_upg_option, 'N') = 'O')
32711         ) AND
32712         (l_bflow_method_code = 'PRIOR_ENTRY')
32713       )
32714    THEN
32715       IF
32716       --
32717       1 = 2
32718       --
32719       THEN
32720       xla_accounting_err_pkg.build_message
32721                                     (p_appli_s_name            => 'XLA'
32722                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32723                                     ,p_token_1                 => 'LINE_NUMBER'
32724                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32725                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32726                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32727                                                                              l_component_type
32728                                                                             ,l_component_code
32729                                                                             ,l_component_type_code
32730                                                                             ,l_component_appl_id
32731                                                                             ,l_amb_context_code
32732                                                                             ,l_entity_code
32733                                                                             ,l_event_class_code
32734                                                                            )
32735                                     ,p_token_3                 => 'OWNER'
32736                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32737                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32738                                                                           ,p_lookup_code    => l_component_type_code
32742                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32739                                                                          )
32740                                     ,p_token_4                 => 'PRODUCT_NAME'
32741                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32743                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32744                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32745                                     ,p_ae_header_id            =>  NULL
32746                                        );
32747 
32748         IF (C_LEVEL_ERROR>= g_log_level) THEN
32749                  trace
32750                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32751                       ,p_level    => C_LEVEL_ERROR
32752                       ,p_module   => l_log_module);
32753         END IF;
32754       END IF;
32755    END IF;
32756    --
32757    --
32758    ------------------------------------------------------------------------------------------------
32759    -- 4219869 Business Flow
32760    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32761    -- Prior Entry.  Currently, the following code is always generated.
32762    ------------------------------------------------------------------------------------------------
32763    XLA_AE_LINES_PKG.ValidateCurrentLine;
32764 
32765    ------------------------------------------------------------------------------------
32766    -- 4219869 Business Flow
32767    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32768    ------------------------------------------------------------------------------------
32769    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32770 
32771    ----------------------------------------------------------------------------------
32772    -- 4219869 Business Flow
32773    -- Update journal entry status -- Need to generate this within IF <condition>
32774    ----------------------------------------------------------------------------------
32775    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32776          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32777          ,p_balance_type_code => l_balance_type_code
32778          );
32779 
32780    -------------------------------------------------------------------------------------------
32781    -- 4262811 - Generate the Accrual Reversal lines
32782    -------------------------------------------------------------------------------------------
32783    BEGIN
32784       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32785                               (g_array_event(p_event_id).array_value_num('header_index'));
32786       IF l_acc_rev_flag IS NULL THEN
32787          l_acc_rev_flag := 'N';
32788       END IF;
32789    EXCEPTION
32790       WHEN OTHERS THEN
32791          l_acc_rev_flag := 'N';
32792    END;
32793    --
32794    IF (l_acc_rev_flag = 'Y') THEN
32795 
32796        -- 4645092  ------------------------------------------------------------------------------
32797        -- To allow MPA report to determine if it should generate report process
32798        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32799        ------------------------------------------------------------------------------------------
32800 
32801        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32802        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32803 
32804        --
32805        -- Update the line information that should be overwritten
32806        --
32807        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32808                                          p_header_num   => 1);
32809        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32810 
32811        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32812 
32813        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32814           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32815        END IF;
32816 
32817       --
32818       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32819       --
32820       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32821           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32822       ELSE
32823           ---------------------------------------------------------------------------------------------------
32824           -- 4262811a Switch Sign
32825           ---------------------------------------------------------------------------------------------------
32826           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32827           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32828                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32829           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32830                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32831           -- 5132302
32832           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32833                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32834 
32835       END IF;
32836 
32837       -- 4955764
32838       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32839       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32840 
32841 
32845       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32842       XLA_AE_LINES_PKG.ValidateCurrentLine;
32843       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32844 
32846                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32847                ,p_balance_type_code => l_balance_type_code);
32848 
32849    END IF;
32850 
32851    -----------------------------------------------------------------------------------------
32852    -- 4262811 Multiperiod Accounting
32853    -----------------------------------------------------------------------------------------
32854      -- No MPA option is assigned.
32855 
32856 
32857 END IF;
32858 END IF;
32859 --
32860 
32861 --
32862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32863    trace
32864       (p_msg      => 'END of AcctLineType_72'
32865       ,p_level    => C_LEVEL_PROCEDURE
32866       ,p_module   => l_log_module);
32867 END IF;
32868 --
32869 EXCEPTION
32870   WHEN xla_exceptions_pkg.application_exception THEN
32871       RAISE;
32872   WHEN OTHERS THEN
32873        xla_exceptions_pkg.raise_message
32874            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_72');
32875 END AcctLineType_72;
32876 --
32877 
32878 ---------------------------------------
32879 --
32880 -- PRIVATE FUNCTION
32881 --         AcctLineType_73
32882 --
32883 ---------------------------------------
32884 PROCEDURE AcctLineType_73 (
32885   p_application_id        IN NUMBER
32886  ,p_event_id              IN NUMBER
32887  ,p_calculate_acctd_flag  IN VARCHAR2
32888  ,p_calculate_g_l_flag    IN VARCHAR2
32889  ,p_actual_flag           IN OUT VARCHAR2
32890  ,p_balance_type_code     OUT VARCHAR2
32891  ,p_gain_or_loss_ref      OUT VARCHAR2
32892  
32893 --Allow Account Override Flag
32894  , p_source_4            IN VARCHAR2
32895 --Provider Cost Destination CCID
32896  , p_source_11            IN NUMBER
32897 --Adjustment Provider Cost Destination CCID
32898  , p_source_12            IN NUMBER
32899 --Provider Cost Source CCID
32900  , p_source_13            IN NUMBER
32901 --Reversing Line Flag
32902  , p_source_22            IN VARCHAR2
32903 --Actual Upgrade Credit Accounting Class
32904  , p_source_23            IN VARCHAR2
32905 --Entered Currency Code
32906  , p_source_25            IN VARCHAR2
32907 --Exchange Rate Date
32908  , p_source_27            IN DATE
32909 --Exchange Rate
32910  , p_source_28            IN NUMBER
32911 --Exchange Rate Type
32912  , p_source_29            IN VARCHAR2
32913 --Actual Upgrade Debit Accounting Class
32914  , p_source_30            IN VARCHAR2
32915 --Use Actuals Upgrade Attributes Flag
32916  , p_source_31            IN VARCHAR2
32917 --Expenditure Item ID
32918  , p_source_32            IN NUMBER
32919 --Cost Distribution Line Number
32920  , p_source_33            IN NUMBER
32921 --Line Type
32922  , p_source_34            IN VARCHAR2
32923  , p_source_34_meaning    IN VARCHAR2
32924 --Reversed Line Number
32925  , p_source_35            IN NUMBER
32926 --Entered Amount
32927  , p_source_41            IN NUMBER
32928 --Accounted Amount
32929  , p_source_43            IN NUMBER
32930 )
32931 IS
32932 
32933 l_component_type              VARCHAR2(80);
32934 l_component_code              VARCHAR2(30);
32935 l_component_type_code         VARCHAR2(1);
32936 l_component_appl_id           INTEGER;
32937 l_amb_context_code            VARCHAR2(30);
32938 l_entity_code                 VARCHAR2(30);
32939 l_event_class_code            VARCHAR2(30);
32940 l_ae_header_id                NUMBER;
32941 l_event_type_code             VARCHAR2(30);
32942 l_line_definition_code        VARCHAR2(30);
32943 l_line_definition_owner_code  VARCHAR2(1);
32944 --
32945 -- adr variables
32946 l_segment                     VARCHAR2(30);
32947 l_ccid                        NUMBER;
32948 l_adr_transaction_coa_id      NUMBER;
32949 l_adr_accounting_coa_id       NUMBER;
32950 l_adr_flexfield_segment_code  VARCHAR2(30);
32951 l_adr_flex_value_set_id       NUMBER;
32952 l_adr_value_type_code         VARCHAR2(30);
32953 l_adr_value_combination_id    NUMBER;
32954 l_adr_value_segment_code      VARCHAR2(30);
32955 
32956 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32957 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32958 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32959 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32960 
32961 -- 4262811 Variables ------------------------------------------------------------------------------------------
32962 l_entered_amt_idx             NUMBER;
32963 l_accted_amt_idx              NUMBER;
32964 l_acc_rev_flag                VARCHAR2(1);
32965 l_accrual_line_num            NUMBER;
32966 l_tmp_amt                     NUMBER;
32967 l_acc_rev_natural_side_code   VARCHAR2(1);
32968 
32969 l_num_entries                 NUMBER;
32970 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32971 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32972 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32973 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32974 l_recog_line_1                NUMBER;
32975 l_recog_line_2                NUMBER;
32976 
32977 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32978 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32979 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32980 
32981 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32982 
32983 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32987 
32984 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32985 
32986 ---------------------------------------------------------------------------------------------------------------
32988 
32989 --
32990 -- bulk performance
32991 --
32992 l_balance_type_code           VARCHAR2(1);
32993 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32994 l_log_module                  VARCHAR2(240);
32995 
32996 --
32997 -- Upgrade strategy
32998 --
32999 l_actual_upg_option           VARCHAR2(1);
33000 l_enc_upg_option           VARCHAR2(1);
33001 
33002 --
33003 BEGIN
33004 --
33005 IF g_log_enabled THEN
33006       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
33007 END IF;
33008 --
33009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33010 
33011       trace
33012          (p_msg      => 'BEGIN of AcctLineType_73'
33013          ,p_level    => C_LEVEL_PROCEDURE
33014          ,p_module   => l_log_module);
33015 
33016 END IF;
33017 --
33018 l_component_type             := 'AMB_JLT';
33019 l_component_code             := 'PA_RECLASS_DEST';
33020 l_component_type_code        := 'S';
33021 l_component_appl_id          :=  275;
33022 l_amb_context_code           := 'DEFAULT';
33023 l_entity_code                := 'EXPENDITURES';
33024 l_event_class_code           := 'PRVDR_RECVR_RECLASS';
33025 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ALL';
33026 l_line_definition_owner_code := 'S';
33027 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
33028 --
33029 l_balance_type_code          := 'A';
33030 l_segment                     := NULL;
33031 l_ccid                        := NULL;
33032 l_adr_transaction_coa_id      := NULL;
33033 l_adr_accounting_coa_id       := NULL;
33034 l_adr_flexfield_segment_code  := NULL;
33035 l_adr_flex_value_set_id       := NULL;
33036 l_adr_value_type_code         := NULL;
33037 l_adr_value_combination_id    := NULL;
33038 l_adr_value_segment_code      := NULL;
33039 
33040 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33041 l_bflow_class_code           := '';    -- 4219869 Business Flow
33042 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33043 l_budgetary_control_flag     := 'N';
33044 
33045 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33046 l_bflow_applied_to_amt       := NULL; -- 5132302
33047 l_entered_amt_idx            := NULL;          -- 4262811
33048 l_accted_amt_idx             := NULL;          -- 4262811
33049 l_acc_rev_flag               := NULL;          -- 4262811
33050 l_accrual_line_num           := NULL;          -- 4262811
33051 l_tmp_amt                    := NULL;          -- 4262811
33052 --
33053  
33054 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33055     l_balance_type_code <> 'B' THEN
33056 
33057    --
33058    XLA_AE_LINES_PKG.SetNewLine;
33059 
33060    p_balance_type_code          := l_balance_type_code;
33061    -- set the flag so later we will know whether the gain loss line needs to be created
33062    
33063    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33064      p_actual_flag :='A';
33065    END IF;
33066 
33067    --
33068    -- bulk performance
33069    --
33070    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33071                                       p_header_num   => 0); -- 4262811
33072    --
33073    -- set accounting line options
33074    --
33075    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33076            p_natural_side_code          => 'D'
33077          , p_gain_or_loss_flag          => 'N'
33078          , p_gl_transfer_mode_code      => 'S'
33079          , p_acct_entry_type_code       => 'A'
33080          , p_switch_side_flag           => 'Y'
33081          , p_merge_duplicate_code       => 'N'
33082          );
33083    --
33084    l_acc_rev_natural_side_code := 'C';  -- 4262811
33085    -- 
33086    --
33087    -- set accounting line type info
33088    --
33089    xla_ae_lines_pkg.SetAcctLineType
33090       (p_component_type             => l_component_type
33091       ,p_event_type_code            => l_event_type_code
33092       ,p_line_definition_owner_code => l_line_definition_owner_code
33093       ,p_line_definition_code       => l_line_definition_code
33094       ,p_accounting_line_code       => l_component_code
33095       ,p_accounting_line_type_code  => l_component_type_code
33096       ,p_accounting_line_appl_id    => l_component_appl_id
33097       ,p_amb_context_code           => l_amb_context_code
33098       ,p_entity_code                => l_entity_code
33099       ,p_event_class_code           => l_event_class_code);
33100    --
33101    -- set accounting class
33102    --
33103    xla_ae_lines_pkg.SetAcctClass(
33104            p_accounting_class_code  => 'RECLASS_DESTINATION'
33105          , p_ae_header_id           => l_ae_header_id
33106          );
33107 
33108    --
33109    -- set rounding class
33110    --
33111    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33112                       'RECLASS_DESTINATION';
33113 
33114    --
33115    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33116    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33117    --
33118    -- bulk performance
33119    --
33120    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33121 
33122    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33123       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33124 
33125    -- 4955764
33129    -- 4458381 Public Sector Enh
33126    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33127       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33128 
33130    
33131    --
33132    -- set accounting attributes for the line type
33133    --
33134    l_entered_amt_idx := 22;
33135    l_accted_amt_idx  := 27;
33136    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33137    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33138    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
33139    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
33140    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
33141    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
33142    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
33143    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
33144    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
33145    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
33146    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
33147    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
33148    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
33149    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
33150    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
33151    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
33152    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
33153    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
33154    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
33155    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
33156    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
33157    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
33158    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
33159    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
33160    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
33161    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
33162    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
33163    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
33164    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
33165    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
33166    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
33167    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
33168    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
33169    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
33170    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
33171    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
33172    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
33173    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
33174    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
33175    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
33176    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
33177    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
33178    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
33179    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
33180    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
33181    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
33182    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
33183    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
33184    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
33185    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
33186    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
33187    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
33188    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
33189    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
33190    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
33191    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
33192    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
33193    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
33194    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
33195    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
33196    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
33197 
33198    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33199    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33200 
33201    ---------------------------------------------------------------------------------------------------------------
33202    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33203    ---------------------------------------------------------------------------------------------------------------
33204    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33205 
33206    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33207    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33208 
33209    IF xla_accounting_cache_pkg.GetValueChar
33210          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33211          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33212    AND l_bflow_method_code = 'PRIOR_ENTRY'
33213 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33214    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33215          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33216        )
33217    THEN
33218          xla_ae_lines_pkg.BflowUpgEntry
33219            (p_business_method_code    => l_bflow_method_code
33223       NULL;
33220            ,p_business_class_code     => l_bflow_class_code
33221            ,p_balance_type            => l_balance_type_code);
33222    ELSE
33224 -- No business flow processing for business flow method of NONE.
33225    END IF;
33226 
33227    --
33228    -- call analytical criteria
33229    --
33230    
33231    --
33232    -- call description
33233    --
33234    -- No description or it is inherited.
33235    --
33236    -- call ADRs
33237    -- Bug 4922099
33238    --
33239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33240         (NVL(l_actual_upg_option, 'N') = 'O') OR
33241         (NVL(l_enc_upg_option, 'N') = 'O')
33242       )
33243    THEN
33244    NULL;
33245    --
33246    --
33247    
33248   l_ccid := AcctDerRule_10(
33249            p_application_id           => p_application_id
33250          , p_ae_header_id             => l_ae_header_id 
33251 , p_source_4 => p_source_4
33252 , p_source_11 => p_source_11
33253 , p_source_12 => p_source_12
33254          , x_transaction_coa_id       => l_adr_transaction_coa_id
33255          , x_accounting_coa_id        => l_adr_accounting_coa_id
33256          , x_value_type_code          => l_adr_value_type_code
33257          , p_side                     => 'NA'
33258    );
33259 
33260    xla_ae_lines_pkg.set_ccid(
33261     p_code_combination_id          => l_ccid
33262   , p_value_type_code              => l_adr_value_type_code
33263   , p_transaction_coa_id           => l_adr_transaction_coa_id
33264   , p_accounting_coa_id            => l_adr_accounting_coa_id
33265   , p_adr_code                     => 'PA_RECLASS_DEST_ACCT_RULE'
33266   , p_adr_type_code                => 'S'
33267   , p_component_type               => l_component_type
33268   , p_component_code               => l_component_code
33269   , p_component_type_code          => l_component_type_code
33270   , p_component_appl_id            => l_component_appl_id
33271   , p_amb_context_code             => l_amb_context_code
33272   , p_side                         => 'NA'
33273   );
33274 
33275 
33276    --
33277    --
33278    END IF;
33279    --
33280    -- Bug 4922099
33281    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33282           (NVL(l_enc_upg_option, 'N') = 'O')
33283         ) AND
33284         (l_bflow_method_code = 'PRIOR_ENTRY')
33285       )
33286    THEN
33287       IF
33288       --
33289       1 = 2
33290       --
33291       THEN
33292       xla_accounting_err_pkg.build_message
33293                                     (p_appli_s_name            => 'XLA'
33294                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33295                                     ,p_token_1                 => 'LINE_NUMBER'
33296                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33297                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33298                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33299                                                                              l_component_type
33300                                                                             ,l_component_code
33301                                                                             ,l_component_type_code
33302                                                                             ,l_component_appl_id
33303                                                                             ,l_amb_context_code
33304                                                                             ,l_entity_code
33305                                                                             ,l_event_class_code
33306                                                                            )
33307                                     ,p_token_3                 => 'OWNER'
33308                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33309                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33310                                                                           ,p_lookup_code    => l_component_type_code
33311                                                                          )
33312                                     ,p_token_4                 => 'PRODUCT_NAME'
33313                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33314                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33315                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33316                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33317                                     ,p_ae_header_id            =>  NULL
33318                                        );
33319 
33320         IF (C_LEVEL_ERROR>= g_log_level) THEN
33321                  trace
33322                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33323                       ,p_level    => C_LEVEL_ERROR
33324                       ,p_module   => l_log_module);
33325         END IF;
33326       END IF;
33327    END IF;
33328    --
33329    --
33330    ------------------------------------------------------------------------------------------------
33331    -- 4219869 Business Flow
33332    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33333    -- Prior Entry.  Currently, the following code is always generated.
33334    ------------------------------------------------------------------------------------------------
33335    XLA_AE_LINES_PKG.ValidateCurrentLine;
33336 
33337    ------------------------------------------------------------------------------------
33338    -- 4219869 Business Flow
33342 
33339    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33340    ------------------------------------------------------------------------------------
33341    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33343    ----------------------------------------------------------------------------------
33344    -- 4219869 Business Flow
33345    -- Update journal entry status -- Need to generate this within IF <condition>
33346    ----------------------------------------------------------------------------------
33347    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33348          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33349          ,p_balance_type_code => l_balance_type_code
33350          );
33351 
33352    -------------------------------------------------------------------------------------------
33353    -- 4262811 - Generate the Accrual Reversal lines
33354    -------------------------------------------------------------------------------------------
33355    BEGIN
33356       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33357                               (g_array_event(p_event_id).array_value_num('header_index'));
33358       IF l_acc_rev_flag IS NULL THEN
33359          l_acc_rev_flag := 'N';
33360       END IF;
33361    EXCEPTION
33362       WHEN OTHERS THEN
33363          l_acc_rev_flag := 'N';
33364    END;
33365    --
33366    IF (l_acc_rev_flag = 'Y') THEN
33367 
33368        -- 4645092  ------------------------------------------------------------------------------
33369        -- To allow MPA report to determine if it should generate report process
33370        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33371        ------------------------------------------------------------------------------------------
33372 
33373        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33374        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33375 
33376        --
33377        -- Update the line information that should be overwritten
33378        --
33379        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33380                                          p_header_num   => 1);
33381        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33382 
33383        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33384 
33385        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33386           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33387        END IF;
33388 
33389       --
33390       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33391       --
33392       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33393           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33394       ELSE
33395           ---------------------------------------------------------------------------------------------------
33396           -- 4262811a Switch Sign
33397           ---------------------------------------------------------------------------------------------------
33398           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33399           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33400                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33401           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33402                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33403           -- 5132302
33404           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33405                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33406 
33407       END IF;
33408 
33409       -- 4955764
33410       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33411       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33412 
33413 
33414       XLA_AE_LINES_PKG.ValidateCurrentLine;
33415       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33416 
33417       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33418                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33419                ,p_balance_type_code => l_balance_type_code);
33420 
33421    END IF;
33422 
33423    -----------------------------------------------------------------------------------------
33424    -- 4262811 Multiperiod Accounting
33425    -----------------------------------------------------------------------------------------
33426      -- No MPA option is assigned.
33427 
33428 
33429 END IF;
33430 --
33431 
33432 --
33433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33434    trace
33435       (p_msg      => 'END of AcctLineType_73'
33436       ,p_level    => C_LEVEL_PROCEDURE
33437       ,p_module   => l_log_module);
33438 END IF;
33439 --
33440 EXCEPTION
33441   WHEN xla_exceptions_pkg.application_exception THEN
33442       RAISE;
33443   WHEN OTHERS THEN
33444        xla_exceptions_pkg.raise_message
33445            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_73');
33446 END AcctLineType_73;
33447 --
33448 
33449 ---------------------------------------
33450 --
33451 -- PRIVATE FUNCTION
33452 --         AcctLineType_74
33453 --
33454 ---------------------------------------
33455 PROCEDURE AcctLineType_74 (
33456   p_application_id        IN NUMBER
33457  ,p_event_id              IN NUMBER
33458  ,p_calculate_acctd_flag  IN VARCHAR2
33459  ,p_calculate_g_l_flag    IN VARCHAR2
33463  
33460  ,p_actual_flag           IN OUT VARCHAR2
33461  ,p_balance_type_code     OUT VARCHAR2
33462  ,p_gain_or_loss_ref      OUT VARCHAR2
33464 --Allow Account Override Flag
33465  , p_source_4            IN VARCHAR2
33466 --Provider Cost Destination CCID
33467  , p_source_11            IN NUMBER
33468 --Adjustment Provider Cost Destination CCID
33469  , p_source_12            IN NUMBER
33470 --Provider Cost Source CCID
33471  , p_source_13            IN NUMBER
33472 --Reversing Line Flag
33473  , p_source_22            IN VARCHAR2
33474 --Actual Upgrade Credit Accounting Class
33475  , p_source_23            IN VARCHAR2
33476 --Entered Currency Code
33477  , p_source_25            IN VARCHAR2
33478 --Exchange Rate Date
33479  , p_source_27            IN DATE
33480 --Exchange Rate
33481  , p_source_28            IN NUMBER
33482 --Exchange Rate Type
33483  , p_source_29            IN VARCHAR2
33484 --Actual Upgrade Debit Accounting Class
33485  , p_source_30            IN VARCHAR2
33486 --Use Actuals Upgrade Attributes Flag
33487  , p_source_31            IN VARCHAR2
33488 --Expenditure Item ID
33489  , p_source_32            IN NUMBER
33490 --Cost Distribution Line Number
33491  , p_source_33            IN NUMBER
33492 --Line Type
33493  , p_source_34            IN VARCHAR2
33494  , p_source_34_meaning    IN VARCHAR2
33495 --Reversed Line Number
33496  , p_source_35            IN NUMBER
33497 --Entered Amount
33498  , p_source_41            IN NUMBER
33499 --Accounted Amount
33500  , p_source_43            IN NUMBER
33501 )
33502 IS
33503 
33504 l_component_type              VARCHAR2(80);
33505 l_component_code              VARCHAR2(30);
33506 l_component_type_code         VARCHAR2(1);
33507 l_component_appl_id           INTEGER;
33508 l_amb_context_code            VARCHAR2(30);
33509 l_entity_code                 VARCHAR2(30);
33510 l_event_class_code            VARCHAR2(30);
33511 l_ae_header_id                NUMBER;
33512 l_event_type_code             VARCHAR2(30);
33513 l_line_definition_code        VARCHAR2(30);
33514 l_line_definition_owner_code  VARCHAR2(1);
33515 --
33516 -- adr variables
33517 l_segment                     VARCHAR2(30);
33518 l_ccid                        NUMBER;
33519 l_adr_transaction_coa_id      NUMBER;
33520 l_adr_accounting_coa_id       NUMBER;
33521 l_adr_flexfield_segment_code  VARCHAR2(30);
33522 l_adr_flex_value_set_id       NUMBER;
33523 l_adr_value_type_code         VARCHAR2(30);
33524 l_adr_value_combination_id    NUMBER;
33525 l_adr_value_segment_code      VARCHAR2(30);
33526 
33527 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33528 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33529 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33530 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33531 
33532 -- 4262811 Variables ------------------------------------------------------------------------------------------
33533 l_entered_amt_idx             NUMBER;
33534 l_accted_amt_idx              NUMBER;
33535 l_acc_rev_flag                VARCHAR2(1);
33536 l_accrual_line_num            NUMBER;
33537 l_tmp_amt                     NUMBER;
33538 l_acc_rev_natural_side_code   VARCHAR2(1);
33539 
33540 l_num_entries                 NUMBER;
33541 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33542 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33543 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33544 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33545 l_recog_line_1                NUMBER;
33546 l_recog_line_2                NUMBER;
33547 
33548 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33549 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33550 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33551 
33552 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33553 
33554 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33555 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33556 
33557 ---------------------------------------------------------------------------------------------------------------
33558 
33559 
33560 --
33561 -- bulk performance
33562 --
33563 l_balance_type_code           VARCHAR2(1);
33564 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33565 l_log_module                  VARCHAR2(240);
33566 
33567 --
33568 -- Upgrade strategy
33569 --
33570 l_actual_upg_option           VARCHAR2(1);
33571 l_enc_upg_option           VARCHAR2(1);
33572 
33573 --
33574 BEGIN
33575 --
33576 IF g_log_enabled THEN
33577       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
33578 END IF;
33579 --
33580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33581 
33582       trace
33583          (p_msg      => 'BEGIN of AcctLineType_74'
33584          ,p_level    => C_LEVEL_PROCEDURE
33585          ,p_module   => l_log_module);
33586 
33587 END IF;
33588 --
33589 l_component_type             := 'AMB_JLT';
33590 l_component_code             := 'PA_RECLASS_DEST_ADJ';
33591 l_component_type_code        := 'S';
33592 l_component_appl_id          :=  275;
33593 l_amb_context_code           := 'DEFAULT';
33594 l_entity_code                := 'EXPENDITURES';
33595 l_event_class_code           := 'PRVDR_RECVR_RECLASS_ADJ';
33596 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
33597 l_line_definition_owner_code := 'S';
33598 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
33599 --
33600 l_balance_type_code          := 'A';
33601 l_segment                     := NULL;
33605 l_adr_flexfield_segment_code  := NULL;
33602 l_ccid                        := NULL;
33603 l_adr_transaction_coa_id      := NULL;
33604 l_adr_accounting_coa_id       := NULL;
33606 l_adr_flex_value_set_id       := NULL;
33607 l_adr_value_type_code         := NULL;
33608 l_adr_value_combination_id    := NULL;
33609 l_adr_value_segment_code      := NULL;
33610 
33611 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33612 l_bflow_class_code           := '';    -- 4219869 Business Flow
33613 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33614 l_budgetary_control_flag     := 'N';
33615 
33616 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33617 l_bflow_applied_to_amt       := NULL; -- 5132302
33618 l_entered_amt_idx            := NULL;          -- 4262811
33619 l_accted_amt_idx             := NULL;          -- 4262811
33620 l_acc_rev_flag               := NULL;          -- 4262811
33621 l_accrual_line_num           := NULL;          -- 4262811
33622 l_tmp_amt                    := NULL;          -- 4262811
33623 --
33624  
33625 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33626     l_balance_type_code <> 'B' THEN
33627 
33628    --
33629    XLA_AE_LINES_PKG.SetNewLine;
33630 
33631    p_balance_type_code          := l_balance_type_code;
33632    -- set the flag so later we will know whether the gain loss line needs to be created
33633    
33634    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33635      p_actual_flag :='A';
33636    END IF;
33637 
33638    --
33639    -- bulk performance
33640    --
33641    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33642                                       p_header_num   => 0); -- 4262811
33643    --
33644    -- set accounting line options
33645    --
33646    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33647            p_natural_side_code          => 'D'
33648          , p_gain_or_loss_flag          => 'N'
33649          , p_gl_transfer_mode_code      => 'S'
33650          , p_acct_entry_type_code       => 'A'
33651          , p_switch_side_flag           => 'Y'
33652          , p_merge_duplicate_code       => 'N'
33653          );
33654    --
33655    l_acc_rev_natural_side_code := 'C';  -- 4262811
33656    -- 
33657    --
33658    -- set accounting line type info
33659    --
33660    xla_ae_lines_pkg.SetAcctLineType
33661       (p_component_type             => l_component_type
33662       ,p_event_type_code            => l_event_type_code
33663       ,p_line_definition_owner_code => l_line_definition_owner_code
33664       ,p_line_definition_code       => l_line_definition_code
33665       ,p_accounting_line_code       => l_component_code
33666       ,p_accounting_line_type_code  => l_component_type_code
33667       ,p_accounting_line_appl_id    => l_component_appl_id
33668       ,p_amb_context_code           => l_amb_context_code
33669       ,p_entity_code                => l_entity_code
33670       ,p_event_class_code           => l_event_class_code);
33671    --
33672    -- set accounting class
33673    --
33674    xla_ae_lines_pkg.SetAcctClass(
33675            p_accounting_class_code  => 'RECLASS_DESTINATION'
33676          , p_ae_header_id           => l_ae_header_id
33677          );
33678 
33679    --
33680    -- set rounding class
33681    --
33682    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33683                       'RECLASS_DESTINATION';
33684 
33685    --
33686    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33687    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33688    --
33689    -- bulk performance
33690    --
33691    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33692 
33693    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33694       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33695 
33696    -- 4955764
33697    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33698       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33699 
33700    -- 4458381 Public Sector Enh
33701    
33702    --
33703    -- set accounting attributes for the line type
33704    --
33705    l_entered_amt_idx := 22;
33706    l_accted_amt_idx  := 27;
33707    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33708    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33709    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
33710    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
33711    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
33712    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
33713    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
33714    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
33715    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
33716    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
33717    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
33718    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
33719    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
33720    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
33721    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
33722    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
33723    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
33724    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
33725    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
33726    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
33730    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
33727    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
33728    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
33729    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
33731    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
33732    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
33733    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
33734    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
33735    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
33736    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
33737    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
33738    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
33739    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
33740    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
33741    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
33742    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
33743    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
33744    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
33745    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
33746    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
33747    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
33748    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
33749    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
33750    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
33751    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
33752    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
33753    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
33754    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
33755    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
33756    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
33757    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
33758    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
33759    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
33760    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
33761    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
33762    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
33763    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
33764    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
33765    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
33766    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
33767    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
33768 
33769    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33770    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33771 
33772    ---------------------------------------------------------------------------------------------------------------
33773    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33774    ---------------------------------------------------------------------------------------------------------------
33775    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33776 
33777    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33778    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33779 
33780    IF xla_accounting_cache_pkg.GetValueChar
33781          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33782          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33783    AND l_bflow_method_code = 'PRIOR_ENTRY'
33784 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33785    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33786          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33787        )
33788    THEN
33789          xla_ae_lines_pkg.BflowUpgEntry
33790            (p_business_method_code    => l_bflow_method_code
33791            ,p_business_class_code     => l_bflow_class_code
33792            ,p_balance_type            => l_balance_type_code);
33793    ELSE
33794       NULL;
33795 -- No business flow processing for business flow method of NONE.
33796    END IF;
33797 
33798    --
33799    -- call analytical criteria
33800    --
33801    
33802    --
33803    -- call description
33804    --
33805    -- No description or it is inherited.
33806    --
33807    -- call ADRs
33808    -- Bug 4922099
33809    --
33810    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33811         (NVL(l_actual_upg_option, 'N') = 'O') OR
33812         (NVL(l_enc_upg_option, 'N') = 'O')
33813       )
33814    THEN
33815    NULL;
33816    --
33817    --
33818    
33819   l_ccid := AcctDerRule_11(
33820            p_application_id           => p_application_id
33821          , p_ae_header_id             => l_ae_header_id 
33822 , p_source_4 => p_source_4
33823 , p_source_12 => p_source_12
33824          , x_transaction_coa_id       => l_adr_transaction_coa_id
33825          , x_accounting_coa_id        => l_adr_accounting_coa_id
33826          , x_value_type_code          => l_adr_value_type_code
33827          , p_side                     => 'NA'
33828    );
33829 
33830    xla_ae_lines_pkg.set_ccid(
33831     p_code_combination_id          => l_ccid
33832   , p_value_type_code              => l_adr_value_type_code
33833   , p_transaction_coa_id           => l_adr_transaction_coa_id
33834   , p_accounting_coa_id            => l_adr_accounting_coa_id
33835   , p_adr_code                     => 'PA_RECLASS_DEST_ADJ_ACCT_RULE'
33836   , p_adr_type_code                => 'S'
33840   , p_component_appl_id            => l_component_appl_id
33837   , p_component_type               => l_component_type
33838   , p_component_code               => l_component_code
33839   , p_component_type_code          => l_component_type_code
33841   , p_amb_context_code             => l_amb_context_code
33842   , p_side                         => 'NA'
33843   );
33844 
33845 
33846    --
33847    --
33848    END IF;
33849    --
33850    -- Bug 4922099
33851    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33852           (NVL(l_enc_upg_option, 'N') = 'O')
33853         ) AND
33854         (l_bflow_method_code = 'PRIOR_ENTRY')
33855       )
33856    THEN
33857       IF
33858       --
33859       1 = 2
33860       --
33861       THEN
33862       xla_accounting_err_pkg.build_message
33863                                     (p_appli_s_name            => 'XLA'
33864                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33865                                     ,p_token_1                 => 'LINE_NUMBER'
33866                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33867                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33868                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33869                                                                              l_component_type
33870                                                                             ,l_component_code
33871                                                                             ,l_component_type_code
33872                                                                             ,l_component_appl_id
33873                                                                             ,l_amb_context_code
33874                                                                             ,l_entity_code
33875                                                                             ,l_event_class_code
33876                                                                            )
33877                                     ,p_token_3                 => 'OWNER'
33878                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33879                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33880                                                                           ,p_lookup_code    => l_component_type_code
33881                                                                          )
33882                                     ,p_token_4                 => 'PRODUCT_NAME'
33883                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33884                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33885                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33886                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33887                                     ,p_ae_header_id            =>  NULL
33888                                        );
33889 
33890         IF (C_LEVEL_ERROR>= g_log_level) THEN
33891                  trace
33892                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33893                       ,p_level    => C_LEVEL_ERROR
33894                       ,p_module   => l_log_module);
33895         END IF;
33896       END IF;
33897    END IF;
33898    --
33899    --
33900    ------------------------------------------------------------------------------------------------
33901    -- 4219869 Business Flow
33902    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33903    -- Prior Entry.  Currently, the following code is always generated.
33904    ------------------------------------------------------------------------------------------------
33905    XLA_AE_LINES_PKG.ValidateCurrentLine;
33906 
33907    ------------------------------------------------------------------------------------
33908    -- 4219869 Business Flow
33909    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33910    ------------------------------------------------------------------------------------
33911    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33912 
33913    ----------------------------------------------------------------------------------
33914    -- 4219869 Business Flow
33915    -- Update journal entry status -- Need to generate this within IF <condition>
33916    ----------------------------------------------------------------------------------
33917    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33918          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33919          ,p_balance_type_code => l_balance_type_code
33920          );
33921 
33922    -------------------------------------------------------------------------------------------
33923    -- 4262811 - Generate the Accrual Reversal lines
33924    -------------------------------------------------------------------------------------------
33925    BEGIN
33926       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33927                               (g_array_event(p_event_id).array_value_num('header_index'));
33928       IF l_acc_rev_flag IS NULL THEN
33929          l_acc_rev_flag := 'N';
33930       END IF;
33931    EXCEPTION
33932       WHEN OTHERS THEN
33933          l_acc_rev_flag := 'N';
33934    END;
33935    --
33936    IF (l_acc_rev_flag = 'Y') THEN
33937 
33938        -- 4645092  ------------------------------------------------------------------------------
33939        -- To allow MPA report to determine if it should generate report process
33940        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33941        ------------------------------------------------------------------------------------------
33942 
33946        --
33943        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33944        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33945 
33947        -- Update the line information that should be overwritten
33948        --
33949        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33950                                          p_header_num   => 1);
33951        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33952 
33953        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33954 
33955        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33956           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33957        END IF;
33958 
33959       --
33960       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33961       --
33962       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33963           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33964       ELSE
33965           ---------------------------------------------------------------------------------------------------
33966           -- 4262811a Switch Sign
33967           ---------------------------------------------------------------------------------------------------
33968           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33969           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33970                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33971           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33972                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33973           -- 5132302
33974           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33975                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33976 
33977       END IF;
33978 
33979       -- 4955764
33980       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33981       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33982 
33983 
33984       XLA_AE_LINES_PKG.ValidateCurrentLine;
33985       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33986 
33987       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33988                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33989                ,p_balance_type_code => l_balance_type_code);
33990 
33991    END IF;
33992 
33993    -----------------------------------------------------------------------------------------
33994    -- 4262811 Multiperiod Accounting
33995    -----------------------------------------------------------------------------------------
33996      -- No MPA option is assigned.
33997 
33998 
33999 END IF;
34000 --
34001 
34002 --
34003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34004    trace
34005       (p_msg      => 'END of AcctLineType_74'
34006       ,p_level    => C_LEVEL_PROCEDURE
34007       ,p_module   => l_log_module);
34008 END IF;
34009 --
34010 EXCEPTION
34011   WHEN xla_exceptions_pkg.application_exception THEN
34012       RAISE;
34013   WHEN OTHERS THEN
34014        xla_exceptions_pkg.raise_message
34015            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_74');
34016 END AcctLineType_74;
34017 --
34018 
34019 ---------------------------------------
34020 --
34021 -- PRIVATE FUNCTION
34022 --         AcctLineType_75
34023 --
34024 ---------------------------------------
34025 PROCEDURE AcctLineType_75 (
34026   p_application_id        IN NUMBER
34027  ,p_event_id              IN NUMBER
34028  ,p_calculate_acctd_flag  IN VARCHAR2
34029  ,p_calculate_g_l_flag    IN VARCHAR2
34030  ,p_actual_flag           IN OUT VARCHAR2
34031  ,p_balance_type_code     OUT VARCHAR2
34032  ,p_gain_or_loss_ref      OUT VARCHAR2
34033  
34034 --Allow Account Override Flag
34035  , p_source_4            IN VARCHAR2
34036 --Provider Cost Destination CCID
34037  , p_source_11            IN NUMBER
34038 --Provider Cost Source CCID
34039  , p_source_13            IN NUMBER
34040 --Adjustment Provider Cost Source CCID
34041  , p_source_14            IN NUMBER
34042 --Reversing Line Flag
34043  , p_source_22            IN VARCHAR2
34044 --Actual Upgrade Credit Accounting Class
34045  , p_source_23            IN VARCHAR2
34046 --Entered Currency Code
34047  , p_source_25            IN VARCHAR2
34048 --Exchange Rate Date
34049  , p_source_27            IN DATE
34050 --Exchange Rate
34051  , p_source_28            IN NUMBER
34052 --Exchange Rate Type
34053  , p_source_29            IN VARCHAR2
34054 --Actual Upgrade Debit Accounting Class
34055  , p_source_30            IN VARCHAR2
34056 --Use Actuals Upgrade Attributes Flag
34057  , p_source_31            IN VARCHAR2
34058 --Expenditure Item ID
34059  , p_source_32            IN NUMBER
34060 --Cost Distribution Line Number
34061  , p_source_33            IN NUMBER
34062 --Line Type
34063  , p_source_34            IN VARCHAR2
34064  , p_source_34_meaning    IN VARCHAR2
34065 --Reversed Line Number
34066  , p_source_35            IN NUMBER
34067 --Entered Amount
34068  , p_source_41            IN NUMBER
34069 --Accounted Amount
34070  , p_source_43            IN NUMBER
34071 )
34072 IS
34073 
34074 l_component_type              VARCHAR2(80);
34075 l_component_code              VARCHAR2(30);
34076 l_component_type_code         VARCHAR2(1);
34080 l_event_class_code            VARCHAR2(30);
34077 l_component_appl_id           INTEGER;
34078 l_amb_context_code            VARCHAR2(30);
34079 l_entity_code                 VARCHAR2(30);
34081 l_ae_header_id                NUMBER;
34082 l_event_type_code             VARCHAR2(30);
34083 l_line_definition_code        VARCHAR2(30);
34084 l_line_definition_owner_code  VARCHAR2(1);
34085 --
34086 -- adr variables
34087 l_segment                     VARCHAR2(30);
34088 l_ccid                        NUMBER;
34089 l_adr_transaction_coa_id      NUMBER;
34090 l_adr_accounting_coa_id       NUMBER;
34091 l_adr_flexfield_segment_code  VARCHAR2(30);
34092 l_adr_flex_value_set_id       NUMBER;
34093 l_adr_value_type_code         VARCHAR2(30);
34094 l_adr_value_combination_id    NUMBER;
34095 l_adr_value_segment_code      VARCHAR2(30);
34096 
34097 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34098 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34099 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34100 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34101 
34102 -- 4262811 Variables ------------------------------------------------------------------------------------------
34103 l_entered_amt_idx             NUMBER;
34104 l_accted_amt_idx              NUMBER;
34105 l_acc_rev_flag                VARCHAR2(1);
34106 l_accrual_line_num            NUMBER;
34107 l_tmp_amt                     NUMBER;
34108 l_acc_rev_natural_side_code   VARCHAR2(1);
34109 
34110 l_num_entries                 NUMBER;
34111 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34112 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34113 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34114 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34115 l_recog_line_1                NUMBER;
34116 l_recog_line_2                NUMBER;
34117 
34118 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34119 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34120 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34121 
34122 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34123 
34124 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34125 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34126 
34127 ---------------------------------------------------------------------------------------------------------------
34128 
34129 
34130 --
34131 -- bulk performance
34132 --
34133 l_balance_type_code           VARCHAR2(1);
34134 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34135 l_log_module                  VARCHAR2(240);
34136 
34137 --
34138 -- Upgrade strategy
34139 --
34140 l_actual_upg_option           VARCHAR2(1);
34141 l_enc_upg_option           VARCHAR2(1);
34142 
34143 --
34144 BEGIN
34145 --
34146 IF g_log_enabled THEN
34147       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
34148 END IF;
34149 --
34150 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34151 
34152       trace
34153          (p_msg      => 'BEGIN of AcctLineType_75'
34154          ,p_level    => C_LEVEL_PROCEDURE
34155          ,p_module   => l_log_module);
34156 
34157 END IF;
34158 --
34159 l_component_type             := 'AMB_JLT';
34160 l_component_code             := 'PA_RECLASS_SOURCE';
34161 l_component_type_code        := 'S';
34162 l_component_appl_id          :=  275;
34163 l_amb_context_code           := 'DEFAULT';
34164 l_entity_code                := 'EXPENDITURES';
34165 l_event_class_code           := 'PRVDR_RECVR_RECLASS';
34166 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ALL';
34167 l_line_definition_owner_code := 'S';
34168 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
34169 --
34170 l_balance_type_code          := 'A';
34171 l_segment                     := NULL;
34172 l_ccid                        := NULL;
34173 l_adr_transaction_coa_id      := NULL;
34174 l_adr_accounting_coa_id       := NULL;
34175 l_adr_flexfield_segment_code  := NULL;
34176 l_adr_flex_value_set_id       := NULL;
34177 l_adr_value_type_code         := NULL;
34178 l_adr_value_combination_id    := NULL;
34179 l_adr_value_segment_code      := NULL;
34180 
34181 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34182 l_bflow_class_code           := '';    -- 4219869 Business Flow
34183 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34184 l_budgetary_control_flag     := 'N';
34185 
34186 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34187 l_bflow_applied_to_amt       := NULL; -- 5132302
34188 l_entered_amt_idx            := NULL;          -- 4262811
34189 l_accted_amt_idx             := NULL;          -- 4262811
34190 l_acc_rev_flag               := NULL;          -- 4262811
34191 l_accrual_line_num           := NULL;          -- 4262811
34192 l_tmp_amt                    := NULL;          -- 4262811
34193 --
34194  
34195 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34196     l_balance_type_code <> 'B' THEN
34197 
34198    --
34199    XLA_AE_LINES_PKG.SetNewLine;
34200 
34201    p_balance_type_code          := l_balance_type_code;
34202    -- set the flag so later we will know whether the gain loss line needs to be created
34203    
34204    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34205      p_actual_flag :='A';
34206    END IF;
34207 
34208    --
34209    -- bulk performance
34210    --
34211    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34212                                       p_header_num   => 0); -- 4262811
34213    --
34217            p_natural_side_code          => 'C'
34214    -- set accounting line options
34215    --
34216    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34218          , p_gain_or_loss_flag          => 'N'
34219          , p_gl_transfer_mode_code      => 'S'
34220          , p_acct_entry_type_code       => 'A'
34221          , p_switch_side_flag           => 'Y'
34222          , p_merge_duplicate_code       => 'N'
34223          );
34224    --
34225    l_acc_rev_natural_side_code := 'D';  -- 4262811
34226    -- 
34227    --
34228    -- set accounting line type info
34229    --
34230    xla_ae_lines_pkg.SetAcctLineType
34231       (p_component_type             => l_component_type
34232       ,p_event_type_code            => l_event_type_code
34233       ,p_line_definition_owner_code => l_line_definition_owner_code
34234       ,p_line_definition_code       => l_line_definition_code
34235       ,p_accounting_line_code       => l_component_code
34236       ,p_accounting_line_type_code  => l_component_type_code
34237       ,p_accounting_line_appl_id    => l_component_appl_id
34238       ,p_amb_context_code           => l_amb_context_code
34239       ,p_entity_code                => l_entity_code
34240       ,p_event_class_code           => l_event_class_code);
34241    --
34242    -- set accounting class
34243    --
34244    xla_ae_lines_pkg.SetAcctClass(
34245            p_accounting_class_code  => 'RECLASS_SOURCE'
34246          , p_ae_header_id           => l_ae_header_id
34247          );
34248 
34249    --
34250    -- set rounding class
34251    --
34252    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34253                       'RECLASS_SOURCE';
34254 
34255    --
34256    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34257    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34258    --
34259    -- bulk performance
34260    --
34261    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34262 
34263    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34264       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34265 
34266    -- 4955764
34267    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34268       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34269 
34270    -- 4458381 Public Sector Enh
34271    
34272    --
34273    -- set accounting attributes for the line type
34274    --
34275    l_entered_amt_idx := 22;
34276    l_accted_amt_idx  := 27;
34277    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34278    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34279    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
34280    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
34281    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
34282    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
34283    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
34284    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
34285    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
34286    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
34287    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
34288    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
34289    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
34290    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
34291    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
34292    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
34293    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
34294    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
34295    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
34296    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
34297    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
34298    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
34299    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
34300    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
34301    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
34302    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
34303    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
34304    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
34305    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
34306    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
34307    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
34308    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
34309    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
34310    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
34311    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
34312    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
34313    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
34314    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
34315    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
34316    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
34317    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
34318    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
34319    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
34320    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
34321    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
34322    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
34323    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
34327    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
34324    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
34325    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
34326    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
34328    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
34329    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
34330    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
34331    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
34332    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
34333    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
34334    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
34335    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
34336    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
34337    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
34338 
34339    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34340    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34341 
34342    ---------------------------------------------------------------------------------------------------------------
34343    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34344    ---------------------------------------------------------------------------------------------------------------
34345    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34346 
34347    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34348    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34349 
34350    IF xla_accounting_cache_pkg.GetValueChar
34351          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34352          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34353    AND l_bflow_method_code = 'PRIOR_ENTRY'
34354 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34355    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34356          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34357        )
34358    THEN
34359          xla_ae_lines_pkg.BflowUpgEntry
34360            (p_business_method_code    => l_bflow_method_code
34361            ,p_business_class_code     => l_bflow_class_code
34362            ,p_balance_type            => l_balance_type_code);
34363    ELSE
34364       NULL;
34365 -- No business flow processing for business flow method of NONE.
34366    END IF;
34367 
34368    --
34369    -- call analytical criteria
34370    --
34371    
34372    --
34373    -- call description
34374    --
34375    -- No description or it is inherited.
34376    --
34377    -- call ADRs
34378    -- Bug 4922099
34379    --
34380    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34381         (NVL(l_actual_upg_option, 'N') = 'O') OR
34382         (NVL(l_enc_upg_option, 'N') = 'O')
34383       )
34384    THEN
34385    NULL;
34386    --
34387    --
34388    
34389   l_ccid := AcctDerRule_12(
34390            p_application_id           => p_application_id
34391          , p_ae_header_id             => l_ae_header_id 
34392 , p_source_4 => p_source_4
34393 , p_source_13 => p_source_13
34394 , p_source_14 => p_source_14
34395          , x_transaction_coa_id       => l_adr_transaction_coa_id
34396          , x_accounting_coa_id        => l_adr_accounting_coa_id
34397          , x_value_type_code          => l_adr_value_type_code
34398          , p_side                     => 'NA'
34399    );
34400 
34401    xla_ae_lines_pkg.set_ccid(
34402     p_code_combination_id          => l_ccid
34403   , p_value_type_code              => l_adr_value_type_code
34404   , p_transaction_coa_id           => l_adr_transaction_coa_id
34405   , p_accounting_coa_id            => l_adr_accounting_coa_id
34406   , p_adr_code                     => 'PA_RECLASS_SOURCE_ACCT_RULE'
34407   , p_adr_type_code                => 'S'
34408   , p_component_type               => l_component_type
34409   , p_component_code               => l_component_code
34410   , p_component_type_code          => l_component_type_code
34411   , p_component_appl_id            => l_component_appl_id
34412   , p_amb_context_code             => l_amb_context_code
34413   , p_side                         => 'NA'
34414   );
34415 
34416 
34417    --
34418    --
34419    END IF;
34420    --
34421    -- Bug 4922099
34422    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34423           (NVL(l_enc_upg_option, 'N') = 'O')
34424         ) AND
34425         (l_bflow_method_code = 'PRIOR_ENTRY')
34426       )
34427    THEN
34428       IF
34429       --
34430       1 = 2
34431       --
34432       THEN
34433       xla_accounting_err_pkg.build_message
34434                                     (p_appli_s_name            => 'XLA'
34435                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34436                                     ,p_token_1                 => 'LINE_NUMBER'
34437                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34438                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34439                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34440                                                                              l_component_type
34441                                                                             ,l_component_code
34442                                                                             ,l_component_type_code
34443                                                                             ,l_component_appl_id
34447                                                                            )
34444                                                                             ,l_amb_context_code
34445                                                                             ,l_entity_code
34446                                                                             ,l_event_class_code
34448                                     ,p_token_3                 => 'OWNER'
34449                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34450                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34451                                                                           ,p_lookup_code    => l_component_type_code
34452                                                                          )
34453                                     ,p_token_4                 => 'PRODUCT_NAME'
34454                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34455                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34456                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34457                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34458                                     ,p_ae_header_id            =>  NULL
34459                                        );
34460 
34461         IF (C_LEVEL_ERROR>= g_log_level) THEN
34462                  trace
34463                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34464                       ,p_level    => C_LEVEL_ERROR
34465                       ,p_module   => l_log_module);
34466         END IF;
34467       END IF;
34468    END IF;
34469    --
34470    --
34471    ------------------------------------------------------------------------------------------------
34472    -- 4219869 Business Flow
34473    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34474    -- Prior Entry.  Currently, the following code is always generated.
34475    ------------------------------------------------------------------------------------------------
34476    XLA_AE_LINES_PKG.ValidateCurrentLine;
34477 
34478    ------------------------------------------------------------------------------------
34479    -- 4219869 Business Flow
34480    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34481    ------------------------------------------------------------------------------------
34482    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34483 
34484    ----------------------------------------------------------------------------------
34485    -- 4219869 Business Flow
34486    -- Update journal entry status -- Need to generate this within IF <condition>
34487    ----------------------------------------------------------------------------------
34488    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34489          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34490          ,p_balance_type_code => l_balance_type_code
34491          );
34492 
34493    -------------------------------------------------------------------------------------------
34494    -- 4262811 - Generate the Accrual Reversal lines
34495    -------------------------------------------------------------------------------------------
34496    BEGIN
34497       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34498                               (g_array_event(p_event_id).array_value_num('header_index'));
34499       IF l_acc_rev_flag IS NULL THEN
34500          l_acc_rev_flag := 'N';
34501       END IF;
34502    EXCEPTION
34503       WHEN OTHERS THEN
34504          l_acc_rev_flag := 'N';
34505    END;
34506    --
34507    IF (l_acc_rev_flag = 'Y') THEN
34508 
34509        -- 4645092  ------------------------------------------------------------------------------
34510        -- To allow MPA report to determine if it should generate report process
34511        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34512        ------------------------------------------------------------------------------------------
34513 
34514        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34515        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34516 
34517        --
34518        -- Update the line information that should be overwritten
34519        --
34520        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34521                                          p_header_num   => 1);
34522        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34523 
34524        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34525 
34526        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34527           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34528        END IF;
34529 
34530       --
34531       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34532       --
34533       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34534           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34535       ELSE
34536           ---------------------------------------------------------------------------------------------------
34537           -- 4262811a Switch Sign
34538           ---------------------------------------------------------------------------------------------------
34539           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34540           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34541                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34545           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34542           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34543                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34544           -- 5132302
34546                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34547 
34548       END IF;
34549 
34550       -- 4955764
34551       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34552       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34553 
34554 
34555       XLA_AE_LINES_PKG.ValidateCurrentLine;
34556       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34557 
34558       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34559                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34560                ,p_balance_type_code => l_balance_type_code);
34561 
34562    END IF;
34563 
34564    -----------------------------------------------------------------------------------------
34565    -- 4262811 Multiperiod Accounting
34566    -----------------------------------------------------------------------------------------
34567      -- No MPA option is assigned.
34568 
34569 
34570 END IF;
34571 --
34572 
34573 --
34574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34575    trace
34576       (p_msg      => 'END of AcctLineType_75'
34577       ,p_level    => C_LEVEL_PROCEDURE
34578       ,p_module   => l_log_module);
34579 END IF;
34580 --
34581 EXCEPTION
34582   WHEN xla_exceptions_pkg.application_exception THEN
34583       RAISE;
34584   WHEN OTHERS THEN
34585        xla_exceptions_pkg.raise_message
34586            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_75');
34587 END AcctLineType_75;
34588 --
34589 
34590 ---------------------------------------
34591 --
34592 -- PRIVATE FUNCTION
34593 --         AcctLineType_76
34594 --
34595 ---------------------------------------
34596 PROCEDURE AcctLineType_76 (
34597   p_application_id        IN NUMBER
34598  ,p_event_id              IN NUMBER
34599  ,p_calculate_acctd_flag  IN VARCHAR2
34600  ,p_calculate_g_l_flag    IN VARCHAR2
34601  ,p_actual_flag           IN OUT VARCHAR2
34602  ,p_balance_type_code     OUT VARCHAR2
34603  ,p_gain_or_loss_ref      OUT VARCHAR2
34604  
34605 --Allow Account Override Flag
34606  , p_source_4            IN VARCHAR2
34607 --Provider Cost Destination CCID
34608  , p_source_11            IN NUMBER
34609 --Provider Cost Source CCID
34610  , p_source_13            IN NUMBER
34611 --Adjustment Provider Cost Source CCID
34612  , p_source_14            IN NUMBER
34613 --Reversing Line Flag
34614  , p_source_22            IN VARCHAR2
34615 --Actual Upgrade Credit Accounting Class
34616  , p_source_23            IN VARCHAR2
34617 --Entered Currency Code
34618  , p_source_25            IN VARCHAR2
34619 --Exchange Rate Date
34620  , p_source_27            IN DATE
34621 --Exchange Rate
34622  , p_source_28            IN NUMBER
34623 --Exchange Rate Type
34624  , p_source_29            IN VARCHAR2
34625 --Actual Upgrade Debit Accounting Class
34626  , p_source_30            IN VARCHAR2
34627 --Use Actuals Upgrade Attributes Flag
34628  , p_source_31            IN VARCHAR2
34629 --Expenditure Item ID
34630  , p_source_32            IN NUMBER
34631 --Cost Distribution Line Number
34632  , p_source_33            IN NUMBER
34633 --Line Type
34634  , p_source_34            IN VARCHAR2
34635  , p_source_34_meaning    IN VARCHAR2
34636 --Reversed Line Number
34637  , p_source_35            IN NUMBER
34638 --Entered Amount
34639  , p_source_41            IN NUMBER
34640 --Accounted Amount
34641  , p_source_43            IN NUMBER
34642 )
34643 IS
34644 
34645 l_component_type              VARCHAR2(80);
34646 l_component_code              VARCHAR2(30);
34647 l_component_type_code         VARCHAR2(1);
34648 l_component_appl_id           INTEGER;
34649 l_amb_context_code            VARCHAR2(30);
34650 l_entity_code                 VARCHAR2(30);
34651 l_event_class_code            VARCHAR2(30);
34652 l_ae_header_id                NUMBER;
34653 l_event_type_code             VARCHAR2(30);
34654 l_line_definition_code        VARCHAR2(30);
34655 l_line_definition_owner_code  VARCHAR2(1);
34656 --
34657 -- adr variables
34658 l_segment                     VARCHAR2(30);
34659 l_ccid                        NUMBER;
34660 l_adr_transaction_coa_id      NUMBER;
34661 l_adr_accounting_coa_id       NUMBER;
34662 l_adr_flexfield_segment_code  VARCHAR2(30);
34663 l_adr_flex_value_set_id       NUMBER;
34664 l_adr_value_type_code         VARCHAR2(30);
34665 l_adr_value_combination_id    NUMBER;
34666 l_adr_value_segment_code      VARCHAR2(30);
34667 
34668 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34669 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34670 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34671 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34672 
34673 -- 4262811 Variables ------------------------------------------------------------------------------------------
34674 l_entered_amt_idx             NUMBER;
34675 l_accted_amt_idx              NUMBER;
34676 l_acc_rev_flag                VARCHAR2(1);
34677 l_accrual_line_num            NUMBER;
34678 l_tmp_amt                     NUMBER;
34679 l_acc_rev_natural_side_code   VARCHAR2(1);
34680 
34681 l_num_entries                 NUMBER;
34682 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34683 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34687 l_recog_line_2                NUMBER;
34684 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34685 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34686 l_recog_line_1                NUMBER;
34688 
34689 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34690 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34691 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34692 
34693 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34694 
34695 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34696 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34697 
34698 ---------------------------------------------------------------------------------------------------------------
34699 
34700 
34701 --
34702 -- bulk performance
34703 --
34704 l_balance_type_code           VARCHAR2(1);
34705 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34706 l_log_module                  VARCHAR2(240);
34707 
34708 --
34709 -- Upgrade strategy
34710 --
34711 l_actual_upg_option           VARCHAR2(1);
34712 l_enc_upg_option           VARCHAR2(1);
34713 
34714 --
34715 BEGIN
34716 --
34717 IF g_log_enabled THEN
34718       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
34719 END IF;
34720 --
34721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34722 
34723       trace
34724          (p_msg      => 'BEGIN of AcctLineType_76'
34725          ,p_level    => C_LEVEL_PROCEDURE
34726          ,p_module   => l_log_module);
34727 
34728 END IF;
34729 --
34730 l_component_type             := 'AMB_JLT';
34731 l_component_code             := 'PA_RECLASS_SOURCE_ADJ';
34732 l_component_type_code        := 'S';
34733 l_component_appl_id          :=  275;
34734 l_amb_context_code           := 'DEFAULT';
34735 l_entity_code                := 'EXPENDITURES';
34736 l_event_class_code           := 'PRVDR_RECVR_RECLASS_ADJ';
34737 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
34738 l_line_definition_owner_code := 'S';
34739 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
34740 --
34741 l_balance_type_code          := 'A';
34742 l_segment                     := NULL;
34743 l_ccid                        := NULL;
34744 l_adr_transaction_coa_id      := NULL;
34745 l_adr_accounting_coa_id       := NULL;
34746 l_adr_flexfield_segment_code  := NULL;
34747 l_adr_flex_value_set_id       := NULL;
34748 l_adr_value_type_code         := NULL;
34749 l_adr_value_combination_id    := NULL;
34750 l_adr_value_segment_code      := NULL;
34751 
34752 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34753 l_bflow_class_code           := '';    -- 4219869 Business Flow
34754 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34755 l_budgetary_control_flag     := 'N';
34756 
34757 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34758 l_bflow_applied_to_amt       := NULL; -- 5132302
34759 l_entered_amt_idx            := NULL;          -- 4262811
34760 l_accted_amt_idx             := NULL;          -- 4262811
34761 l_acc_rev_flag               := NULL;          -- 4262811
34762 l_accrual_line_num           := NULL;          -- 4262811
34763 l_tmp_amt                    := NULL;          -- 4262811
34764 --
34765  
34766 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34767     l_balance_type_code <> 'B' THEN
34768 
34769    --
34770    XLA_AE_LINES_PKG.SetNewLine;
34771 
34772    p_balance_type_code          := l_balance_type_code;
34773    -- set the flag so later we will know whether the gain loss line needs to be created
34774    
34775    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34776      p_actual_flag :='A';
34777    END IF;
34778 
34779    --
34780    -- bulk performance
34781    --
34782    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34783                                       p_header_num   => 0); -- 4262811
34784    --
34785    -- set accounting line options
34786    --
34787    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34788            p_natural_side_code          => 'C'
34789          , p_gain_or_loss_flag          => 'N'
34790          , p_gl_transfer_mode_code      => 'S'
34791          , p_acct_entry_type_code       => 'A'
34792          , p_switch_side_flag           => 'Y'
34793          , p_merge_duplicate_code       => 'N'
34794          );
34795    --
34796    l_acc_rev_natural_side_code := 'D';  -- 4262811
34797    -- 
34798    --
34799    -- set accounting line type info
34800    --
34801    xla_ae_lines_pkg.SetAcctLineType
34802       (p_component_type             => l_component_type
34803       ,p_event_type_code            => l_event_type_code
34804       ,p_line_definition_owner_code => l_line_definition_owner_code
34805       ,p_line_definition_code       => l_line_definition_code
34806       ,p_accounting_line_code       => l_component_code
34807       ,p_accounting_line_type_code  => l_component_type_code
34808       ,p_accounting_line_appl_id    => l_component_appl_id
34809       ,p_amb_context_code           => l_amb_context_code
34810       ,p_entity_code                => l_entity_code
34811       ,p_event_class_code           => l_event_class_code);
34812    --
34813    -- set accounting class
34814    --
34815    xla_ae_lines_pkg.SetAcctClass(
34816            p_accounting_class_code  => 'RECLASS_SOURCE'
34817          , p_ae_header_id           => l_ae_header_id
34818          );
34819 
34820    --
34821    -- set rounding class
34822    --
34823    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34827    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34824                       'RECLASS_SOURCE';
34825 
34826    --
34828    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34829    --
34830    -- bulk performance
34831    --
34832    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34833 
34834    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34835       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34836 
34837    -- 4955764
34838    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34839       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34840 
34841    -- 4458381 Public Sector Enh
34842    
34843    --
34844    -- set accounting attributes for the line type
34845    --
34846    l_entered_amt_idx := 22;
34847    l_accted_amt_idx  := 27;
34848    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34849    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34850    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
34851    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
34852    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
34853    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
34854    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
34855    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
34856    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
34857    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
34858    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
34859    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
34860    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
34861    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
34862    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
34863    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
34864    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
34865    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
34866    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
34867    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
34868    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
34869    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
34870    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
34871    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
34872    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
34873    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
34874    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
34875    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
34876    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
34877    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
34878    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
34879    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
34880    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
34881    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
34882    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
34883    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
34884    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
34885    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
34886    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
34887    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
34888    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
34889    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
34890    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
34891    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
34892    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
34893    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
34894    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
34895    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
34896    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
34897    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
34898    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
34899    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
34900    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
34901    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
34902    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
34903    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
34904    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
34905    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
34906    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
34907    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
34908    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
34909 
34910    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34911    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34912 
34913    ---------------------------------------------------------------------------------------------------------------
34914    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34915    ---------------------------------------------------------------------------------------------------------------
34916    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34917 
34918    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34922          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34919    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34920 
34921    IF xla_accounting_cache_pkg.GetValueChar
34923          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34924    AND l_bflow_method_code = 'PRIOR_ENTRY'
34925 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34926    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34927          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34928        )
34929    THEN
34930          xla_ae_lines_pkg.BflowUpgEntry
34931            (p_business_method_code    => l_bflow_method_code
34932            ,p_business_class_code     => l_bflow_class_code
34933            ,p_balance_type            => l_balance_type_code);
34934    ELSE
34935       NULL;
34936 -- No business flow processing for business flow method of NONE.
34937    END IF;
34938 
34939    --
34940    -- call analytical criteria
34941    --
34942    
34943    --
34944    -- call description
34945    --
34946    -- No description or it is inherited.
34947    --
34948    -- call ADRs
34949    -- Bug 4922099
34950    --
34951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34952         (NVL(l_actual_upg_option, 'N') = 'O') OR
34953         (NVL(l_enc_upg_option, 'N') = 'O')
34954       )
34955    THEN
34956    NULL;
34957    --
34958    --
34959    
34960   l_ccid := AcctDerRule_13(
34961            p_application_id           => p_application_id
34962          , p_ae_header_id             => l_ae_header_id 
34963 , p_source_4 => p_source_4
34964 , p_source_14 => p_source_14
34965          , x_transaction_coa_id       => l_adr_transaction_coa_id
34966          , x_accounting_coa_id        => l_adr_accounting_coa_id
34967          , x_value_type_code          => l_adr_value_type_code
34968          , p_side                     => 'NA'
34969    );
34970 
34971    xla_ae_lines_pkg.set_ccid(
34972     p_code_combination_id          => l_ccid
34973   , p_value_type_code              => l_adr_value_type_code
34974   , p_transaction_coa_id           => l_adr_transaction_coa_id
34975   , p_accounting_coa_id            => l_adr_accounting_coa_id
34976   , p_adr_code                     => 'PA_RECLASS_SRC_ADJ_ACCT_RULE'
34977   , p_adr_type_code                => 'S'
34978   , p_component_type               => l_component_type
34979   , p_component_code               => l_component_code
34980   , p_component_type_code          => l_component_type_code
34981   , p_component_appl_id            => l_component_appl_id
34982   , p_amb_context_code             => l_amb_context_code
34983   , p_side                         => 'NA'
34984   );
34985 
34986 
34987    --
34988    --
34989    END IF;
34990    --
34991    -- Bug 4922099
34992    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34993           (NVL(l_enc_upg_option, 'N') = 'O')
34994         ) AND
34995         (l_bflow_method_code = 'PRIOR_ENTRY')
34996       )
34997    THEN
34998       IF
34999       --
35000       1 = 2
35001       --
35002       THEN
35003       xla_accounting_err_pkg.build_message
35004                                     (p_appli_s_name            => 'XLA'
35005                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35006                                     ,p_token_1                 => 'LINE_NUMBER'
35007                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35008                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35009                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35010                                                                              l_component_type
35011                                                                             ,l_component_code
35012                                                                             ,l_component_type_code
35013                                                                             ,l_component_appl_id
35014                                                                             ,l_amb_context_code
35015                                                                             ,l_entity_code
35016                                                                             ,l_event_class_code
35017                                                                            )
35018                                     ,p_token_3                 => 'OWNER'
35019                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35020                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35021                                                                           ,p_lookup_code    => l_component_type_code
35022                                                                          )
35023                                     ,p_token_4                 => 'PRODUCT_NAME'
35024                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35025                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35026                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35027                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35028                                     ,p_ae_header_id            =>  NULL
35029                                        );
35030 
35031         IF (C_LEVEL_ERROR>= g_log_level) THEN
35032                  trace
35033                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35034                       ,p_level    => C_LEVEL_ERROR
35035                       ,p_module   => l_log_module);
35036         END IF;
35040    --
35037       END IF;
35038    END IF;
35039    --
35041    ------------------------------------------------------------------------------------------------
35042    -- 4219869 Business Flow
35043    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35044    -- Prior Entry.  Currently, the following code is always generated.
35045    ------------------------------------------------------------------------------------------------
35046    XLA_AE_LINES_PKG.ValidateCurrentLine;
35047 
35048    ------------------------------------------------------------------------------------
35049    -- 4219869 Business Flow
35050    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35051    ------------------------------------------------------------------------------------
35052    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35053 
35054    ----------------------------------------------------------------------------------
35055    -- 4219869 Business Flow
35056    -- Update journal entry status -- Need to generate this within IF <condition>
35057    ----------------------------------------------------------------------------------
35058    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35059          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35060          ,p_balance_type_code => l_balance_type_code
35061          );
35062 
35063    -------------------------------------------------------------------------------------------
35064    -- 4262811 - Generate the Accrual Reversal lines
35065    -------------------------------------------------------------------------------------------
35066    BEGIN
35067       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35068                               (g_array_event(p_event_id).array_value_num('header_index'));
35069       IF l_acc_rev_flag IS NULL THEN
35070          l_acc_rev_flag := 'N';
35071       END IF;
35072    EXCEPTION
35073       WHEN OTHERS THEN
35074          l_acc_rev_flag := 'N';
35075    END;
35076    --
35077    IF (l_acc_rev_flag = 'Y') THEN
35078 
35079        -- 4645092  ------------------------------------------------------------------------------
35080        -- To allow MPA report to determine if it should generate report process
35081        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35082        ------------------------------------------------------------------------------------------
35083 
35084        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35085        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35086 
35087        --
35088        -- Update the line information that should be overwritten
35089        --
35090        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35091                                          p_header_num   => 1);
35092        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35093 
35094        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35095 
35096        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35097           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35098        END IF;
35099 
35100       --
35101       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35102       --
35103       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35104           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35105       ELSE
35106           ---------------------------------------------------------------------------------------------------
35107           -- 4262811a Switch Sign
35108           ---------------------------------------------------------------------------------------------------
35109           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35110           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35111                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35112           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35113                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35114           -- 5132302
35115           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35116                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35117 
35118       END IF;
35119 
35120       -- 4955764
35121       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35122       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35123 
35124 
35125       XLA_AE_LINES_PKG.ValidateCurrentLine;
35126       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35127 
35128       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35129                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35130                ,p_balance_type_code => l_balance_type_code);
35131 
35132    END IF;
35133 
35134    -----------------------------------------------------------------------------------------
35135    -- 4262811 Multiperiod Accounting
35136    -----------------------------------------------------------------------------------------
35137      -- No MPA option is assigned.
35138 
35139 
35140 END IF;
35141 --
35142 
35143 --
35144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35145    trace
35146       (p_msg      => 'END of AcctLineType_76'
35147       ,p_level    => C_LEVEL_PROCEDURE
35148       ,p_module   => l_log_module);
35149 END IF;
35150 --
35151 EXCEPTION
35155        xla_exceptions_pkg.raise_message
35152   WHEN xla_exceptions_pkg.application_exception THEN
35153       RAISE;
35154   WHEN OTHERS THEN
35156            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_76');
35157 END AcctLineType_76;
35158 --
35159 
35160 ---------------------------------------
35161 --
35162 -- PRIVATE FUNCTION
35163 --         AcctLineType_77
35164 --
35165 ---------------------------------------
35166 PROCEDURE AcctLineType_77 (
35167   p_application_id        IN NUMBER
35168  ,p_event_id              IN NUMBER
35169  ,p_calculate_acctd_flag  IN VARCHAR2
35170  ,p_calculate_g_l_flag    IN VARCHAR2
35171  ,p_actual_flag           IN OUT VARCHAR2
35172  ,p_balance_type_code     OUT VARCHAR2
35173  ,p_gain_or_loss_ref      OUT VARCHAR2
35174  
35175 --Actual Upgrade Credit Accounting Class
35176  , p_source_23            IN VARCHAR2
35177 --Entered Currency Code
35178  , p_source_25            IN VARCHAR2
35179 --Exchange Rate Date
35180  , p_source_27            IN DATE
35181 --Exchange Rate
35182  , p_source_28            IN NUMBER
35183 --Exchange Rate Type
35184  , p_source_29            IN VARCHAR2
35185 --Actual Upgrade Debit Accounting Class
35186  , p_source_30            IN VARCHAR2
35187 --Use Actuals Upgrade Attributes Flag
35188  , p_source_31            IN VARCHAR2
35189 --Revenue Distribution Type
35190  , p_source_36            IN VARCHAR2
35191 --Crediting Revenue Flag
35192  , p_source_38            IN VARCHAR2
35193 --Revenue First Distribution ID
35194  , p_source_39            IN NUMBER
35195 --Revenue Second Distribution ID
35196  , p_source_40            IN NUMBER
35197 --Entered Amount
35198  , p_source_41            IN NUMBER
35199 --Event ID
35200  , p_source_42            IN NUMBER
35201 --Accounted Amount
35202  , p_source_43            IN NUMBER
35203 --Actual Upgrade Credit CCID
35204  , p_source_59            IN NUMBER
35205 --Actual Upgrade Debit CCID
35206  , p_source_60            IN NUMBER
35207 --Application ID
35208  , p_source_61            IN NUMBER
35209 --Revenue Entity Code
35210  , p_source_62            IN VARCHAR2
35211 --Crediting Revenue First Distribution ID
35212  , p_source_63            IN NUMBER
35213 --Project ID
35214  , p_source_64            IN NUMBER
35215 --Crediting Revenue Second Distribution ID
35216  , p_source_65            IN NUMBER
35217 --Draft Revenue Number Credited
35218  , p_source_66            IN NUMBER
35219 )
35220 IS
35221 
35222 l_component_type              VARCHAR2(80);
35223 l_component_code              VARCHAR2(30);
35224 l_component_type_code         VARCHAR2(1);
35225 l_component_appl_id           INTEGER;
35226 l_amb_context_code            VARCHAR2(30);
35227 l_entity_code                 VARCHAR2(30);
35228 l_event_class_code            VARCHAR2(30);
35229 l_ae_header_id                NUMBER;
35230 l_event_type_code             VARCHAR2(30);
35231 l_line_definition_code        VARCHAR2(30);
35232 l_line_definition_owner_code  VARCHAR2(1);
35233 --
35234 -- adr variables
35235 l_segment                     VARCHAR2(30);
35236 l_ccid                        NUMBER;
35237 l_adr_transaction_coa_id      NUMBER;
35238 l_adr_accounting_coa_id       NUMBER;
35239 l_adr_flexfield_segment_code  VARCHAR2(30);
35240 l_adr_flex_value_set_id       NUMBER;
35241 l_adr_value_type_code         VARCHAR2(30);
35242 l_adr_value_combination_id    NUMBER;
35243 l_adr_value_segment_code      VARCHAR2(30);
35244 
35245 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35246 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35247 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35248 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35249 
35250 -- 4262811 Variables ------------------------------------------------------------------------------------------
35251 l_entered_amt_idx             NUMBER;
35252 l_accted_amt_idx              NUMBER;
35253 l_acc_rev_flag                VARCHAR2(1);
35254 l_accrual_line_num            NUMBER;
35255 l_tmp_amt                     NUMBER;
35256 l_acc_rev_natural_side_code   VARCHAR2(1);
35257 
35258 l_num_entries                 NUMBER;
35259 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35260 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35261 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35262 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35263 l_recog_line_1                NUMBER;
35264 l_recog_line_2                NUMBER;
35265 
35266 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35267 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35268 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35269 
35270 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35271 
35272 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35273 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35274 
35275 ---------------------------------------------------------------------------------------------------------------
35276 
35277 
35278 --
35279 -- bulk performance
35280 --
35281 l_balance_type_code           VARCHAR2(1);
35282 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35283 l_log_module                  VARCHAR2(240);
35284 
35285 --
35286 -- Upgrade strategy
35287 --
35288 l_actual_upg_option           VARCHAR2(1);
35289 l_enc_upg_option           VARCHAR2(1);
35290 
35291 --
35292 BEGIN
35293 --
35294 IF g_log_enabled THEN
35295       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
35296 END IF;
35300       trace
35297 --
35298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35299 
35301          (p_msg      => 'BEGIN of AcctLineType_77'
35302          ,p_level    => C_LEVEL_PROCEDURE
35303          ,p_module   => l_log_module);
35304 
35305 END IF;
35306 --
35307 l_component_type             := 'AMB_JLT';
35308 l_component_code             := 'PA_REV_ADJ';
35309 l_component_type_code        := 'S';
35310 l_component_appl_id          :=  275;
35311 l_amb_context_code           := 'DEFAULT';
35312 l_entity_code                := 'REVENUE';
35313 l_event_class_code           := 'REVENUE_ADJ';
35314 l_event_type_code            := 'REVENUE_ADJ_ALL';
35315 l_line_definition_owner_code := 'S';
35316 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
35317 --
35318 l_balance_type_code          := 'A';
35319 l_segment                     := NULL;
35320 l_ccid                        := NULL;
35321 l_adr_transaction_coa_id      := NULL;
35322 l_adr_accounting_coa_id       := NULL;
35323 l_adr_flexfield_segment_code  := NULL;
35324 l_adr_flex_value_set_id       := NULL;
35325 l_adr_value_type_code         := NULL;
35326 l_adr_value_combination_id    := NULL;
35327 l_adr_value_segment_code      := NULL;
35328 
35329 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
35330 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
35331 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
35332 l_budgetary_control_flag     := 'N';
35333 
35334 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35335 l_bflow_applied_to_amt       := NULL; -- 5132302
35336 l_entered_amt_idx            := NULL;          -- 4262811
35337 l_accted_amt_idx             := NULL;          -- 4262811
35338 l_acc_rev_flag               := NULL;          -- 4262811
35339 l_accrual_line_num           := NULL;          -- 4262811
35340 l_tmp_amt                    := NULL;          -- 4262811
35341 --
35342  
35343 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35344     l_balance_type_code <> 'B' THEN
35345 IF NVL(p_source_36,'
35346 ') =  'Revenue - Normal Revenue' AND 
35347 NVL(p_source_38,'
35348 ') =  'Y'
35349  THEN 
35350 
35351    --
35352    XLA_AE_LINES_PKG.SetNewLine;
35353 
35354    p_balance_type_code          := l_balance_type_code;
35355    -- set the flag so later we will know whether the gain loss line needs to be created
35356    
35357    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35358      p_actual_flag :='A';
35359    END IF;
35360 
35361    --
35362    -- bulk performance
35363    --
35364    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35365                                       p_header_num   => 0); -- 4262811
35366    --
35367    -- set accounting line options
35368    --
35369    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35370            p_natural_side_code          => 'D'
35371          , p_gain_or_loss_flag          => 'N'
35372          , p_gl_transfer_mode_code      => 'S'
35373          , p_acct_entry_type_code       => 'A'
35374          , p_switch_side_flag           => 'Y'
35375          , p_merge_duplicate_code       => 'N'
35376          );
35377    --
35378    l_acc_rev_natural_side_code := 'C';  -- 4262811
35379    -- 
35380    --
35381    -- set accounting line type info
35382    --
35383    xla_ae_lines_pkg.SetAcctLineType
35384       (p_component_type             => l_component_type
35385       ,p_event_type_code            => l_event_type_code
35386       ,p_line_definition_owner_code => l_line_definition_owner_code
35387       ,p_line_definition_code       => l_line_definition_code
35388       ,p_accounting_line_code       => l_component_code
35389       ,p_accounting_line_type_code  => l_component_type_code
35390       ,p_accounting_line_appl_id    => l_component_appl_id
35391       ,p_amb_context_code           => l_amb_context_code
35392       ,p_entity_code                => l_entity_code
35393       ,p_event_class_code           => l_event_class_code);
35394    --
35395    -- set accounting class
35396    --
35397    xla_ae_lines_pkg.SetAcctClass(
35398            p_accounting_class_code  => 'REVENUE_ADJ'
35399          , p_ae_header_id           => l_ae_header_id
35400          );
35401 
35402    --
35403    -- set rounding class
35404    --
35405    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35406                       'REVENUE_ADJ';
35407 
35408    --
35409    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35410    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35411    --
35412    -- bulk performance
35413    --
35414    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35415 
35416    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35417       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35418 
35419    -- 4955764
35420    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35421       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35422 
35423    -- 4458381 Public Sector Enh
35424    
35425    --
35426    -- set accounting attributes for the line type
35427    --
35428    l_entered_amt_idx := 28;
35429    l_accted_amt_idx  := 31;
35430    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35431    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
35432    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
35433    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
35437    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
35434    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
35435    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
35436    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
35438    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
35439    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
35440    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
35441    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
35442    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
35443    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
35444    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
35445    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
35446    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
35447    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
35448    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
35449    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
35450    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
35451    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
35452    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
35453    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
35454    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
35455    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
35456    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
35457    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
35458    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
35459    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
35460    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
35461    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
35462    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
35463    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
35464    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
35465    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
35466    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
35467    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35468    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
35469    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
35470    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
35471    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
35472    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
35473    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35474    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
35475    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
35476    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
35477    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
35478    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
35479    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
35480    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
35481    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
35482    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
35483    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
35484    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
35485    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
35486    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
35487    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
35488    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
35489    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
35490    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
35491    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
35492    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
35493 
35494    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35495    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35496 
35497    ---------------------------------------------------------------------------------------------------------------
35498    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35499    ---------------------------------------------------------------------------------------------------------------
35500    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35501 
35502    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35503    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35504 
35505    IF xla_accounting_cache_pkg.GetValueChar
35506          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35507          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35508    AND l_bflow_method_code = 'PRIOR_ENTRY'
35509 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35510    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35511          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35512        )
35513    THEN
35514          xla_ae_lines_pkg.BflowUpgEntry
35515            (p_business_method_code    => l_bflow_method_code
35516            ,p_business_class_code     => l_bflow_class_code
35517            ,p_balance_type            => l_balance_type_code);
35518    ELSE
35519       NULL;
35520 XLA_AE_LINES_PKG.business_flow_validation(
35521                                 p_business_method_code     => l_bflow_method_code
35522                                ,p_business_class_code      => l_bflow_class_code
35523                                ,p_inherit_description_flag => l_inherit_desc_flag);
35524    END IF;
35525 
35529    -- Inherited Analytical Criteria for business flow method of Prior Entry.
35526    --
35527    -- call analytical criteria
35528    --
35530    --
35531    -- call description
35532    --
35533    -- No description or it is inherited.
35534    --
35535    -- call ADRs
35536    -- Bug 4922099
35537    --
35538    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35539         (NVL(l_actual_upg_option, 'N') = 'O') OR
35540         (NVL(l_enc_upg_option, 'N') = 'O')
35541       )
35542    THEN
35543    NULL;
35544    --
35545    --
35546    
35547    --
35548    --
35549    END IF;
35550    --
35551    -- Bug 4922099
35552    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35553           (NVL(l_enc_upg_option, 'N') = 'O')
35554         ) AND
35555         (l_bflow_method_code = 'PRIOR_ENTRY')
35556       )
35557    THEN
35558       IF
35559       --
35560       1 = 1
35561       --
35562       THEN
35563       xla_accounting_err_pkg.build_message
35564                                     (p_appli_s_name            => 'XLA'
35565                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35566                                     ,p_token_1                 => 'LINE_NUMBER'
35567                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35568                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35569                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35570                                                                              l_component_type
35571                                                                             ,l_component_code
35572                                                                             ,l_component_type_code
35573                                                                             ,l_component_appl_id
35574                                                                             ,l_amb_context_code
35575                                                                             ,l_entity_code
35576                                                                             ,l_event_class_code
35577                                                                            )
35578                                     ,p_token_3                 => 'OWNER'
35579                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35580                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35581                                                                           ,p_lookup_code    => l_component_type_code
35582                                                                          )
35583                                     ,p_token_4                 => 'PRODUCT_NAME'
35584                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35585                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35586                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35587                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35588                                     ,p_ae_header_id            =>  NULL
35589                                        );
35590 
35591         IF (C_LEVEL_ERROR>= g_log_level) THEN
35592                  trace
35593                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35594                       ,p_level    => C_LEVEL_ERROR
35595                       ,p_module   => l_log_module);
35596         END IF;
35597       END IF;
35598    END IF;
35599    --
35600    --
35601    ------------------------------------------------------------------------------------------------
35602    -- 4219869 Business Flow
35603    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35604    -- Prior Entry.  Currently, the following code is always generated.
35605    ------------------------------------------------------------------------------------------------
35606    -- No ValidateCurrentLine for business flow method of Prior Entry
35607 
35608    ------------------------------------------------------------------------------------
35609    -- 4219869 Business Flow
35610    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35611    ------------------------------------------------------------------------------------
35612    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35613 
35614    ----------------------------------------------------------------------------------
35615    -- 4219869 Business Flow
35616    -- Update journal entry status -- Need to generate this within IF <condition>
35617    ----------------------------------------------------------------------------------
35618    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35619          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35620          ,p_balance_type_code => l_balance_type_code
35621          );
35622 
35623    -------------------------------------------------------------------------------------------
35624    -- 4262811 - Generate the Accrual Reversal lines
35625    -------------------------------------------------------------------------------------------
35626    BEGIN
35627       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35628                               (g_array_event(p_event_id).array_value_num('header_index'));
35629       IF l_acc_rev_flag IS NULL THEN
35630          l_acc_rev_flag := 'N';
35631       END IF;
35632    EXCEPTION
35633       WHEN OTHERS THEN
35634          l_acc_rev_flag := 'N';
35635    END;
35636    --
35637    IF (l_acc_rev_flag = 'Y') THEN
35638 
35642        ------------------------------------------------------------------------------------------
35639        -- 4645092  ------------------------------------------------------------------------------
35640        -- To allow MPA report to determine if it should generate report process
35641        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35643 
35644        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35645        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35646 
35647        --
35648        -- Update the line information that should be overwritten
35649        --
35650        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35651                                          p_header_num   => 1);
35652        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35653 
35654        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35655 
35656        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35657           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35658        END IF;
35659 
35660       --
35661       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35662       --
35663       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35664           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35665       ELSE
35666           ---------------------------------------------------------------------------------------------------
35667           -- 4262811a Switch Sign
35668           ---------------------------------------------------------------------------------------------------
35669           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35670           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35671                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35672           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35673                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35674           -- 5132302
35675           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35676                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35677 
35678       END IF;
35679 
35680       -- 4955764
35681       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35682       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35683 
35684 
35685       XLA_AE_LINES_PKG.ValidateCurrentLine;
35686       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35687 
35688       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35689                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35690                ,p_balance_type_code => l_balance_type_code);
35691 
35692    END IF;
35693 
35694    -----------------------------------------------------------------------------------------
35695    -- 4262811 Multiperiod Accounting
35696    -----------------------------------------------------------------------------------------
35697      -- No MPA option is assigned.
35698 
35699 
35700 END IF;
35701 END IF;
35702 --
35703 
35704 --
35705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35706    trace
35707       (p_msg      => 'END of AcctLineType_77'
35708       ,p_level    => C_LEVEL_PROCEDURE
35709       ,p_module   => l_log_module);
35710 END IF;
35711 --
35712 EXCEPTION
35713   WHEN xla_exceptions_pkg.application_exception THEN
35714       RAISE;
35715   WHEN OTHERS THEN
35716        xla_exceptions_pkg.raise_message
35717            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_77');
35718 END AcctLineType_77;
35719 --
35720 
35721 ---------------------------------------
35722 --
35723 -- PRIVATE FUNCTION
35724 --         AcctLineType_78
35725 --
35726 ---------------------------------------
35727 PROCEDURE AcctLineType_78 (
35728   p_application_id        IN NUMBER
35729  ,p_event_id              IN NUMBER
35730  ,p_calculate_acctd_flag  IN VARCHAR2
35731  ,p_calculate_g_l_flag    IN VARCHAR2
35732  ,p_actual_flag           IN OUT VARCHAR2
35733  ,p_balance_type_code     OUT VARCHAR2
35734  ,p_gain_or_loss_ref      OUT VARCHAR2
35735  
35736 --Budget Code Combination ID
35737  , p_source_2            IN NUMBER
35738 --Cost CCID
35739  , p_source_3            IN NUMBER
35740 --Allow Account Override Flag
35741  , p_source_4            IN VARCHAR2
35742 --Adjustment Cost CCID
35743  , p_source_5            IN NUMBER
35744 --Cost Clearing CCID
35745  , p_source_6            IN NUMBER
35746 --Reversing Line Flag
35747  , p_source_22            IN VARCHAR2
35748 --Actual Upgrade Credit Accounting Class
35749  , p_source_23            IN VARCHAR2
35750 --Entered Currency Code
35751  , p_source_25            IN VARCHAR2
35752 --Exchange Rate Date
35753  , p_source_27            IN DATE
35754 --Exchange Rate
35755  , p_source_28            IN NUMBER
35756 --Exchange Rate Type
35757  , p_source_29            IN VARCHAR2
35758 --Actual Upgrade Debit Accounting Class
35759  , p_source_30            IN VARCHAR2
35760 --Use Actuals Upgrade Attributes Flag
35761  , p_source_31            IN VARCHAR2
35762 --Expenditure Item ID
35763  , p_source_32            IN NUMBER
35764 --Cost Distribution Line Number
35765  , p_source_33            IN NUMBER
35766 --Line Type
35767  , p_source_34            IN VARCHAR2
35768  , p_source_34_meaning    IN VARCHAR2
35769 --Reversed Line Number
35773 --Accounted Burdened Cost
35770  , p_source_35            IN NUMBER
35771 --Entered Burdened Cost
35772  , p_source_44            IN NUMBER
35774  , p_source_45            IN NUMBER
35775 --Encumbrance Amount
35776  , p_source_46            IN NUMBER
35777 --Project Encumbrance Applied to Application Identifier
35778  , p_source_47            IN NUMBER
35779 --Project Encumbrance Applied to Distribution Type
35780  , p_source_48            IN VARCHAR2
35781 --Project Encumbrance Applied to Entity Code
35782  , p_source_49            IN VARCHAR2
35783 --Project Encumbrance Applied to First Distribution ID
35784  , p_source_50            IN NUMBER
35785 --Project Encumbrance Applied to First System Transaction ID
35786  , p_source_51            IN NUMBER
35787 --Project Encumbrance Applied to Second Distribution ID
35788  , p_source_52            IN VARCHAR2
35789 --Encumbrance Upgrade Credit Accounting Class
35790  , p_source_53            IN VARCHAR2
35791 --Encumbrance Upgrade Debit Accounting Class
35792  , p_source_54            IN VARCHAR2
35793 --Use Encumbrance Upgrade Attributes Flag
35794  , p_source_55            IN VARCHAR2
35795 --Encumbrance Type ID
35796  , p_source_56            IN NUMBER
35797 --Project Encumbrance Type ID
35798  , p_source_57            IN NUMBER
35799 )
35800 IS
35801 
35802 l_component_type              VARCHAR2(80);
35803 l_component_code              VARCHAR2(30);
35804 l_component_type_code         VARCHAR2(1);
35805 l_component_appl_id           INTEGER;
35806 l_amb_context_code            VARCHAR2(30);
35807 l_entity_code                 VARCHAR2(30);
35808 l_event_class_code            VARCHAR2(30);
35809 l_ae_header_id                NUMBER;
35810 l_event_type_code             VARCHAR2(30);
35811 l_line_definition_code        VARCHAR2(30);
35812 l_line_definition_owner_code  VARCHAR2(1);
35813 --
35814 -- adr variables
35815 l_segment                     VARCHAR2(30);
35816 l_ccid                        NUMBER;
35817 l_adr_transaction_coa_id      NUMBER;
35818 l_adr_accounting_coa_id       NUMBER;
35819 l_adr_flexfield_segment_code  VARCHAR2(30);
35820 l_adr_flex_value_set_id       NUMBER;
35821 l_adr_value_type_code         VARCHAR2(30);
35822 l_adr_value_combination_id    NUMBER;
35823 l_adr_value_segment_code      VARCHAR2(30);
35824 
35825 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35826 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35827 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35828 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35829 
35830 -- 4262811 Variables ------------------------------------------------------------------------------------------
35831 l_entered_amt_idx             NUMBER;
35832 l_accted_amt_idx              NUMBER;
35833 l_acc_rev_flag                VARCHAR2(1);
35834 l_accrual_line_num            NUMBER;
35835 l_tmp_amt                     NUMBER;
35836 l_acc_rev_natural_side_code   VARCHAR2(1);
35837 
35838 l_num_entries                 NUMBER;
35839 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35840 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35841 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35842 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35843 l_recog_line_1                NUMBER;
35844 l_recog_line_2                NUMBER;
35845 
35846 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35847 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35848 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35849 
35850 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35851 
35852 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35853 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35854 
35855 ---------------------------------------------------------------------------------------------------------------
35856 
35857 
35858 --
35859 -- bulk performance
35860 --
35861 l_balance_type_code           VARCHAR2(1);
35862 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35863 l_log_module                  VARCHAR2(240);
35864 
35865 --
35866 -- Upgrade strategy
35867 --
35868 l_actual_upg_option           VARCHAR2(1);
35869 l_enc_upg_option           VARCHAR2(1);
35870 
35871 --
35872 BEGIN
35873 --
35874 IF g_log_enabled THEN
35875       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
35876 END IF;
35877 --
35878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35879 
35880       trace
35881          (p_msg      => 'BEGIN of AcctLineType_78'
35882          ,p_level    => C_LEVEL_PROCEDURE
35883          ,p_module   => l_log_module);
35884 
35885 END IF;
35886 --
35887 l_component_type             := 'AMB_JLT';
35888 l_component_code             := 'PA_TOT_BURDENED_COST';
35889 l_component_type_code        := 'S';
35890 l_component_appl_id          :=  275;
35891 l_amb_context_code           := 'DEFAULT';
35892 l_entity_code                := 'EXPENDITURES';
35893 l_event_class_code           := 'TOT_BURDENED_COST';
35894 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
35895 l_line_definition_owner_code := 'S';
35896 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
35897 --
35898 l_balance_type_code          := 'A';
35899 l_segment                     := NULL;
35900 l_ccid                        := NULL;
35901 l_adr_transaction_coa_id      := NULL;
35902 l_adr_accounting_coa_id       := NULL;
35903 l_adr_flexfield_segment_code  := NULL;
35904 l_adr_flex_value_set_id       := NULL;
35905 l_adr_value_type_code         := NULL;
35906 l_adr_value_combination_id    := NULL;
35910 l_bflow_class_code           := '';    -- 4219869 Business Flow
35907 l_adr_value_segment_code      := NULL;
35908 
35909 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35911 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35912 l_budgetary_control_flag     := 'N';
35913 
35914 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35915 l_bflow_applied_to_amt       := NULL; -- 5132302
35916 l_entered_amt_idx            := NULL;          -- 4262811
35917 l_accted_amt_idx             := NULL;          -- 4262811
35918 l_acc_rev_flag               := NULL;          -- 4262811
35919 l_accrual_line_num           := NULL;          -- 4262811
35920 l_tmp_amt                    := NULL;          -- 4262811
35921 --
35922  
35923 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35924     l_balance_type_code <> 'B' THEN
35925 IF NVL(p_source_34,'
35926 ') =  'D'
35927  THEN 
35928 
35929    --
35930    XLA_AE_LINES_PKG.SetNewLine;
35931 
35932    p_balance_type_code          := l_balance_type_code;
35933    -- set the flag so later we will know whether the gain loss line needs to be created
35934    
35935    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35936      p_actual_flag :='A';
35937    END IF;
35938 
35939    --
35940    -- bulk performance
35941    --
35942    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35943                                       p_header_num   => 0); -- 4262811
35944    --
35945    -- set accounting line options
35946    --
35947    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35948            p_natural_side_code          => 'D'
35949          , p_gain_or_loss_flag          => 'N'
35950          , p_gl_transfer_mode_code      => 'S'
35951          , p_acct_entry_type_code       => 'A'
35952          , p_switch_side_flag           => 'Y'
35953          , p_merge_duplicate_code       => 'N'
35954          );
35955    --
35956    l_acc_rev_natural_side_code := 'C';  -- 4262811
35957    -- 
35958    --
35959    -- set accounting line type info
35960    --
35961    xla_ae_lines_pkg.SetAcctLineType
35962       (p_component_type             => l_component_type
35963       ,p_event_type_code            => l_event_type_code
35964       ,p_line_definition_owner_code => l_line_definition_owner_code
35965       ,p_line_definition_code       => l_line_definition_code
35966       ,p_accounting_line_code       => l_component_code
35967       ,p_accounting_line_type_code  => l_component_type_code
35968       ,p_accounting_line_appl_id    => l_component_appl_id
35969       ,p_amb_context_code           => l_amb_context_code
35970       ,p_entity_code                => l_entity_code
35971       ,p_event_class_code           => l_event_class_code);
35972    --
35973    -- set accounting class
35974    --
35975    xla_ae_lines_pkg.SetAcctClass(
35976            p_accounting_class_code  => 'COST'
35977          , p_ae_header_id           => l_ae_header_id
35978          );
35979 
35980    --
35981    -- set rounding class
35982    --
35983    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35984                       'COST';
35985 
35986    --
35987    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35988    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35989    --
35990    -- bulk performance
35991    --
35992    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35993 
35994    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35995       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35996 
35997    -- 4955764
35998    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35999       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36000 
36001    -- 4458381 Public Sector Enh
36002    
36003    --
36004    -- set accounting attributes for the line type
36005    --
36006    l_entered_amt_idx := 40;
36007    l_accted_amt_idx  := 46;
36008    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
36009    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36010    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
36011    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
36012    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
36013    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
36014    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
36015    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
36016    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
36017    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
36018    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
36019    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
36020    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
36021    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
36022    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
36023    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
36024    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
36025    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
36026    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
36027    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
36028    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
36029    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
36030    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
36031    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
36035    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
36032    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
36033    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
36034    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
36036    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
36037    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
36038    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
36039    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
36040    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
36041    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
36042    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
36043    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
36044    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
36045    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
36046    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
36047    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
36048    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
36049    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36050    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
36051    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
36052    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
36053    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
36054    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
36055    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36056    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
36057    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
36058    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
36059    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
36060    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
36061    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
36062    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
36063    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
36064    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
36065    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
36066    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
36067    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
36068    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
36069    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
36070    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
36071    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
36072    l_rec_acct_attrs.array_char_value(32)  := 
36073 xla_ae_sources_pkg.GetSystemSourceChar(
36074    p_source_code           => 'XLA_CURRENCY_CODE'
36075  , p_source_type_code      => 'Y'
36076  , p_source_application_id =>  602
36077 );
36078    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
36079    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
36080    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
36081    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
36082    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
36083    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
36084    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
36085    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
36086    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
36087    l_rec_acct_attrs.array_char_value(37)  := 
36088 xla_ae_sources_pkg.GetSystemSourceChar(
36089    p_source_code           => 'XLA_CURRENCY_CODE'
36090  , p_source_type_code      => 'Y'
36091  , p_source_application_id =>  602
36092 );
36093    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
36094    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
36095    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
36096    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
36097    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
36098    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
36099    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
36100    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
36101    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
36102    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
36103    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
36104    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
36105    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
36106    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
36107    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
36108    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
36109    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
36110    l_rec_acct_attrs.array_num_value(46)  := p_source_45;
36111    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
36112    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
36113    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
36114    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
36115    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
36116    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
36117    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
36118    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
36119    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
36120    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
36121 
36122    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36123    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36124 
36128    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36125    ---------------------------------------------------------------------------------------------------------------
36126    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36127    ---------------------------------------------------------------------------------------------------------------
36129 
36130    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36131    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36132 
36133    IF xla_accounting_cache_pkg.GetValueChar
36134          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36135          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36136    AND l_bflow_method_code = 'PRIOR_ENTRY'
36137 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36138    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36139          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36140        )
36141    THEN
36142          xla_ae_lines_pkg.BflowUpgEntry
36143            (p_business_method_code    => l_bflow_method_code
36144            ,p_business_class_code     => l_bflow_class_code
36145            ,p_balance_type            => l_balance_type_code);
36146    ELSE
36147       NULL;
36148 -- No business flow processing for business flow method of NONE.
36149    END IF;
36150 
36151    --
36152    -- call analytical criteria
36153    --
36154    
36155    --
36156    -- call description
36157    --
36158    -- No description or it is inherited.
36159    --
36160    -- call ADRs
36161    -- Bug 4922099
36162    --
36163    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36164         (NVL(l_actual_upg_option, 'N') = 'O') OR
36165         (NVL(l_enc_upg_option, 'N') = 'O')
36166       )
36167    THEN
36168    NULL;
36169    --
36170    --
36171    
36172   l_ccid := AcctDerRule_3(
36173            p_application_id           => p_application_id
36174          , p_ae_header_id             => l_ae_header_id 
36175 , p_source_3 => p_source_3
36176 , p_source_4 => p_source_4
36177 , p_source_5 => p_source_5
36178          , x_transaction_coa_id       => l_adr_transaction_coa_id
36179          , x_accounting_coa_id        => l_adr_accounting_coa_id
36180          , x_value_type_code          => l_adr_value_type_code
36181          , p_side                     => 'NA'
36182    );
36183 
36184    xla_ae_lines_pkg.set_ccid(
36185     p_code_combination_id          => l_ccid
36186   , p_value_type_code              => l_adr_value_type_code
36187   , p_transaction_coa_id           => l_adr_transaction_coa_id
36188   , p_accounting_coa_id            => l_adr_accounting_coa_id
36189   , p_adr_code                     => 'PA_COST_ACCT_RULE'
36190   , p_adr_type_code                => 'S'
36191   , p_component_type               => l_component_type
36192   , p_component_code               => l_component_code
36193   , p_component_type_code          => l_component_type_code
36194   , p_component_appl_id            => l_component_appl_id
36195   , p_amb_context_code             => l_amb_context_code
36196   , p_side                         => 'NA'
36197   );
36198 
36199 
36200    --
36201    --
36202    END IF;
36203    --
36204    -- Bug 4922099
36205    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36206           (NVL(l_enc_upg_option, 'N') = 'O')
36207         ) AND
36208         (l_bflow_method_code = 'PRIOR_ENTRY')
36209       )
36210    THEN
36211       IF
36212       --
36213       1 = 2
36214       --
36215       THEN
36216       xla_accounting_err_pkg.build_message
36217                                     (p_appli_s_name            => 'XLA'
36218                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36219                                     ,p_token_1                 => 'LINE_NUMBER'
36220                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36221                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36222                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36223                                                                              l_component_type
36224                                                                             ,l_component_code
36225                                                                             ,l_component_type_code
36226                                                                             ,l_component_appl_id
36227                                                                             ,l_amb_context_code
36228                                                                             ,l_entity_code
36229                                                                             ,l_event_class_code
36230                                                                            )
36231                                     ,p_token_3                 => 'OWNER'
36232                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36233                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36234                                                                           ,p_lookup_code    => l_component_type_code
36235                                                                          )
36236                                     ,p_token_4                 => 'PRODUCT_NAME'
36237                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36238                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36242                                        );
36239                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36240                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36241                                     ,p_ae_header_id            =>  NULL
36243 
36244         IF (C_LEVEL_ERROR>= g_log_level) THEN
36245                  trace
36246                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36247                       ,p_level    => C_LEVEL_ERROR
36248                       ,p_module   => l_log_module);
36249         END IF;
36250       END IF;
36251    END IF;
36252    --
36253    --
36254    ------------------------------------------------------------------------------------------------
36255    -- 4219869 Business Flow
36256    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36257    -- Prior Entry.  Currently, the following code is always generated.
36258    ------------------------------------------------------------------------------------------------
36259    XLA_AE_LINES_PKG.ValidateCurrentLine;
36260 
36261    ------------------------------------------------------------------------------------
36262    -- 4219869 Business Flow
36263    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36264    ------------------------------------------------------------------------------------
36265    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36266 
36267    ----------------------------------------------------------------------------------
36268    -- 4219869 Business Flow
36269    -- Update journal entry status -- Need to generate this within IF <condition>
36270    ----------------------------------------------------------------------------------
36271    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36272          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36273          ,p_balance_type_code => l_balance_type_code
36274          );
36275 
36276    -------------------------------------------------------------------------------------------
36277    -- 4262811 - Generate the Accrual Reversal lines
36278    -------------------------------------------------------------------------------------------
36279    BEGIN
36280       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36281                               (g_array_event(p_event_id).array_value_num('header_index'));
36282       IF l_acc_rev_flag IS NULL THEN
36283          l_acc_rev_flag := 'N';
36284       END IF;
36285    EXCEPTION
36286       WHEN OTHERS THEN
36287          l_acc_rev_flag := 'N';
36288    END;
36289    --
36290    IF (l_acc_rev_flag = 'Y') THEN
36291 
36292        -- 4645092  ------------------------------------------------------------------------------
36293        -- To allow MPA report to determine if it should generate report process
36294        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36295        ------------------------------------------------------------------------------------------
36296 
36297        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36298        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36299 
36300        --
36301        -- Update the line information that should be overwritten
36302        --
36303        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36304                                          p_header_num   => 1);
36305        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36306 
36307        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36308 
36309        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36310           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36311        END IF;
36312 
36313       --
36314       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36315       --
36316       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36317           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36318       ELSE
36319           ---------------------------------------------------------------------------------------------------
36320           -- 4262811a Switch Sign
36321           ---------------------------------------------------------------------------------------------------
36322           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36323           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36324                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36325           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36326                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36327           -- 5132302
36328           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36329                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36330 
36331       END IF;
36332 
36333       -- 4955764
36334       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36335       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36336 
36337 
36338       XLA_AE_LINES_PKG.ValidateCurrentLine;
36339       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36340 
36341       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36342                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36343                ,p_balance_type_code => l_balance_type_code);
36344 
36345    END IF;
36346 
36350      -- No MPA option is assigned.
36347    -----------------------------------------------------------------------------------------
36348    -- 4262811 Multiperiod Accounting
36349    -----------------------------------------------------------------------------------------
36351 
36352 
36353 END IF;
36354 END IF;
36355 --
36356 
36357 --
36358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36359    trace
36360       (p_msg      => 'END of AcctLineType_78'
36361       ,p_level    => C_LEVEL_PROCEDURE
36362       ,p_module   => l_log_module);
36363 END IF;
36364 --
36365 EXCEPTION
36366   WHEN xla_exceptions_pkg.application_exception THEN
36367       RAISE;
36368   WHEN OTHERS THEN
36369        xla_exceptions_pkg.raise_message
36370            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_78');
36371 END AcctLineType_78;
36372 --
36373 
36374 ---------------------------------------
36375 --
36376 -- PRIVATE FUNCTION
36377 --         AcctLineType_79
36378 --
36379 ---------------------------------------
36380 PROCEDURE AcctLineType_79 (
36381   p_application_id        IN NUMBER
36382  ,p_event_id              IN NUMBER
36383  ,p_calculate_acctd_flag  IN VARCHAR2
36384  ,p_calculate_g_l_flag    IN VARCHAR2
36385  ,p_actual_flag           IN OUT VARCHAR2
36386  ,p_balance_type_code     OUT VARCHAR2
36387  ,p_gain_or_loss_ref      OUT VARCHAR2
36388  
36389 --Budget Code Combination ID
36390  , p_source_2            IN NUMBER
36391 --Cost CCID
36392  , p_source_3            IN NUMBER
36393 --Allow Account Override Flag
36394  , p_source_4            IN VARCHAR2
36395 --Adjustment Cost CCID
36396  , p_source_5            IN NUMBER
36397 --Cost Clearing CCID
36398  , p_source_6            IN NUMBER
36399 --Reversing Line Flag
36400  , p_source_22            IN VARCHAR2
36401 --Actual Upgrade Credit Accounting Class
36402  , p_source_23            IN VARCHAR2
36403 --Entered Currency Code
36404  , p_source_25            IN VARCHAR2
36405 --Exchange Rate Date
36406  , p_source_27            IN DATE
36407 --Exchange Rate
36408  , p_source_28            IN NUMBER
36409 --Exchange Rate Type
36410  , p_source_29            IN VARCHAR2
36411 --Actual Upgrade Debit Accounting Class
36412  , p_source_30            IN VARCHAR2
36413 --Use Actuals Upgrade Attributes Flag
36414  , p_source_31            IN VARCHAR2
36415 --Expenditure Item ID
36416  , p_source_32            IN NUMBER
36417 --Cost Distribution Line Number
36418  , p_source_33            IN NUMBER
36419 --Line Type
36420  , p_source_34            IN VARCHAR2
36421  , p_source_34_meaning    IN VARCHAR2
36422 --Reversed Line Number
36423  , p_source_35            IN NUMBER
36424 --Entered Burdened Cost
36425  , p_source_44            IN NUMBER
36426 --Accounted Burdened Cost
36427  , p_source_45            IN NUMBER
36428 --Encumbrance Amount
36429  , p_source_46            IN NUMBER
36430 --Project Encumbrance Applied to Application Identifier
36431  , p_source_47            IN NUMBER
36432 --Project Encumbrance Applied to Distribution Type
36433  , p_source_48            IN VARCHAR2
36434 --Project Encumbrance Applied to Entity Code
36435  , p_source_49            IN VARCHAR2
36436 --Project Encumbrance Applied to First Distribution ID
36437  , p_source_50            IN NUMBER
36438 --Project Encumbrance Applied to First System Transaction ID
36439  , p_source_51            IN NUMBER
36440 --Project Encumbrance Applied to Second Distribution ID
36441  , p_source_52            IN VARCHAR2
36442 --Encumbrance Upgrade Debit Accounting Class
36443  , p_source_54            IN VARCHAR2
36444 --Use Encumbrance Upgrade Attributes Flag
36445  , p_source_55            IN VARCHAR2
36446 --Encumbrance Type ID
36447  , p_source_56            IN NUMBER
36448 --Project Encumbrance Type ID
36449  , p_source_57            IN NUMBER
36450 )
36451 IS
36452 
36453 l_component_type              VARCHAR2(80);
36454 l_component_code              VARCHAR2(30);
36455 l_component_type_code         VARCHAR2(1);
36456 l_component_appl_id           INTEGER;
36457 l_amb_context_code            VARCHAR2(30);
36458 l_entity_code                 VARCHAR2(30);
36459 l_event_class_code            VARCHAR2(30);
36460 l_ae_header_id                NUMBER;
36461 l_event_type_code             VARCHAR2(30);
36462 l_line_definition_code        VARCHAR2(30);
36463 l_line_definition_owner_code  VARCHAR2(1);
36464 --
36465 -- adr variables
36466 l_segment                     VARCHAR2(30);
36467 l_ccid                        NUMBER;
36468 l_adr_transaction_coa_id      NUMBER;
36469 l_adr_accounting_coa_id       NUMBER;
36470 l_adr_flexfield_segment_code  VARCHAR2(30);
36471 l_adr_flex_value_set_id       NUMBER;
36472 l_adr_value_type_code         VARCHAR2(30);
36473 l_adr_value_combination_id    NUMBER;
36474 l_adr_value_segment_code      VARCHAR2(30);
36475 
36476 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36477 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36478 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36479 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36480 
36481 -- 4262811 Variables ------------------------------------------------------------------------------------------
36482 l_entered_amt_idx             NUMBER;
36483 l_accted_amt_idx              NUMBER;
36484 l_acc_rev_flag                VARCHAR2(1);
36485 l_accrual_line_num            NUMBER;
36486 l_tmp_amt                     NUMBER;
36487 l_acc_rev_natural_side_code   VARCHAR2(1);
36488 
36489 l_num_entries                 NUMBER;
36490 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36491 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36495 l_recog_line_2                NUMBER;
36492 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36493 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36494 l_recog_line_1                NUMBER;
36496 
36497 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36498 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36499 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36500 
36501 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36502 
36503 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36504 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36505 
36506 ---------------------------------------------------------------------------------------------------------------
36507 
36508 
36509 --
36510 -- bulk performance
36511 --
36512 l_balance_type_code           VARCHAR2(1);
36513 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36514 l_log_module                  VARCHAR2(240);
36515 
36516 --
36517 -- Upgrade strategy
36518 --
36519 l_actual_upg_option           VARCHAR2(1);
36520 l_enc_upg_option           VARCHAR2(1);
36521 
36522 --
36523 BEGIN
36524 --
36525 IF g_log_enabled THEN
36526       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
36527 END IF;
36528 --
36529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36530 
36531       trace
36532          (p_msg      => 'BEGIN of AcctLineType_79'
36533          ,p_level    => C_LEVEL_PROCEDURE
36534          ,p_module   => l_log_module);
36535 
36536 END IF;
36537 --
36538 l_component_type             := 'AMB_JLT';
36539 l_component_code             := 'PA_TOT_BURDENED_COST_ADJ';
36540 l_component_type_code        := 'S';
36541 l_component_appl_id          :=  275;
36542 l_amb_context_code           := 'DEFAULT';
36543 l_entity_code                := 'EXPENDITURES';
36544 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
36545 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
36546 l_line_definition_owner_code := 'S';
36547 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
36548 --
36549 l_balance_type_code          := 'A';
36550 l_segment                     := NULL;
36551 l_ccid                        := NULL;
36552 l_adr_transaction_coa_id      := NULL;
36553 l_adr_accounting_coa_id       := NULL;
36554 l_adr_flexfield_segment_code  := NULL;
36555 l_adr_flex_value_set_id       := NULL;
36556 l_adr_value_type_code         := NULL;
36557 l_adr_value_combination_id    := NULL;
36558 l_adr_value_segment_code      := NULL;
36559 
36560 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36561 l_bflow_class_code           := '';    -- 4219869 Business Flow
36562 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36563 l_budgetary_control_flag     := 'N';
36564 
36565 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36566 l_bflow_applied_to_amt       := NULL; -- 5132302
36567 l_entered_amt_idx            := NULL;          -- 4262811
36568 l_accted_amt_idx             := NULL;          -- 4262811
36569 l_acc_rev_flag               := NULL;          -- 4262811
36570 l_accrual_line_num           := NULL;          -- 4262811
36571 l_tmp_amt                    := NULL;          -- 4262811
36572 --
36573  
36574 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36575     l_balance_type_code <> 'B' THEN
36576 IF NVL(p_source_34,'
36577 ') =  'D'
36578  THEN 
36579 
36580    --
36581    XLA_AE_LINES_PKG.SetNewLine;
36582 
36583    p_balance_type_code          := l_balance_type_code;
36584    -- set the flag so later we will know whether the gain loss line needs to be created
36585    
36586    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36587      p_actual_flag :='A';
36588    END IF;
36589 
36590    --
36591    -- bulk performance
36592    --
36593    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36594                                       p_header_num   => 0); -- 4262811
36595    --
36596    -- set accounting line options
36597    --
36598    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36599            p_natural_side_code          => 'D'
36600          , p_gain_or_loss_flag          => 'N'
36601          , p_gl_transfer_mode_code      => 'S'
36602          , p_acct_entry_type_code       => 'A'
36603          , p_switch_side_flag           => 'Y'
36604          , p_merge_duplicate_code       => 'N'
36605          );
36606    --
36607    l_acc_rev_natural_side_code := 'C';  -- 4262811
36608    -- 
36609    --
36610    -- set accounting line type info
36611    --
36612    xla_ae_lines_pkg.SetAcctLineType
36613       (p_component_type             => l_component_type
36614       ,p_event_type_code            => l_event_type_code
36615       ,p_line_definition_owner_code => l_line_definition_owner_code
36616       ,p_line_definition_code       => l_line_definition_code
36617       ,p_accounting_line_code       => l_component_code
36618       ,p_accounting_line_type_code  => l_component_type_code
36619       ,p_accounting_line_appl_id    => l_component_appl_id
36620       ,p_amb_context_code           => l_amb_context_code
36621       ,p_entity_code                => l_entity_code
36622       ,p_event_class_code           => l_event_class_code);
36623    --
36624    -- set accounting class
36625    --
36626    xla_ae_lines_pkg.SetAcctClass(
36627            p_accounting_class_code  => 'COST'
36628          , p_ae_header_id           => l_ae_header_id
36629          );
36630 
36631    --
36632    -- set rounding class
36633    --
36637    --
36634    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36635                       'COST';
36636 
36638    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36639    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36640    --
36641    -- bulk performance
36642    --
36643    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36644 
36645    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36646       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36647 
36648    -- 4955764
36649    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36650       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36651 
36652    -- 4458381 Public Sector Enh
36653    
36654    --
36655    -- set accounting attributes for the line type
36656    --
36657    l_entered_amt_idx := 35;
36658    l_accted_amt_idx  := 40;
36659    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
36660    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36661    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
36662    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
36663    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
36664    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
36665    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
36666    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
36667    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
36668    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
36669    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
36670    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
36671    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
36672    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
36673    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
36674    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
36675    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
36676    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
36677    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
36678    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
36679    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
36680    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
36681    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
36682    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
36683    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
36684    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
36685    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
36686    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
36687    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
36688    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
36689    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
36690    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
36691    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
36692    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
36693    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
36694    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
36695    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
36696    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
36697    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
36698    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
36699    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
36700    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36701    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
36702    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
36703    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
36704    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
36705    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
36706    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36707    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
36708    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
36709    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
36710    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
36711    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
36712    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
36713    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
36714    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
36715    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
36716    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
36717    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
36718    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
36719    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
36720    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
36721    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
36722    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
36723    l_rec_acct_attrs.array_char_value(32)  := 
36724 xla_ae_sources_pkg.GetSystemSourceChar(
36725    p_source_code           => 'XLA_CURRENCY_CODE'
36726  , p_source_type_code      => 'Y'
36727  , p_source_application_id =>  602
36728 );
36729    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
36730    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
36731    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
36735    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
36732    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
36733    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
36734    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
36736    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
36737    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
36738    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
36739    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
36740    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
36741    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
36742    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
36743    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
36744    l_rec_acct_attrs.array_num_value(40)  := p_source_45;
36745    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
36746    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
36747    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
36748    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
36749    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
36750    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
36751    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
36752    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
36753    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
36754    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
36755 
36756    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36757    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36758 
36759    ---------------------------------------------------------------------------------------------------------------
36760    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36761    ---------------------------------------------------------------------------------------------------------------
36762    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36763 
36764    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36765    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36766 
36767    IF xla_accounting_cache_pkg.GetValueChar
36768          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36769          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36770    AND l_bflow_method_code = 'PRIOR_ENTRY'
36771 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36772    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36773          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36774        )
36775    THEN
36776          xla_ae_lines_pkg.BflowUpgEntry
36777            (p_business_method_code    => l_bflow_method_code
36778            ,p_business_class_code     => l_bflow_class_code
36779            ,p_balance_type            => l_balance_type_code);
36780    ELSE
36781       NULL;
36782 -- No business flow processing for business flow method of NONE.
36783    END IF;
36784 
36785    --
36786    -- call analytical criteria
36787    --
36788    
36789    --
36790    -- call description
36791    --
36792    -- No description or it is inherited.
36793    --
36794    -- call ADRs
36795    -- Bug 4922099
36796    --
36797    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36798         (NVL(l_actual_upg_option, 'N') = 'O') OR
36799         (NVL(l_enc_upg_option, 'N') = 'O')
36800       )
36801    THEN
36802    NULL;
36803    --
36804    --
36805    
36806   l_ccid := AcctDerRule_4(
36807            p_application_id           => p_application_id
36808          , p_ae_header_id             => l_ae_header_id 
36809 , p_source_4 => p_source_4
36810 , p_source_5 => p_source_5
36811          , x_transaction_coa_id       => l_adr_transaction_coa_id
36812          , x_accounting_coa_id        => l_adr_accounting_coa_id
36813          , x_value_type_code          => l_adr_value_type_code
36814          , p_side                     => 'NA'
36815    );
36816 
36817    xla_ae_lines_pkg.set_ccid(
36818     p_code_combination_id          => l_ccid
36819   , p_value_type_code              => l_adr_value_type_code
36820   , p_transaction_coa_id           => l_adr_transaction_coa_id
36821   , p_accounting_coa_id            => l_adr_accounting_coa_id
36822   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
36823   , p_adr_type_code                => 'S'
36824   , p_component_type               => l_component_type
36825   , p_component_code               => l_component_code
36826   , p_component_type_code          => l_component_type_code
36827   , p_component_appl_id            => l_component_appl_id
36828   , p_amb_context_code             => l_amb_context_code
36829   , p_side                         => 'NA'
36830   );
36831 
36832 
36833    --
36834    --
36835    END IF;
36836    --
36837    -- Bug 4922099
36838    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36839           (NVL(l_enc_upg_option, 'N') = 'O')
36840         ) AND
36841         (l_bflow_method_code = 'PRIOR_ENTRY')
36842       )
36843    THEN
36844       IF
36845       --
36846       1 = 2
36847       --
36848       THEN
36849       xla_accounting_err_pkg.build_message
36850                                     (p_appli_s_name            => 'XLA'
36851                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36852                                     ,p_token_1                 => 'LINE_NUMBER'
36853                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36857                                                                             ,l_component_code
36854                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36855                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36856                                                                              l_component_type
36858                                                                             ,l_component_type_code
36859                                                                             ,l_component_appl_id
36860                                                                             ,l_amb_context_code
36861                                                                             ,l_entity_code
36862                                                                             ,l_event_class_code
36863                                                                            )
36864                                     ,p_token_3                 => 'OWNER'
36865                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36866                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36867                                                                           ,p_lookup_code    => l_component_type_code
36868                                                                          )
36869                                     ,p_token_4                 => 'PRODUCT_NAME'
36870                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36871                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36872                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36873                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36874                                     ,p_ae_header_id            =>  NULL
36875                                        );
36876 
36877         IF (C_LEVEL_ERROR>= g_log_level) THEN
36878                  trace
36879                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36880                       ,p_level    => C_LEVEL_ERROR
36881                       ,p_module   => l_log_module);
36882         END IF;
36883       END IF;
36884    END IF;
36885    --
36886    --
36887    ------------------------------------------------------------------------------------------------
36888    -- 4219869 Business Flow
36889    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36890    -- Prior Entry.  Currently, the following code is always generated.
36891    ------------------------------------------------------------------------------------------------
36892    XLA_AE_LINES_PKG.ValidateCurrentLine;
36893 
36894    ------------------------------------------------------------------------------------
36895    -- 4219869 Business Flow
36896    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36897    ------------------------------------------------------------------------------------
36898    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36899 
36900    ----------------------------------------------------------------------------------
36901    -- 4219869 Business Flow
36902    -- Update journal entry status -- Need to generate this within IF <condition>
36903    ----------------------------------------------------------------------------------
36904    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36905          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36906          ,p_balance_type_code => l_balance_type_code
36907          );
36908 
36909    -------------------------------------------------------------------------------------------
36910    -- 4262811 - Generate the Accrual Reversal lines
36911    -------------------------------------------------------------------------------------------
36912    BEGIN
36913       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36914                               (g_array_event(p_event_id).array_value_num('header_index'));
36915       IF l_acc_rev_flag IS NULL THEN
36916          l_acc_rev_flag := 'N';
36917       END IF;
36918    EXCEPTION
36919       WHEN OTHERS THEN
36920          l_acc_rev_flag := 'N';
36921    END;
36922    --
36923    IF (l_acc_rev_flag = 'Y') THEN
36924 
36925        -- 4645092  ------------------------------------------------------------------------------
36926        -- To allow MPA report to determine if it should generate report process
36927        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36928        ------------------------------------------------------------------------------------------
36929 
36930        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36931        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36932 
36933        --
36934        -- Update the line information that should be overwritten
36935        --
36936        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36937                                          p_header_num   => 1);
36938        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36939 
36940        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36941 
36942        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36943           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36944        END IF;
36945 
36946       --
36947       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36948       --
36949       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36950           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36951       ELSE
36955           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36952           ---------------------------------------------------------------------------------------------------
36953           -- 4262811a Switch Sign
36954           ---------------------------------------------------------------------------------------------------
36956           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36957                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36958           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36959                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36960           -- 5132302
36961           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36962                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36963 
36964       END IF;
36965 
36966       -- 4955764
36967       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36968       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36969 
36970 
36971       XLA_AE_LINES_PKG.ValidateCurrentLine;
36972       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36973 
36974       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36975                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36976                ,p_balance_type_code => l_balance_type_code);
36977 
36978    END IF;
36979 
36980    -----------------------------------------------------------------------------------------
36981    -- 4262811 Multiperiod Accounting
36982    -----------------------------------------------------------------------------------------
36983      -- No MPA option is assigned.
36984 
36985 
36986 END IF;
36987 END IF;
36988 --
36989 
36990 --
36991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36992    trace
36993       (p_msg      => 'END of AcctLineType_79'
36994       ,p_level    => C_LEVEL_PROCEDURE
36995       ,p_module   => l_log_module);
36996 END IF;
36997 --
36998 EXCEPTION
36999   WHEN xla_exceptions_pkg.application_exception THEN
37000       RAISE;
37001   WHEN OTHERS THEN
37002        xla_exceptions_pkg.raise_message
37003            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_79');
37004 END AcctLineType_79;
37005 --
37006 
37007 ---------------------------------------
37008 --
37009 -- PRIVATE FUNCTION
37010 --         AcctLineType_80
37011 --
37012 ---------------------------------------
37013 PROCEDURE AcctLineType_80 (
37014   p_application_id        IN NUMBER
37015  ,p_event_id              IN NUMBER
37016  ,p_calculate_acctd_flag  IN VARCHAR2
37017  ,p_calculate_g_l_flag    IN VARCHAR2
37018  ,p_actual_flag           IN OUT VARCHAR2
37019  ,p_balance_type_code     OUT VARCHAR2
37020  ,p_gain_or_loss_ref      OUT VARCHAR2
37021  
37022 --Budget Code Combination ID
37023  , p_source_2            IN NUMBER
37024 --Cost CCID
37025  , p_source_3            IN NUMBER
37026 --Allow Account Override Flag
37027  , p_source_4            IN VARCHAR2
37028 --Cost Clearing CCID
37029  , p_source_6            IN NUMBER
37030 --Adjustment Cost Clearing CCID
37031  , p_source_7            IN NUMBER
37032 --Reversing Line Flag
37033  , p_source_22            IN VARCHAR2
37034 --Actual Upgrade Credit Accounting Class
37035  , p_source_23            IN VARCHAR2
37036 --Entered Currency Code
37037  , p_source_25            IN VARCHAR2
37038 --Exchange Rate Date
37039  , p_source_27            IN DATE
37040 --Exchange Rate
37041  , p_source_28            IN NUMBER
37042 --Exchange Rate Type
37043  , p_source_29            IN VARCHAR2
37044 --Actual Upgrade Debit Accounting Class
37045  , p_source_30            IN VARCHAR2
37046 --Use Actuals Upgrade Attributes Flag
37047  , p_source_31            IN VARCHAR2
37048 --Expenditure Item ID
37049  , p_source_32            IN NUMBER
37050 --Cost Distribution Line Number
37051  , p_source_33            IN NUMBER
37052 --Line Type
37053  , p_source_34            IN VARCHAR2
37054  , p_source_34_meaning    IN VARCHAR2
37055 --Reversed Line Number
37056  , p_source_35            IN NUMBER
37057 --Entered Burdened Cost
37058  , p_source_44            IN NUMBER
37059 --Accounted Burdened Cost
37060  , p_source_45            IN NUMBER
37061 --Encumbrance Amount
37062  , p_source_46            IN NUMBER
37063 --Project Encumbrance Applied to Application Identifier
37064  , p_source_47            IN NUMBER
37065 --Project Encumbrance Applied to Distribution Type
37066  , p_source_48            IN VARCHAR2
37067 --Project Encumbrance Applied to Entity Code
37068  , p_source_49            IN VARCHAR2
37069 --Project Encumbrance Applied to First Distribution ID
37070  , p_source_50            IN NUMBER
37071 --Project Encumbrance Applied to First System Transaction ID
37072  , p_source_51            IN NUMBER
37073 --Project Encumbrance Applied to Second Distribution ID
37074  , p_source_52            IN VARCHAR2
37075 --Encumbrance Upgrade Credit Accounting Class
37076  , p_source_53            IN VARCHAR2
37077 --Encumbrance Upgrade Debit Accounting Class
37078  , p_source_54            IN VARCHAR2
37079 --Use Encumbrance Upgrade Attributes Flag
37080  , p_source_55            IN VARCHAR2
37081 --Encumbrance Type ID
37082  , p_source_56            IN NUMBER
37083 --Project Encumbrance Type ID
37084  , p_source_57            IN NUMBER
37085 )
37086 IS
37087 
37088 l_component_type              VARCHAR2(80);
37089 l_component_code              VARCHAR2(30);
37090 l_component_type_code         VARCHAR2(1);
37094 l_event_class_code            VARCHAR2(30);
37091 l_component_appl_id           INTEGER;
37092 l_amb_context_code            VARCHAR2(30);
37093 l_entity_code                 VARCHAR2(30);
37095 l_ae_header_id                NUMBER;
37096 l_event_type_code             VARCHAR2(30);
37097 l_line_definition_code        VARCHAR2(30);
37098 l_line_definition_owner_code  VARCHAR2(1);
37099 --
37100 -- adr variables
37101 l_segment                     VARCHAR2(30);
37102 l_ccid                        NUMBER;
37103 l_adr_transaction_coa_id      NUMBER;
37104 l_adr_accounting_coa_id       NUMBER;
37105 l_adr_flexfield_segment_code  VARCHAR2(30);
37106 l_adr_flex_value_set_id       NUMBER;
37107 l_adr_value_type_code         VARCHAR2(30);
37108 l_adr_value_combination_id    NUMBER;
37109 l_adr_value_segment_code      VARCHAR2(30);
37110 
37111 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37112 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37113 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37114 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37115 
37116 -- 4262811 Variables ------------------------------------------------------------------------------------------
37117 l_entered_amt_idx             NUMBER;
37118 l_accted_amt_idx              NUMBER;
37119 l_acc_rev_flag                VARCHAR2(1);
37120 l_accrual_line_num            NUMBER;
37121 l_tmp_amt                     NUMBER;
37122 l_acc_rev_natural_side_code   VARCHAR2(1);
37123 
37124 l_num_entries                 NUMBER;
37125 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37126 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37127 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37128 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37129 l_recog_line_1                NUMBER;
37130 l_recog_line_2                NUMBER;
37131 
37132 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37133 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37134 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37135 
37136 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37137 
37138 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37139 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37140 
37141 ---------------------------------------------------------------------------------------------------------------
37142 
37143 
37144 --
37145 -- bulk performance
37146 --
37147 l_balance_type_code           VARCHAR2(1);
37148 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37149 l_log_module                  VARCHAR2(240);
37150 
37151 --
37152 -- Upgrade strategy
37153 --
37154 l_actual_upg_option           VARCHAR2(1);
37155 l_enc_upg_option           VARCHAR2(1);
37156 
37157 --
37158 BEGIN
37159 --
37160 IF g_log_enabled THEN
37161       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
37162 END IF;
37163 --
37164 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37165 
37166       trace
37167          (p_msg      => 'BEGIN of AcctLineType_80'
37168          ,p_level    => C_LEVEL_PROCEDURE
37169          ,p_module   => l_log_module);
37170 
37171 END IF;
37172 --
37173 l_component_type             := 'AMB_JLT';
37174 l_component_code             := 'PA_TOT_BURDENED_COST_CLEARING';
37175 l_component_type_code        := 'S';
37176 l_component_appl_id          :=  275;
37177 l_amb_context_code           := 'DEFAULT';
37178 l_entity_code                := 'EXPENDITURES';
37179 l_event_class_code           := 'TOT_BURDENED_COST';
37180 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
37181 l_line_definition_owner_code := 'S';
37182 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
37183 --
37184 l_balance_type_code          := 'A';
37185 l_segment                     := NULL;
37186 l_ccid                        := NULL;
37187 l_adr_transaction_coa_id      := NULL;
37188 l_adr_accounting_coa_id       := NULL;
37189 l_adr_flexfield_segment_code  := NULL;
37190 l_adr_flex_value_set_id       := NULL;
37191 l_adr_value_type_code         := NULL;
37192 l_adr_value_combination_id    := NULL;
37193 l_adr_value_segment_code      := NULL;
37194 
37195 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37196 l_bflow_class_code           := '';    -- 4219869 Business Flow
37197 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37198 l_budgetary_control_flag     := 'N';
37199 
37200 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37201 l_bflow_applied_to_amt       := NULL; -- 5132302
37202 l_entered_amt_idx            := NULL;          -- 4262811
37203 l_accted_amt_idx             := NULL;          -- 4262811
37204 l_acc_rev_flag               := NULL;          -- 4262811
37205 l_accrual_line_num           := NULL;          -- 4262811
37206 l_tmp_amt                    := NULL;          -- 4262811
37207 --
37208  
37209 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37210     l_balance_type_code <> 'B' THEN
37211 IF NVL(p_source_34,'
37212 ') =  'C'
37213  THEN 
37214 
37215    --
37216    XLA_AE_LINES_PKG.SetNewLine;
37217 
37218    p_balance_type_code          := l_balance_type_code;
37219    -- set the flag so later we will know whether the gain loss line needs to be created
37220    
37221    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37222      p_actual_flag :='A';
37223    END IF;
37224 
37225    --
37226    -- bulk performance
37227    --
37228    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37232    --
37229                                       p_header_num   => 0); -- 4262811
37230    --
37231    -- set accounting line options
37233    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37234            p_natural_side_code          => 'C'
37235          , p_gain_or_loss_flag          => 'N'
37236          , p_gl_transfer_mode_code      => 'S'
37237          , p_acct_entry_type_code       => 'A'
37238          , p_switch_side_flag           => 'Y'
37239          , p_merge_duplicate_code       => 'N'
37240          );
37241    --
37242    l_acc_rev_natural_side_code := 'D';  -- 4262811
37243    -- 
37244    --
37245    -- set accounting line type info
37246    --
37247    xla_ae_lines_pkg.SetAcctLineType
37248       (p_component_type             => l_component_type
37249       ,p_event_type_code            => l_event_type_code
37250       ,p_line_definition_owner_code => l_line_definition_owner_code
37251       ,p_line_definition_code       => l_line_definition_code
37252       ,p_accounting_line_code       => l_component_code
37253       ,p_accounting_line_type_code  => l_component_type_code
37254       ,p_accounting_line_appl_id    => l_component_appl_id
37255       ,p_amb_context_code           => l_amb_context_code
37256       ,p_entity_code                => l_entity_code
37257       ,p_event_class_code           => l_event_class_code);
37258    --
37259    -- set accounting class
37260    --
37261    xla_ae_lines_pkg.SetAcctClass(
37262            p_accounting_class_code  => 'COST_CLEARING'
37263          , p_ae_header_id           => l_ae_header_id
37264          );
37265 
37266    --
37267    -- set rounding class
37268    --
37269    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37270                       'COST_CLEARING';
37271 
37272    --
37273    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37274    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37275    --
37276    -- bulk performance
37277    --
37278    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37279 
37280    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37281       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37282 
37283    -- 4955764
37284    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37285       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37286 
37287    -- 4458381 Public Sector Enh
37288    
37289    --
37290    -- set accounting attributes for the line type
37291    --
37292    l_entered_amt_idx := 40;
37293    l_accted_amt_idx  := 46;
37294    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
37295    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37296    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
37297    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
37298    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
37299    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
37300    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
37301    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
37302    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
37303    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
37304    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
37305    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
37306    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
37307    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
37308    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
37309    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
37310    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
37311    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
37312    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
37313    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
37314    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
37315    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
37316    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
37317    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
37318    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
37319    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
37320    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
37321    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
37322    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
37323    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
37324    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
37325    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
37326    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
37327    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
37328    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
37329    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
37330    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
37331    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
37332    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
37333    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
37334    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
37335    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37336    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
37337    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
37338    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
37339    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
37343    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
37340    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
37341    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37342    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
37344    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
37345    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
37346    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
37347    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
37348    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
37349    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
37350    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
37351    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
37352    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
37353    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
37354    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
37355    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
37356    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
37357    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
37358    l_rec_acct_attrs.array_char_value(32)  := 
37359 xla_ae_sources_pkg.GetSystemSourceChar(
37360    p_source_code           => 'XLA_CURRENCY_CODE'
37361  , p_source_type_code      => 'Y'
37362  , p_source_application_id =>  602
37363 );
37364    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
37365    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
37366    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
37367    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
37368    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
37369    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
37370    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
37371    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
37372    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
37373    l_rec_acct_attrs.array_char_value(37)  := 
37374 xla_ae_sources_pkg.GetSystemSourceChar(
37375    p_source_code           => 'XLA_CURRENCY_CODE'
37376  , p_source_type_code      => 'Y'
37377  , p_source_application_id =>  602
37378 );
37379    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
37380    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
37381    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
37382    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
37383    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
37384    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
37385    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
37386    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
37387    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
37388    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
37389    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
37390    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
37391    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
37392    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
37393    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
37394    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
37395    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
37396    l_rec_acct_attrs.array_num_value(46)  := p_source_45;
37397    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
37398    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
37399    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
37400    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
37401    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
37402    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
37403    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
37404    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
37405    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
37406    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
37407 
37408    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37409    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37410 
37411    ---------------------------------------------------------------------------------------------------------------
37412    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37413    ---------------------------------------------------------------------------------------------------------------
37414    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37415 
37416    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37417    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37418 
37419    IF xla_accounting_cache_pkg.GetValueChar
37420          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37421          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37422    AND l_bflow_method_code = 'PRIOR_ENTRY'
37423 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37424    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37425          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37426        )
37427    THEN
37428          xla_ae_lines_pkg.BflowUpgEntry
37429            (p_business_method_code    => l_bflow_method_code
37430            ,p_business_class_code     => l_bflow_class_code
37431            ,p_balance_type            => l_balance_type_code);
37432    ELSE
37433       NULL;
37434 -- No business flow processing for business flow method of NONE.
37435    END IF;
37436 
37437    --
37441    --
37438    -- call analytical criteria
37439    --
37440    
37442    -- call description
37443    --
37444    -- No description or it is inherited.
37445    --
37446    -- call ADRs
37447    -- Bug 4922099
37448    --
37449    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37450         (NVL(l_actual_upg_option, 'N') = 'O') OR
37451         (NVL(l_enc_upg_option, 'N') = 'O')
37452       )
37453    THEN
37454    NULL;
37455    --
37456    --
37457    
37458   l_ccid := AcctDerRule_5(
37459            p_application_id           => p_application_id
37460          , p_ae_header_id             => l_ae_header_id 
37461 , p_source_4 => p_source_4
37462 , p_source_6 => p_source_6
37463 , p_source_7 => p_source_7
37464          , x_transaction_coa_id       => l_adr_transaction_coa_id
37465          , x_accounting_coa_id        => l_adr_accounting_coa_id
37466          , x_value_type_code          => l_adr_value_type_code
37467          , p_side                     => 'NA'
37468    );
37469 
37470    xla_ae_lines_pkg.set_ccid(
37471     p_code_combination_id          => l_ccid
37472   , p_value_type_code              => l_adr_value_type_code
37473   , p_transaction_coa_id           => l_adr_transaction_coa_id
37474   , p_accounting_coa_id            => l_adr_accounting_coa_id
37475   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
37476   , p_adr_type_code                => 'S'
37477   , p_component_type               => l_component_type
37478   , p_component_code               => l_component_code
37479   , p_component_type_code          => l_component_type_code
37480   , p_component_appl_id            => l_component_appl_id
37481   , p_amb_context_code             => l_amb_context_code
37482   , p_side                         => 'NA'
37483   );
37484 
37485 
37486    --
37487    --
37488    END IF;
37489    --
37490    -- Bug 4922099
37491    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37492           (NVL(l_enc_upg_option, 'N') = 'O')
37493         ) AND
37494         (l_bflow_method_code = 'PRIOR_ENTRY')
37495       )
37496    THEN
37497       IF
37498       --
37499       1 = 2
37500       --
37501       THEN
37502       xla_accounting_err_pkg.build_message
37503                                     (p_appli_s_name            => 'XLA'
37504                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37505                                     ,p_token_1                 => 'LINE_NUMBER'
37506                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37507                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37508                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37509                                                                              l_component_type
37510                                                                             ,l_component_code
37511                                                                             ,l_component_type_code
37512                                                                             ,l_component_appl_id
37513                                                                             ,l_amb_context_code
37514                                                                             ,l_entity_code
37515                                                                             ,l_event_class_code
37516                                                                            )
37517                                     ,p_token_3                 => 'OWNER'
37518                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37519                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37520                                                                           ,p_lookup_code    => l_component_type_code
37521                                                                          )
37522                                     ,p_token_4                 => 'PRODUCT_NAME'
37523                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37524                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37525                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37526                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37527                                     ,p_ae_header_id            =>  NULL
37528                                        );
37529 
37530         IF (C_LEVEL_ERROR>= g_log_level) THEN
37531                  trace
37532                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37533                       ,p_level    => C_LEVEL_ERROR
37534                       ,p_module   => l_log_module);
37535         END IF;
37536       END IF;
37537    END IF;
37538    --
37539    --
37540    ------------------------------------------------------------------------------------------------
37541    -- 4219869 Business Flow
37542    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37543    -- Prior Entry.  Currently, the following code is always generated.
37544    ------------------------------------------------------------------------------------------------
37545    XLA_AE_LINES_PKG.ValidateCurrentLine;
37546 
37547    ------------------------------------------------------------------------------------
37548    -- 4219869 Business Flow
37549    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37550    ------------------------------------------------------------------------------------
37551    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37552 
37553    ----------------------------------------------------------------------------------
37557    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37554    -- 4219869 Business Flow
37555    -- Update journal entry status -- Need to generate this within IF <condition>
37556    ----------------------------------------------------------------------------------
37558          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37559          ,p_balance_type_code => l_balance_type_code
37560          );
37561 
37562    -------------------------------------------------------------------------------------------
37563    -- 4262811 - Generate the Accrual Reversal lines
37564    -------------------------------------------------------------------------------------------
37565    BEGIN
37566       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37567                               (g_array_event(p_event_id).array_value_num('header_index'));
37568       IF l_acc_rev_flag IS NULL THEN
37569          l_acc_rev_flag := 'N';
37570       END IF;
37571    EXCEPTION
37572       WHEN OTHERS THEN
37573          l_acc_rev_flag := 'N';
37574    END;
37575    --
37576    IF (l_acc_rev_flag = 'Y') THEN
37577 
37578        -- 4645092  ------------------------------------------------------------------------------
37579        -- To allow MPA report to determine if it should generate report process
37580        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37581        ------------------------------------------------------------------------------------------
37582 
37583        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37584        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37585 
37586        --
37587        -- Update the line information that should be overwritten
37588        --
37589        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37590                                          p_header_num   => 1);
37591        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37592 
37593        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37594 
37595        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37596           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37597        END IF;
37598 
37599       --
37600       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37601       --
37602       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37603           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37604       ELSE
37605           ---------------------------------------------------------------------------------------------------
37606           -- 4262811a Switch Sign
37607           ---------------------------------------------------------------------------------------------------
37608           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37609           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37610                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37611           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37612                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37613           -- 5132302
37614           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37615                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37616 
37617       END IF;
37618 
37619       -- 4955764
37620       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37621       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37622 
37623 
37624       XLA_AE_LINES_PKG.ValidateCurrentLine;
37625       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37626 
37627       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37628                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37629                ,p_balance_type_code => l_balance_type_code);
37630 
37631    END IF;
37632 
37633    -----------------------------------------------------------------------------------------
37634    -- 4262811 Multiperiod Accounting
37635    -----------------------------------------------------------------------------------------
37636      -- No MPA option is assigned.
37637 
37638 
37639 END IF;
37640 END IF;
37641 --
37642 
37643 --
37644 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37645    trace
37646       (p_msg      => 'END of AcctLineType_80'
37647       ,p_level    => C_LEVEL_PROCEDURE
37648       ,p_module   => l_log_module);
37649 END IF;
37650 --
37651 EXCEPTION
37652   WHEN xla_exceptions_pkg.application_exception THEN
37653       RAISE;
37654   WHEN OTHERS THEN
37655        xla_exceptions_pkg.raise_message
37656            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_80');
37657 END AcctLineType_80;
37658 --
37659 
37660 ---------------------------------------
37661 --
37662 -- PRIVATE FUNCTION
37663 --         AcctLineType_81
37664 --
37665 ---------------------------------------
37666 PROCEDURE AcctLineType_81 (
37667   p_application_id        IN NUMBER
37668  ,p_event_id              IN NUMBER
37669  ,p_calculate_acctd_flag  IN VARCHAR2
37670  ,p_calculate_g_l_flag    IN VARCHAR2
37671  ,p_actual_flag           IN OUT VARCHAR2
37672  ,p_balance_type_code     OUT VARCHAR2
37673  ,p_gain_or_loss_ref      OUT VARCHAR2
37674  
37675 --Budget Code Combination ID
37676  , p_source_2            IN NUMBER
37677 --Cost CCID
37678  , p_source_3            IN NUMBER
37682  , p_source_6            IN NUMBER
37679 --Allow Account Override Flag
37680  , p_source_4            IN VARCHAR2
37681 --Cost Clearing CCID
37683 --Adjustment Cost Clearing CCID
37684  , p_source_7            IN NUMBER
37685 --Reversing Line Flag
37686  , p_source_22            IN VARCHAR2
37687 --Actual Upgrade Credit Accounting Class
37688  , p_source_23            IN VARCHAR2
37689 --Entered Currency Code
37690  , p_source_25            IN VARCHAR2
37691 --Exchange Rate Date
37692  , p_source_27            IN DATE
37693 --Exchange Rate
37694  , p_source_28            IN NUMBER
37695 --Exchange Rate Type
37696  , p_source_29            IN VARCHAR2
37697 --Actual Upgrade Debit Accounting Class
37698  , p_source_30            IN VARCHAR2
37699 --Use Actuals Upgrade Attributes Flag
37700  , p_source_31            IN VARCHAR2
37701 --Expenditure Item ID
37702  , p_source_32            IN NUMBER
37703 --Cost Distribution Line Number
37704  , p_source_33            IN NUMBER
37705 --Line Type
37706  , p_source_34            IN VARCHAR2
37707  , p_source_34_meaning    IN VARCHAR2
37708 --Reversed Line Number
37709  , p_source_35            IN NUMBER
37710 --Entered Burdened Cost
37711  , p_source_44            IN NUMBER
37712 --Accounted Burdened Cost
37713  , p_source_45            IN NUMBER
37714 --Encumbrance Amount
37715  , p_source_46            IN NUMBER
37716 --Project Encumbrance Applied to Application Identifier
37717  , p_source_47            IN NUMBER
37718 --Project Encumbrance Applied to Distribution Type
37719  , p_source_48            IN VARCHAR2
37720 --Project Encumbrance Applied to Entity Code
37721  , p_source_49            IN VARCHAR2
37722 --Project Encumbrance Applied to First Distribution ID
37723  , p_source_50            IN NUMBER
37724 --Project Encumbrance Applied to First System Transaction ID
37725  , p_source_51            IN NUMBER
37726 --Project Encumbrance Applied to Second Distribution ID
37727  , p_source_52            IN VARCHAR2
37728 --Encumbrance Upgrade Debit Accounting Class
37729  , p_source_54            IN VARCHAR2
37730 --Use Encumbrance Upgrade Attributes Flag
37731  , p_source_55            IN VARCHAR2
37732 --Encumbrance Type ID
37733  , p_source_56            IN NUMBER
37734 --Project Encumbrance Type ID
37735  , p_source_57            IN NUMBER
37736 )
37737 IS
37738 
37739 l_component_type              VARCHAR2(80);
37740 l_component_code              VARCHAR2(30);
37741 l_component_type_code         VARCHAR2(1);
37742 l_component_appl_id           INTEGER;
37743 l_amb_context_code            VARCHAR2(30);
37744 l_entity_code                 VARCHAR2(30);
37745 l_event_class_code            VARCHAR2(30);
37746 l_ae_header_id                NUMBER;
37747 l_event_type_code             VARCHAR2(30);
37748 l_line_definition_code        VARCHAR2(30);
37749 l_line_definition_owner_code  VARCHAR2(1);
37750 --
37751 -- adr variables
37752 l_segment                     VARCHAR2(30);
37753 l_ccid                        NUMBER;
37754 l_adr_transaction_coa_id      NUMBER;
37755 l_adr_accounting_coa_id       NUMBER;
37756 l_adr_flexfield_segment_code  VARCHAR2(30);
37757 l_adr_flex_value_set_id       NUMBER;
37758 l_adr_value_type_code         VARCHAR2(30);
37759 l_adr_value_combination_id    NUMBER;
37760 l_adr_value_segment_code      VARCHAR2(30);
37761 
37762 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37763 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37764 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37765 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37766 
37767 -- 4262811 Variables ------------------------------------------------------------------------------------------
37768 l_entered_amt_idx             NUMBER;
37769 l_accted_amt_idx              NUMBER;
37770 l_acc_rev_flag                VARCHAR2(1);
37771 l_accrual_line_num            NUMBER;
37772 l_tmp_amt                     NUMBER;
37773 l_acc_rev_natural_side_code   VARCHAR2(1);
37774 
37775 l_num_entries                 NUMBER;
37776 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37777 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37778 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37779 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37780 l_recog_line_1                NUMBER;
37781 l_recog_line_2                NUMBER;
37782 
37783 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37784 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37785 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37786 
37787 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37788 
37789 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37790 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37791 
37792 ---------------------------------------------------------------------------------------------------------------
37793 
37794 
37795 --
37796 -- bulk performance
37797 --
37798 l_balance_type_code           VARCHAR2(1);
37799 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37800 l_log_module                  VARCHAR2(240);
37801 
37802 --
37803 -- Upgrade strategy
37804 --
37805 l_actual_upg_option           VARCHAR2(1);
37806 l_enc_upg_option           VARCHAR2(1);
37807 
37808 --
37809 BEGIN
37810 --
37811 IF g_log_enabled THEN
37812       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
37813 END IF;
37814 --
37815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37816 
37817       trace
37818          (p_msg      => 'BEGIN of AcctLineType_81'
37822 END IF;
37819          ,p_level    => C_LEVEL_PROCEDURE
37820          ,p_module   => l_log_module);
37821 
37823 --
37824 l_component_type             := 'AMB_JLT';
37825 l_component_code             := 'PA_TOT_BURDENED_COST_CLEAR_ADJ';
37826 l_component_type_code        := 'S';
37827 l_component_appl_id          :=  275;
37828 l_amb_context_code           := 'DEFAULT';
37829 l_entity_code                := 'EXPENDITURES';
37830 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
37831 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
37832 l_line_definition_owner_code := 'S';
37833 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
37834 --
37835 l_balance_type_code          := 'A';
37836 l_segment                     := NULL;
37837 l_ccid                        := NULL;
37838 l_adr_transaction_coa_id      := NULL;
37839 l_adr_accounting_coa_id       := NULL;
37840 l_adr_flexfield_segment_code  := NULL;
37841 l_adr_flex_value_set_id       := NULL;
37842 l_adr_value_type_code         := NULL;
37843 l_adr_value_combination_id    := NULL;
37844 l_adr_value_segment_code      := NULL;
37845 
37846 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37847 l_bflow_class_code           := '';    -- 4219869 Business Flow
37848 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37849 l_budgetary_control_flag     := 'N';
37850 
37851 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37852 l_bflow_applied_to_amt       := NULL; -- 5132302
37853 l_entered_amt_idx            := NULL;          -- 4262811
37854 l_accted_amt_idx             := NULL;          -- 4262811
37855 l_acc_rev_flag               := NULL;          -- 4262811
37856 l_accrual_line_num           := NULL;          -- 4262811
37857 l_tmp_amt                    := NULL;          -- 4262811
37858 --
37859  
37860 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37861     l_balance_type_code <> 'B' THEN
37862 IF NVL(p_source_34,'
37863 ') =  'C'
37864  THEN 
37865 
37866    --
37867    XLA_AE_LINES_PKG.SetNewLine;
37868 
37869    p_balance_type_code          := l_balance_type_code;
37870    -- set the flag so later we will know whether the gain loss line needs to be created
37871    
37872    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37873      p_actual_flag :='A';
37874    END IF;
37875 
37876    --
37877    -- bulk performance
37878    --
37879    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37880                                       p_header_num   => 0); -- 4262811
37881    --
37882    -- set accounting line options
37883    --
37884    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37885            p_natural_side_code          => 'C'
37886          , p_gain_or_loss_flag          => 'N'
37887          , p_gl_transfer_mode_code      => 'S'
37888          , p_acct_entry_type_code       => 'A'
37889          , p_switch_side_flag           => 'Y'
37890          , p_merge_duplicate_code       => 'N'
37891          );
37892    --
37893    l_acc_rev_natural_side_code := 'D';  -- 4262811
37894    -- 
37895    --
37896    -- set accounting line type info
37897    --
37898    xla_ae_lines_pkg.SetAcctLineType
37899       (p_component_type             => l_component_type
37900       ,p_event_type_code            => l_event_type_code
37901       ,p_line_definition_owner_code => l_line_definition_owner_code
37902       ,p_line_definition_code       => l_line_definition_code
37903       ,p_accounting_line_code       => l_component_code
37904       ,p_accounting_line_type_code  => l_component_type_code
37905       ,p_accounting_line_appl_id    => l_component_appl_id
37906       ,p_amb_context_code           => l_amb_context_code
37907       ,p_entity_code                => l_entity_code
37908       ,p_event_class_code           => l_event_class_code);
37909    --
37910    -- set accounting class
37911    --
37912    xla_ae_lines_pkg.SetAcctClass(
37913            p_accounting_class_code  => 'COST_CLEARING'
37914          , p_ae_header_id           => l_ae_header_id
37915          );
37916 
37917    --
37918    -- set rounding class
37919    --
37920    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37921                       'COST_CLEARING';
37922 
37923    --
37924    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37925    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37926    --
37927    -- bulk performance
37928    --
37929    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37930 
37931    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37932       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37933 
37934    -- 4955764
37935    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37936       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37937 
37938    -- 4458381 Public Sector Enh
37939    
37940    --
37941    -- set accounting attributes for the line type
37942    --
37943    l_entered_amt_idx := 35;
37944    l_accted_amt_idx  := 40;
37945    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
37946    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37947    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
37948    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
37949    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
37950    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
37951    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
37955    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
37952    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
37953    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
37954    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
37956    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
37957    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
37958    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
37959    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
37960    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
37961    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
37962    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
37963    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
37964    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
37965    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
37966    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
37967    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
37968    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
37969    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
37970    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
37971    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
37972    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
37973    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
37974    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
37975    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
37976    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
37977    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
37978    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
37979    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
37980    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
37981    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
37982    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
37983    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
37984    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
37985    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
37986    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37987    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
37988    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
37989    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
37990    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
37991    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
37992    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37993    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
37994    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
37995    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
37996    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
37997    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
37998    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
37999    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
38000    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
38001    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
38002    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
38003    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
38004    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
38005    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
38006    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
38007    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
38008    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
38009    l_rec_acct_attrs.array_char_value(32)  := 
38010 xla_ae_sources_pkg.GetSystemSourceChar(
38011    p_source_code           => 'XLA_CURRENCY_CODE'
38012  , p_source_type_code      => 'Y'
38013  , p_source_application_id =>  602
38014 );
38015    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
38016    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
38017    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
38018    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
38019    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
38020    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
38021    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
38022    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
38023    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
38024    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
38025    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
38026    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
38027    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
38028    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
38029    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
38030    l_rec_acct_attrs.array_num_value(40)  := p_source_45;
38031    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
38032    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
38033    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
38034    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
38035    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
38036    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
38037    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
38038    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
38039    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
38040    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
38041 
38042    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38046    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38043    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38044 
38045    ---------------------------------------------------------------------------------------------------------------
38047    ---------------------------------------------------------------------------------------------------------------
38048    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38049 
38050    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38051    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38052 
38053    IF xla_accounting_cache_pkg.GetValueChar
38054          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38055          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38056    AND l_bflow_method_code = 'PRIOR_ENTRY'
38057 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38058    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38059          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38060        )
38061    THEN
38062          xla_ae_lines_pkg.BflowUpgEntry
38063            (p_business_method_code    => l_bflow_method_code
38064            ,p_business_class_code     => l_bflow_class_code
38065            ,p_balance_type            => l_balance_type_code);
38066    ELSE
38067       NULL;
38068 -- No business flow processing for business flow method of NONE.
38069    END IF;
38070 
38071    --
38072    -- call analytical criteria
38073    --
38074    
38075    --
38076    -- call description
38077    --
38078    -- No description or it is inherited.
38079    --
38080    -- call ADRs
38081    -- Bug 4922099
38082    --
38083    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38084         (NVL(l_actual_upg_option, 'N') = 'O') OR
38085         (NVL(l_enc_upg_option, 'N') = 'O')
38086       )
38087    THEN
38088    NULL;
38089    --
38090    --
38091    
38092   l_ccid := AcctDerRule_6(
38093            p_application_id           => p_application_id
38094          , p_ae_header_id             => l_ae_header_id 
38095 , p_source_4 => p_source_4
38096 , p_source_7 => p_source_7
38097          , x_transaction_coa_id       => l_adr_transaction_coa_id
38098          , x_accounting_coa_id        => l_adr_accounting_coa_id
38099          , x_value_type_code          => l_adr_value_type_code
38100          , p_side                     => 'NA'
38101    );
38102 
38103    xla_ae_lines_pkg.set_ccid(
38104     p_code_combination_id          => l_ccid
38105   , p_value_type_code              => l_adr_value_type_code
38106   , p_transaction_coa_id           => l_adr_transaction_coa_id
38107   , p_accounting_coa_id            => l_adr_accounting_coa_id
38108   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
38109   , p_adr_type_code                => 'S'
38110   , p_component_type               => l_component_type
38111   , p_component_code               => l_component_code
38112   , p_component_type_code          => l_component_type_code
38113   , p_component_appl_id            => l_component_appl_id
38114   , p_amb_context_code             => l_amb_context_code
38115   , p_side                         => 'NA'
38116   );
38117 
38118 
38119    --
38120    --
38121    END IF;
38122    --
38123    -- Bug 4922099
38124    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38125           (NVL(l_enc_upg_option, 'N') = 'O')
38126         ) AND
38127         (l_bflow_method_code = 'PRIOR_ENTRY')
38128       )
38129    THEN
38130       IF
38131       --
38132       1 = 2
38133       --
38134       THEN
38135       xla_accounting_err_pkg.build_message
38136                                     (p_appli_s_name            => 'XLA'
38137                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38138                                     ,p_token_1                 => 'LINE_NUMBER'
38139                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38140                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38141                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38142                                                                              l_component_type
38143                                                                             ,l_component_code
38144                                                                             ,l_component_type_code
38145                                                                             ,l_component_appl_id
38146                                                                             ,l_amb_context_code
38147                                                                             ,l_entity_code
38148                                                                             ,l_event_class_code
38149                                                                            )
38150                                     ,p_token_3                 => 'OWNER'
38151                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38152                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38153                                                                           ,p_lookup_code    => l_component_type_code
38154                                                                          )
38155                                     ,p_token_4                 => 'PRODUCT_NAME'
38156                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38157                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38161                                        );
38158                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38159                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38160                                     ,p_ae_header_id            =>  NULL
38162 
38163         IF (C_LEVEL_ERROR>= g_log_level) THEN
38164                  trace
38165                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38166                       ,p_level    => C_LEVEL_ERROR
38167                       ,p_module   => l_log_module);
38168         END IF;
38169       END IF;
38170    END IF;
38171    --
38172    --
38173    ------------------------------------------------------------------------------------------------
38174    -- 4219869 Business Flow
38175    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38176    -- Prior Entry.  Currently, the following code is always generated.
38177    ------------------------------------------------------------------------------------------------
38178    XLA_AE_LINES_PKG.ValidateCurrentLine;
38179 
38180    ------------------------------------------------------------------------------------
38181    -- 4219869 Business Flow
38182    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38183    ------------------------------------------------------------------------------------
38184    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38185 
38186    ----------------------------------------------------------------------------------
38187    -- 4219869 Business Flow
38188    -- Update journal entry status -- Need to generate this within IF <condition>
38189    ----------------------------------------------------------------------------------
38190    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38191          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38192          ,p_balance_type_code => l_balance_type_code
38193          );
38194 
38195    -------------------------------------------------------------------------------------------
38196    -- 4262811 - Generate the Accrual Reversal lines
38197    -------------------------------------------------------------------------------------------
38198    BEGIN
38199       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38200                               (g_array_event(p_event_id).array_value_num('header_index'));
38201       IF l_acc_rev_flag IS NULL THEN
38202          l_acc_rev_flag := 'N';
38203       END IF;
38204    EXCEPTION
38205       WHEN OTHERS THEN
38206          l_acc_rev_flag := 'N';
38207    END;
38208    --
38209    IF (l_acc_rev_flag = 'Y') THEN
38210 
38211        -- 4645092  ------------------------------------------------------------------------------
38212        -- To allow MPA report to determine if it should generate report process
38213        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38214        ------------------------------------------------------------------------------------------
38215 
38216        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38217        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38218 
38219        --
38220        -- Update the line information that should be overwritten
38221        --
38222        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38223                                          p_header_num   => 1);
38224        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38225 
38226        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38227 
38228        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38229           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38230        END IF;
38231 
38232       --
38233       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38234       --
38235       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38236           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38237       ELSE
38238           ---------------------------------------------------------------------------------------------------
38239           -- 4262811a Switch Sign
38240           ---------------------------------------------------------------------------------------------------
38241           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38242           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38243                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38244           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38245                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38246           -- 5132302
38247           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38248                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38249 
38250       END IF;
38251 
38252       -- 4955764
38253       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38254       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38255 
38256 
38257       XLA_AE_LINES_PKG.ValidateCurrentLine;
38258       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38259 
38260       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38261                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38262                ,p_balance_type_code => l_balance_type_code);
38263 
38264    END IF;
38265 
38269      -- No MPA option is assigned.
38266    -----------------------------------------------------------------------------------------
38267    -- 4262811 Multiperiod Accounting
38268    -----------------------------------------------------------------------------------------
38270 
38271 
38272 END IF;
38273 END IF;
38274 --
38275 
38276 --
38277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38278    trace
38279       (p_msg      => 'END of AcctLineType_81'
38280       ,p_level    => C_LEVEL_PROCEDURE
38281       ,p_module   => l_log_module);
38282 END IF;
38283 --
38284 EXCEPTION
38285   WHEN xla_exceptions_pkg.application_exception THEN
38286       RAISE;
38287   WHEN OTHERS THEN
38288        xla_exceptions_pkg.raise_message
38289            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_81');
38290 END AcctLineType_81;
38291 --
38292 
38293 ---------------------------------------
38294 --
38295 -- PRIVATE FUNCTION
38296 --         AcctLineType_82
38297 --
38298 ---------------------------------------
38299 PROCEDURE AcctLineType_82 (
38300   p_application_id        IN NUMBER
38301  ,p_event_id              IN NUMBER
38302  ,p_calculate_acctd_flag  IN VARCHAR2
38303  ,p_calculate_g_l_flag    IN VARCHAR2
38304  ,p_actual_flag           IN OUT VARCHAR2
38305  ,p_balance_type_code     OUT VARCHAR2
38306  ,p_gain_or_loss_ref      OUT VARCHAR2
38307  
38308 --Unbilled Receivables CCID
38309  , p_source_19            IN NUMBER
38310 --Entered Currency Code
38311  , p_source_25            IN VARCHAR2
38312 --Exchange Rate Date
38313  , p_source_27            IN DATE
38314 --Exchange Rate
38315  , p_source_28            IN NUMBER
38316 --Exchange Rate Type
38317  , p_source_29            IN VARCHAR2
38318 --Revenue Distribution Type
38319  , p_source_36            IN VARCHAR2
38320 --Crediting Revenue Flag
38321  , p_source_38            IN VARCHAR2
38322 --Revenue First Distribution ID
38323  , p_source_39            IN NUMBER
38324 --Revenue Second Distribution ID
38325  , p_source_40            IN NUMBER
38326 --Entered Amount
38327  , p_source_41            IN NUMBER
38328 --Event ID
38329  , p_source_42            IN NUMBER
38330 --Accounted Amount
38331  , p_source_43            IN NUMBER
38332 )
38333 IS
38334 
38335 l_component_type              VARCHAR2(80);
38336 l_component_code              VARCHAR2(30);
38337 l_component_type_code         VARCHAR2(1);
38338 l_component_appl_id           INTEGER;
38339 l_amb_context_code            VARCHAR2(30);
38340 l_entity_code                 VARCHAR2(30);
38341 l_event_class_code            VARCHAR2(30);
38342 l_ae_header_id                NUMBER;
38343 l_event_type_code             VARCHAR2(30);
38344 l_line_definition_code        VARCHAR2(30);
38345 l_line_definition_owner_code  VARCHAR2(1);
38346 --
38347 -- adr variables
38348 l_segment                     VARCHAR2(30);
38349 l_ccid                        NUMBER;
38350 l_adr_transaction_coa_id      NUMBER;
38351 l_adr_accounting_coa_id       NUMBER;
38352 l_adr_flexfield_segment_code  VARCHAR2(30);
38353 l_adr_flex_value_set_id       NUMBER;
38354 l_adr_value_type_code         VARCHAR2(30);
38355 l_adr_value_combination_id    NUMBER;
38356 l_adr_value_segment_code      VARCHAR2(30);
38357 
38358 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38359 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38360 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38361 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38362 
38363 -- 4262811 Variables ------------------------------------------------------------------------------------------
38364 l_entered_amt_idx             NUMBER;
38365 l_accted_amt_idx              NUMBER;
38366 l_acc_rev_flag                VARCHAR2(1);
38367 l_accrual_line_num            NUMBER;
38368 l_tmp_amt                     NUMBER;
38369 l_acc_rev_natural_side_code   VARCHAR2(1);
38370 
38371 l_num_entries                 NUMBER;
38372 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38373 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38374 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38375 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38376 l_recog_line_1                NUMBER;
38377 l_recog_line_2                NUMBER;
38378 
38379 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38380 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38381 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38382 
38383 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38384 
38385 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38386 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38387 
38388 ---------------------------------------------------------------------------------------------------------------
38389 
38390 
38391 --
38392 -- bulk performance
38393 --
38394 l_balance_type_code           VARCHAR2(1);
38395 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38396 l_log_module                  VARCHAR2(240);
38397 
38398 --
38399 -- Upgrade strategy
38400 --
38401 l_actual_upg_option           VARCHAR2(1);
38402 l_enc_upg_option           VARCHAR2(1);
38403 
38404 --
38405 BEGIN
38406 --
38407 IF g_log_enabled THEN
38408       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
38409 END IF;
38410 --
38411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38412 
38413       trace
38414          (p_msg      => 'BEGIN of AcctLineType_82'
38418 END IF;
38415          ,p_level    => C_LEVEL_PROCEDURE
38416          ,p_module   => l_log_module);
38417 
38419 --
38420 l_component_type             := 'AMB_JLT';
38421 l_component_code             := 'PA_UBR';
38422 l_component_type_code        := 'S';
38423 l_component_appl_id          :=  275;
38424 l_amb_context_code           := 'DEFAULT';
38425 l_entity_code                := 'REVENUE';
38426 l_event_class_code           := 'REVENUE';
38427 l_event_type_code            := 'REVENUE_ALL';
38428 l_line_definition_owner_code := 'S';
38429 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
38430 --
38431 l_balance_type_code          := 'A';
38432 l_segment                     := NULL;
38433 l_ccid                        := NULL;
38434 l_adr_transaction_coa_id      := NULL;
38435 l_adr_accounting_coa_id       := NULL;
38436 l_adr_flexfield_segment_code  := NULL;
38437 l_adr_flex_value_set_id       := NULL;
38438 l_adr_value_type_code         := NULL;
38439 l_adr_value_combination_id    := NULL;
38440 l_adr_value_segment_code      := NULL;
38441 
38442 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38443 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
38444 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38445 l_budgetary_control_flag     := 'N';
38446 
38447 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38448 l_bflow_applied_to_amt       := NULL; -- 5132302
38449 l_entered_amt_idx            := NULL;          -- 4262811
38450 l_accted_amt_idx             := NULL;          -- 4262811
38451 l_acc_rev_flag               := NULL;          -- 4262811
38452 l_accrual_line_num           := NULL;          -- 4262811
38453 l_tmp_amt                    := NULL;          -- 4262811
38454 --
38455  
38456 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38457     l_balance_type_code <> 'B' THEN
38458 IF NVL(p_source_36,'
38459 ') =  'Revenue - UBR' AND 
38460 NVL(p_source_38,'
38461 ') =  'N'
38462  THEN 
38463 
38464    --
38465    XLA_AE_LINES_PKG.SetNewLine;
38466 
38467    p_balance_type_code          := l_balance_type_code;
38468    -- set the flag so later we will know whether the gain loss line needs to be created
38469    
38470    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38471      p_actual_flag :='A';
38472    END IF;
38473 
38474    --
38475    -- bulk performance
38476    --
38477    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38478                                       p_header_num   => 0); -- 4262811
38479    --
38480    -- set accounting line options
38481    --
38482    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38483            p_natural_side_code          => 'D'
38484          , p_gain_or_loss_flag          => 'N'
38485          , p_gl_transfer_mode_code      => 'S'
38486          , p_acct_entry_type_code       => 'A'
38487          , p_switch_side_flag           => 'Y'
38488          , p_merge_duplicate_code       => 'N'
38489          );
38490    --
38491    l_acc_rev_natural_side_code := 'C';  -- 4262811
38492    -- 
38493    --
38494    -- set accounting line type info
38495    --
38496    xla_ae_lines_pkg.SetAcctLineType
38497       (p_component_type             => l_component_type
38498       ,p_event_type_code            => l_event_type_code
38499       ,p_line_definition_owner_code => l_line_definition_owner_code
38500       ,p_line_definition_code       => l_line_definition_code
38501       ,p_accounting_line_code       => l_component_code
38502       ,p_accounting_line_type_code  => l_component_type_code
38503       ,p_accounting_line_appl_id    => l_component_appl_id
38504       ,p_amb_context_code           => l_amb_context_code
38505       ,p_entity_code                => l_entity_code
38506       ,p_event_class_code           => l_event_class_code);
38507    --
38508    -- set accounting class
38509    --
38510    xla_ae_lines_pkg.SetAcctClass(
38511            p_accounting_class_code  => 'UNBILL'
38512          , p_ae_header_id           => l_ae_header_id
38513          );
38514 
38515    --
38516    -- set rounding class
38517    --
38518    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38519                       'UNBILL';
38520 
38521    --
38522    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38523    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38524    --
38525    -- bulk performance
38526    --
38527    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38528 
38529    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38530       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38531 
38532    -- 4955764
38533    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38535 
38536    -- 4458381 Public Sector Enh
38537    
38538    --
38539    -- set accounting attributes for the line type
38540    --
38541    l_entered_amt_idx := 4;
38542    l_accted_amt_idx  := 10;
38543    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38544    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38545    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
38546    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
38547    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
38548    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
38549    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
38553    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
38550    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
38551    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
38552    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
38554    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
38555    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
38556    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
38557    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
38558    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
38559    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
38560    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
38561    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
38562    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
38563    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
38564 
38565    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38566    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38567 
38568    ---------------------------------------------------------------------------------------------------------------
38569    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38570    ---------------------------------------------------------------------------------------------------------------
38571    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38572 
38573    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38574    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38575 
38576    IF xla_accounting_cache_pkg.GetValueChar
38577          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38578          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38579    AND l_bflow_method_code = 'PRIOR_ENTRY'
38580 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38581    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38582          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38583        )
38584    THEN
38585          xla_ae_lines_pkg.BflowUpgEntry
38586            (p_business_method_code    => l_bflow_method_code
38587            ,p_business_class_code     => l_bflow_class_code
38588            ,p_balance_type            => l_balance_type_code);
38589    ELSE
38590       NULL;
38591 -- No business flow processing for business flow method of NONE.
38592    END IF;
38593 
38594    --
38595    -- call analytical criteria
38596    --
38597    
38598    --
38599    -- call description
38600    --
38601    -- No description or it is inherited.
38602    --
38603    -- call ADRs
38604    -- Bug 4922099
38605    --
38606    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38607         (NVL(l_actual_upg_option, 'N') = 'O') OR
38608         (NVL(l_enc_upg_option, 'N') = 'O')
38609       )
38610    THEN
38611    NULL;
38612    --
38613    --
38614    
38615   l_ccid := AcctDerRule_18(
38616            p_application_id           => p_application_id
38617          , p_ae_header_id             => l_ae_header_id 
38618 , p_source_19 => p_source_19
38619          , x_transaction_coa_id       => l_adr_transaction_coa_id
38620          , x_accounting_coa_id        => l_adr_accounting_coa_id
38621          , x_value_type_code          => l_adr_value_type_code
38622          , p_side                     => 'NA'
38623    );
38624 
38625    xla_ae_lines_pkg.set_ccid(
38626     p_code_combination_id          => l_ccid
38627   , p_value_type_code              => l_adr_value_type_code
38628   , p_transaction_coa_id           => l_adr_transaction_coa_id
38629   , p_accounting_coa_id            => l_adr_accounting_coa_id
38630   , p_adr_code                     => 'UBR_RULE'
38631   , p_adr_type_code                => 'S'
38632   , p_component_type               => l_component_type
38633   , p_component_code               => l_component_code
38634   , p_component_type_code          => l_component_type_code
38635   , p_component_appl_id            => l_component_appl_id
38636   , p_amb_context_code             => l_amb_context_code
38637   , p_side                         => 'NA'
38638   );
38639 
38640 
38641    --
38642    --
38643    END IF;
38644    --
38645    -- Bug 4922099
38646    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38647           (NVL(l_enc_upg_option, 'N') = 'O')
38648         ) AND
38649         (l_bflow_method_code = 'PRIOR_ENTRY')
38650       )
38651    THEN
38652       IF
38653       --
38654       1 = 2
38655       --
38656       THEN
38657       xla_accounting_err_pkg.build_message
38658                                     (p_appli_s_name            => 'XLA'
38659                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38660                                     ,p_token_1                 => 'LINE_NUMBER'
38661                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38662                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38663                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38664                                                                              l_component_type
38665                                                                             ,l_component_code
38666                                                                             ,l_component_type_code
38667                                                                             ,l_component_appl_id
38668                                                                             ,l_amb_context_code
38672                                     ,p_token_3                 => 'OWNER'
38669                                                                             ,l_entity_code
38670                                                                             ,l_event_class_code
38671                                                                            )
38673                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38674                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38675                                                                           ,p_lookup_code    => l_component_type_code
38676                                                                          )
38677                                     ,p_token_4                 => 'PRODUCT_NAME'
38678                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38679                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38680                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38681                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38682                                     ,p_ae_header_id            =>  NULL
38683                                        );
38684 
38685         IF (C_LEVEL_ERROR>= g_log_level) THEN
38686                  trace
38687                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38688                       ,p_level    => C_LEVEL_ERROR
38689                       ,p_module   => l_log_module);
38690         END IF;
38691       END IF;
38692    END IF;
38693    --
38694    --
38695    ------------------------------------------------------------------------------------------------
38696    -- 4219869 Business Flow
38697    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38698    -- Prior Entry.  Currently, the following code is always generated.
38699    ------------------------------------------------------------------------------------------------
38700    XLA_AE_LINES_PKG.ValidateCurrentLine;
38701 
38702    ------------------------------------------------------------------------------------
38703    -- 4219869 Business Flow
38704    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38705    ------------------------------------------------------------------------------------
38706    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38707 
38708    ----------------------------------------------------------------------------------
38709    -- 4219869 Business Flow
38710    -- Update journal entry status -- Need to generate this within IF <condition>
38711    ----------------------------------------------------------------------------------
38712    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38713          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38714          ,p_balance_type_code => l_balance_type_code
38715          );
38716 
38717    -------------------------------------------------------------------------------------------
38718    -- 4262811 - Generate the Accrual Reversal lines
38719    -------------------------------------------------------------------------------------------
38720    BEGIN
38721       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38722                               (g_array_event(p_event_id).array_value_num('header_index'));
38723       IF l_acc_rev_flag IS NULL THEN
38724          l_acc_rev_flag := 'N';
38725       END IF;
38726    EXCEPTION
38727       WHEN OTHERS THEN
38728          l_acc_rev_flag := 'N';
38729    END;
38730    --
38731    IF (l_acc_rev_flag = 'Y') THEN
38732 
38733        -- 4645092  ------------------------------------------------------------------------------
38734        -- To allow MPA report to determine if it should generate report process
38735        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38736        ------------------------------------------------------------------------------------------
38737 
38738        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38739        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38740 
38741        --
38742        -- Update the line information that should be overwritten
38743        --
38744        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38745                                          p_header_num   => 1);
38746        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38747 
38748        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38749 
38750        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38751           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38752        END IF;
38753 
38754       --
38755       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38756       --
38757       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38758           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38759       ELSE
38760           ---------------------------------------------------------------------------------------------------
38761           -- 4262811a Switch Sign
38762           ---------------------------------------------------------------------------------------------------
38763           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38764           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38765                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38766           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38770                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38767                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38768           -- 5132302
38769           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38771 
38772       END IF;
38773 
38774       -- 4955764
38775       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38776       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38777 
38778 
38779       XLA_AE_LINES_PKG.ValidateCurrentLine;
38780       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38781 
38782       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38783                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38784                ,p_balance_type_code => l_balance_type_code);
38785 
38786    END IF;
38787 
38788    -----------------------------------------------------------------------------------------
38789    -- 4262811 Multiperiod Accounting
38790    -----------------------------------------------------------------------------------------
38791      -- No MPA option is assigned.
38792 
38793 
38794 END IF;
38795 END IF;
38796 --
38797 
38798 --
38799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38800    trace
38801       (p_msg      => 'END of AcctLineType_82'
38802       ,p_level    => C_LEVEL_PROCEDURE
38803       ,p_module   => l_log_module);
38804 END IF;
38805 --
38806 EXCEPTION
38807   WHEN xla_exceptions_pkg.application_exception THEN
38808       RAISE;
38809   WHEN OTHERS THEN
38810        xla_exceptions_pkg.raise_message
38811            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_82');
38812 END AcctLineType_82;
38813 --
38814 
38815 ---------------------------------------
38816 --
38817 -- PRIVATE FUNCTION
38818 --         AcctLineType_83
38819 --
38820 ---------------------------------------
38821 PROCEDURE AcctLineType_83 (
38822   p_application_id        IN NUMBER
38823  ,p_event_id              IN NUMBER
38824  ,p_calculate_acctd_flag  IN VARCHAR2
38825  ,p_calculate_g_l_flag    IN VARCHAR2
38826  ,p_actual_flag           IN OUT VARCHAR2
38827  ,p_balance_type_code     OUT VARCHAR2
38828  ,p_gain_or_loss_ref      OUT VARCHAR2
38829  
38830 --Unbilled Receivables CCID
38831  , p_source_19            IN NUMBER
38832 --Actual Upgrade Credit Accounting Class
38833  , p_source_23            IN VARCHAR2
38834 --Entered Currency Code
38835  , p_source_25            IN VARCHAR2
38836 --Exchange Rate Date
38837  , p_source_27            IN DATE
38838 --Exchange Rate
38839  , p_source_28            IN NUMBER
38840 --Exchange Rate Type
38841  , p_source_29            IN VARCHAR2
38842 --Actual Upgrade Debit Accounting Class
38843  , p_source_30            IN VARCHAR2
38844 --Use Actuals Upgrade Attributes Flag
38845  , p_source_31            IN VARCHAR2
38846 --Revenue Distribution Type
38847  , p_source_36            IN VARCHAR2
38848 --Crediting Revenue Flag
38849  , p_source_38            IN VARCHAR2
38850 --Revenue First Distribution ID
38851  , p_source_39            IN NUMBER
38852 --Revenue Second Distribution ID
38853  , p_source_40            IN NUMBER
38854 --Entered Amount
38855  , p_source_41            IN NUMBER
38856 --Event ID
38857  , p_source_42            IN NUMBER
38858 --Accounted Amount
38859  , p_source_43            IN NUMBER
38860 --Actual Upgrade Credit CCID
38861  , p_source_59            IN NUMBER
38862 --Actual Upgrade Debit CCID
38863  , p_source_60            IN NUMBER
38864 --Application ID
38865  , p_source_61            IN NUMBER
38866 --Revenue Entity Code
38867  , p_source_62            IN VARCHAR2
38868 --Crediting Revenue First Distribution ID
38869  , p_source_63            IN NUMBER
38870 --Project ID
38871  , p_source_64            IN NUMBER
38872 --Crediting Revenue Second Distribution ID
38873  , p_source_65            IN NUMBER
38874 --Draft Revenue Number Credited
38875  , p_source_66            IN NUMBER
38876 )
38877 IS
38878 
38879 l_component_type              VARCHAR2(80);
38880 l_component_code              VARCHAR2(30);
38881 l_component_type_code         VARCHAR2(1);
38882 l_component_appl_id           INTEGER;
38883 l_amb_context_code            VARCHAR2(30);
38884 l_entity_code                 VARCHAR2(30);
38885 l_event_class_code            VARCHAR2(30);
38886 l_ae_header_id                NUMBER;
38887 l_event_type_code             VARCHAR2(30);
38888 l_line_definition_code        VARCHAR2(30);
38889 l_line_definition_owner_code  VARCHAR2(1);
38890 --
38891 -- adr variables
38892 l_segment                     VARCHAR2(30);
38893 l_ccid                        NUMBER;
38894 l_adr_transaction_coa_id      NUMBER;
38895 l_adr_accounting_coa_id       NUMBER;
38896 l_adr_flexfield_segment_code  VARCHAR2(30);
38897 l_adr_flex_value_set_id       NUMBER;
38898 l_adr_value_type_code         VARCHAR2(30);
38899 l_adr_value_combination_id    NUMBER;
38900 l_adr_value_segment_code      VARCHAR2(30);
38901 
38902 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38903 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38904 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38905 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38906 
38907 -- 4262811 Variables ------------------------------------------------------------------------------------------
38908 l_entered_amt_idx             NUMBER;
38909 l_accted_amt_idx              NUMBER;
38910 l_acc_rev_flag                VARCHAR2(1);
38911 l_accrual_line_num            NUMBER;
38915 l_num_entries                 NUMBER;
38912 l_tmp_amt                     NUMBER;
38913 l_acc_rev_natural_side_code   VARCHAR2(1);
38914 
38916 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38917 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38918 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38919 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38920 l_recog_line_1                NUMBER;
38921 l_recog_line_2                NUMBER;
38922 
38923 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38924 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38925 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38926 
38927 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38928 
38929 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38930 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38931 
38932 ---------------------------------------------------------------------------------------------------------------
38933 
38934 
38935 --
38936 -- bulk performance
38937 --
38938 l_balance_type_code           VARCHAR2(1);
38939 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38940 l_log_module                  VARCHAR2(240);
38941 
38942 --
38943 -- Upgrade strategy
38944 --
38945 l_actual_upg_option           VARCHAR2(1);
38946 l_enc_upg_option           VARCHAR2(1);
38947 
38948 --
38949 BEGIN
38950 --
38951 IF g_log_enabled THEN
38952       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
38953 END IF;
38954 --
38955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38956 
38957       trace
38958          (p_msg      => 'BEGIN of AcctLineType_83'
38959          ,p_level    => C_LEVEL_PROCEDURE
38960          ,p_module   => l_log_module);
38961 
38962 END IF;
38963 --
38964 l_component_type             := 'AMB_JLT';
38965 l_component_code             := 'PA_UBR_ADJ';
38966 l_component_type_code        := 'S';
38967 l_component_appl_id          :=  275;
38968 l_amb_context_code           := 'DEFAULT';
38969 l_entity_code                := 'REVENUE';
38970 l_event_class_code           := 'REVENUE_ADJ';
38971 l_event_type_code            := 'REVENUE_ADJ_ALL';
38972 l_line_definition_owner_code := 'S';
38973 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
38974 --
38975 l_balance_type_code          := 'A';
38976 l_segment                     := NULL;
38977 l_ccid                        := NULL;
38978 l_adr_transaction_coa_id      := NULL;
38979 l_adr_accounting_coa_id       := NULL;
38980 l_adr_flexfield_segment_code  := NULL;
38981 l_adr_flex_value_set_id       := NULL;
38982 l_adr_value_type_code         := NULL;
38983 l_adr_value_combination_id    := NULL;
38984 l_adr_value_segment_code      := NULL;
38985 
38986 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38987 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
38988 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38989 l_budgetary_control_flag     := 'N';
38990 
38991 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38992 l_bflow_applied_to_amt       := NULL; -- 5132302
38993 l_entered_amt_idx            := NULL;          -- 4262811
38994 l_accted_amt_idx             := NULL;          -- 4262811
38995 l_acc_rev_flag               := NULL;          -- 4262811
38996 l_accrual_line_num           := NULL;          -- 4262811
38997 l_tmp_amt                    := NULL;          -- 4262811
38998 --
38999  
39000 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39001     l_balance_type_code <> 'B' THEN
39002 IF NVL(p_source_36,'
39003 ') =  'Revenue - UBR' AND 
39004 NVL(p_source_38,'
39005 ') =  'Y'
39006  THEN 
39007 
39008    --
39009    XLA_AE_LINES_PKG.SetNewLine;
39010 
39011    p_balance_type_code          := l_balance_type_code;
39012    -- set the flag so later we will know whether the gain loss line needs to be created
39013    
39014    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39015      p_actual_flag :='A';
39016    END IF;
39017 
39018    --
39019    -- bulk performance
39020    --
39021    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39022                                       p_header_num   => 0); -- 4262811
39023    --
39024    -- set accounting line options
39025    --
39026    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39027            p_natural_side_code          => 'C'
39028          , p_gain_or_loss_flag          => 'N'
39029          , p_gl_transfer_mode_code      => 'S'
39030          , p_acct_entry_type_code       => 'A'
39031          , p_switch_side_flag           => 'Y'
39032          , p_merge_duplicate_code       => 'N'
39033          );
39034    --
39035    l_acc_rev_natural_side_code := 'D';  -- 4262811
39036    -- 
39037    --
39038    -- set accounting line type info
39039    --
39040    xla_ae_lines_pkg.SetAcctLineType
39041       (p_component_type             => l_component_type
39042       ,p_event_type_code            => l_event_type_code
39043       ,p_line_definition_owner_code => l_line_definition_owner_code
39044       ,p_line_definition_code       => l_line_definition_code
39045       ,p_accounting_line_code       => l_component_code
39046       ,p_accounting_line_type_code  => l_component_type_code
39047       ,p_accounting_line_appl_id    => l_component_appl_id
39048       ,p_amb_context_code           => l_amb_context_code
39049       ,p_entity_code                => l_entity_code
39050       ,p_event_class_code           => l_event_class_code);
39051    --
39052    -- set accounting class
39056          , p_ae_header_id           => l_ae_header_id
39053    --
39054    xla_ae_lines_pkg.SetAcctClass(
39055            p_accounting_class_code  => 'UNBILL'
39057          );
39058 
39059    --
39060    -- set rounding class
39061    --
39062    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39063                       'UNBILL';
39064 
39065    --
39066    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39067    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39068    --
39069    -- bulk performance
39070    --
39071    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39072 
39073    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39074       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39075 
39076    -- 4955764
39077    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39078       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39079 
39080    -- 4458381 Public Sector Enh
39081    
39082    --
39083    -- set accounting attributes for the line type
39084    --
39085    l_entered_amt_idx := 28;
39086    l_accted_amt_idx  := 34;
39087    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39088    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
39089    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
39090    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
39091    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
39092    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
39093    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
39094    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
39095    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
39096    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
39097    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
39098    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
39099    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
39100    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
39101    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
39102    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
39103    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
39104    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
39105    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
39106    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
39107    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
39108    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
39109    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
39110    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
39111    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
39112    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
39113    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
39114    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
39115    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
39116    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
39117    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
39118    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
39119    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
39120    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
39121    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
39122    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
39123    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
39124    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
39125    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
39126    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
39127    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
39128    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
39129    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
39130    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
39131    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
39132    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
39133    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
39134    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
39135    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
39136    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
39137    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
39138    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
39139    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
39140    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
39141    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
39142    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
39143    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
39144    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
39145    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
39146    l_rec_acct_attrs.array_acct_attr_code(30) := 'EXCHANGE_DATE';
39147    l_rec_acct_attrs.array_date_value(30)  := p_source_27;
39148    l_rec_acct_attrs.array_acct_attr_code(31) := 'EXCHANGE_RATE';
39149    l_rec_acct_attrs.array_num_value(31)  := p_source_28;
39150    l_rec_acct_attrs.array_acct_attr_code(32) := 'EXCHANGE_RATE_TYPE';
39151    l_rec_acct_attrs.array_char_value(32)  := p_source_29;
39152    l_rec_acct_attrs.array_acct_attr_code(33) := 'GAIN_LOSS_REFERENCE';
39153    l_rec_acct_attrs.array_num_value(33)  :=  to_char(p_source_42);
39157    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39154    l_rec_acct_attrs.array_acct_attr_code(34) := 'LEDGER_AMOUNT';
39155    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
39156 
39158    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39159 
39160    ---------------------------------------------------------------------------------------------------------------
39161    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39162    ---------------------------------------------------------------------------------------------------------------
39163    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39164 
39165    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39166    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39167 
39168    IF xla_accounting_cache_pkg.GetValueChar
39169          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39170          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39171    AND l_bflow_method_code = 'PRIOR_ENTRY'
39172 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39173    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39174          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39175        )
39176    THEN
39177          xla_ae_lines_pkg.BflowUpgEntry
39178            (p_business_method_code    => l_bflow_method_code
39179            ,p_business_class_code     => l_bflow_class_code
39180            ,p_balance_type            => l_balance_type_code);
39181    ELSE
39182       NULL;
39183 -- No business flow processing for business flow method of NONE.
39184    END IF;
39185 
39186    --
39187    -- call analytical criteria
39188    --
39189    
39190    --
39191    -- call description
39192    --
39193    -- No description or it is inherited.
39194    --
39195    -- call ADRs
39196    -- Bug 4922099
39197    --
39198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39199         (NVL(l_actual_upg_option, 'N') = 'O') OR
39200         (NVL(l_enc_upg_option, 'N') = 'O')
39201       )
39202    THEN
39203    NULL;
39204    --
39205    --
39206    
39207   l_ccid := AcctDerRule_18(
39208            p_application_id           => p_application_id
39209          , p_ae_header_id             => l_ae_header_id 
39210 , p_source_19 => p_source_19
39211          , x_transaction_coa_id       => l_adr_transaction_coa_id
39212          , x_accounting_coa_id        => l_adr_accounting_coa_id
39213          , x_value_type_code          => l_adr_value_type_code
39214          , p_side                     => 'NA'
39215    );
39216 
39217    xla_ae_lines_pkg.set_ccid(
39218     p_code_combination_id          => l_ccid
39219   , p_value_type_code              => l_adr_value_type_code
39220   , p_transaction_coa_id           => l_adr_transaction_coa_id
39221   , p_accounting_coa_id            => l_adr_accounting_coa_id
39222   , p_adr_code                     => 'UBR_RULE'
39223   , p_adr_type_code                => 'S'
39224   , p_component_type               => l_component_type
39225   , p_component_code               => l_component_code
39226   , p_component_type_code          => l_component_type_code
39227   , p_component_appl_id            => l_component_appl_id
39228   , p_amb_context_code             => l_amb_context_code
39229   , p_side                         => 'NA'
39230   );
39231 
39232 
39233    --
39234    --
39235    END IF;
39236    --
39237    -- Bug 4922099
39238    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39239           (NVL(l_enc_upg_option, 'N') = 'O')
39240         ) AND
39241         (l_bflow_method_code = 'PRIOR_ENTRY')
39242       )
39243    THEN
39244       IF
39245       --
39246       1 = 2
39247       --
39248       THEN
39249       xla_accounting_err_pkg.build_message
39250                                     (p_appli_s_name            => 'XLA'
39251                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39252                                     ,p_token_1                 => 'LINE_NUMBER'
39253                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39254                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39255                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39256                                                                              l_component_type
39257                                                                             ,l_component_code
39258                                                                             ,l_component_type_code
39259                                                                             ,l_component_appl_id
39260                                                                             ,l_amb_context_code
39261                                                                             ,l_entity_code
39262                                                                             ,l_event_class_code
39263                                                                            )
39264                                     ,p_token_3                 => 'OWNER'
39265                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39266                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39267                                                                           ,p_lookup_code    => l_component_type_code
39268                                                                          )
39269                                     ,p_token_4                 => 'PRODUCT_NAME'
39273                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39270                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39271                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39272                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39274                                     ,p_ae_header_id            =>  NULL
39275                                        );
39276 
39277         IF (C_LEVEL_ERROR>= g_log_level) THEN
39278                  trace
39279                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39280                       ,p_level    => C_LEVEL_ERROR
39281                       ,p_module   => l_log_module);
39282         END IF;
39283       END IF;
39284    END IF;
39285    --
39286    --
39287    ------------------------------------------------------------------------------------------------
39288    -- 4219869 Business Flow
39289    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39290    -- Prior Entry.  Currently, the following code is always generated.
39291    ------------------------------------------------------------------------------------------------
39292    XLA_AE_LINES_PKG.ValidateCurrentLine;
39293 
39294    ------------------------------------------------------------------------------------
39295    -- 4219869 Business Flow
39296    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39297    ------------------------------------------------------------------------------------
39298    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39299 
39300    ----------------------------------------------------------------------------------
39301    -- 4219869 Business Flow
39302    -- Update journal entry status -- Need to generate this within IF <condition>
39303    ----------------------------------------------------------------------------------
39304    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39305          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39306          ,p_balance_type_code => l_balance_type_code
39307          );
39308 
39309    -------------------------------------------------------------------------------------------
39310    -- 4262811 - Generate the Accrual Reversal lines
39311    -------------------------------------------------------------------------------------------
39312    BEGIN
39313       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39314                               (g_array_event(p_event_id).array_value_num('header_index'));
39315       IF l_acc_rev_flag IS NULL THEN
39316          l_acc_rev_flag := 'N';
39317       END IF;
39318    EXCEPTION
39319       WHEN OTHERS THEN
39320          l_acc_rev_flag := 'N';
39321    END;
39322    --
39323    IF (l_acc_rev_flag = 'Y') THEN
39324 
39325        -- 4645092  ------------------------------------------------------------------------------
39326        -- To allow MPA report to determine if it should generate report process
39327        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39328        ------------------------------------------------------------------------------------------
39329 
39330        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39331        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39332 
39333        --
39334        -- Update the line information that should be overwritten
39335        --
39336        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39337                                          p_header_num   => 1);
39338        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39339 
39340        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39341 
39342        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39343           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39344        END IF;
39345 
39346       --
39347       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39348       --
39349       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39350           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39351       ELSE
39352           ---------------------------------------------------------------------------------------------------
39353           -- 4262811a Switch Sign
39354           ---------------------------------------------------------------------------------------------------
39355           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39356           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39357                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39358           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39359                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39360           -- 5132302
39361           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39362                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39363 
39364       END IF;
39365 
39366       -- 4955764
39367       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39369 
39370 
39371       XLA_AE_LINES_PKG.ValidateCurrentLine;
39372       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39373 
39374       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39378    END IF;
39375                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39376                ,p_balance_type_code => l_balance_type_code);
39377 
39379 
39380    -----------------------------------------------------------------------------------------
39381    -- 4262811 Multiperiod Accounting
39382    -----------------------------------------------------------------------------------------
39383      -- No MPA option is assigned.
39384 
39385 
39386 END IF;
39387 END IF;
39388 --
39389 
39390 --
39391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39392    trace
39393       (p_msg      => 'END of AcctLineType_83'
39394       ,p_level    => C_LEVEL_PROCEDURE
39395       ,p_module   => l_log_module);
39396 END IF;
39397 --
39398 EXCEPTION
39399   WHEN xla_exceptions_pkg.application_exception THEN
39400       RAISE;
39401   WHEN OTHERS THEN
39402        xla_exceptions_pkg.raise_message
39403            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_83');
39404 END AcctLineType_83;
39405 --
39406 
39407 ---------------------------------------
39408 --
39409 -- PRIVATE FUNCTION
39410 --         AcctLineType_84
39411 --
39412 ---------------------------------------
39413 PROCEDURE AcctLineType_84 (
39414   p_application_id        IN NUMBER
39415  ,p_event_id              IN NUMBER
39416  ,p_calculate_acctd_flag  IN VARCHAR2
39417  ,p_calculate_g_l_flag    IN VARCHAR2
39418  ,p_actual_flag           IN OUT VARCHAR2
39419  ,p_balance_type_code     OUT VARCHAR2
39420  ,p_gain_or_loss_ref      OUT VARCHAR2
39421  
39422 --Unearned Revenue CCID
39423  , p_source_20            IN NUMBER
39424 --Entered Currency Code
39425  , p_source_25            IN VARCHAR2
39426 --Exchange Rate Date
39427  , p_source_27            IN DATE
39428 --Exchange Rate
39429  , p_source_28            IN NUMBER
39430 --Exchange Rate Type
39431  , p_source_29            IN VARCHAR2
39432 --Revenue Distribution Type
39433  , p_source_36            IN VARCHAR2
39434 --Crediting Revenue Flag
39435  , p_source_38            IN VARCHAR2
39436 --Revenue First Distribution ID
39437  , p_source_39            IN NUMBER
39438 --Revenue Second Distribution ID
39439  , p_source_40            IN NUMBER
39440 --Entered Amount
39441  , p_source_41            IN NUMBER
39442 --Event ID
39443  , p_source_42            IN NUMBER
39444 --Accounted Amount
39445  , p_source_43            IN NUMBER
39446 )
39447 IS
39448 
39449 l_component_type              VARCHAR2(80);
39450 l_component_code              VARCHAR2(30);
39451 l_component_type_code         VARCHAR2(1);
39452 l_component_appl_id           INTEGER;
39453 l_amb_context_code            VARCHAR2(30);
39454 l_entity_code                 VARCHAR2(30);
39455 l_event_class_code            VARCHAR2(30);
39456 l_ae_header_id                NUMBER;
39457 l_event_type_code             VARCHAR2(30);
39458 l_line_definition_code        VARCHAR2(30);
39459 l_line_definition_owner_code  VARCHAR2(1);
39460 --
39461 -- adr variables
39462 l_segment                     VARCHAR2(30);
39463 l_ccid                        NUMBER;
39464 l_adr_transaction_coa_id      NUMBER;
39465 l_adr_accounting_coa_id       NUMBER;
39466 l_adr_flexfield_segment_code  VARCHAR2(30);
39467 l_adr_flex_value_set_id       NUMBER;
39468 l_adr_value_type_code         VARCHAR2(30);
39469 l_adr_value_combination_id    NUMBER;
39470 l_adr_value_segment_code      VARCHAR2(30);
39471 
39472 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39473 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39474 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39475 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39476 
39477 -- 4262811 Variables ------------------------------------------------------------------------------------------
39478 l_entered_amt_idx             NUMBER;
39479 l_accted_amt_idx              NUMBER;
39480 l_acc_rev_flag                VARCHAR2(1);
39481 l_accrual_line_num            NUMBER;
39482 l_tmp_amt                     NUMBER;
39483 l_acc_rev_natural_side_code   VARCHAR2(1);
39484 
39485 l_num_entries                 NUMBER;
39486 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39487 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39488 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39489 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39490 l_recog_line_1                NUMBER;
39491 l_recog_line_2                NUMBER;
39492 
39493 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39494 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39495 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39496 
39497 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39498 
39499 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39500 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39501 
39502 ---------------------------------------------------------------------------------------------------------------
39503 
39504 
39505 --
39506 -- bulk performance
39507 --
39508 l_balance_type_code           VARCHAR2(1);
39509 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39510 l_log_module                  VARCHAR2(240);
39511 
39512 --
39513 -- Upgrade strategy
39514 --
39515 l_actual_upg_option           VARCHAR2(1);
39516 l_enc_upg_option           VARCHAR2(1);
39517 
39518 --
39519 BEGIN
39520 --
39521 IF g_log_enabled THEN
39522       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
39526 
39523 END IF;
39524 --
39525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39527       trace
39528          (p_msg      => 'BEGIN of AcctLineType_84'
39529          ,p_level    => C_LEVEL_PROCEDURE
39530          ,p_module   => l_log_module);
39531 
39532 END IF;
39533 --
39534 l_component_type             := 'AMB_JLT';
39535 l_component_code             := 'PA_UER';
39536 l_component_type_code        := 'S';
39537 l_component_appl_id          :=  275;
39538 l_amb_context_code           := 'DEFAULT';
39539 l_entity_code                := 'REVENUE';
39540 l_event_class_code           := 'REVENUE';
39541 l_event_type_code            := 'REVENUE_ALL';
39542 l_line_definition_owner_code := 'S';
39543 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
39544 --
39545 l_balance_type_code          := 'A';
39546 l_segment                     := NULL;
39547 l_ccid                        := NULL;
39548 l_adr_transaction_coa_id      := NULL;
39549 l_adr_accounting_coa_id       := NULL;
39550 l_adr_flexfield_segment_code  := NULL;
39551 l_adr_flex_value_set_id       := NULL;
39552 l_adr_value_type_code         := NULL;
39553 l_adr_value_combination_id    := NULL;
39554 l_adr_value_segment_code      := NULL;
39555 
39556 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39557 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
39558 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39559 l_budgetary_control_flag     := 'N';
39560 
39561 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39562 l_bflow_applied_to_amt       := NULL; -- 5132302
39563 l_entered_amt_idx            := NULL;          -- 4262811
39564 l_accted_amt_idx             := NULL;          -- 4262811
39565 l_acc_rev_flag               := NULL;          -- 4262811
39566 l_accrual_line_num           := NULL;          -- 4262811
39567 l_tmp_amt                    := NULL;          -- 4262811
39568 --
39569  
39570 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39571     l_balance_type_code <> 'B' THEN
39572 IF NVL(p_source_36,'
39573 ') =  'Revenue - UER' AND 
39574 NVL(p_source_38,'
39575 ') =  'N'
39576  THEN 
39577 
39578    --
39579    XLA_AE_LINES_PKG.SetNewLine;
39580 
39581    p_balance_type_code          := l_balance_type_code;
39582    -- set the flag so later we will know whether the gain loss line needs to be created
39583    
39584    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39585      p_actual_flag :='A';
39586    END IF;
39587 
39588    --
39589    -- bulk performance
39590    --
39591    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39592                                       p_header_num   => 0); -- 4262811
39593    --
39594    -- set accounting line options
39595    --
39596    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39597            p_natural_side_code          => 'D'
39598          , p_gain_or_loss_flag          => 'N'
39599          , p_gl_transfer_mode_code      => 'S'
39600          , p_acct_entry_type_code       => 'A'
39601          , p_switch_side_flag           => 'Y'
39602          , p_merge_duplicate_code       => 'N'
39603          );
39604    --
39605    l_acc_rev_natural_side_code := 'C';  -- 4262811
39606    -- 
39607    --
39608    -- set accounting line type info
39609    --
39610    xla_ae_lines_pkg.SetAcctLineType
39611       (p_component_type             => l_component_type
39612       ,p_event_type_code            => l_event_type_code
39613       ,p_line_definition_owner_code => l_line_definition_owner_code
39614       ,p_line_definition_code       => l_line_definition_code
39615       ,p_accounting_line_code       => l_component_code
39616       ,p_accounting_line_type_code  => l_component_type_code
39617       ,p_accounting_line_appl_id    => l_component_appl_id
39618       ,p_amb_context_code           => l_amb_context_code
39619       ,p_entity_code                => l_entity_code
39620       ,p_event_class_code           => l_event_class_code);
39621    --
39622    -- set accounting class
39623    --
39624    xla_ae_lines_pkg.SetAcctClass(
39625            p_accounting_class_code  => 'UNEARNED_REVENUE'
39626          , p_ae_header_id           => l_ae_header_id
39627          );
39628 
39629    --
39630    -- set rounding class
39631    --
39632    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39633                       'UNEARNED_REVENUE';
39634 
39635    --
39636    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39637    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39638    --
39639    -- bulk performance
39640    --
39641    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39642 
39643    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39644       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39645 
39646    -- 4955764
39647    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39648       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39649 
39650    -- 4458381 Public Sector Enh
39651    
39652    --
39653    -- set accounting attributes for the line type
39654    --
39655    l_entered_amt_idx := 4;
39656    l_accted_amt_idx  := 10;
39657    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39658    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39659    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
39660    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
39664    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
39661    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
39662    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
39663    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
39665    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
39666    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
39667    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
39668    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
39669    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
39670    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
39671    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
39672    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
39673    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
39674    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
39675    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
39676    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
39677    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
39678 
39679    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39680    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39681 
39682    ---------------------------------------------------------------------------------------------------------------
39683    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39684    ---------------------------------------------------------------------------------------------------------------
39685    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39686 
39687    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39688    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39689 
39690    IF xla_accounting_cache_pkg.GetValueChar
39691          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39692          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39693    AND l_bflow_method_code = 'PRIOR_ENTRY'
39694 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39695    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39696          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39697        )
39698    THEN
39699          xla_ae_lines_pkg.BflowUpgEntry
39700            (p_business_method_code    => l_bflow_method_code
39701            ,p_business_class_code     => l_bflow_class_code
39702            ,p_balance_type            => l_balance_type_code);
39703    ELSE
39704       NULL;
39705 -- No business flow processing for business flow method of NONE.
39706    END IF;
39707 
39708    --
39709    -- call analytical criteria
39710    --
39711    
39712    --
39713    -- call description
39714    --
39715    -- No description or it is inherited.
39716    --
39717    -- call ADRs
39718    -- Bug 4922099
39719    --
39720    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39721         (NVL(l_actual_upg_option, 'N') = 'O') OR
39722         (NVL(l_enc_upg_option, 'N') = 'O')
39723       )
39724    THEN
39725    NULL;
39726    --
39727    --
39728    
39729   l_ccid := AcctDerRule_19(
39730            p_application_id           => p_application_id
39731          , p_ae_header_id             => l_ae_header_id 
39732 , p_source_20 => p_source_20
39733          , x_transaction_coa_id       => l_adr_transaction_coa_id
39734          , x_accounting_coa_id        => l_adr_accounting_coa_id
39735          , x_value_type_code          => l_adr_value_type_code
39736          , p_side                     => 'NA'
39737    );
39738 
39739    xla_ae_lines_pkg.set_ccid(
39740     p_code_combination_id          => l_ccid
39741   , p_value_type_code              => l_adr_value_type_code
39742   , p_transaction_coa_id           => l_adr_transaction_coa_id
39743   , p_accounting_coa_id            => l_adr_accounting_coa_id
39744   , p_adr_code                     => 'UER_RULE'
39745   , p_adr_type_code                => 'S'
39746   , p_component_type               => l_component_type
39747   , p_component_code               => l_component_code
39748   , p_component_type_code          => l_component_type_code
39749   , p_component_appl_id            => l_component_appl_id
39750   , p_amb_context_code             => l_amb_context_code
39751   , p_side                         => 'NA'
39752   );
39753 
39754 
39755    --
39756    --
39757    END IF;
39758    --
39759    -- Bug 4922099
39760    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39761           (NVL(l_enc_upg_option, 'N') = 'O')
39762         ) AND
39763         (l_bflow_method_code = 'PRIOR_ENTRY')
39764       )
39765    THEN
39766       IF
39767       --
39768       1 = 2
39769       --
39770       THEN
39771       xla_accounting_err_pkg.build_message
39772                                     (p_appli_s_name            => 'XLA'
39773                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39774                                     ,p_token_1                 => 'LINE_NUMBER'
39775                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39776                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39777                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39778                                                                              l_component_type
39779                                                                             ,l_component_code
39780                                                                             ,l_component_type_code
39784                                                                             ,l_event_class_code
39781                                                                             ,l_component_appl_id
39782                                                                             ,l_amb_context_code
39783                                                                             ,l_entity_code
39785                                                                            )
39786                                     ,p_token_3                 => 'OWNER'
39787                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39788                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39789                                                                           ,p_lookup_code    => l_component_type_code
39790                                                                          )
39791                                     ,p_token_4                 => 'PRODUCT_NAME'
39792                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39793                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39794                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39795                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39796                                     ,p_ae_header_id            =>  NULL
39797                                        );
39798 
39799         IF (C_LEVEL_ERROR>= g_log_level) THEN
39800                  trace
39801                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39802                       ,p_level    => C_LEVEL_ERROR
39803                       ,p_module   => l_log_module);
39804         END IF;
39805       END IF;
39806    END IF;
39807    --
39808    --
39809    ------------------------------------------------------------------------------------------------
39810    -- 4219869 Business Flow
39811    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39812    -- Prior Entry.  Currently, the following code is always generated.
39813    ------------------------------------------------------------------------------------------------
39814    XLA_AE_LINES_PKG.ValidateCurrentLine;
39815 
39816    ------------------------------------------------------------------------------------
39817    -- 4219869 Business Flow
39818    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39819    ------------------------------------------------------------------------------------
39820    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39821 
39822    ----------------------------------------------------------------------------------
39823    -- 4219869 Business Flow
39824    -- Update journal entry status -- Need to generate this within IF <condition>
39825    ----------------------------------------------------------------------------------
39826    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39827          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39828          ,p_balance_type_code => l_balance_type_code
39829          );
39830 
39831    -------------------------------------------------------------------------------------------
39832    -- 4262811 - Generate the Accrual Reversal lines
39833    -------------------------------------------------------------------------------------------
39834    BEGIN
39835       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39836                               (g_array_event(p_event_id).array_value_num('header_index'));
39837       IF l_acc_rev_flag IS NULL THEN
39838          l_acc_rev_flag := 'N';
39839       END IF;
39840    EXCEPTION
39841       WHEN OTHERS THEN
39842          l_acc_rev_flag := 'N';
39843    END;
39844    --
39845    IF (l_acc_rev_flag = 'Y') THEN
39846 
39847        -- 4645092  ------------------------------------------------------------------------------
39848        -- To allow MPA report to determine if it should generate report process
39849        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39850        ------------------------------------------------------------------------------------------
39851 
39852        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39853        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39854 
39855        --
39856        -- Update the line information that should be overwritten
39857        --
39858        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39859                                          p_header_num   => 1);
39860        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39861 
39862        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39863 
39864        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39865           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39866        END IF;
39867 
39868       --
39869       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39870       --
39871       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39872           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39873       ELSE
39874           ---------------------------------------------------------------------------------------------------
39875           -- 4262811a Switch Sign
39876           ---------------------------------------------------------------------------------------------------
39877           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39878           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39882           -- 5132302
39879                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39880           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39881                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39883           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39884                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39885 
39886       END IF;
39887 
39888       -- 4955764
39889       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39890       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39891 
39892 
39893       XLA_AE_LINES_PKG.ValidateCurrentLine;
39894       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39895 
39896       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39897                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39898                ,p_balance_type_code => l_balance_type_code);
39899 
39900    END IF;
39901 
39902    -----------------------------------------------------------------------------------------
39903    -- 4262811 Multiperiod Accounting
39904    -----------------------------------------------------------------------------------------
39905      -- No MPA option is assigned.
39906 
39907 
39908 END IF;
39909 END IF;
39910 --
39911 
39912 --
39913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39914    trace
39915       (p_msg      => 'END of AcctLineType_84'
39916       ,p_level    => C_LEVEL_PROCEDURE
39917       ,p_module   => l_log_module);
39918 END IF;
39919 --
39920 EXCEPTION
39921   WHEN xla_exceptions_pkg.application_exception THEN
39922       RAISE;
39923   WHEN OTHERS THEN
39924        xla_exceptions_pkg.raise_message
39925            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_84');
39926 END AcctLineType_84;
39927 --
39928 
39929 ---------------------------------------
39930 --
39931 -- PRIVATE FUNCTION
39932 --         AcctLineType_85
39933 --
39934 ---------------------------------------
39935 PROCEDURE AcctLineType_85 (
39936   p_application_id        IN NUMBER
39937  ,p_event_id              IN NUMBER
39938  ,p_calculate_acctd_flag  IN VARCHAR2
39939  ,p_calculate_g_l_flag    IN VARCHAR2
39940  ,p_actual_flag           IN OUT VARCHAR2
39941  ,p_balance_type_code     OUT VARCHAR2
39942  ,p_gain_or_loss_ref      OUT VARCHAR2
39943  
39944 --Unearned Revenue CCID
39945  , p_source_20            IN NUMBER
39946 --Actual Upgrade Credit Accounting Class
39947  , p_source_23            IN VARCHAR2
39948 --Entered Currency Code
39949  , p_source_25            IN VARCHAR2
39950 --Exchange Rate Date
39951  , p_source_27            IN DATE
39952 --Exchange Rate
39953  , p_source_28            IN NUMBER
39954 --Exchange Rate Type
39955  , p_source_29            IN VARCHAR2
39956 --Actual Upgrade Debit Accounting Class
39957  , p_source_30            IN VARCHAR2
39958 --Use Actuals Upgrade Attributes Flag
39959  , p_source_31            IN VARCHAR2
39960 --Revenue Distribution Type
39961  , p_source_36            IN VARCHAR2
39962 --Crediting Revenue Flag
39963  , p_source_38            IN VARCHAR2
39964 --Revenue First Distribution ID
39965  , p_source_39            IN NUMBER
39966 --Revenue Second Distribution ID
39967  , p_source_40            IN NUMBER
39968 --Entered Amount
39969  , p_source_41            IN NUMBER
39970 --Event ID
39971  , p_source_42            IN NUMBER
39972 --Accounted Amount
39973  , p_source_43            IN NUMBER
39974 --Actual Upgrade Credit CCID
39975  , p_source_59            IN NUMBER
39976 --Actual Upgrade Debit CCID
39977  , p_source_60            IN NUMBER
39978 --Application ID
39979  , p_source_61            IN NUMBER
39980 --Revenue Entity Code
39981  , p_source_62            IN VARCHAR2
39982 --Crediting Revenue First Distribution ID
39983  , p_source_63            IN NUMBER
39984 --Project ID
39985  , p_source_64            IN NUMBER
39986 --Crediting Revenue Second Distribution ID
39987  , p_source_65            IN NUMBER
39988 --Draft Revenue Number Credited
39989  , p_source_66            IN NUMBER
39990 )
39991 IS
39992 
39993 l_component_type              VARCHAR2(80);
39994 l_component_code              VARCHAR2(30);
39995 l_component_type_code         VARCHAR2(1);
39996 l_component_appl_id           INTEGER;
39997 l_amb_context_code            VARCHAR2(30);
39998 l_entity_code                 VARCHAR2(30);
39999 l_event_class_code            VARCHAR2(30);
40000 l_ae_header_id                NUMBER;
40001 l_event_type_code             VARCHAR2(30);
40002 l_line_definition_code        VARCHAR2(30);
40003 l_line_definition_owner_code  VARCHAR2(1);
40004 --
40005 -- adr variables
40006 l_segment                     VARCHAR2(30);
40007 l_ccid                        NUMBER;
40008 l_adr_transaction_coa_id      NUMBER;
40009 l_adr_accounting_coa_id       NUMBER;
40010 l_adr_flexfield_segment_code  VARCHAR2(30);
40011 l_adr_flex_value_set_id       NUMBER;
40012 l_adr_value_type_code         VARCHAR2(30);
40013 l_adr_value_combination_id    NUMBER;
40014 l_adr_value_segment_code      VARCHAR2(30);
40015 
40016 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40017 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40018 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40019 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40020 
40021 -- 4262811 Variables ------------------------------------------------------------------------------------------
40025 l_accrual_line_num            NUMBER;
40022 l_entered_amt_idx             NUMBER;
40023 l_accted_amt_idx              NUMBER;
40024 l_acc_rev_flag                VARCHAR2(1);
40026 l_tmp_amt                     NUMBER;
40027 l_acc_rev_natural_side_code   VARCHAR2(1);
40028 
40029 l_num_entries                 NUMBER;
40030 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40031 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40032 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40033 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40034 l_recog_line_1                NUMBER;
40035 l_recog_line_2                NUMBER;
40036 
40037 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40038 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40039 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40040 
40041 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40042 
40043 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40044 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40045 
40046 ---------------------------------------------------------------------------------------------------------------
40047 
40048 
40049 --
40050 -- bulk performance
40051 --
40052 l_balance_type_code           VARCHAR2(1);
40053 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40054 l_log_module                  VARCHAR2(240);
40055 
40056 --
40057 -- Upgrade strategy
40058 --
40059 l_actual_upg_option           VARCHAR2(1);
40060 l_enc_upg_option           VARCHAR2(1);
40061 
40062 --
40063 BEGIN
40064 --
40065 IF g_log_enabled THEN
40066       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
40067 END IF;
40068 --
40069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40070 
40071       trace
40072          (p_msg      => 'BEGIN of AcctLineType_85'
40073          ,p_level    => C_LEVEL_PROCEDURE
40074          ,p_module   => l_log_module);
40075 
40076 END IF;
40077 --
40078 l_component_type             := 'AMB_JLT';
40079 l_component_code             := 'PA_UER_ADJ';
40080 l_component_type_code        := 'S';
40081 l_component_appl_id          :=  275;
40082 l_amb_context_code           := 'DEFAULT';
40083 l_entity_code                := 'REVENUE';
40084 l_event_class_code           := 'REVENUE_ADJ';
40085 l_event_type_code            := 'REVENUE_ADJ_ALL';
40086 l_line_definition_owner_code := 'S';
40087 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
40088 --
40089 l_balance_type_code          := 'A';
40090 l_segment                     := NULL;
40091 l_ccid                        := NULL;
40092 l_adr_transaction_coa_id      := NULL;
40093 l_adr_accounting_coa_id       := NULL;
40094 l_adr_flexfield_segment_code  := NULL;
40095 l_adr_flex_value_set_id       := NULL;
40096 l_adr_value_type_code         := NULL;
40097 l_adr_value_combination_id    := NULL;
40098 l_adr_value_segment_code      := NULL;
40099 
40100 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40101 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
40102 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40103 l_budgetary_control_flag     := 'N';
40104 
40105 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40106 l_bflow_applied_to_amt       := NULL; -- 5132302
40107 l_entered_amt_idx            := NULL;          -- 4262811
40108 l_accted_amt_idx             := NULL;          -- 4262811
40109 l_acc_rev_flag               := NULL;          -- 4262811
40110 l_accrual_line_num           := NULL;          -- 4262811
40111 l_tmp_amt                    := NULL;          -- 4262811
40112 --
40113  
40114 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40115     l_balance_type_code <> 'B' THEN
40116 IF NVL(p_source_36,'
40117 ') =  'Revenue - UER' AND 
40118 NVL(p_source_38,'
40119 ') =  'Y'
40120  THEN 
40121 
40122    --
40123    XLA_AE_LINES_PKG.SetNewLine;
40124 
40125    p_balance_type_code          := l_balance_type_code;
40126    -- set the flag so later we will know whether the gain loss line needs to be created
40127    
40128    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40129      p_actual_flag :='A';
40130    END IF;
40131 
40132    --
40133    -- bulk performance
40134    --
40135    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40136                                       p_header_num   => 0); -- 4262811
40137    --
40138    -- set accounting line options
40139    --
40140    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40141            p_natural_side_code          => 'C'
40142          , p_gain_or_loss_flag          => 'N'
40143          , p_gl_transfer_mode_code      => 'S'
40144          , p_acct_entry_type_code       => 'A'
40145          , p_switch_side_flag           => 'Y'
40146          , p_merge_duplicate_code       => 'N'
40147          );
40148    --
40149    l_acc_rev_natural_side_code := 'D';  -- 4262811
40150    -- 
40151    --
40152    -- set accounting line type info
40153    --
40154    xla_ae_lines_pkg.SetAcctLineType
40155       (p_component_type             => l_component_type
40156       ,p_event_type_code            => l_event_type_code
40157       ,p_line_definition_owner_code => l_line_definition_owner_code
40158       ,p_line_definition_code       => l_line_definition_code
40159       ,p_accounting_line_code       => l_component_code
40160       ,p_accounting_line_type_code  => l_component_type_code
40161       ,p_accounting_line_appl_id    => l_component_appl_id
40165    --
40162       ,p_amb_context_code           => l_amb_context_code
40163       ,p_entity_code                => l_entity_code
40164       ,p_event_class_code           => l_event_class_code);
40166    -- set accounting class
40167    --
40168    xla_ae_lines_pkg.SetAcctClass(
40169            p_accounting_class_code  => 'UNEARNED_REVENUE'
40170          , p_ae_header_id           => l_ae_header_id
40171          );
40172 
40173    --
40174    -- set rounding class
40175    --
40176    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40177                       'UNEARNED_REVENUE';
40178 
40179    --
40180    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40181    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40182    --
40183    -- bulk performance
40184    --
40185    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40186 
40187    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40188       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40189 
40190    -- 4955764
40191    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40192       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40193 
40194    -- 4458381 Public Sector Enh
40195    
40196    --
40197    -- set accounting attributes for the line type
40198    --
40199    l_entered_amt_idx := 28;
40200    l_accted_amt_idx  := 34;
40201    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40202    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
40203    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
40204    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
40205    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
40206    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
40207    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
40208    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
40209    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
40210    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
40211    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
40212    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
40213    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
40214    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
40215    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
40216    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
40217    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
40218    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
40219    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
40220    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
40221    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
40222    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
40223    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
40224    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
40225    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
40226    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
40227    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
40228    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
40229    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
40230    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
40231    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
40232    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
40233    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
40234    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
40235    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
40236    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
40237    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
40238    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
40239    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
40240    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
40241    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
40242    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
40243    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
40244    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
40245    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
40246    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
40247    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
40248    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
40249    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
40250    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
40251    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
40252    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
40253    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
40254    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
40255    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
40256    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
40257    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
40258    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
40259    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
40260    l_rec_acct_attrs.array_acct_attr_code(30) := 'EXCHANGE_DATE';
40261    l_rec_acct_attrs.array_date_value(30)  := p_source_27;
40262    l_rec_acct_attrs.array_acct_attr_code(31) := 'EXCHANGE_RATE';
40263    l_rec_acct_attrs.array_num_value(31)  := p_source_28;
40267    l_rec_acct_attrs.array_num_value(33)  :=  to_char(p_source_42);
40264    l_rec_acct_attrs.array_acct_attr_code(32) := 'EXCHANGE_RATE_TYPE';
40265    l_rec_acct_attrs.array_char_value(32)  := p_source_29;
40266    l_rec_acct_attrs.array_acct_attr_code(33) := 'GAIN_LOSS_REFERENCE';
40268    l_rec_acct_attrs.array_acct_attr_code(34) := 'LEDGER_AMOUNT';
40269    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
40270 
40271    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40272    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40273 
40274    ---------------------------------------------------------------------------------------------------------------
40275    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40276    ---------------------------------------------------------------------------------------------------------------
40277    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40278 
40279    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40280    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40281 
40282    IF xla_accounting_cache_pkg.GetValueChar
40283          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40284          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40285    AND l_bflow_method_code = 'PRIOR_ENTRY'
40286 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40287    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40288          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40289        )
40290    THEN
40291          xla_ae_lines_pkg.BflowUpgEntry
40292            (p_business_method_code    => l_bflow_method_code
40293            ,p_business_class_code     => l_bflow_class_code
40294            ,p_balance_type            => l_balance_type_code);
40295    ELSE
40296       NULL;
40297 -- No business flow processing for business flow method of NONE.
40298    END IF;
40299 
40300    --
40301    -- call analytical criteria
40302    --
40303    
40304    --
40305    -- call description
40306    --
40307    -- No description or it is inherited.
40308    --
40309    -- call ADRs
40310    -- Bug 4922099
40311    --
40312    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40313         (NVL(l_actual_upg_option, 'N') = 'O') OR
40314         (NVL(l_enc_upg_option, 'N') = 'O')
40315       )
40316    THEN
40317    NULL;
40318    --
40319    --
40320    
40321   l_ccid := AcctDerRule_19(
40322            p_application_id           => p_application_id
40323          , p_ae_header_id             => l_ae_header_id 
40324 , p_source_20 => p_source_20
40325          , x_transaction_coa_id       => l_adr_transaction_coa_id
40326          , x_accounting_coa_id        => l_adr_accounting_coa_id
40327          , x_value_type_code          => l_adr_value_type_code
40328          , p_side                     => 'NA'
40329    );
40330 
40331    xla_ae_lines_pkg.set_ccid(
40332     p_code_combination_id          => l_ccid
40333   , p_value_type_code              => l_adr_value_type_code
40334   , p_transaction_coa_id           => l_adr_transaction_coa_id
40335   , p_accounting_coa_id            => l_adr_accounting_coa_id
40336   , p_adr_code                     => 'UER_RULE'
40337   , p_adr_type_code                => 'S'
40338   , p_component_type               => l_component_type
40339   , p_component_code               => l_component_code
40340   , p_component_type_code          => l_component_type_code
40341   , p_component_appl_id            => l_component_appl_id
40342   , p_amb_context_code             => l_amb_context_code
40343   , p_side                         => 'NA'
40344   );
40345 
40346 
40347    --
40348    --
40349    END IF;
40350    --
40351    -- Bug 4922099
40352    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40353           (NVL(l_enc_upg_option, 'N') = 'O')
40354         ) AND
40355         (l_bflow_method_code = 'PRIOR_ENTRY')
40356       )
40357    THEN
40358       IF
40359       --
40360       1 = 2
40361       --
40362       THEN
40363       xla_accounting_err_pkg.build_message
40364                                     (p_appli_s_name            => 'XLA'
40365                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40366                                     ,p_token_1                 => 'LINE_NUMBER'
40367                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40368                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40369                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40370                                                                              l_component_type
40371                                                                             ,l_component_code
40372                                                                             ,l_component_type_code
40373                                                                             ,l_component_appl_id
40374                                                                             ,l_amb_context_code
40375                                                                             ,l_entity_code
40376                                                                             ,l_event_class_code
40377                                                                            )
40378                                     ,p_token_3                 => 'OWNER'
40379                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40380                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40384                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40381                                                                           ,p_lookup_code    => l_component_type_code
40382                                                                          )
40383                                     ,p_token_4                 => 'PRODUCT_NAME'
40385                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40386                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40387                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40388                                     ,p_ae_header_id            =>  NULL
40389                                        );
40390 
40391         IF (C_LEVEL_ERROR>= g_log_level) THEN
40392                  trace
40393                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40394                       ,p_level    => C_LEVEL_ERROR
40395                       ,p_module   => l_log_module);
40396         END IF;
40397       END IF;
40398    END IF;
40399    --
40400    --
40401    ------------------------------------------------------------------------------------------------
40402    -- 4219869 Business Flow
40403    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40404    -- Prior Entry.  Currently, the following code is always generated.
40405    ------------------------------------------------------------------------------------------------
40406    XLA_AE_LINES_PKG.ValidateCurrentLine;
40407 
40408    ------------------------------------------------------------------------------------
40409    -- 4219869 Business Flow
40410    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40411    ------------------------------------------------------------------------------------
40412    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40413 
40414    ----------------------------------------------------------------------------------
40415    -- 4219869 Business Flow
40416    -- Update journal entry status -- Need to generate this within IF <condition>
40417    ----------------------------------------------------------------------------------
40418    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40419          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40420          ,p_balance_type_code => l_balance_type_code
40421          );
40422 
40423    -------------------------------------------------------------------------------------------
40424    -- 4262811 - Generate the Accrual Reversal lines
40425    -------------------------------------------------------------------------------------------
40426    BEGIN
40427       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40428                               (g_array_event(p_event_id).array_value_num('header_index'));
40429       IF l_acc_rev_flag IS NULL THEN
40430          l_acc_rev_flag := 'N';
40431       END IF;
40432    EXCEPTION
40433       WHEN OTHERS THEN
40434          l_acc_rev_flag := 'N';
40435    END;
40436    --
40437    IF (l_acc_rev_flag = 'Y') THEN
40438 
40439        -- 4645092  ------------------------------------------------------------------------------
40440        -- To allow MPA report to determine if it should generate report process
40441        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40442        ------------------------------------------------------------------------------------------
40443 
40444        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40445        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40446 
40447        --
40448        -- Update the line information that should be overwritten
40449        --
40450        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40451                                          p_header_num   => 1);
40452        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40453 
40454        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40455 
40456        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40457           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40458        END IF;
40459 
40460       --
40461       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40462       --
40463       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40464           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40465       ELSE
40466           ---------------------------------------------------------------------------------------------------
40467           -- 4262811a Switch Sign
40468           ---------------------------------------------------------------------------------------------------
40469           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40470           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40471                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40472           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40473                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40474           -- 5132302
40475           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40476                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40477 
40478       END IF;
40479 
40480       -- 4955764
40481       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40485       XLA_AE_LINES_PKG.ValidateCurrentLine;
40482       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40483 
40484 
40486       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40487 
40488       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40489                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40490                ,p_balance_type_code => l_balance_type_code);
40491 
40492    END IF;
40493 
40494    -----------------------------------------------------------------------------------------
40495    -- 4262811 Multiperiod Accounting
40496    -----------------------------------------------------------------------------------------
40497      -- No MPA option is assigned.
40498 
40499 
40500 END IF;
40501 END IF;
40502 --
40503 
40504 --
40505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40506    trace
40507       (p_msg      => 'END of AcctLineType_85'
40508       ,p_level    => C_LEVEL_PROCEDURE
40509       ,p_module   => l_log_module);
40510 END IF;
40511 --
40512 EXCEPTION
40513   WHEN xla_exceptions_pkg.application_exception THEN
40514       RAISE;
40515   WHEN OTHERS THEN
40516        xla_exceptions_pkg.raise_message
40517            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_85');
40518 END AcctLineType_85;
40519 --
40520 
40521 ---------------------------------------
40522 --
40523 -- PRIVATE FUNCTION
40524 --         AcctLineType_86
40525 --
40526 ---------------------------------------
40527 PROCEDURE AcctLineType_86 (
40528   p_application_id        IN NUMBER
40529  ,p_event_id              IN NUMBER
40530  ,p_calculate_acctd_flag  IN VARCHAR2
40531  ,p_calculate_g_l_flag    IN VARCHAR2
40532  ,p_actual_flag           IN OUT VARCHAR2
40533  ,p_balance_type_code     OUT VARCHAR2
40534  ,p_gain_or_loss_ref      OUT VARCHAR2
40535  
40536 --Revenue CCID
40537  , p_source_18            IN NUMBER
40538 --Entered Currency Code
40539  , p_source_25            IN VARCHAR2
40540 --Exchange Rate Date
40541  , p_source_27            IN DATE
40542 --Exchange Rate
40543  , p_source_28            IN NUMBER
40544 --Exchange Rate Type
40545  , p_source_29            IN VARCHAR2
40546 --Revenue Distribution Type
40547  , p_source_36            IN VARCHAR2
40548 --System Linkage Function
40549  , p_source_37            IN VARCHAR2
40550 --Crediting Revenue Flag
40551  , p_source_38            IN VARCHAR2
40552 --Revenue First Distribution ID
40553  , p_source_39            IN NUMBER
40554 --Revenue Second Distribution ID
40555  , p_source_40            IN NUMBER
40556 --Entered Amount
40557  , p_source_41            IN NUMBER
40558 --Event ID
40559  , p_source_42            IN NUMBER
40560 --Accounted Amount
40561  , p_source_43            IN NUMBER
40562 )
40563 IS
40564 
40565 l_component_type              VARCHAR2(80);
40566 l_component_code              VARCHAR2(30);
40567 l_component_type_code         VARCHAR2(1);
40568 l_component_appl_id           INTEGER;
40569 l_amb_context_code            VARCHAR2(30);
40570 l_entity_code                 VARCHAR2(30);
40571 l_event_class_code            VARCHAR2(30);
40572 l_ae_header_id                NUMBER;
40573 l_event_type_code             VARCHAR2(30);
40574 l_line_definition_code        VARCHAR2(30);
40575 l_line_definition_owner_code  VARCHAR2(1);
40576 --
40577 -- adr variables
40578 l_segment                     VARCHAR2(30);
40579 l_ccid                        NUMBER;
40580 l_adr_transaction_coa_id      NUMBER;
40581 l_adr_accounting_coa_id       NUMBER;
40582 l_adr_flexfield_segment_code  VARCHAR2(30);
40583 l_adr_flex_value_set_id       NUMBER;
40584 l_adr_value_type_code         VARCHAR2(30);
40585 l_adr_value_combination_id    NUMBER;
40586 l_adr_value_segment_code      VARCHAR2(30);
40587 
40588 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40589 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40590 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40591 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40592 
40593 -- 4262811 Variables ------------------------------------------------------------------------------------------
40594 l_entered_amt_idx             NUMBER;
40595 l_accted_amt_idx              NUMBER;
40596 l_acc_rev_flag                VARCHAR2(1);
40597 l_accrual_line_num            NUMBER;
40598 l_tmp_amt                     NUMBER;
40599 l_acc_rev_natural_side_code   VARCHAR2(1);
40600 
40601 l_num_entries                 NUMBER;
40602 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40603 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40604 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40605 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40606 l_recog_line_1                NUMBER;
40607 l_recog_line_2                NUMBER;
40608 
40609 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40610 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40611 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40612 
40613 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40614 
40615 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40616 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40617 
40618 ---------------------------------------------------------------------------------------------------------------
40619 
40620 
40621 --
40622 -- bulk performance
40623 --
40624 l_balance_type_code           VARCHAR2(1);
40628 --
40625 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40626 l_log_module                  VARCHAR2(240);
40627 
40629 -- Upgrade strategy
40630 --
40631 l_actual_upg_option           VARCHAR2(1);
40632 l_enc_upg_option           VARCHAR2(1);
40633 
40634 --
40635 BEGIN
40636 --
40637 IF g_log_enabled THEN
40638       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
40639 END IF;
40640 --
40641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40642 
40643       trace
40644          (p_msg      => 'BEGIN of AcctLineType_86'
40645          ,p_level    => C_LEVEL_PROCEDURE
40646          ,p_module   => l_log_module);
40647 
40648 END IF;
40649 --
40650 l_component_type             := 'AMB_JLT';
40651 l_component_code             := 'PA_USG_REV';
40652 l_component_type_code        := 'S';
40653 l_component_appl_id          :=  275;
40654 l_amb_context_code           := 'DEFAULT';
40655 l_entity_code                := 'REVENUE';
40656 l_event_class_code           := 'REVENUE';
40657 l_event_type_code            := 'REVENUE_ALL';
40658 l_line_definition_owner_code := 'S';
40659 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
40660 --
40661 l_balance_type_code          := 'A';
40662 l_segment                     := NULL;
40663 l_ccid                        := NULL;
40664 l_adr_transaction_coa_id      := NULL;
40665 l_adr_accounting_coa_id       := NULL;
40666 l_adr_flexfield_segment_code  := NULL;
40667 l_adr_flex_value_set_id       := NULL;
40668 l_adr_value_type_code         := NULL;
40669 l_adr_value_combination_id    := NULL;
40670 l_adr_value_segment_code      := NULL;
40671 
40672 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40673 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
40674 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40675 l_budgetary_control_flag     := 'N';
40676 
40677 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40678 l_bflow_applied_to_amt       := NULL; -- 5132302
40679 l_entered_amt_idx            := NULL;          -- 4262811
40680 l_accted_amt_idx             := NULL;          -- 4262811
40681 l_acc_rev_flag               := NULL;          -- 4262811
40682 l_accrual_line_num           := NULL;          -- 4262811
40683 l_tmp_amt                    := NULL;          -- 4262811
40684 --
40685  
40686 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40687     l_balance_type_code <> 'B' THEN
40688 IF NVL(p_source_36,'
40689 ') =  'Revenue - Normal Revenue' AND 
40690 NVL(p_source_37,'
40691 ') =  'USG' AND 
40692 NVL(p_source_38,'
40693 ') =  'N'
40694  THEN 
40695 
40696    --
40697    XLA_AE_LINES_PKG.SetNewLine;
40698 
40699    p_balance_type_code          := l_balance_type_code;
40700    -- set the flag so later we will know whether the gain loss line needs to be created
40701    
40702    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40703      p_actual_flag :='A';
40704    END IF;
40705 
40706    --
40707    -- bulk performance
40708    --
40709    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40710                                       p_header_num   => 0); -- 4262811
40711    --
40712    -- set accounting line options
40713    --
40714    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40715            p_natural_side_code          => 'C'
40716          , p_gain_or_loss_flag          => 'N'
40717          , p_gl_transfer_mode_code      => 'S'
40718          , p_acct_entry_type_code       => 'A'
40719          , p_switch_side_flag           => 'Y'
40720          , p_merge_duplicate_code       => 'N'
40721          );
40722    --
40723    l_acc_rev_natural_side_code := 'D';  -- 4262811
40724    -- 
40725    --
40726    -- set accounting line type info
40727    --
40728    xla_ae_lines_pkg.SetAcctLineType
40729       (p_component_type             => l_component_type
40730       ,p_event_type_code            => l_event_type_code
40731       ,p_line_definition_owner_code => l_line_definition_owner_code
40732       ,p_line_definition_code       => l_line_definition_code
40733       ,p_accounting_line_code       => l_component_code
40734       ,p_accounting_line_type_code  => l_component_type_code
40735       ,p_accounting_line_appl_id    => l_component_appl_id
40736       ,p_amb_context_code           => l_amb_context_code
40737       ,p_entity_code                => l_entity_code
40738       ,p_event_class_code           => l_event_class_code);
40739    --
40740    -- set accounting class
40741    --
40742    xla_ae_lines_pkg.SetAcctClass(
40743            p_accounting_class_code  => 'REVENUE'
40744          , p_ae_header_id           => l_ae_header_id
40745          );
40746 
40747    --
40748    -- set rounding class
40749    --
40750    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40751                       'REVENUE';
40752 
40753    --
40754    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40755    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40756    --
40757    -- bulk performance
40758    --
40759    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40760 
40761    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40762       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40763 
40764    -- 4955764
40765    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40766       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40767 
40768    -- 4458381 Public Sector Enh
40772    --
40769    
40770    --
40771    -- set accounting attributes for the line type
40773    l_entered_amt_idx := 4;
40774    l_accted_amt_idx  := 10;
40775    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40776    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40777    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
40778    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
40779    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
40780    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
40781    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
40782    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
40783    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
40784    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
40785    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
40786    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
40787    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
40788    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
40789    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
40790    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
40791    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
40792    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
40793    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
40794    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
40795    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
40796 
40797    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40798    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40799 
40800    ---------------------------------------------------------------------------------------------------------------
40801    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40802    ---------------------------------------------------------------------------------------------------------------
40803    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40804 
40805    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40806    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40807 
40808    IF xla_accounting_cache_pkg.GetValueChar
40809          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40810          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40811    AND l_bflow_method_code = 'PRIOR_ENTRY'
40812 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40813    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40814          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40815        )
40816    THEN
40817          xla_ae_lines_pkg.BflowUpgEntry
40818            (p_business_method_code    => l_bflow_method_code
40819            ,p_business_class_code     => l_bflow_class_code
40820            ,p_balance_type            => l_balance_type_code);
40821    ELSE
40822       NULL;
40823 -- No business flow processing for business flow method of NONE.
40824    END IF;
40825 
40826    --
40827    -- call analytical criteria
40828    --
40829    
40830    --
40831    -- call description
40832    --
40833    -- No description or it is inherited.
40834    --
40835    -- call ADRs
40836    -- Bug 4922099
40837    --
40838    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40839         (NVL(l_actual_upg_option, 'N') = 'O') OR
40840         (NVL(l_enc_upg_option, 'N') = 'O')
40841       )
40842    THEN
40843    NULL;
40844    --
40845    --
40846    
40847   l_ccid := AcctDerRule_17(
40848            p_application_id           => p_application_id
40849          , p_ae_header_id             => l_ae_header_id 
40850 , p_source_18 => p_source_18
40851          , x_transaction_coa_id       => l_adr_transaction_coa_id
40852          , x_accounting_coa_id        => l_adr_accounting_coa_id
40853          , x_value_type_code          => l_adr_value_type_code
40854          , p_side                     => 'NA'
40855    );
40856 
40857    xla_ae_lines_pkg.set_ccid(
40858     p_code_combination_id          => l_ccid
40859   , p_value_type_code              => l_adr_value_type_code
40860   , p_transaction_coa_id           => l_adr_transaction_coa_id
40861   , p_accounting_coa_id            => l_adr_accounting_coa_id
40862   , p_adr_code                     => 'REVENUE_RULE'
40863   , p_adr_type_code                => 'S'
40864   , p_component_type               => l_component_type
40865   , p_component_code               => l_component_code
40866   , p_component_type_code          => l_component_type_code
40867   , p_component_appl_id            => l_component_appl_id
40868   , p_amb_context_code             => l_amb_context_code
40869   , p_side                         => 'NA'
40870   );
40871 
40872 
40873    --
40874    --
40875    END IF;
40876    --
40877    -- Bug 4922099
40878    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40879           (NVL(l_enc_upg_option, 'N') = 'O')
40880         ) AND
40881         (l_bflow_method_code = 'PRIOR_ENTRY')
40882       )
40883    THEN
40884       IF
40885       --
40886       1 = 2
40887       --
40888       THEN
40889       xla_accounting_err_pkg.build_message
40890                                     (p_appli_s_name            => 'XLA'
40891                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40892                                     ,p_token_1                 => 'LINE_NUMBER'
40893                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40897                                                                             ,l_component_code
40894                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40895                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40896                                                                              l_component_type
40898                                                                             ,l_component_type_code
40899                                                                             ,l_component_appl_id
40900                                                                             ,l_amb_context_code
40901                                                                             ,l_entity_code
40902                                                                             ,l_event_class_code
40903                                                                            )
40904                                     ,p_token_3                 => 'OWNER'
40905                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40906                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40907                                                                           ,p_lookup_code    => l_component_type_code
40908                                                                          )
40909                                     ,p_token_4                 => 'PRODUCT_NAME'
40910                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40911                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40912                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40913                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40914                                     ,p_ae_header_id            =>  NULL
40915                                        );
40916 
40917         IF (C_LEVEL_ERROR>= g_log_level) THEN
40918                  trace
40919                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40920                       ,p_level    => C_LEVEL_ERROR
40921                       ,p_module   => l_log_module);
40922         END IF;
40923       END IF;
40924    END IF;
40925    --
40926    --
40927    ------------------------------------------------------------------------------------------------
40928    -- 4219869 Business Flow
40929    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40930    -- Prior Entry.  Currently, the following code is always generated.
40931    ------------------------------------------------------------------------------------------------
40932    XLA_AE_LINES_PKG.ValidateCurrentLine;
40933 
40934    ------------------------------------------------------------------------------------
40935    -- 4219869 Business Flow
40936    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40937    ------------------------------------------------------------------------------------
40938    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40939 
40940    ----------------------------------------------------------------------------------
40941    -- 4219869 Business Flow
40942    -- Update journal entry status -- Need to generate this within IF <condition>
40943    ----------------------------------------------------------------------------------
40944    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40945          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40946          ,p_balance_type_code => l_balance_type_code
40947          );
40948 
40949    -------------------------------------------------------------------------------------------
40950    -- 4262811 - Generate the Accrual Reversal lines
40951    -------------------------------------------------------------------------------------------
40952    BEGIN
40953       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40954                               (g_array_event(p_event_id).array_value_num('header_index'));
40955       IF l_acc_rev_flag IS NULL THEN
40956          l_acc_rev_flag := 'N';
40957       END IF;
40958    EXCEPTION
40959       WHEN OTHERS THEN
40960          l_acc_rev_flag := 'N';
40961    END;
40962    --
40963    IF (l_acc_rev_flag = 'Y') THEN
40964 
40965        -- 4645092  ------------------------------------------------------------------------------
40966        -- To allow MPA report to determine if it should generate report process
40967        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40968        ------------------------------------------------------------------------------------------
40969 
40970        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40971        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40972 
40973        --
40974        -- Update the line information that should be overwritten
40975        --
40976        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40977                                          p_header_num   => 1);
40978        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40979 
40980        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40981 
40982        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40983           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40984        END IF;
40985 
40986       --
40987       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40988       --
40989       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40990           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40991       ELSE
40995           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40992           ---------------------------------------------------------------------------------------------------
40993           -- 4262811a Switch Sign
40994           ---------------------------------------------------------------------------------------------------
40996           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40997                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40998           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40999                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41000           -- 5132302
41001           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41002                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41003 
41004       END IF;
41005 
41006       -- 4955764
41007       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41008       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41009 
41010 
41011       XLA_AE_LINES_PKG.ValidateCurrentLine;
41012       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41013 
41014       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41015                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41016                ,p_balance_type_code => l_balance_type_code);
41017 
41018    END IF;
41019 
41020    -----------------------------------------------------------------------------------------
41021    -- 4262811 Multiperiod Accounting
41022    -----------------------------------------------------------------------------------------
41023      -- No MPA option is assigned.
41024 
41025 
41026 END IF;
41027 END IF;
41028 --
41029 
41030 --
41031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41032    trace
41033       (p_msg      => 'END of AcctLineType_86'
41034       ,p_level    => C_LEVEL_PROCEDURE
41035       ,p_module   => l_log_module);
41036 END IF;
41037 --
41038 EXCEPTION
41039   WHEN xla_exceptions_pkg.application_exception THEN
41040       RAISE;
41041   WHEN OTHERS THEN
41042        xla_exceptions_pkg.raise_message
41043            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_86');
41044 END AcctLineType_86;
41045 --
41046 
41047 ---------------------------------------
41048 --
41049 -- PRIVATE FUNCTION
41050 --         AcctLineType_87
41051 --
41052 ---------------------------------------
41053 PROCEDURE AcctLineType_87 (
41054   p_application_id        IN NUMBER
41055  ,p_event_id              IN NUMBER
41056  ,p_calculate_acctd_flag  IN VARCHAR2
41057  ,p_calculate_g_l_flag    IN VARCHAR2
41058  ,p_actual_flag           IN OUT VARCHAR2
41059  ,p_balance_type_code     OUT VARCHAR2
41060  ,p_gain_or_loss_ref      OUT VARCHAR2
41061  
41062 --Revenue CCID
41063  , p_source_18            IN NUMBER
41064 --Entered Currency Code
41065  , p_source_25            IN VARCHAR2
41066 --Exchange Rate Date
41067  , p_source_27            IN DATE
41068 --Exchange Rate
41069  , p_source_28            IN NUMBER
41070 --Exchange Rate Type
41071  , p_source_29            IN VARCHAR2
41072 --Revenue Distribution Type
41073  , p_source_36            IN VARCHAR2
41074 --System Linkage Function
41075  , p_source_37            IN VARCHAR2
41076 --Crediting Revenue Flag
41077  , p_source_38            IN VARCHAR2
41078 --Revenue First Distribution ID
41079  , p_source_39            IN NUMBER
41080 --Revenue Second Distribution ID
41081  , p_source_40            IN NUMBER
41082 --Entered Amount
41083  , p_source_41            IN NUMBER
41084 --Event ID
41085  , p_source_42            IN NUMBER
41086 --Accounted Amount
41087  , p_source_43            IN NUMBER
41088 )
41089 IS
41090 
41091 l_component_type              VARCHAR2(80);
41092 l_component_code              VARCHAR2(30);
41093 l_component_type_code         VARCHAR2(1);
41094 l_component_appl_id           INTEGER;
41095 l_amb_context_code            VARCHAR2(30);
41096 l_entity_code                 VARCHAR2(30);
41097 l_event_class_code            VARCHAR2(30);
41098 l_ae_header_id                NUMBER;
41099 l_event_type_code             VARCHAR2(30);
41100 l_line_definition_code        VARCHAR2(30);
41101 l_line_definition_owner_code  VARCHAR2(1);
41102 --
41103 -- adr variables
41104 l_segment                     VARCHAR2(30);
41105 l_ccid                        NUMBER;
41106 l_adr_transaction_coa_id      NUMBER;
41107 l_adr_accounting_coa_id       NUMBER;
41108 l_adr_flexfield_segment_code  VARCHAR2(30);
41109 l_adr_flex_value_set_id       NUMBER;
41110 l_adr_value_type_code         VARCHAR2(30);
41111 l_adr_value_combination_id    NUMBER;
41112 l_adr_value_segment_code      VARCHAR2(30);
41113 
41114 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41115 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41116 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41117 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41118 
41119 -- 4262811 Variables ------------------------------------------------------------------------------------------
41120 l_entered_amt_idx             NUMBER;
41121 l_accted_amt_idx              NUMBER;
41122 l_acc_rev_flag                VARCHAR2(1);
41123 l_accrual_line_num            NUMBER;
41124 l_tmp_amt                     NUMBER;
41125 l_acc_rev_natural_side_code   VARCHAR2(1);
41126 
41127 l_num_entries                 NUMBER;
41128 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41132 l_recog_line_1                NUMBER;
41129 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41130 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41131 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41133 l_recog_line_2                NUMBER;
41134 
41135 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41136 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41137 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41138 
41139 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41140 
41141 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41142 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41143 
41144 ---------------------------------------------------------------------------------------------------------------
41145 
41146 
41147 --
41148 -- bulk performance
41149 --
41150 l_balance_type_code           VARCHAR2(1);
41151 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41152 l_log_module                  VARCHAR2(240);
41153 
41154 --
41155 -- Upgrade strategy
41156 --
41157 l_actual_upg_option           VARCHAR2(1);
41158 l_enc_upg_option           VARCHAR2(1);
41159 
41160 --
41161 BEGIN
41162 --
41163 IF g_log_enabled THEN
41164       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
41165 END IF;
41166 --
41167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41168 
41169       trace
41170          (p_msg      => 'BEGIN of AcctLineType_87'
41171          ,p_level    => C_LEVEL_PROCEDURE
41172          ,p_module   => l_log_module);
41173 
41174 END IF;
41175 --
41176 l_component_type             := 'AMB_JLT';
41177 l_component_code             := 'PA_VI_REV';
41178 l_component_type_code        := 'S';
41179 l_component_appl_id          :=  275;
41180 l_amb_context_code           := 'DEFAULT';
41181 l_entity_code                := 'REVENUE';
41182 l_event_class_code           := 'REVENUE';
41183 l_event_type_code            := 'REVENUE_ALL';
41184 l_line_definition_owner_code := 'S';
41185 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
41186 --
41187 l_balance_type_code          := 'A';
41188 l_segment                     := NULL;
41189 l_ccid                        := NULL;
41190 l_adr_transaction_coa_id      := NULL;
41191 l_adr_accounting_coa_id       := NULL;
41192 l_adr_flexfield_segment_code  := NULL;
41193 l_adr_flex_value_set_id       := NULL;
41194 l_adr_value_type_code         := NULL;
41195 l_adr_value_combination_id    := NULL;
41196 l_adr_value_segment_code      := NULL;
41197 
41198 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41199 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
41200 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41201 l_budgetary_control_flag     := 'N';
41202 
41203 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41204 l_bflow_applied_to_amt       := NULL; -- 5132302
41205 l_entered_amt_idx            := NULL;          -- 4262811
41206 l_accted_amt_idx             := NULL;          -- 4262811
41207 l_acc_rev_flag               := NULL;          -- 4262811
41208 l_accrual_line_num           := NULL;          -- 4262811
41209 l_tmp_amt                    := NULL;          -- 4262811
41210 --
41211  
41212 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41213     l_balance_type_code <> 'B' THEN
41214 IF NVL(p_source_36,'
41215 ') =  'Revenue - Normal Revenue' AND 
41216 NVL(p_source_37,'
41217 ') =  'VI' AND 
41218 NVL(p_source_38,'
41219 ') =  'N'
41220  THEN 
41221 
41222    --
41223    XLA_AE_LINES_PKG.SetNewLine;
41224 
41225    p_balance_type_code          := l_balance_type_code;
41226    -- set the flag so later we will know whether the gain loss line needs to be created
41227    
41228    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41229      p_actual_flag :='A';
41230    END IF;
41231 
41232    --
41233    -- bulk performance
41234    --
41235    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41236                                       p_header_num   => 0); -- 4262811
41237    --
41238    -- set accounting line options
41239    --
41240    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41241            p_natural_side_code          => 'C'
41242          , p_gain_or_loss_flag          => 'N'
41243          , p_gl_transfer_mode_code      => 'S'
41244          , p_acct_entry_type_code       => 'A'
41245          , p_switch_side_flag           => 'Y'
41246          , p_merge_duplicate_code       => 'N'
41247          );
41248    --
41249    l_acc_rev_natural_side_code := 'D';  -- 4262811
41250    -- 
41251    --
41252    -- set accounting line type info
41253    --
41254    xla_ae_lines_pkg.SetAcctLineType
41255       (p_component_type             => l_component_type
41256       ,p_event_type_code            => l_event_type_code
41257       ,p_line_definition_owner_code => l_line_definition_owner_code
41258       ,p_line_definition_code       => l_line_definition_code
41259       ,p_accounting_line_code       => l_component_code
41260       ,p_accounting_line_type_code  => l_component_type_code
41261       ,p_accounting_line_appl_id    => l_component_appl_id
41262       ,p_amb_context_code           => l_amb_context_code
41263       ,p_entity_code                => l_entity_code
41264       ,p_event_class_code           => l_event_class_code);
41265    --
41266    -- set accounting class
41267    --
41268    xla_ae_lines_pkg.SetAcctClass(
41269            p_accounting_class_code  => 'REVENUE'
41273    --
41270          , p_ae_header_id           => l_ae_header_id
41271          );
41272 
41274    -- set rounding class
41275    --
41276    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41277                       'REVENUE';
41278 
41279    --
41280    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41281    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41282    --
41283    -- bulk performance
41284    --
41285    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41286 
41287    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41288       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41289 
41290    -- 4955764
41291    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41292       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41293 
41294    -- 4458381 Public Sector Enh
41295    
41296    --
41297    -- set accounting attributes for the line type
41298    --
41299    l_entered_amt_idx := 4;
41300    l_accted_amt_idx  := 10;
41301    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41302    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41303    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
41304    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
41305    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
41306    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
41307    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
41308    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
41309    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
41310    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
41311    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
41312    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
41313    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
41314    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
41315    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
41316    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
41317    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
41318    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
41319    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
41320    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
41321    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
41322 
41323    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41324    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41325 
41326    ---------------------------------------------------------------------------------------------------------------
41327    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41328    ---------------------------------------------------------------------------------------------------------------
41329    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41330 
41331    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41332    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41333 
41334    IF xla_accounting_cache_pkg.GetValueChar
41335          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41336          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41337    AND l_bflow_method_code = 'PRIOR_ENTRY'
41338 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41339    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41340          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41341        )
41342    THEN
41343          xla_ae_lines_pkg.BflowUpgEntry
41344            (p_business_method_code    => l_bflow_method_code
41345            ,p_business_class_code     => l_bflow_class_code
41346            ,p_balance_type            => l_balance_type_code);
41347    ELSE
41348       NULL;
41349 -- No business flow processing for business flow method of NONE.
41350    END IF;
41351 
41352    --
41353    -- call analytical criteria
41354    --
41355    
41356    --
41357    -- call description
41358    --
41359    -- No description or it is inherited.
41360    --
41361    -- call ADRs
41362    -- Bug 4922099
41363    --
41364    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41365         (NVL(l_actual_upg_option, 'N') = 'O') OR
41366         (NVL(l_enc_upg_option, 'N') = 'O')
41367       )
41368    THEN
41369    NULL;
41370    --
41371    --
41372    
41373   l_ccid := AcctDerRule_17(
41374            p_application_id           => p_application_id
41375          , p_ae_header_id             => l_ae_header_id 
41376 , p_source_18 => p_source_18
41377          , x_transaction_coa_id       => l_adr_transaction_coa_id
41378          , x_accounting_coa_id        => l_adr_accounting_coa_id
41379          , x_value_type_code          => l_adr_value_type_code
41380          , p_side                     => 'NA'
41381    );
41382 
41383    xla_ae_lines_pkg.set_ccid(
41384     p_code_combination_id          => l_ccid
41385   , p_value_type_code              => l_adr_value_type_code
41386   , p_transaction_coa_id           => l_adr_transaction_coa_id
41387   , p_accounting_coa_id            => l_adr_accounting_coa_id
41388   , p_adr_code                     => 'REVENUE_RULE'
41389   , p_adr_type_code                => 'S'
41390   , p_component_type               => l_component_type
41391   , p_component_code               => l_component_code
41395   , p_side                         => 'NA'
41392   , p_component_type_code          => l_component_type_code
41393   , p_component_appl_id            => l_component_appl_id
41394   , p_amb_context_code             => l_amb_context_code
41396   );
41397 
41398 
41399    --
41400    --
41401    END IF;
41402    --
41403    -- Bug 4922099
41404    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41405           (NVL(l_enc_upg_option, 'N') = 'O')
41406         ) AND
41407         (l_bflow_method_code = 'PRIOR_ENTRY')
41408       )
41409    THEN
41410       IF
41411       --
41412       1 = 2
41413       --
41414       THEN
41415       xla_accounting_err_pkg.build_message
41416                                     (p_appli_s_name            => 'XLA'
41417                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41418                                     ,p_token_1                 => 'LINE_NUMBER'
41419                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41420                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41421                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41422                                                                              l_component_type
41423                                                                             ,l_component_code
41424                                                                             ,l_component_type_code
41425                                                                             ,l_component_appl_id
41426                                                                             ,l_amb_context_code
41427                                                                             ,l_entity_code
41428                                                                             ,l_event_class_code
41429                                                                            )
41430                                     ,p_token_3                 => 'OWNER'
41431                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41432                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41433                                                                           ,p_lookup_code    => l_component_type_code
41434                                                                          )
41435                                     ,p_token_4                 => 'PRODUCT_NAME'
41436                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41437                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41438                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41439                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41440                                     ,p_ae_header_id            =>  NULL
41441                                        );
41442 
41443         IF (C_LEVEL_ERROR>= g_log_level) THEN
41444                  trace
41445                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41446                       ,p_level    => C_LEVEL_ERROR
41447                       ,p_module   => l_log_module);
41448         END IF;
41449       END IF;
41450    END IF;
41451    --
41452    --
41453    ------------------------------------------------------------------------------------------------
41454    -- 4219869 Business Flow
41455    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41456    -- Prior Entry.  Currently, the following code is always generated.
41457    ------------------------------------------------------------------------------------------------
41458    XLA_AE_LINES_PKG.ValidateCurrentLine;
41459 
41460    ------------------------------------------------------------------------------------
41461    -- 4219869 Business Flow
41462    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41463    ------------------------------------------------------------------------------------
41464    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41465 
41466    ----------------------------------------------------------------------------------
41467    -- 4219869 Business Flow
41468    -- Update journal entry status -- Need to generate this within IF <condition>
41469    ----------------------------------------------------------------------------------
41470    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41471          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41472          ,p_balance_type_code => l_balance_type_code
41473          );
41474 
41475    -------------------------------------------------------------------------------------------
41476    -- 4262811 - Generate the Accrual Reversal lines
41477    -------------------------------------------------------------------------------------------
41478    BEGIN
41479       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41480                               (g_array_event(p_event_id).array_value_num('header_index'));
41481       IF l_acc_rev_flag IS NULL THEN
41482          l_acc_rev_flag := 'N';
41483       END IF;
41484    EXCEPTION
41485       WHEN OTHERS THEN
41486          l_acc_rev_flag := 'N';
41487    END;
41488    --
41489    IF (l_acc_rev_flag = 'Y') THEN
41490 
41491        -- 4645092  ------------------------------------------------------------------------------
41492        -- To allow MPA report to determine if it should generate report process
41493        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41494        ------------------------------------------------------------------------------------------
41495 
41496        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41497        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41501        --
41498 
41499        --
41500        -- Update the line information that should be overwritten
41502        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41503                                          p_header_num   => 1);
41504        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41505 
41506        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41507 
41508        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41509           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41510        END IF;
41511 
41512       --
41513       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41514       --
41515       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41516           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41517       ELSE
41518           ---------------------------------------------------------------------------------------------------
41519           -- 4262811a Switch Sign
41520           ---------------------------------------------------------------------------------------------------
41521           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41522           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41523                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41524           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41525                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41526           -- 5132302
41527           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41528                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41529 
41530       END IF;
41531 
41532       -- 4955764
41533       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41535 
41536 
41537       XLA_AE_LINES_PKG.ValidateCurrentLine;
41538       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41539 
41540       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41541                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41542                ,p_balance_type_code => l_balance_type_code);
41543 
41544    END IF;
41545 
41546    -----------------------------------------------------------------------------------------
41547    -- 4262811 Multiperiod Accounting
41548    -----------------------------------------------------------------------------------------
41549      -- No MPA option is assigned.
41550 
41551 
41552 END IF;
41553 END IF;
41554 --
41555 
41556 --
41557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41558    trace
41559       (p_msg      => 'END of AcctLineType_87'
41560       ,p_level    => C_LEVEL_PROCEDURE
41561       ,p_module   => l_log_module);
41562 END IF;
41563 --
41564 EXCEPTION
41565   WHEN xla_exceptions_pkg.application_exception THEN
41566       RAISE;
41567   WHEN OTHERS THEN
41568        xla_exceptions_pkg.raise_message
41569            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_87');
41570 END AcctLineType_87;
41571 --
41572 
41573 ---------------------------------------
41574 --
41575 -- PRIVATE FUNCTION
41576 --         AcctLineType_88
41577 --
41578 ---------------------------------------
41579 PROCEDURE AcctLineType_88 (
41580   p_application_id        IN NUMBER
41581  ,p_event_id              IN NUMBER
41582  ,p_calculate_acctd_flag  IN VARCHAR2
41583  ,p_calculate_g_l_flag    IN VARCHAR2
41584  ,p_actual_flag           IN OUT VARCHAR2
41585  ,p_balance_type_code     OUT VARCHAR2
41586  ,p_gain_or_loss_ref      OUT VARCHAR2
41587  
41588 --Revenue CCID
41589  , p_source_18            IN NUMBER
41590 --Entered Currency Code
41591  , p_source_25            IN VARCHAR2
41592 --Exchange Rate Date
41593  , p_source_27            IN DATE
41594 --Exchange Rate
41595  , p_source_28            IN NUMBER
41596 --Exchange Rate Type
41597  , p_source_29            IN VARCHAR2
41598 --Revenue Distribution Type
41599  , p_source_36            IN VARCHAR2
41600 --System Linkage Function
41601  , p_source_37            IN VARCHAR2
41602 --Crediting Revenue Flag
41603  , p_source_38            IN VARCHAR2
41604 --Revenue First Distribution ID
41605  , p_source_39            IN NUMBER
41606 --Revenue Second Distribution ID
41607  , p_source_40            IN NUMBER
41608 --Entered Amount
41609  , p_source_41            IN NUMBER
41610 --Event ID
41611  , p_source_42            IN NUMBER
41612 --Accounted Amount
41613  , p_source_43            IN NUMBER
41614 )
41615 IS
41616 
41617 l_component_type              VARCHAR2(80);
41618 l_component_code              VARCHAR2(30);
41619 l_component_type_code         VARCHAR2(1);
41620 l_component_appl_id           INTEGER;
41621 l_amb_context_code            VARCHAR2(30);
41622 l_entity_code                 VARCHAR2(30);
41623 l_event_class_code            VARCHAR2(30);
41624 l_ae_header_id                NUMBER;
41625 l_event_type_code             VARCHAR2(30);
41626 l_line_definition_code        VARCHAR2(30);
41627 l_line_definition_owner_code  VARCHAR2(1);
41628 --
41629 -- adr variables
41630 l_segment                     VARCHAR2(30);
41631 l_ccid                        NUMBER;
41632 l_adr_transaction_coa_id      NUMBER;
41633 l_adr_accounting_coa_id       NUMBER;
41637 l_adr_value_combination_id    NUMBER;
41634 l_adr_flexfield_segment_code  VARCHAR2(30);
41635 l_adr_flex_value_set_id       NUMBER;
41636 l_adr_value_type_code         VARCHAR2(30);
41638 l_adr_value_segment_code      VARCHAR2(30);
41639 
41640 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41641 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41642 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41643 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41644 
41645 -- 4262811 Variables ------------------------------------------------------------------------------------------
41646 l_entered_amt_idx             NUMBER;
41647 l_accted_amt_idx              NUMBER;
41648 l_acc_rev_flag                VARCHAR2(1);
41649 l_accrual_line_num            NUMBER;
41650 l_tmp_amt                     NUMBER;
41651 l_acc_rev_natural_side_code   VARCHAR2(1);
41652 
41653 l_num_entries                 NUMBER;
41654 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41655 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41656 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41657 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41658 l_recog_line_1                NUMBER;
41659 l_recog_line_2                NUMBER;
41660 
41661 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41662 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41663 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41664 
41665 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41666 
41667 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41668 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41669 
41670 ---------------------------------------------------------------------------------------------------------------
41671 
41672 
41673 --
41674 -- bulk performance
41675 --
41676 l_balance_type_code           VARCHAR2(1);
41677 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41678 l_log_module                  VARCHAR2(240);
41679 
41680 --
41681 -- Upgrade strategy
41682 --
41683 l_actual_upg_option           VARCHAR2(1);
41684 l_enc_upg_option           VARCHAR2(1);
41685 
41686 --
41687 BEGIN
41688 --
41689 IF g_log_enabled THEN
41690       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
41691 END IF;
41692 --
41693 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41694 
41695       trace
41696          (p_msg      => 'BEGIN of AcctLineType_88'
41697          ,p_level    => C_LEVEL_PROCEDURE
41698          ,p_module   => l_log_module);
41699 
41700 END IF;
41701 --
41702 l_component_type             := 'AMB_JLT';
41703 l_component_code             := 'PA_WIP_REV';
41704 l_component_type_code        := 'S';
41705 l_component_appl_id          :=  275;
41706 l_amb_context_code           := 'DEFAULT';
41707 l_entity_code                := 'REVENUE';
41708 l_event_class_code           := 'REVENUE';
41709 l_event_type_code            := 'REVENUE_ALL';
41710 l_line_definition_owner_code := 'S';
41711 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
41712 --
41713 l_balance_type_code          := 'A';
41714 l_segment                     := NULL;
41715 l_ccid                        := NULL;
41716 l_adr_transaction_coa_id      := NULL;
41717 l_adr_accounting_coa_id       := NULL;
41718 l_adr_flexfield_segment_code  := NULL;
41719 l_adr_flex_value_set_id       := NULL;
41720 l_adr_value_type_code         := NULL;
41721 l_adr_value_combination_id    := NULL;
41722 l_adr_value_segment_code      := NULL;
41723 
41724 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41725 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
41726 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41727 l_budgetary_control_flag     := 'N';
41728 
41729 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41730 l_bflow_applied_to_amt       := NULL; -- 5132302
41731 l_entered_amt_idx            := NULL;          -- 4262811
41732 l_accted_amt_idx             := NULL;          -- 4262811
41733 l_acc_rev_flag               := NULL;          -- 4262811
41734 l_accrual_line_num           := NULL;          -- 4262811
41735 l_tmp_amt                    := NULL;          -- 4262811
41736 --
41737  
41738 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41739     l_balance_type_code <> 'B' THEN
41740 IF NVL(p_source_36,'
41741 ') =  'Revenue - Normal Revenue' AND 
41742 NVL(p_source_37,'
41743 ') =  'WIP' AND 
41744 NVL(p_source_38,'
41745 ') =  'N'
41746  THEN 
41747 
41748    --
41749    XLA_AE_LINES_PKG.SetNewLine;
41750 
41751    p_balance_type_code          := l_balance_type_code;
41752    -- set the flag so later we will know whether the gain loss line needs to be created
41753    
41754    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41755      p_actual_flag :='A';
41756    END IF;
41757 
41758    --
41759    -- bulk performance
41760    --
41761    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41762                                       p_header_num   => 0); -- 4262811
41763    --
41764    -- set accounting line options
41765    --
41766    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41767            p_natural_side_code          => 'C'
41768          , p_gain_or_loss_flag          => 'N'
41769          , p_gl_transfer_mode_code      => 'S'
41770          , p_acct_entry_type_code       => 'A'
41771          , p_switch_side_flag           => 'Y'
41772          , p_merge_duplicate_code       => 'N'
41776    -- 
41773          );
41774    --
41775    l_acc_rev_natural_side_code := 'D';  -- 4262811
41777    --
41778    -- set accounting line type info
41779    --
41780    xla_ae_lines_pkg.SetAcctLineType
41781       (p_component_type             => l_component_type
41782       ,p_event_type_code            => l_event_type_code
41783       ,p_line_definition_owner_code => l_line_definition_owner_code
41784       ,p_line_definition_code       => l_line_definition_code
41785       ,p_accounting_line_code       => l_component_code
41786       ,p_accounting_line_type_code  => l_component_type_code
41787       ,p_accounting_line_appl_id    => l_component_appl_id
41788       ,p_amb_context_code           => l_amb_context_code
41789       ,p_entity_code                => l_entity_code
41790       ,p_event_class_code           => l_event_class_code);
41791    --
41792    -- set accounting class
41793    --
41794    xla_ae_lines_pkg.SetAcctClass(
41795            p_accounting_class_code  => 'REVENUE'
41796          , p_ae_header_id           => l_ae_header_id
41797          );
41798 
41799    --
41800    -- set rounding class
41801    --
41802    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41803                       'REVENUE';
41804 
41805    --
41806    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41807    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41808    --
41809    -- bulk performance
41810    --
41811    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41812 
41813    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41814       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41815 
41816    -- 4955764
41817    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41818       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41819 
41820    -- 4458381 Public Sector Enh
41821    
41822    --
41823    -- set accounting attributes for the line type
41824    --
41825    l_entered_amt_idx := 4;
41826    l_accted_amt_idx  := 10;
41827    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41828    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41829    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
41830    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
41831    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
41832    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
41833    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
41834    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
41835    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
41836    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
41837    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
41838    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
41839    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
41840    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
41841    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
41842    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
41843    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
41844    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
41845    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
41846    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
41847    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
41848 
41849    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41850    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41851 
41852    ---------------------------------------------------------------------------------------------------------------
41853    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41854    ---------------------------------------------------------------------------------------------------------------
41855    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41856 
41857    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41858    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41859 
41860    IF xla_accounting_cache_pkg.GetValueChar
41861          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41862          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41863    AND l_bflow_method_code = 'PRIOR_ENTRY'
41864 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41865    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41866          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41867        )
41868    THEN
41869          xla_ae_lines_pkg.BflowUpgEntry
41870            (p_business_method_code    => l_bflow_method_code
41871            ,p_business_class_code     => l_bflow_class_code
41872            ,p_balance_type            => l_balance_type_code);
41873    ELSE
41874       NULL;
41875 -- No business flow processing for business flow method of NONE.
41876    END IF;
41877 
41878    --
41879    -- call analytical criteria
41880    --
41881    
41882    --
41883    -- call description
41884    --
41885    -- No description or it is inherited.
41886    --
41887    -- call ADRs
41888    -- Bug 4922099
41889    --
41890    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41891         (NVL(l_actual_upg_option, 'N') = 'O') OR
41892         (NVL(l_enc_upg_option, 'N') = 'O')
41893       )
41894    THEN
41895    NULL;
41896    --
41900            p_application_id           => p_application_id
41897    --
41898    
41899   l_ccid := AcctDerRule_17(
41901          , p_ae_header_id             => l_ae_header_id 
41902 , p_source_18 => p_source_18
41903          , x_transaction_coa_id       => l_adr_transaction_coa_id
41904          , x_accounting_coa_id        => l_adr_accounting_coa_id
41905          , x_value_type_code          => l_adr_value_type_code
41906          , p_side                     => 'NA'
41907    );
41908 
41909    xla_ae_lines_pkg.set_ccid(
41910     p_code_combination_id          => l_ccid
41911   , p_value_type_code              => l_adr_value_type_code
41912   , p_transaction_coa_id           => l_adr_transaction_coa_id
41913   , p_accounting_coa_id            => l_adr_accounting_coa_id
41914   , p_adr_code                     => 'REVENUE_RULE'
41915   , p_adr_type_code                => 'S'
41916   , p_component_type               => l_component_type
41917   , p_component_code               => l_component_code
41918   , p_component_type_code          => l_component_type_code
41919   , p_component_appl_id            => l_component_appl_id
41920   , p_amb_context_code             => l_amb_context_code
41921   , p_side                         => 'NA'
41922   );
41923 
41924 
41925    --
41926    --
41927    END IF;
41928    --
41929    -- Bug 4922099
41930    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41931           (NVL(l_enc_upg_option, 'N') = 'O')
41932         ) AND
41933         (l_bflow_method_code = 'PRIOR_ENTRY')
41934       )
41935    THEN
41936       IF
41937       --
41938       1 = 2
41939       --
41940       THEN
41941       xla_accounting_err_pkg.build_message
41942                                     (p_appli_s_name            => 'XLA'
41943                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41944                                     ,p_token_1                 => 'LINE_NUMBER'
41945                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41946                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41947                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41948                                                                              l_component_type
41949                                                                             ,l_component_code
41950                                                                             ,l_component_type_code
41951                                                                             ,l_component_appl_id
41952                                                                             ,l_amb_context_code
41953                                                                             ,l_entity_code
41954                                                                             ,l_event_class_code
41955                                                                            )
41956                                     ,p_token_3                 => 'OWNER'
41957                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41958                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41959                                                                           ,p_lookup_code    => l_component_type_code
41960                                                                          )
41961                                     ,p_token_4                 => 'PRODUCT_NAME'
41962                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41963                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41964                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41965                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41966                                     ,p_ae_header_id            =>  NULL
41967                                        );
41968 
41969         IF (C_LEVEL_ERROR>= g_log_level) THEN
41970                  trace
41971                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41972                       ,p_level    => C_LEVEL_ERROR
41973                       ,p_module   => l_log_module);
41974         END IF;
41975       END IF;
41976    END IF;
41977    --
41978    --
41979    ------------------------------------------------------------------------------------------------
41980    -- 4219869 Business Flow
41981    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41982    -- Prior Entry.  Currently, the following code is always generated.
41983    ------------------------------------------------------------------------------------------------
41984    XLA_AE_LINES_PKG.ValidateCurrentLine;
41985 
41986    ------------------------------------------------------------------------------------
41987    -- 4219869 Business Flow
41988    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41989    ------------------------------------------------------------------------------------
41990    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41991 
41992    ----------------------------------------------------------------------------------
41993    -- 4219869 Business Flow
41994    -- Update journal entry status -- Need to generate this within IF <condition>
41995    ----------------------------------------------------------------------------------
41996    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41997          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41998          ,p_balance_type_code => l_balance_type_code
41999          );
42000 
42001    -------------------------------------------------------------------------------------------
42002    -- 4262811 - Generate the Accrual Reversal lines
42006                               (g_array_event(p_event_id).array_value_num('header_index'));
42003    -------------------------------------------------------------------------------------------
42004    BEGIN
42005       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42007       IF l_acc_rev_flag IS NULL THEN
42008          l_acc_rev_flag := 'N';
42009       END IF;
42010    EXCEPTION
42011       WHEN OTHERS THEN
42012          l_acc_rev_flag := 'N';
42013    END;
42014    --
42015    IF (l_acc_rev_flag = 'Y') THEN
42016 
42017        -- 4645092  ------------------------------------------------------------------------------
42018        -- To allow MPA report to determine if it should generate report process
42019        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42020        ------------------------------------------------------------------------------------------
42021 
42022        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42023        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42024 
42025        --
42026        -- Update the line information that should be overwritten
42027        --
42028        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42029                                          p_header_num   => 1);
42030        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42031 
42032        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42033 
42034        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42035           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42036        END IF;
42037 
42038       --
42039       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42040       --
42041       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42042           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42043       ELSE
42044           ---------------------------------------------------------------------------------------------------
42045           -- 4262811a Switch Sign
42046           ---------------------------------------------------------------------------------------------------
42047           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42048           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42049                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42050           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42051                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42052           -- 5132302
42053           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42054                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42055 
42056       END IF;
42057 
42058       -- 4955764
42059       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42060       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42061 
42062 
42063       XLA_AE_LINES_PKG.ValidateCurrentLine;
42064       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42065 
42066       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42067                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42068                ,p_balance_type_code => l_balance_type_code);
42069 
42070    END IF;
42071 
42072    -----------------------------------------------------------------------------------------
42073    -- 4262811 Multiperiod Accounting
42074    -----------------------------------------------------------------------------------------
42075      -- No MPA option is assigned.
42076 
42077 
42078 END IF;
42079 END IF;
42080 --
42081 
42082 --
42083 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42084    trace
42085       (p_msg      => 'END of AcctLineType_88'
42086       ,p_level    => C_LEVEL_PROCEDURE
42087       ,p_module   => l_log_module);
42088 END IF;
42089 --
42090 EXCEPTION
42091   WHEN xla_exceptions_pkg.application_exception THEN
42092       RAISE;
42093   WHEN OTHERS THEN
42094        xla_exceptions_pkg.raise_message
42095            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_88');
42096 END AcctLineType_88;
42097 --
42098 
42099 ---------------------------------------
42100 --
42101 -- PRIVATE FUNCTION
42102 --         AcctLineType_89
42103 --
42104 ---------------------------------------
42105 PROCEDURE AcctLineType_89 (
42106   p_application_id        IN NUMBER
42107  ,p_event_id              IN NUMBER
42108  ,p_calculate_acctd_flag  IN VARCHAR2
42109  ,p_calculate_g_l_flag    IN VARCHAR2
42110  ,p_actual_flag           IN OUT VARCHAR2
42111  ,p_balance_type_code     OUT VARCHAR2
42112  ,p_gain_or_loss_ref      OUT VARCHAR2
42113  
42114 --Budget Code Combination ID
42115  , p_source_2            IN NUMBER
42116 --Cost CCID
42117  , p_source_3            IN NUMBER
42118 --Cost Clearing CCID
42119  , p_source_6            IN NUMBER
42120 --Reversing Line Flag
42121  , p_source_22            IN VARCHAR2
42122 --Actual Upgrade Credit Accounting Class
42123  , p_source_23            IN VARCHAR2
42124 --Entered Currency Code
42125  , p_source_25            IN VARCHAR2
42126 --Exchange Rate Date
42127  , p_source_27            IN DATE
42128 --Exchange Rate
42129  , p_source_28            IN NUMBER
42130 --Exchange Rate Type
42131  , p_source_29            IN VARCHAR2
42132 --Actual Upgrade Debit Accounting Class
42136 --Expenditure Item ID
42133  , p_source_30            IN VARCHAR2
42134 --Use Actuals Upgrade Attributes Flag
42135  , p_source_31            IN VARCHAR2
42137  , p_source_32            IN NUMBER
42138 --Cost Distribution Line Number
42139  , p_source_33            IN NUMBER
42140 --Line Type
42141  , p_source_34            IN VARCHAR2
42142  , p_source_34_meaning    IN VARCHAR2
42143 --Reversed Line Number
42144  , p_source_35            IN NUMBER
42145 --Entered Burdened Cost
42146  , p_source_44            IN NUMBER
42147 --Accounted Burdened Cost
42148  , p_source_45            IN NUMBER
42149 --Encumbrance Amount
42150  , p_source_46            IN NUMBER
42151 --Project Encumbrance Applied to Application Identifier
42152  , p_source_47            IN NUMBER
42153 --Project Encumbrance Applied to Distribution Type
42154  , p_source_48            IN VARCHAR2
42155 --Project Encumbrance Applied to Entity Code
42156  , p_source_49            IN VARCHAR2
42157 --Project Encumbrance Applied to First Distribution ID
42158  , p_source_50            IN NUMBER
42159 --Project Encumbrance Applied to First System Transaction ID
42160  , p_source_51            IN NUMBER
42161 --Project Encumbrance Applied to Second Distribution ID
42162  , p_source_52            IN VARCHAR2
42163 --Encumbrance Upgrade Debit Accounting Class
42164  , p_source_54            IN VARCHAR2
42165 --Use Encumbrance Upgrade Attributes Flag
42166  , p_source_55            IN VARCHAR2
42167 --Encumbrance Type ID
42168  , p_source_56            IN NUMBER
42169 --Project Encumbrance Type ID
42170  , p_source_57            IN NUMBER
42171 )
42172 IS
42173 
42174 l_component_type              VARCHAR2(80);
42175 l_component_code              VARCHAR2(30);
42176 l_component_type_code         VARCHAR2(1);
42177 l_component_appl_id           INTEGER;
42178 l_amb_context_code            VARCHAR2(30);
42179 l_entity_code                 VARCHAR2(30);
42180 l_event_class_code            VARCHAR2(30);
42181 l_ae_header_id                NUMBER;
42182 l_event_type_code             VARCHAR2(30);
42183 l_line_definition_code        VARCHAR2(30);
42184 l_line_definition_owner_code  VARCHAR2(1);
42185 --
42186 -- adr variables
42187 l_segment                     VARCHAR2(30);
42188 l_ccid                        NUMBER;
42189 l_adr_transaction_coa_id      NUMBER;
42190 l_adr_accounting_coa_id       NUMBER;
42191 l_adr_flexfield_segment_code  VARCHAR2(30);
42192 l_adr_flex_value_set_id       NUMBER;
42193 l_adr_value_type_code         VARCHAR2(30);
42194 l_adr_value_combination_id    NUMBER;
42195 l_adr_value_segment_code      VARCHAR2(30);
42196 
42197 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42198 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42199 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42200 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42201 
42202 -- 4262811 Variables ------------------------------------------------------------------------------------------
42203 l_entered_amt_idx             NUMBER;
42204 l_accted_amt_idx              NUMBER;
42205 l_acc_rev_flag                VARCHAR2(1);
42206 l_accrual_line_num            NUMBER;
42207 l_tmp_amt                     NUMBER;
42208 l_acc_rev_natural_side_code   VARCHAR2(1);
42209 
42210 l_num_entries                 NUMBER;
42211 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42212 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42213 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42214 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42215 l_recog_line_1                NUMBER;
42216 l_recog_line_2                NUMBER;
42217 
42218 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42219 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42220 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42221 
42222 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42223 
42224 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42225 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42226 
42227 ---------------------------------------------------------------------------------------------------------------
42228 
42229 
42230 --
42231 -- bulk performance
42232 --
42233 l_balance_type_code           VARCHAR2(1);
42234 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42235 l_log_module                  VARCHAR2(240);
42236 
42237 --
42238 -- Upgrade strategy
42239 --
42240 l_actual_upg_option           VARCHAR2(1);
42241 l_enc_upg_option           VARCHAR2(1);
42242 
42243 --
42244 BEGIN
42245 --
42246 IF g_log_enabled THEN
42247       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
42248 END IF;
42249 --
42250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42251 
42252       trace
42253          (p_msg      => 'BEGIN of AcctLineType_89'
42254          ,p_level    => C_LEVEL_PROCEDURE
42255          ,p_module   => l_log_module);
42256 
42257 END IF;
42258 --
42259 l_component_type             := 'AMB_JLT';
42260 l_component_code             := 'REINSTATE_PROJ_ENC';
42261 l_component_type_code        := 'S';
42262 l_component_appl_id          :=  275;
42263 l_amb_context_code           := 'DEFAULT';
42264 l_entity_code                := 'EXPENDITURES';
42265 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
42266 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
42267 l_line_definition_owner_code := 'S';
42268 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
42269 --
42270 l_balance_type_code          := 'E';
42274 l_adr_accounting_coa_id       := NULL;
42271 l_segment                     := NULL;
42272 l_ccid                        := NULL;
42273 l_adr_transaction_coa_id      := NULL;
42275 l_adr_flexfield_segment_code  := NULL;
42276 l_adr_flex_value_set_id       := NULL;
42277 l_adr_value_type_code         := NULL;
42278 l_adr_value_combination_id    := NULL;
42279 l_adr_value_segment_code      := NULL;
42280 
42281 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
42282 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
42283 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42284 l_budgetary_control_flag     := 'N';
42285 
42286 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42287 l_bflow_applied_to_amt       := NULL; -- 5132302
42288 l_entered_amt_idx            := NULL;          -- 4262811
42289 l_accted_amt_idx             := NULL;          -- 4262811
42290 l_acc_rev_flag               := NULL;          -- 4262811
42291 l_accrual_line_num           := NULL;          -- 4262811
42292 l_tmp_amt                    := NULL;          -- 4262811
42293 --
42294  
42295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42296     l_balance_type_code <> 'B' THEN
42297 IF NVL(p_source_34,'
42298 ') =  'E'
42299  THEN 
42300 
42301    --
42302    XLA_AE_LINES_PKG.SetNewLine;
42303 
42304    p_balance_type_code          := l_balance_type_code;
42305    -- set the flag so later we will know whether the gain loss line needs to be created
42306    
42307    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42308      p_actual_flag :='A';
42309    END IF;
42310 
42311    --
42312    -- bulk performance
42313    --
42314    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42315                                       p_header_num   => 0); -- 4262811
42316    --
42317    -- set accounting line options
42318    --
42319    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42320            p_natural_side_code          => 'D'
42321          , p_gain_or_loss_flag          => 'N'
42322          , p_gl_transfer_mode_code      => 'S'
42323          , p_acct_entry_type_code       => 'E'
42324          , p_switch_side_flag           => 'N'
42325          , p_merge_duplicate_code       => 'N'
42326          );
42327    --
42328    l_acc_rev_natural_side_code := 'C';  -- 4262811
42329    -- 
42330    --
42331    -- set accounting line type info
42332    --
42333    xla_ae_lines_pkg.SetAcctLineType
42334       (p_component_type             => l_component_type
42335       ,p_event_type_code            => l_event_type_code
42336       ,p_line_definition_owner_code => l_line_definition_owner_code
42337       ,p_line_definition_code       => l_line_definition_code
42338       ,p_accounting_line_code       => l_component_code
42339       ,p_accounting_line_type_code  => l_component_type_code
42340       ,p_accounting_line_appl_id    => l_component_appl_id
42341       ,p_amb_context_code           => l_amb_context_code
42342       ,p_entity_code                => l_entity_code
42343       ,p_event_class_code           => l_event_class_code);
42344    --
42345    -- set accounting class
42346    --
42347    xla_ae_lines_pkg.SetAcctClass(
42348            p_accounting_class_code  => 'PA_BUDGET_ENC'
42349          , p_ae_header_id           => l_ae_header_id
42350          );
42351 
42352    --
42353    -- set rounding class
42354    --
42355    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42356                       'PA_BUDGET_ENC';
42357 
42358    --
42359    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42360    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42361    --
42362    -- bulk performance
42363    --
42364    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42365 
42366    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42367       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42368 
42369    -- 4955764
42370    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42371       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42372 
42373    -- 4458381 Public Sector Enh
42374    
42375    --
42376    -- set accounting attributes for the line type
42377    --
42378    l_entered_amt_idx := 35;
42379    l_accted_amt_idx  := 37;
42380    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
42381    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42382    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
42383    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
42384    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
42385    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
42386    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
42387    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
42388    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
42389    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
42390    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
42391    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
42392    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
42393    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
42394    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
42395    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
42396    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
42397    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
42401    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
42398    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
42399    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
42400    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
42402    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
42403    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
42404    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
42405    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
42406    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
42407    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
42408    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
42409    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
42410    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
42411    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
42412    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
42413    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
42414    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
42415    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
42416    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
42417    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
42418    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
42419    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
42420    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
42421    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
42422    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
42423    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
42424    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
42425    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
42426    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
42427    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
42428    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
42429    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
42430    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
42431    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
42432    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
42433    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
42434    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
42435    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
42436    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
42437    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
42438    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
42439    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
42440    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
42441    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
42442    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
42443    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
42444    l_rec_acct_attrs.array_char_value(32)  := 
42445 xla_ae_sources_pkg.GetSystemSourceChar(
42446    p_source_code           => 'XLA_CURRENCY_CODE'
42447  , p_source_type_code      => 'Y'
42448  , p_source_application_id =>  602
42449 );
42450    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
42451    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
42452    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
42453    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
42454    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
42455    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
42456    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
42457    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
42458    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
42459    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
42460    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
42461    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
42462    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
42463    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
42464    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
42465    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
42466    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
42467    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
42468    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
42469    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
42470 
42471    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42472    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42473 
42474    ---------------------------------------------------------------------------------------------------------------
42475    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42476    ---------------------------------------------------------------------------------------------------------------
42477    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42478 
42479    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42480    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42481 
42482    IF xla_accounting_cache_pkg.GetValueChar
42483          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42484          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42485    AND l_bflow_method_code = 'PRIOR_ENTRY'
42486 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42487    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42491          xla_ae_lines_pkg.BflowUpgEntry
42488          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42489        )
42490    THEN
42492            (p_business_method_code    => l_bflow_method_code
42493            ,p_business_class_code     => l_bflow_class_code
42494            ,p_balance_type            => l_balance_type_code);
42495    ELSE
42496       NULL;
42497 XLA_AE_LINES_PKG.business_flow_validation(
42498                                 p_business_method_code     => l_bflow_method_code
42499                                ,p_business_class_code      => l_bflow_class_code
42500                                ,p_inherit_description_flag => l_inherit_desc_flag);
42501    END IF;
42502 
42503    --
42504    -- call analytical criteria
42505    --
42506    -- Inherited Analytical Criteria for business flow method of Prior Entry.
42507    --
42508    -- call description
42509    --
42510    -- No description or it is inherited.
42511    --
42512    -- call ADRs
42513    -- Bug 4922099
42514    --
42515    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42516         (NVL(l_actual_upg_option, 'N') = 'O') OR
42517         (NVL(l_enc_upg_option, 'N') = 'O')
42518       )
42519    THEN
42520    NULL;
42521    --
42522    --
42523    
42524    --
42525    --
42526    END IF;
42527    --
42528    -- Bug 4922099
42529    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42530           (NVL(l_enc_upg_option, 'N') = 'O')
42531         ) AND
42532         (l_bflow_method_code = 'PRIOR_ENTRY')
42533       )
42534    THEN
42535       IF
42536       --
42537       1 = 1
42538       --
42539       THEN
42540       xla_accounting_err_pkg.build_message
42541                                     (p_appli_s_name            => 'XLA'
42542                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42543                                     ,p_token_1                 => 'LINE_NUMBER'
42544                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42545                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42546                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42547                                                                              l_component_type
42548                                                                             ,l_component_code
42549                                                                             ,l_component_type_code
42550                                                                             ,l_component_appl_id
42551                                                                             ,l_amb_context_code
42552                                                                             ,l_entity_code
42553                                                                             ,l_event_class_code
42554                                                                            )
42555                                     ,p_token_3                 => 'OWNER'
42556                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42557                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42558                                                                           ,p_lookup_code    => l_component_type_code
42559                                                                          )
42560                                     ,p_token_4                 => 'PRODUCT_NAME'
42561                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42562                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42563                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42564                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42565                                     ,p_ae_header_id            =>  NULL
42566                                        );
42567 
42568         IF (C_LEVEL_ERROR>= g_log_level) THEN
42569                  trace
42570                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42571                       ,p_level    => C_LEVEL_ERROR
42572                       ,p_module   => l_log_module);
42573         END IF;
42574       END IF;
42575    END IF;
42576    --
42577    --
42578    ------------------------------------------------------------------------------------------------
42579    -- 4219869 Business Flow
42580    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42581    -- Prior Entry.  Currently, the following code is always generated.
42582    ------------------------------------------------------------------------------------------------
42583    -- No ValidateCurrentLine for business flow method of Prior Entry
42584 
42585    ------------------------------------------------------------------------------------
42586    -- 4219869 Business Flow
42587    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42588    ------------------------------------------------------------------------------------
42589    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42590 
42591    ----------------------------------------------------------------------------------
42592    -- 4219869 Business Flow
42593    -- Update journal entry status -- Need to generate this within IF <condition>
42594    ----------------------------------------------------------------------------------
42595    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42596          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42597          ,p_balance_type_code => l_balance_type_code
42598          );
42599 
42600    -------------------------------------------------------------------------------------------
42604       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42601    -- 4262811 - Generate the Accrual Reversal lines
42602    -------------------------------------------------------------------------------------------
42603    BEGIN
42605                               (g_array_event(p_event_id).array_value_num('header_index'));
42606       IF l_acc_rev_flag IS NULL THEN
42607          l_acc_rev_flag := 'N';
42608       END IF;
42609    EXCEPTION
42610       WHEN OTHERS THEN
42611          l_acc_rev_flag := 'N';
42612    END;
42613    --
42614    IF (l_acc_rev_flag = 'Y') THEN
42615 
42616        -- 4645092  ------------------------------------------------------------------------------
42617        -- To allow MPA report to determine if it should generate report process
42618        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42619        ------------------------------------------------------------------------------------------
42620 
42621        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42622        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42623 
42624        --
42625        -- Update the line information that should be overwritten
42626        --
42627        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42628                                          p_header_num   => 1);
42629        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42630 
42631        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42632 
42633        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42634           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42635        END IF;
42636 
42637       --
42638       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42639       --
42640       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42641           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42642       ELSE
42643           ---------------------------------------------------------------------------------------------------
42644           -- 4262811a Switch Sign
42645           ---------------------------------------------------------------------------------------------------
42646           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42647           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42648                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42649           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42650                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42651           -- 5132302
42652           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42653                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42654 
42655       END IF;
42656 
42657       -- 4955764
42658       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42659       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42660 
42661 
42662       XLA_AE_LINES_PKG.ValidateCurrentLine;
42663       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42664 
42665       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42666                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42667                ,p_balance_type_code => l_balance_type_code);
42668 
42669    END IF;
42670 
42671    -----------------------------------------------------------------------------------------
42672    -- 4262811 Multiperiod Accounting
42673    -----------------------------------------------------------------------------------------
42674      -- No MPA option is assigned.
42675 
42676 
42677 END IF;
42678 END IF;
42679 --
42680 
42681 --
42682 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42683    trace
42684       (p_msg      => 'END of AcctLineType_89'
42685       ,p_level    => C_LEVEL_PROCEDURE
42686       ,p_module   => l_log_module);
42687 END IF;
42688 --
42689 EXCEPTION
42690   WHEN xla_exceptions_pkg.application_exception THEN
42691       RAISE;
42692   WHEN OTHERS THEN
42693        xla_exceptions_pkg.raise_message
42694            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_89');
42695 END AcctLineType_89;
42696 --
42697 
42698 ---------------------------------------
42699 --
42700 -- PRIVATE FUNCTION
42701 --         AcctLineType_90
42702 --
42703 ---------------------------------------
42704 PROCEDURE AcctLineType_90 (
42705   p_application_id        IN NUMBER
42706  ,p_event_id              IN NUMBER
42707  ,p_calculate_acctd_flag  IN VARCHAR2
42708  ,p_calculate_g_l_flag    IN VARCHAR2
42709  ,p_actual_flag           IN OUT VARCHAR2
42710  ,p_balance_type_code     OUT VARCHAR2
42711  ,p_gain_or_loss_ref      OUT VARCHAR2
42712  
42713 --Budget Code Combination ID
42714  , p_source_2            IN NUMBER
42715 --Cost CCID
42716  , p_source_3            IN NUMBER
42717 --Cost Clearing CCID
42718  , p_source_6            IN NUMBER
42719 --Reversing Line Flag
42720  , p_source_22            IN VARCHAR2
42721 --Actual Upgrade Credit Accounting Class
42722  , p_source_23            IN VARCHAR2
42723 --Entered Currency Code
42724  , p_source_25            IN VARCHAR2
42725 --Exchange Rate Date
42726  , p_source_27            IN DATE
42727 --Exchange Rate
42728  , p_source_28            IN NUMBER
42729 --Exchange Rate Type
42730  , p_source_29            IN VARCHAR2
42734  , p_source_31            IN VARCHAR2
42731 --Actual Upgrade Debit Accounting Class
42732  , p_source_30            IN VARCHAR2
42733 --Use Actuals Upgrade Attributes Flag
42735 --Expenditure Item ID
42736  , p_source_32            IN NUMBER
42737 --Cost Distribution Line Number
42738  , p_source_33            IN NUMBER
42739 --Line Type
42740  , p_source_34            IN VARCHAR2
42741  , p_source_34_meaning    IN VARCHAR2
42742 --Reversed Line Number
42743  , p_source_35            IN NUMBER
42744 --Entered Burdened Cost
42745  , p_source_44            IN NUMBER
42746 --Accounted Burdened Cost
42747  , p_source_45            IN NUMBER
42748 --Encumbrance Amount
42749  , p_source_46            IN NUMBER
42750 --Project Encumbrance Applied to Application Identifier
42751  , p_source_47            IN NUMBER
42752 --Project Encumbrance Applied to Distribution Type
42753  , p_source_48            IN VARCHAR2
42754 --Project Encumbrance Applied to Entity Code
42755  , p_source_49            IN VARCHAR2
42756 --Project Encumbrance Applied to First Distribution ID
42757  , p_source_50            IN NUMBER
42758 --Project Encumbrance Applied to First System Transaction ID
42759  , p_source_51            IN NUMBER
42760 --Project Encumbrance Applied to Second Distribution ID
42761  , p_source_52            IN VARCHAR2
42762 --Encumbrance Upgrade Credit Accounting Class
42763  , p_source_53            IN VARCHAR2
42764 --Encumbrance Upgrade Debit Accounting Class
42765  , p_source_54            IN VARCHAR2
42766 --Use Encumbrance Upgrade Attributes Flag
42767  , p_source_55            IN VARCHAR2
42768 --Encumbrance Type ID
42769  , p_source_56            IN NUMBER
42770 --Project Encumbrance Type ID
42771  , p_source_57            IN NUMBER
42772 )
42773 IS
42774 
42775 l_component_type              VARCHAR2(80);
42776 l_component_code              VARCHAR2(30);
42777 l_component_type_code         VARCHAR2(1);
42778 l_component_appl_id           INTEGER;
42779 l_amb_context_code            VARCHAR2(30);
42780 l_entity_code                 VARCHAR2(30);
42781 l_event_class_code            VARCHAR2(30);
42782 l_ae_header_id                NUMBER;
42783 l_event_type_code             VARCHAR2(30);
42784 l_line_definition_code        VARCHAR2(30);
42785 l_line_definition_owner_code  VARCHAR2(1);
42786 --
42787 -- adr variables
42788 l_segment                     VARCHAR2(30);
42789 l_ccid                        NUMBER;
42790 l_adr_transaction_coa_id      NUMBER;
42791 l_adr_accounting_coa_id       NUMBER;
42792 l_adr_flexfield_segment_code  VARCHAR2(30);
42793 l_adr_flex_value_set_id       NUMBER;
42794 l_adr_value_type_code         VARCHAR2(30);
42795 l_adr_value_combination_id    NUMBER;
42796 l_adr_value_segment_code      VARCHAR2(30);
42797 
42798 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42799 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42800 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42801 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42802 
42803 -- 4262811 Variables ------------------------------------------------------------------------------------------
42804 l_entered_amt_idx             NUMBER;
42805 l_accted_amt_idx              NUMBER;
42806 l_acc_rev_flag                VARCHAR2(1);
42807 l_accrual_line_num            NUMBER;
42808 l_tmp_amt                     NUMBER;
42809 l_acc_rev_natural_side_code   VARCHAR2(1);
42810 
42811 l_num_entries                 NUMBER;
42812 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42813 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42814 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42815 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42816 l_recog_line_1                NUMBER;
42817 l_recog_line_2                NUMBER;
42818 
42819 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42820 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42821 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42822 
42823 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42824 
42825 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42826 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42827 
42828 ---------------------------------------------------------------------------------------------------------------
42829 
42830 
42831 --
42832 -- bulk performance
42833 --
42834 l_balance_type_code           VARCHAR2(1);
42835 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42836 l_log_module                  VARCHAR2(240);
42837 
42838 --
42839 -- Upgrade strategy
42840 --
42841 l_actual_upg_option           VARCHAR2(1);
42842 l_enc_upg_option           VARCHAR2(1);
42843 
42844 --
42845 BEGIN
42846 --
42847 IF g_log_enabled THEN
42848       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
42849 END IF;
42850 --
42851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42852 
42853       trace
42854          (p_msg      => 'BEGIN of AcctLineType_90'
42855          ,p_level    => C_LEVEL_PROCEDURE
42856          ,p_module   => l_log_module);
42857 
42858 END IF;
42859 --
42860 l_component_type             := 'AMB_JLT';
42861 l_component_code             := 'REINSTATE_PROJ_ENC';
42862 l_component_type_code        := 'S';
42863 l_component_appl_id          :=  275;
42864 l_amb_context_code           := 'DEFAULT';
42865 l_entity_code                := 'EXPENDITURES';
42866 l_event_class_code           := 'BURDEN_COST';
42867 l_event_type_code            := 'BURDEN_COST_ALL';
42868 l_line_definition_owner_code := 'S';
42872 l_segment                     := NULL;
42869 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
42870 --
42871 l_balance_type_code          := 'E';
42873 l_ccid                        := NULL;
42874 l_adr_transaction_coa_id      := NULL;
42875 l_adr_accounting_coa_id       := NULL;
42876 l_adr_flexfield_segment_code  := NULL;
42877 l_adr_flex_value_set_id       := NULL;
42878 l_adr_value_type_code         := NULL;
42879 l_adr_value_combination_id    := NULL;
42880 l_adr_value_segment_code      := NULL;
42881 
42882 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
42883 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
42884 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42885 l_budgetary_control_flag     := 'N';
42886 
42887 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42888 l_bflow_applied_to_amt       := NULL; -- 5132302
42889 l_entered_amt_idx            := NULL;          -- 4262811
42890 l_accted_amt_idx             := NULL;          -- 4262811
42891 l_acc_rev_flag               := NULL;          -- 4262811
42892 l_accrual_line_num           := NULL;          -- 4262811
42893 l_tmp_amt                    := NULL;          -- 4262811
42894 --
42895  
42896 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42897     l_balance_type_code <> 'B' THEN
42898 IF NVL(p_source_34,'
42899 ') =  'E'
42900  THEN 
42901 
42902    --
42903    XLA_AE_LINES_PKG.SetNewLine;
42904 
42905    p_balance_type_code          := l_balance_type_code;
42906    -- set the flag so later we will know whether the gain loss line needs to be created
42907    
42908    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42909      p_actual_flag :='A';
42910    END IF;
42911 
42912    --
42913    -- bulk performance
42914    --
42915    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42916                                       p_header_num   => 0); -- 4262811
42917    --
42918    -- set accounting line options
42919    --
42920    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42921            p_natural_side_code          => 'D'
42922          , p_gain_or_loss_flag          => 'N'
42923          , p_gl_transfer_mode_code      => 'S'
42924          , p_acct_entry_type_code       => 'E'
42925          , p_switch_side_flag           => 'N'
42926          , p_merge_duplicate_code       => 'N'
42927          );
42928    --
42929    l_acc_rev_natural_side_code := 'C';  -- 4262811
42930    -- 
42931    --
42932    -- set accounting line type info
42933    --
42934    xla_ae_lines_pkg.SetAcctLineType
42935       (p_component_type             => l_component_type
42936       ,p_event_type_code            => l_event_type_code
42937       ,p_line_definition_owner_code => l_line_definition_owner_code
42938       ,p_line_definition_code       => l_line_definition_code
42939       ,p_accounting_line_code       => l_component_code
42940       ,p_accounting_line_type_code  => l_component_type_code
42941       ,p_accounting_line_appl_id    => l_component_appl_id
42942       ,p_amb_context_code           => l_amb_context_code
42943       ,p_entity_code                => l_entity_code
42944       ,p_event_class_code           => l_event_class_code);
42945    --
42946    -- set accounting class
42947    --
42948    xla_ae_lines_pkg.SetAcctClass(
42949            p_accounting_class_code  => 'PA_BUDGET_ENC'
42950          , p_ae_header_id           => l_ae_header_id
42951          );
42952 
42953    --
42954    -- set rounding class
42955    --
42956    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42957                       'PA_BUDGET_ENC';
42958 
42959    --
42960    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42961    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42962    --
42963    -- bulk performance
42964    --
42965    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42966 
42967    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42968       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42969 
42970    -- 4955764
42971    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42972       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42973 
42974    -- 4458381 Public Sector Enh
42975    
42976    --
42977    -- set accounting attributes for the line type
42978    --
42979    l_entered_amt_idx := 40;
42980    l_accted_amt_idx  := 42;
42981    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
42982    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42983    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
42984    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
42985    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
42986    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
42987    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
42988    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
42989    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
42990    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
42991    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
42992    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
42993    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
42994    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
42995    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
42996    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
43000    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
42997    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
42998    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
42999    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
43001    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
43002    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
43003    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
43004    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
43005    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
43006    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
43007    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
43008    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
43009    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
43010    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
43011    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
43012    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
43013    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
43014    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
43015    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
43016    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
43017    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
43018    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
43019    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
43020    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
43021    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
43022    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43023    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
43024    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
43025    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
43026    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
43027    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
43028    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43029    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
43030    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
43031    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
43032    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
43033    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
43034    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
43035    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
43036    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
43037    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
43038    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
43039    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
43040    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
43041    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
43042    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
43043    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
43044    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
43045    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
43046    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
43047    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
43048    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
43049    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
43050    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
43051    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
43052    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
43053    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
43054    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
43055    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
43056    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
43057    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
43058    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
43059    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
43060    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
43061    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
43062    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
43063    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
43064    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
43065    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
43066    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
43067    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
43068    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
43069    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
43070    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
43071    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
43072    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
43073    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
43074    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
43075    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
43076 
43077    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43078    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43079 
43080    ---------------------------------------------------------------------------------------------------------------
43081    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43082    ---------------------------------------------------------------------------------------------------------------
43083    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43084 
43088    IF xla_accounting_cache_pkg.GetValueChar
43085    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43086    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43087 
43089          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43090          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43091    AND l_bflow_method_code = 'PRIOR_ENTRY'
43092 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43093    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43094          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43095        )
43096    THEN
43097          xla_ae_lines_pkg.BflowUpgEntry
43098            (p_business_method_code    => l_bflow_method_code
43099            ,p_business_class_code     => l_bflow_class_code
43100            ,p_balance_type            => l_balance_type_code);
43101    ELSE
43102       NULL;
43103 XLA_AE_LINES_PKG.business_flow_validation(
43104                                 p_business_method_code     => l_bflow_method_code
43105                                ,p_business_class_code      => l_bflow_class_code
43106                                ,p_inherit_description_flag => l_inherit_desc_flag);
43107    END IF;
43108 
43109    --
43110    -- call analytical criteria
43111    --
43112    -- Inherited Analytical Criteria for business flow method of Prior Entry.
43113    --
43114    -- call description
43115    --
43116    -- No description or it is inherited.
43117    --
43118    -- call ADRs
43119    -- Bug 4922099
43120    --
43121    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43122         (NVL(l_actual_upg_option, 'N') = 'O') OR
43123         (NVL(l_enc_upg_option, 'N') = 'O')
43124       )
43125    THEN
43126    NULL;
43127    --
43128    --
43129    
43130    --
43131    --
43132    END IF;
43133    --
43134    -- Bug 4922099
43135    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43136           (NVL(l_enc_upg_option, 'N') = 'O')
43137         ) AND
43138         (l_bflow_method_code = 'PRIOR_ENTRY')
43139       )
43140    THEN
43141       IF
43142       --
43143       1 = 1
43144       --
43145       THEN
43146       xla_accounting_err_pkg.build_message
43147                                     (p_appli_s_name            => 'XLA'
43148                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43149                                     ,p_token_1                 => 'LINE_NUMBER'
43150                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43151                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43152                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43153                                                                              l_component_type
43154                                                                             ,l_component_code
43155                                                                             ,l_component_type_code
43156                                                                             ,l_component_appl_id
43157                                                                             ,l_amb_context_code
43158                                                                             ,l_entity_code
43159                                                                             ,l_event_class_code
43160                                                                            )
43161                                     ,p_token_3                 => 'OWNER'
43162                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43163                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43164                                                                           ,p_lookup_code    => l_component_type_code
43165                                                                          )
43166                                     ,p_token_4                 => 'PRODUCT_NAME'
43167                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43168                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43169                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43170                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43171                                     ,p_ae_header_id            =>  NULL
43172                                        );
43173 
43174         IF (C_LEVEL_ERROR>= g_log_level) THEN
43175                  trace
43176                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43177                       ,p_level    => C_LEVEL_ERROR
43178                       ,p_module   => l_log_module);
43179         END IF;
43180       END IF;
43181    END IF;
43182    --
43183    --
43184    ------------------------------------------------------------------------------------------------
43185    -- 4219869 Business Flow
43186    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43187    -- Prior Entry.  Currently, the following code is always generated.
43188    ------------------------------------------------------------------------------------------------
43189    -- No ValidateCurrentLine for business flow method of Prior Entry
43190 
43191    ------------------------------------------------------------------------------------
43192    -- 4219869 Business Flow
43193    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43194    ------------------------------------------------------------------------------------
43195    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43196 
43200    ----------------------------------------------------------------------------------
43197    ----------------------------------------------------------------------------------
43198    -- 4219869 Business Flow
43199    -- Update journal entry status -- Need to generate this within IF <condition>
43201    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43202          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43203          ,p_balance_type_code => l_balance_type_code
43204          );
43205 
43206    -------------------------------------------------------------------------------------------
43207    -- 4262811 - Generate the Accrual Reversal lines
43208    -------------------------------------------------------------------------------------------
43209    BEGIN
43210       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43211                               (g_array_event(p_event_id).array_value_num('header_index'));
43212       IF l_acc_rev_flag IS NULL THEN
43213          l_acc_rev_flag := 'N';
43214       END IF;
43215    EXCEPTION
43216       WHEN OTHERS THEN
43217          l_acc_rev_flag := 'N';
43218    END;
43219    --
43220    IF (l_acc_rev_flag = 'Y') THEN
43221 
43222        -- 4645092  ------------------------------------------------------------------------------
43223        -- To allow MPA report to determine if it should generate report process
43224        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43225        ------------------------------------------------------------------------------------------
43226 
43227        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43228        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43229 
43230        --
43231        -- Update the line information that should be overwritten
43232        --
43233        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43234                                          p_header_num   => 1);
43235        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43236 
43237        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43238 
43239        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43240           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43241        END IF;
43242 
43243       --
43244       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43245       --
43246       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43247           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43248       ELSE
43249           ---------------------------------------------------------------------------------------------------
43250           -- 4262811a Switch Sign
43251           ---------------------------------------------------------------------------------------------------
43252           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43253           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43254                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43255           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43256                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43257           -- 5132302
43258           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43259                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43260 
43261       END IF;
43262 
43263       -- 4955764
43264       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43265       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43266 
43267 
43268       XLA_AE_LINES_PKG.ValidateCurrentLine;
43269       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43270 
43271       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43272                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43273                ,p_balance_type_code => l_balance_type_code);
43274 
43275    END IF;
43276 
43277    -----------------------------------------------------------------------------------------
43278    -- 4262811 Multiperiod Accounting
43279    -----------------------------------------------------------------------------------------
43280      -- No MPA option is assigned.
43281 
43282 
43283 END IF;
43284 END IF;
43285 --
43286 
43287 --
43288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43289    trace
43290       (p_msg      => 'END of AcctLineType_90'
43291       ,p_level    => C_LEVEL_PROCEDURE
43292       ,p_module   => l_log_module);
43293 END IF;
43294 --
43295 EXCEPTION
43296   WHEN xla_exceptions_pkg.application_exception THEN
43297       RAISE;
43298   WHEN OTHERS THEN
43299        xla_exceptions_pkg.raise_message
43300            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_90');
43301 END AcctLineType_90;
43302 --
43303 
43304 ---------------------------------------
43305 --
43306 -- PRIVATE FUNCTION
43307 --         AcctLineType_91
43308 --
43309 ---------------------------------------
43310 PROCEDURE AcctLineType_91 (
43311   p_application_id        IN NUMBER
43312  ,p_event_id              IN NUMBER
43313  ,p_calculate_acctd_flag  IN VARCHAR2
43314  ,p_calculate_g_l_flag    IN VARCHAR2
43315  ,p_actual_flag           IN OUT VARCHAR2
43316  ,p_balance_type_code     OUT VARCHAR2
43317  ,p_gain_or_loss_ref      OUT VARCHAR2
43318  
43319 --Budget Code Combination ID
43320  , p_source_2            IN NUMBER
43324  , p_source_6            IN NUMBER
43321 --Cost CCID
43322  , p_source_3            IN NUMBER
43323 --Cost Clearing CCID
43325 --Reversing Line Flag
43326  , p_source_22            IN VARCHAR2
43327 --Actual Upgrade Credit Accounting Class
43328  , p_source_23            IN VARCHAR2
43329 --Entered Currency Code
43330  , p_source_25            IN VARCHAR2
43331 --Exchange Rate Date
43332  , p_source_27            IN DATE
43333 --Exchange Rate
43334  , p_source_28            IN NUMBER
43335 --Exchange Rate Type
43336  , p_source_29            IN VARCHAR2
43337 --Actual Upgrade Debit Accounting Class
43338  , p_source_30            IN VARCHAR2
43339 --Use Actuals Upgrade Attributes Flag
43340  , p_source_31            IN VARCHAR2
43341 --Expenditure Item ID
43342  , p_source_32            IN NUMBER
43343 --Cost Distribution Line Number
43344  , p_source_33            IN NUMBER
43345 --Line Type
43346  , p_source_34            IN VARCHAR2
43347  , p_source_34_meaning    IN VARCHAR2
43348 --Reversed Line Number
43349  , p_source_35            IN NUMBER
43350 --Entered Burdened Cost
43351  , p_source_44            IN NUMBER
43352 --Accounted Burdened Cost
43353  , p_source_45            IN NUMBER
43354 --Encumbrance Amount
43355  , p_source_46            IN NUMBER
43356 --Project Encumbrance Applied to Application Identifier
43357  , p_source_47            IN NUMBER
43358 --Project Encumbrance Applied to Distribution Type
43359  , p_source_48            IN VARCHAR2
43360 --Project Encumbrance Applied to Entity Code
43361  , p_source_49            IN VARCHAR2
43362 --Project Encumbrance Applied to First Distribution ID
43363  , p_source_50            IN NUMBER
43364 --Project Encumbrance Applied to First System Transaction ID
43365  , p_source_51            IN NUMBER
43366 --Project Encumbrance Applied to Second Distribution ID
43367  , p_source_52            IN VARCHAR2
43368 --Encumbrance Upgrade Credit Accounting Class
43369  , p_source_53            IN VARCHAR2
43370 --Encumbrance Upgrade Debit Accounting Class
43371  , p_source_54            IN VARCHAR2
43372 --Use Encumbrance Upgrade Attributes Flag
43373  , p_source_55            IN VARCHAR2
43374 --Encumbrance Type ID
43375  , p_source_56            IN NUMBER
43376 --Project Encumbrance Type ID
43377  , p_source_57            IN NUMBER
43378 )
43379 IS
43380 
43381 l_component_type              VARCHAR2(80);
43382 l_component_code              VARCHAR2(30);
43383 l_component_type_code         VARCHAR2(1);
43384 l_component_appl_id           INTEGER;
43385 l_amb_context_code            VARCHAR2(30);
43386 l_entity_code                 VARCHAR2(30);
43387 l_event_class_code            VARCHAR2(30);
43388 l_ae_header_id                NUMBER;
43389 l_event_type_code             VARCHAR2(30);
43390 l_line_definition_code        VARCHAR2(30);
43391 l_line_definition_owner_code  VARCHAR2(1);
43392 --
43393 -- adr variables
43394 l_segment                     VARCHAR2(30);
43395 l_ccid                        NUMBER;
43396 l_adr_transaction_coa_id      NUMBER;
43397 l_adr_accounting_coa_id       NUMBER;
43398 l_adr_flexfield_segment_code  VARCHAR2(30);
43399 l_adr_flex_value_set_id       NUMBER;
43400 l_adr_value_type_code         VARCHAR2(30);
43401 l_adr_value_combination_id    NUMBER;
43402 l_adr_value_segment_code      VARCHAR2(30);
43403 
43404 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43405 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43406 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43407 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43408 
43409 -- 4262811 Variables ------------------------------------------------------------------------------------------
43410 l_entered_amt_idx             NUMBER;
43411 l_accted_amt_idx              NUMBER;
43412 l_acc_rev_flag                VARCHAR2(1);
43413 l_accrual_line_num            NUMBER;
43414 l_tmp_amt                     NUMBER;
43415 l_acc_rev_natural_side_code   VARCHAR2(1);
43416 
43417 l_num_entries                 NUMBER;
43418 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43419 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43420 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43421 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43422 l_recog_line_1                NUMBER;
43423 l_recog_line_2                NUMBER;
43424 
43425 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43426 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43427 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43428 
43429 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43430 
43431 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43432 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43433 
43434 ---------------------------------------------------------------------------------------------------------------
43435 
43436 
43437 --
43438 -- bulk performance
43439 --
43440 l_balance_type_code           VARCHAR2(1);
43441 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43442 l_log_module                  VARCHAR2(240);
43443 
43444 --
43445 -- Upgrade strategy
43446 --
43447 l_actual_upg_option           VARCHAR2(1);
43448 l_enc_upg_option           VARCHAR2(1);
43449 
43450 --
43451 BEGIN
43452 --
43453 IF g_log_enabled THEN
43454       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
43455 END IF;
43456 --
43457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43458 
43459       trace
43460          (p_msg      => 'BEGIN of AcctLineType_91'
43464 END IF;
43461          ,p_level    => C_LEVEL_PROCEDURE
43462          ,p_module   => l_log_module);
43463 
43465 --
43466 l_component_type             := 'AMB_JLT';
43467 l_component_code             := 'REINSTATE_PROJ_ENC';
43468 l_component_type_code        := 'S';
43469 l_component_appl_id          :=  275;
43470 l_amb_context_code           := 'DEFAULT';
43471 l_entity_code                := 'EXPENDITURES';
43472 l_event_class_code           := 'TOT_BURDENED_COST';
43473 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
43474 l_line_definition_owner_code := 'S';
43475 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
43476 --
43477 l_balance_type_code          := 'E';
43478 l_segment                     := NULL;
43479 l_ccid                        := NULL;
43480 l_adr_transaction_coa_id      := NULL;
43481 l_adr_accounting_coa_id       := NULL;
43482 l_adr_flexfield_segment_code  := NULL;
43483 l_adr_flex_value_set_id       := NULL;
43484 l_adr_value_type_code         := NULL;
43485 l_adr_value_combination_id    := NULL;
43486 l_adr_value_segment_code      := NULL;
43487 
43488 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
43489 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
43490 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43491 l_budgetary_control_flag     := 'N';
43492 
43493 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43494 l_bflow_applied_to_amt       := NULL; -- 5132302
43495 l_entered_amt_idx            := NULL;          -- 4262811
43496 l_accted_amt_idx             := NULL;          -- 4262811
43497 l_acc_rev_flag               := NULL;          -- 4262811
43498 l_accrual_line_num           := NULL;          -- 4262811
43499 l_tmp_amt                    := NULL;          -- 4262811
43500 --
43501  
43502 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43503     l_balance_type_code <> 'B' THEN
43504 IF NVL(p_source_34,'
43505 ') =  'E'
43506  THEN 
43507 
43508    --
43509    XLA_AE_LINES_PKG.SetNewLine;
43510 
43511    p_balance_type_code          := l_balance_type_code;
43512    -- set the flag so later we will know whether the gain loss line needs to be created
43513    
43514    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43515      p_actual_flag :='A';
43516    END IF;
43517 
43518    --
43519    -- bulk performance
43520    --
43521    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43522                                       p_header_num   => 0); -- 4262811
43523    --
43524    -- set accounting line options
43525    --
43526    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43527            p_natural_side_code          => 'D'
43528          , p_gain_or_loss_flag          => 'N'
43529          , p_gl_transfer_mode_code      => 'S'
43530          , p_acct_entry_type_code       => 'E'
43531          , p_switch_side_flag           => 'N'
43532          , p_merge_duplicate_code       => 'N'
43533          );
43534    --
43535    l_acc_rev_natural_side_code := 'C';  -- 4262811
43536    -- 
43537    --
43538    -- set accounting line type info
43539    --
43540    xla_ae_lines_pkg.SetAcctLineType
43541       (p_component_type             => l_component_type
43542       ,p_event_type_code            => l_event_type_code
43543       ,p_line_definition_owner_code => l_line_definition_owner_code
43544       ,p_line_definition_code       => l_line_definition_code
43545       ,p_accounting_line_code       => l_component_code
43546       ,p_accounting_line_type_code  => l_component_type_code
43547       ,p_accounting_line_appl_id    => l_component_appl_id
43548       ,p_amb_context_code           => l_amb_context_code
43549       ,p_entity_code                => l_entity_code
43550       ,p_event_class_code           => l_event_class_code);
43551    --
43552    -- set accounting class
43553    --
43554    xla_ae_lines_pkg.SetAcctClass(
43555            p_accounting_class_code  => 'PA_BUDGET_ENC'
43556          , p_ae_header_id           => l_ae_header_id
43557          );
43558 
43559    --
43560    -- set rounding class
43561    --
43562    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43563                       'PA_BUDGET_ENC';
43564 
43565    --
43566    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43567    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43568    --
43569    -- bulk performance
43570    --
43571    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43572 
43573    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43574       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43575 
43576    -- 4955764
43577    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43578       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43579 
43580    -- 4458381 Public Sector Enh
43581    
43582    --
43583    -- set accounting attributes for the line type
43584    --
43585    l_entered_amt_idx := 40;
43586    l_accted_amt_idx  := 43;
43587    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
43588    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43589    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
43590    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
43591    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
43592    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
43593    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
43597    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
43594    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
43595    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
43596    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
43598    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
43599    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
43600    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
43601    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
43602    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
43603    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
43604    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
43605    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
43606    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
43607    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
43608    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
43609    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
43610    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
43611    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
43612    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
43613    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
43614    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
43615    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
43616    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
43617    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
43618    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
43619    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
43620    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
43621    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
43622    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
43623    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
43624    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
43625    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
43626    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
43627    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
43628    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43629    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
43630    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
43631    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
43632    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
43633    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
43634    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43635    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
43636    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
43637    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
43638    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
43639    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
43640    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
43641    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
43642    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
43643    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
43644    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
43645    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
43646    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
43647    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
43648    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
43649    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
43650    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
43651    l_rec_acct_attrs.array_char_value(32)  := 
43652 xla_ae_sources_pkg.GetSystemSourceChar(
43653    p_source_code           => 'XLA_CURRENCY_CODE'
43654  , p_source_type_code      => 'Y'
43655  , p_source_application_id =>  602
43656 );
43657    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
43658    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
43659    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
43660    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
43661    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
43662    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
43663    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
43664    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
43665    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
43666    l_rec_acct_attrs.array_char_value(37)  := 
43667 xla_ae_sources_pkg.GetSystemSourceChar(
43668    p_source_code           => 'XLA_CURRENCY_CODE'
43669  , p_source_type_code      => 'Y'
43670  , p_source_application_id =>  602
43671 );
43672    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
43673    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
43674    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
43675    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
43676    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
43677    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
43678    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
43679    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
43680    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
43681    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
43682    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
43683    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
43684    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
43685    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
43689    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
43686    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
43687    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
43688    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
43690    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
43691    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
43692    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
43693    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
43694 
43695    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43696    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43697 
43698    ---------------------------------------------------------------------------------------------------------------
43699    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43700    ---------------------------------------------------------------------------------------------------------------
43701    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43702 
43703    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43704    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43705 
43706    IF xla_accounting_cache_pkg.GetValueChar
43707          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43708          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43709    AND l_bflow_method_code = 'PRIOR_ENTRY'
43710 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43711    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43712          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43713        )
43714    THEN
43715          xla_ae_lines_pkg.BflowUpgEntry
43716            (p_business_method_code    => l_bflow_method_code
43717            ,p_business_class_code     => l_bflow_class_code
43718            ,p_balance_type            => l_balance_type_code);
43719    ELSE
43720       NULL;
43721 XLA_AE_LINES_PKG.business_flow_validation(
43722                                 p_business_method_code     => l_bflow_method_code
43723                                ,p_business_class_code      => l_bflow_class_code
43724                                ,p_inherit_description_flag => l_inherit_desc_flag);
43725    END IF;
43726 
43727    --
43728    -- call analytical criteria
43729    --
43730    -- Inherited Analytical Criteria for business flow method of Prior Entry.
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    --
43749    --
43750    END IF;
43751    --
43752    -- Bug 4922099
43753    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43754           (NVL(l_enc_upg_option, 'N') = 'O')
43755         ) AND
43756         (l_bflow_method_code = 'PRIOR_ENTRY')
43757       )
43758    THEN
43759       IF
43760       --
43761       1 = 1
43762       --
43763       THEN
43764       xla_accounting_err_pkg.build_message
43765                                     (p_appli_s_name            => 'XLA'
43766                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43767                                     ,p_token_1                 => 'LINE_NUMBER'
43768                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43769                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43770                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43771                                                                              l_component_type
43772                                                                             ,l_component_code
43773                                                                             ,l_component_type_code
43774                                                                             ,l_component_appl_id
43775                                                                             ,l_amb_context_code
43776                                                                             ,l_entity_code
43777                                                                             ,l_event_class_code
43778                                                                            )
43779                                     ,p_token_3                 => 'OWNER'
43780                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43781                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43782                                                                           ,p_lookup_code    => l_component_type_code
43783                                                                          )
43784                                     ,p_token_4                 => 'PRODUCT_NAME'
43785                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43786                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43787                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43788                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43789                                     ,p_ae_header_id            =>  NULL
43790                                        );
43791 
43792         IF (C_LEVEL_ERROR>= g_log_level) THEN
43796                       ,p_module   => l_log_module);
43793                  trace
43794                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43795                       ,p_level    => C_LEVEL_ERROR
43797         END IF;
43798       END IF;
43799    END IF;
43800    --
43801    --
43802    ------------------------------------------------------------------------------------------------
43803    -- 4219869 Business Flow
43804    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43805    -- Prior Entry.  Currently, the following code is always generated.
43806    ------------------------------------------------------------------------------------------------
43807    -- No ValidateCurrentLine for business flow method of Prior Entry
43808 
43809    ------------------------------------------------------------------------------------
43810    -- 4219869 Business Flow
43811    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43812    ------------------------------------------------------------------------------------
43813    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43814 
43815    ----------------------------------------------------------------------------------
43816    -- 4219869 Business Flow
43817    -- Update journal entry status -- Need to generate this within IF <condition>
43818    ----------------------------------------------------------------------------------
43819    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43820          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43821          ,p_balance_type_code => l_balance_type_code
43822          );
43823 
43824    -------------------------------------------------------------------------------------------
43825    -- 4262811 - Generate the Accrual Reversal lines
43826    -------------------------------------------------------------------------------------------
43827    BEGIN
43828       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43829                               (g_array_event(p_event_id).array_value_num('header_index'));
43830       IF l_acc_rev_flag IS NULL THEN
43831          l_acc_rev_flag := 'N';
43832       END IF;
43833    EXCEPTION
43834       WHEN OTHERS THEN
43835          l_acc_rev_flag := 'N';
43836    END;
43837    --
43838    IF (l_acc_rev_flag = 'Y') THEN
43839 
43840        -- 4645092  ------------------------------------------------------------------------------
43841        -- To allow MPA report to determine if it should generate report process
43842        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43843        ------------------------------------------------------------------------------------------
43844 
43845        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43846        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43847 
43848        --
43849        -- Update the line information that should be overwritten
43850        --
43851        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43852                                          p_header_num   => 1);
43853        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43854 
43855        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43856 
43857        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43858           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43859        END IF;
43860 
43861       --
43862       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43863       --
43864       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43865           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43866       ELSE
43867           ---------------------------------------------------------------------------------------------------
43868           -- 4262811a Switch Sign
43869           ---------------------------------------------------------------------------------------------------
43870           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43871           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43872                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43873           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43874                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43875           -- 5132302
43876           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43877                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43878 
43879       END IF;
43880 
43881       -- 4955764
43882       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43883       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43884 
43885 
43886       XLA_AE_LINES_PKG.ValidateCurrentLine;
43887       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43888 
43889       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43890                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43891                ,p_balance_type_code => l_balance_type_code);
43892 
43893    END IF;
43894 
43895    -----------------------------------------------------------------------------------------
43896    -- 4262811 Multiperiod Accounting
43897    -----------------------------------------------------------------------------------------
43898      -- No MPA option is assigned.
43899 
43900 
43901 END IF;
43902 END IF;
43903 --
43904 
43905 --
43909       ,p_level    => C_LEVEL_PROCEDURE
43906 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43907    trace
43908       (p_msg      => 'END of AcctLineType_91'
43910       ,p_module   => l_log_module);
43911 END IF;
43912 --
43913 EXCEPTION
43914   WHEN xla_exceptions_pkg.application_exception THEN
43915       RAISE;
43916   WHEN OTHERS THEN
43917        xla_exceptions_pkg.raise_message
43918            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_91');
43919 END AcctLineType_91;
43920 --
43921 
43922 ---------------------------------------
43923 --
43924 -- PRIVATE FUNCTION
43925 --         AcctLineType_92
43926 --
43927 ---------------------------------------
43928 PROCEDURE AcctLineType_92 (
43929   p_application_id        IN NUMBER
43930  ,p_event_id              IN NUMBER
43931  ,p_calculate_acctd_flag  IN VARCHAR2
43932  ,p_calculate_g_l_flag    IN VARCHAR2
43933  ,p_actual_flag           IN OUT VARCHAR2
43934  ,p_balance_type_code     OUT VARCHAR2
43935  ,p_gain_or_loss_ref      OUT VARCHAR2
43936  
43937 --Budget Code Combination ID
43938  , p_source_2            IN NUMBER
43939 --Cost CCID
43940  , p_source_3            IN NUMBER
43941 --Cost Clearing CCID
43942  , p_source_6            IN NUMBER
43943 --Reversing Line Flag
43944  , p_source_22            IN VARCHAR2
43945 --Actual Upgrade Credit Accounting Class
43946  , p_source_23            IN VARCHAR2
43947 --Entered Currency Code
43948  , p_source_25            IN VARCHAR2
43949 --Exchange Rate Date
43950  , p_source_27            IN DATE
43951 --Exchange Rate
43952  , p_source_28            IN NUMBER
43953 --Exchange Rate Type
43954  , p_source_29            IN VARCHAR2
43955 --Actual Upgrade Debit Accounting Class
43956  , p_source_30            IN VARCHAR2
43957 --Use Actuals Upgrade Attributes Flag
43958  , p_source_31            IN VARCHAR2
43959 --Expenditure Item ID
43960  , p_source_32            IN NUMBER
43961 --Cost Distribution Line Number
43962  , p_source_33            IN NUMBER
43963 --Line Type
43964  , p_source_34            IN VARCHAR2
43965  , p_source_34_meaning    IN VARCHAR2
43966 --Reversed Line Number
43967  , p_source_35            IN NUMBER
43968 --Entered Burdened Cost
43969  , p_source_44            IN NUMBER
43970 --Accounted Burdened Cost
43971  , p_source_45            IN NUMBER
43972 --Encumbrance Amount
43973  , p_source_46            IN NUMBER
43974 --Project Encumbrance Applied to Application Identifier
43975  , p_source_47            IN NUMBER
43976 --Project Encumbrance Applied to Distribution Type
43977  , p_source_48            IN VARCHAR2
43978 --Project Encumbrance Applied to Entity Code
43979  , p_source_49            IN VARCHAR2
43980 --Project Encumbrance Applied to First Distribution ID
43981  , p_source_50            IN NUMBER
43982 --Project Encumbrance Applied to First System Transaction ID
43983  , p_source_51            IN NUMBER
43984 --Project Encumbrance Applied to Second Distribution ID
43985  , p_source_52            IN VARCHAR2
43986 --Encumbrance Upgrade Debit Accounting Class
43987  , p_source_54            IN VARCHAR2
43988 --Use Encumbrance Upgrade Attributes Flag
43989  , p_source_55            IN VARCHAR2
43990 --Encumbrance Type ID
43991  , p_source_56            IN NUMBER
43992 --Project Encumbrance Type ID
43993  , p_source_57            IN NUMBER
43994 --Document Type
43995  , p_source_70            IN VARCHAR2
43996  , p_source_70_meaning    IN VARCHAR2
43997 --Encumbrance Journal Lines Reversed Flag
43998  , p_source_71            IN VARCHAR2
43999 )
44000 IS
44001 
44002 l_component_type              VARCHAR2(80);
44003 l_component_code              VARCHAR2(30);
44004 l_component_type_code         VARCHAR2(1);
44005 l_component_appl_id           INTEGER;
44006 l_amb_context_code            VARCHAR2(30);
44007 l_entity_code                 VARCHAR2(30);
44008 l_event_class_code            VARCHAR2(30);
44009 l_ae_header_id                NUMBER;
44010 l_event_type_code             VARCHAR2(30);
44011 l_line_definition_code        VARCHAR2(30);
44012 l_line_definition_owner_code  VARCHAR2(1);
44013 --
44014 -- adr variables
44015 l_segment                     VARCHAR2(30);
44016 l_ccid                        NUMBER;
44017 l_adr_transaction_coa_id      NUMBER;
44018 l_adr_accounting_coa_id       NUMBER;
44019 l_adr_flexfield_segment_code  VARCHAR2(30);
44020 l_adr_flex_value_set_id       NUMBER;
44021 l_adr_value_type_code         VARCHAR2(30);
44022 l_adr_value_combination_id    NUMBER;
44023 l_adr_value_segment_code      VARCHAR2(30);
44024 
44025 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44026 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44027 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44028 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44029 
44030 -- 4262811 Variables ------------------------------------------------------------------------------------------
44031 l_entered_amt_idx             NUMBER;
44032 l_accted_amt_idx              NUMBER;
44033 l_acc_rev_flag                VARCHAR2(1);
44034 l_accrual_line_num            NUMBER;
44035 l_tmp_amt                     NUMBER;
44036 l_acc_rev_natural_side_code   VARCHAR2(1);
44037 
44038 l_num_entries                 NUMBER;
44039 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44040 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44041 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44042 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44043 l_recog_line_1                NUMBER;
44044 l_recog_line_2                NUMBER;
44045 
44046 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44050 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44047 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44048 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44049 
44051 
44052 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44053 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44054 
44055 ---------------------------------------------------------------------------------------------------------------
44056 
44057 
44058 --
44059 -- bulk performance
44060 --
44061 l_balance_type_code           VARCHAR2(1);
44062 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44063 l_log_module                  VARCHAR2(240);
44064 
44065 --
44066 -- Upgrade strategy
44067 --
44068 l_actual_upg_option           VARCHAR2(1);
44069 l_enc_upg_option           VARCHAR2(1);
44070 
44071 --
44072 BEGIN
44073 --
44074 IF g_log_enabled THEN
44075       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
44076 END IF;
44077 --
44078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44079 
44080       trace
44081          (p_msg      => 'BEGIN of AcctLineType_92'
44082          ,p_level    => C_LEVEL_PROCEDURE
44083          ,p_module   => l_log_module);
44084 
44085 END IF;
44086 --
44087 l_component_type             := 'AMB_JLT';
44088 l_component_code             := 'REL_CANCELLED_INV_BURDENED_ENC';
44089 l_component_type_code        := 'S';
44090 l_component_appl_id          :=  275;
44091 l_amb_context_code           := 'DEFAULT';
44092 l_entity_code                := 'EXPENDITURES';
44093 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
44094 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
44095 l_line_definition_owner_code := 'S';
44096 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
44097 --
44098 l_balance_type_code          := 'E';
44099 l_segment                     := NULL;
44100 l_ccid                        := NULL;
44101 l_adr_transaction_coa_id      := NULL;
44102 l_adr_accounting_coa_id       := NULL;
44103 l_adr_flexfield_segment_code  := NULL;
44104 l_adr_flex_value_set_id       := NULL;
44105 l_adr_value_type_code         := NULL;
44106 l_adr_value_combination_id    := NULL;
44107 l_adr_value_segment_code      := NULL;
44108 
44109 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44110 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
44111 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44112 l_budgetary_control_flag     := 'N';
44113 
44114 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44115 l_bflow_applied_to_amt       := NULL; -- 5132302
44116 l_entered_amt_idx            := NULL;          -- 4262811
44117 l_accted_amt_idx             := NULL;          -- 4262811
44118 l_acc_rev_flag               := NULL;          -- 4262811
44119 l_accrual_line_num           := NULL;          -- 4262811
44120 l_tmp_amt                    := NULL;          -- 4262811
44121 --
44122  
44123 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44124     l_balance_type_code <> 'B' THEN
44125 IF NVL(p_source_34,'
44126 ') =  'E' AND 
44127 NVL(p_source_70,'
44128 ') =  'AP' AND 
44129 NVL(p_source_71,'
44130 ') =  'Y'
44131  THEN 
44132 
44133    --
44134    XLA_AE_LINES_PKG.SetNewLine;
44135 
44136    p_balance_type_code          := l_balance_type_code;
44137    -- set the flag so later we will know whether the gain loss line needs to be created
44138    
44139    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44140      p_actual_flag :='A';
44141    END IF;
44142 
44143    --
44144    -- bulk performance
44145    --
44146    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44147                                       p_header_num   => 0); -- 4262811
44148    --
44149    -- set accounting line options
44150    --
44151    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44152            p_natural_side_code          => 'C'
44153          , p_gain_or_loss_flag          => 'N'
44154          , p_gl_transfer_mode_code      => 'S'
44155          , p_acct_entry_type_code       => 'E'
44156          , p_switch_side_flag           => 'N'
44157          , p_merge_duplicate_code       => 'N'
44158          );
44159    --
44160    l_acc_rev_natural_side_code := 'D';  -- 4262811
44161    -- 
44162    --
44163    -- set accounting line type info
44164    --
44165    xla_ae_lines_pkg.SetAcctLineType
44166       (p_component_type             => l_component_type
44167       ,p_event_type_code            => l_event_type_code
44168       ,p_line_definition_owner_code => l_line_definition_owner_code
44169       ,p_line_definition_code       => l_line_definition_code
44170       ,p_accounting_line_code       => l_component_code
44171       ,p_accounting_line_type_code  => l_component_type_code
44172       ,p_accounting_line_appl_id    => l_component_appl_id
44173       ,p_amb_context_code           => l_amb_context_code
44174       ,p_entity_code                => l_entity_code
44175       ,p_event_class_code           => l_event_class_code);
44176    --
44177    -- set accounting class
44178    --
44179    xla_ae_lines_pkg.SetAcctClass(
44180            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
44181          , p_ae_header_id           => l_ae_header_id
44182          );
44183 
44184    --
44185    -- set rounding class
44186    --
44187    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44188                       'AP_INV_PA_BURDENED';
44189 
44190    --
44194    -- bulk performance
44191    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44192    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44193    --
44195    --
44196    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44197 
44198    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44199       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44200 
44201    -- 4955764
44202    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44203       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44204 
44205    -- 4458381 Public Sector Enh
44206       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1060;
44207    --
44208    -- set accounting attributes for the line type
44209    --
44210    l_entered_amt_idx := 35;
44211    l_accted_amt_idx  := 40;
44212    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
44213    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44214    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
44215    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
44216    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
44217    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
44218    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
44219    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
44220    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
44221    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
44222    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
44223    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
44224    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
44225    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
44226    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
44227    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
44228    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
44229    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
44230    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
44231    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
44232    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
44233    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
44234    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
44235    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
44236    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
44237    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
44238    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
44239    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
44240    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
44241    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
44242    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
44243    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
44244    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
44245    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
44246    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
44247    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
44248    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
44249    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
44250    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
44251    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
44252    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
44253    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44254    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
44255    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
44256    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
44257    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
44258    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
44259    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44260    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
44261    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
44262    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
44263    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
44264    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
44265    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
44266    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
44267    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
44268    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
44269    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
44270    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
44271    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
44272    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
44273    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
44274    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
44275    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
44276    l_rec_acct_attrs.array_char_value(32)  := 
44277 xla_ae_sources_pkg.GetSystemSourceChar(
44278    p_source_code           => 'XLA_CURRENCY_CODE'
44279  , p_source_type_code      => 'Y'
44280  , p_source_application_id =>  602
44281 );
44282    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
44283    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
44284    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
44285    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
44289    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
44286    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
44287    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
44288    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
44290    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
44291    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
44292    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
44293    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
44294    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
44295    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
44296    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
44297    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
44298    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
44299    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
44300    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
44301    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
44302    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
44303    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
44304    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
44305    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
44306    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
44307    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
44308 
44309    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44310    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44311 
44312    ---------------------------------------------------------------------------------------------------------------
44313    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44314    ---------------------------------------------------------------------------------------------------------------
44315    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44316 
44317    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44318    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44319 
44320    IF xla_accounting_cache_pkg.GetValueChar
44321          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44322          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44323    AND l_bflow_method_code = 'PRIOR_ENTRY'
44324 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44325    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44326          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44327        )
44328    THEN
44329          xla_ae_lines_pkg.BflowUpgEntry
44330            (p_business_method_code    => l_bflow_method_code
44331            ,p_business_class_code     => l_bflow_class_code
44332            ,p_balance_type            => l_balance_type_code);
44333    ELSE
44334       NULL;
44335 -- No business flow processing for business flow method of NONE.
44336    END IF;
44337 
44338    --
44339    -- call analytical criteria
44340    --
44341    
44342    --
44343    -- call description
44344    --
44345    -- No description or it is inherited.
44346    --
44347    -- call ADRs
44348    -- Bug 4922099
44349    --
44350    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44351         (NVL(l_actual_upg_option, 'N') = 'O') OR
44352         (NVL(l_enc_upg_option, 'N') = 'O')
44353       )
44354    THEN
44355    NULL;
44356    --
44357    --
44358    
44359   l_ccid := AcctDerRule_2(
44360            p_application_id           => p_application_id
44361          , p_ae_header_id             => l_ae_header_id 
44362 , p_source_2 => p_source_2
44363          , x_transaction_coa_id       => l_adr_transaction_coa_id
44364          , x_accounting_coa_id        => l_adr_accounting_coa_id
44365          , x_value_type_code          => l_adr_value_type_code
44366          , p_side                     => 'NA'
44367    );
44368 
44369    xla_ae_lines_pkg.set_ccid(
44370     p_code_combination_id          => l_ccid
44371   , p_value_type_code              => l_adr_value_type_code
44372   , p_transaction_coa_id           => l_adr_transaction_coa_id
44373   , p_accounting_coa_id            => l_adr_accounting_coa_id
44374   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
44375   , p_adr_type_code                => 'S'
44376   , p_component_type               => l_component_type
44377   , p_component_code               => l_component_code
44378   , p_component_type_code          => l_component_type_code
44379   , p_component_appl_id            => l_component_appl_id
44380   , p_amb_context_code             => l_amb_context_code
44381   , p_side                         => 'NA'
44382   );
44383 
44384 
44385    --
44386    --
44387    END IF;
44388    --
44389    -- Bug 4922099
44390    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44391           (NVL(l_enc_upg_option, 'N') = 'O')
44392         ) AND
44393         (l_bflow_method_code = 'PRIOR_ENTRY')
44394       )
44395    THEN
44396       IF
44397       --
44398       1 = 2
44399       --
44400       THEN
44401       xla_accounting_err_pkg.build_message
44402                                     (p_appli_s_name            => 'XLA'
44403                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44404                                     ,p_token_1                 => 'LINE_NUMBER'
44405                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44406                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44410                                                                             ,l_component_type_code
44407                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44408                                                                              l_component_type
44409                                                                             ,l_component_code
44411                                                                             ,l_component_appl_id
44412                                                                             ,l_amb_context_code
44413                                                                             ,l_entity_code
44414                                                                             ,l_event_class_code
44415                                                                            )
44416                                     ,p_token_3                 => 'OWNER'
44417                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44418                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44419                                                                           ,p_lookup_code    => l_component_type_code
44420                                                                          )
44421                                     ,p_token_4                 => 'PRODUCT_NAME'
44422                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44423                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44424                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44425                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44426                                     ,p_ae_header_id            =>  NULL
44427                                        );
44428 
44429         IF (C_LEVEL_ERROR>= g_log_level) THEN
44430                  trace
44431                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44432                       ,p_level    => C_LEVEL_ERROR
44433                       ,p_module   => l_log_module);
44434         END IF;
44435       END IF;
44436    END IF;
44437    --
44438    --
44439    ------------------------------------------------------------------------------------------------
44440    -- 4219869 Business Flow
44441    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44442    -- Prior Entry.  Currently, the following code is always generated.
44443    ------------------------------------------------------------------------------------------------
44444    XLA_AE_LINES_PKG.ValidateCurrentLine;
44445 
44446    ------------------------------------------------------------------------------------
44447    -- 4219869 Business Flow
44448    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44449    ------------------------------------------------------------------------------------
44450    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44451 
44452    ----------------------------------------------------------------------------------
44453    -- 4219869 Business Flow
44454    -- Update journal entry status -- Need to generate this within IF <condition>
44455    ----------------------------------------------------------------------------------
44456    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44457          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44458          ,p_balance_type_code => l_balance_type_code
44459          );
44460 
44461    -------------------------------------------------------------------------------------------
44462    -- 4262811 - Generate the Accrual Reversal lines
44463    -------------------------------------------------------------------------------------------
44464    BEGIN
44465       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44466                               (g_array_event(p_event_id).array_value_num('header_index'));
44467       IF l_acc_rev_flag IS NULL THEN
44468          l_acc_rev_flag := 'N';
44469       END IF;
44470    EXCEPTION
44471       WHEN OTHERS THEN
44472          l_acc_rev_flag := 'N';
44473    END;
44474    --
44475    IF (l_acc_rev_flag = 'Y') THEN
44476 
44477        -- 4645092  ------------------------------------------------------------------------------
44478        -- To allow MPA report to determine if it should generate report process
44479        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44480        ------------------------------------------------------------------------------------------
44481 
44482        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44483        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44484 
44485        --
44486        -- Update the line information that should be overwritten
44487        --
44488        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44489                                          p_header_num   => 1);
44490        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44491 
44492        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44493 
44494        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44495           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44496        END IF;
44497 
44498       --
44499       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44500       --
44501       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44502           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44503       ELSE
44504           ---------------------------------------------------------------------------------------------------
44508           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44505           -- 4262811a Switch Sign
44506           ---------------------------------------------------------------------------------------------------
44507           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44509                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44510           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44511                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44512           -- 5132302
44513           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44514                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44515 
44516       END IF;
44517 
44518       -- 4955764
44519       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44520       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44521 
44522 
44523       XLA_AE_LINES_PKG.ValidateCurrentLine;
44524       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44525 
44526       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44527                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44528                ,p_balance_type_code => l_balance_type_code);
44529 
44530    END IF;
44531 
44532    -----------------------------------------------------------------------------------------
44533    -- 4262811 Multiperiod Accounting
44534    -----------------------------------------------------------------------------------------
44535      -- No MPA option is assigned.
44536 
44537 
44538 END IF;
44539 END IF;
44540 --
44541 
44542 --
44543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44544    trace
44545       (p_msg      => 'END of AcctLineType_92'
44546       ,p_level    => C_LEVEL_PROCEDURE
44547       ,p_module   => l_log_module);
44548 END IF;
44549 --
44550 EXCEPTION
44551   WHEN xla_exceptions_pkg.application_exception THEN
44552       RAISE;
44553   WHEN OTHERS THEN
44554        xla_exceptions_pkg.raise_message
44555            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_92');
44556 END AcctLineType_92;
44557 --
44558 
44559 ---------------------------------------
44560 --
44561 -- PRIVATE FUNCTION
44562 --         AcctLineType_93
44563 --
44564 ---------------------------------------
44565 PROCEDURE AcctLineType_93 (
44566   p_application_id        IN NUMBER
44567  ,p_event_id              IN NUMBER
44568  ,p_calculate_acctd_flag  IN VARCHAR2
44569  ,p_calculate_g_l_flag    IN VARCHAR2
44570  ,p_actual_flag           IN OUT VARCHAR2
44571  ,p_balance_type_code     OUT VARCHAR2
44572  ,p_gain_or_loss_ref      OUT VARCHAR2
44573  
44574 --Budget Code Combination ID
44575  , p_source_2            IN NUMBER
44576 --Cost CCID
44577  , p_source_3            IN NUMBER
44578 --Cost Clearing CCID
44579  , p_source_6            IN NUMBER
44580 --Reversing Line Flag
44581  , p_source_22            IN VARCHAR2
44582 --Actual Upgrade Credit Accounting Class
44583  , p_source_23            IN VARCHAR2
44584 --Entered Currency Code
44585  , p_source_25            IN VARCHAR2
44586 --Exchange Rate Date
44587  , p_source_27            IN DATE
44588 --Exchange Rate
44589  , p_source_28            IN NUMBER
44590 --Exchange Rate Type
44591  , p_source_29            IN VARCHAR2
44592 --Actual Upgrade Debit Accounting Class
44593  , p_source_30            IN VARCHAR2
44594 --Use Actuals Upgrade Attributes Flag
44595  , p_source_31            IN VARCHAR2
44596 --Expenditure Item ID
44597  , p_source_32            IN NUMBER
44598 --Cost Distribution Line Number
44599  , p_source_33            IN NUMBER
44600 --Line Type
44601  , p_source_34            IN VARCHAR2
44602  , p_source_34_meaning    IN VARCHAR2
44603 --Reversed Line Number
44604  , p_source_35            IN NUMBER
44605 --Entered Burdened Cost
44606  , p_source_44            IN NUMBER
44607 --Accounted Burdened Cost
44608  , p_source_45            IN NUMBER
44609 --Encumbrance Amount
44610  , p_source_46            IN NUMBER
44611 --Project Encumbrance Applied to Application Identifier
44612  , p_source_47            IN NUMBER
44613 --Project Encumbrance Applied to Distribution Type
44614  , p_source_48            IN VARCHAR2
44615 --Project Encumbrance Applied to Entity Code
44616  , p_source_49            IN VARCHAR2
44617 --Project Encumbrance Applied to First Distribution ID
44618  , p_source_50            IN NUMBER
44619 --Project Encumbrance Applied to First System Transaction ID
44620  , p_source_51            IN NUMBER
44621 --Project Encumbrance Applied to Second Distribution ID
44622  , p_source_52            IN VARCHAR2
44623 --Encumbrance Upgrade Credit Accounting Class
44624  , p_source_53            IN VARCHAR2
44625 --Encumbrance Upgrade Debit Accounting Class
44626  , p_source_54            IN VARCHAR2
44627 --Use Encumbrance Upgrade Attributes Flag
44628  , p_source_55            IN VARCHAR2
44629 --Encumbrance Type ID
44630  , p_source_56            IN NUMBER
44631 --Project Encumbrance Type ID
44632  , p_source_57            IN NUMBER
44633 --Document Type
44634  , p_source_70            IN VARCHAR2
44635  , p_source_70_meaning    IN VARCHAR2
44636 --Encumbrance Journal Lines Reversed Flag
44637  , p_source_71            IN VARCHAR2
44638 )
44639 IS
44640 
44641 l_component_type              VARCHAR2(80);
44642 l_component_code              VARCHAR2(30);
44643 l_component_type_code         VARCHAR2(1);
44644 l_component_appl_id           INTEGER;
44648 l_ae_header_id                NUMBER;
44645 l_amb_context_code            VARCHAR2(30);
44646 l_entity_code                 VARCHAR2(30);
44647 l_event_class_code            VARCHAR2(30);
44649 l_event_type_code             VARCHAR2(30);
44650 l_line_definition_code        VARCHAR2(30);
44651 l_line_definition_owner_code  VARCHAR2(1);
44652 --
44653 -- adr variables
44654 l_segment                     VARCHAR2(30);
44655 l_ccid                        NUMBER;
44656 l_adr_transaction_coa_id      NUMBER;
44657 l_adr_accounting_coa_id       NUMBER;
44658 l_adr_flexfield_segment_code  VARCHAR2(30);
44659 l_adr_flex_value_set_id       NUMBER;
44660 l_adr_value_type_code         VARCHAR2(30);
44661 l_adr_value_combination_id    NUMBER;
44662 l_adr_value_segment_code      VARCHAR2(30);
44663 
44664 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44665 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44666 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44667 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44668 
44669 -- 4262811 Variables ------------------------------------------------------------------------------------------
44670 l_entered_amt_idx             NUMBER;
44671 l_accted_amt_idx              NUMBER;
44672 l_acc_rev_flag                VARCHAR2(1);
44673 l_accrual_line_num            NUMBER;
44674 l_tmp_amt                     NUMBER;
44675 l_acc_rev_natural_side_code   VARCHAR2(1);
44676 
44677 l_num_entries                 NUMBER;
44678 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44679 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44680 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44681 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44682 l_recog_line_1                NUMBER;
44683 l_recog_line_2                NUMBER;
44684 
44685 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44686 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44687 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44688 
44689 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44690 
44691 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44692 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44693 
44694 ---------------------------------------------------------------------------------------------------------------
44695 
44696 
44697 --
44698 -- bulk performance
44699 --
44700 l_balance_type_code           VARCHAR2(1);
44701 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44702 l_log_module                  VARCHAR2(240);
44703 
44704 --
44705 -- Upgrade strategy
44706 --
44707 l_actual_upg_option           VARCHAR2(1);
44708 l_enc_upg_option           VARCHAR2(1);
44709 
44710 --
44711 BEGIN
44712 --
44713 IF g_log_enabled THEN
44714       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
44715 END IF;
44716 --
44717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44718 
44719       trace
44720          (p_msg      => 'BEGIN of AcctLineType_93'
44721          ,p_level    => C_LEVEL_PROCEDURE
44722          ,p_module   => l_log_module);
44723 
44724 END IF;
44725 --
44726 l_component_type             := 'AMB_JLT';
44727 l_component_code             := 'REL_CANCELLED_INV_BURDENED_ENC';
44728 l_component_type_code        := 'S';
44729 l_component_appl_id          :=  275;
44730 l_amb_context_code           := 'DEFAULT';
44731 l_entity_code                := 'EXPENDITURES';
44732 l_event_class_code           := 'TOT_BURDENED_COST';
44733 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
44734 l_line_definition_owner_code := 'S';
44735 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
44736 --
44737 l_balance_type_code          := 'E';
44738 l_segment                     := NULL;
44739 l_ccid                        := NULL;
44740 l_adr_transaction_coa_id      := NULL;
44741 l_adr_accounting_coa_id       := NULL;
44742 l_adr_flexfield_segment_code  := NULL;
44743 l_adr_flex_value_set_id       := NULL;
44744 l_adr_value_type_code         := NULL;
44745 l_adr_value_combination_id    := NULL;
44746 l_adr_value_segment_code      := NULL;
44747 
44748 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44749 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
44750 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44751 l_budgetary_control_flag     := 'N';
44752 
44753 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44754 l_bflow_applied_to_amt       := NULL; -- 5132302
44755 l_entered_amt_idx            := NULL;          -- 4262811
44756 l_accted_amt_idx             := NULL;          -- 4262811
44757 l_acc_rev_flag               := NULL;          -- 4262811
44758 l_accrual_line_num           := NULL;          -- 4262811
44759 l_tmp_amt                    := NULL;          -- 4262811
44760 --
44761  
44762 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44763     l_balance_type_code <> 'B' THEN
44764 IF NVL(p_source_34,'
44765 ') =  'E' AND 
44766 NVL(p_source_70,'
44767 ') =  'AP' AND 
44768 NVL(p_source_71,'
44769 ') =  'Y'
44770  THEN 
44771 
44772    --
44773    XLA_AE_LINES_PKG.SetNewLine;
44774 
44775    p_balance_type_code          := l_balance_type_code;
44776    -- set the flag so later we will know whether the gain loss line needs to be created
44777    
44778    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44779      p_actual_flag :='A';
44780    END IF;
44781 
44782    --
44783    -- bulk performance
44784    --
44788    -- set accounting line options
44785    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44786                                       p_header_num   => 0); -- 4262811
44787    --
44789    --
44790    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44791            p_natural_side_code          => 'C'
44792          , p_gain_or_loss_flag          => 'N'
44793          , p_gl_transfer_mode_code      => 'S'
44794          , p_acct_entry_type_code       => 'E'
44795          , p_switch_side_flag           => 'N'
44796          , p_merge_duplicate_code       => 'N'
44797          );
44798    --
44799    l_acc_rev_natural_side_code := 'D';  -- 4262811
44800    -- 
44801    --
44802    -- set accounting line type info
44803    --
44804    xla_ae_lines_pkg.SetAcctLineType
44805       (p_component_type             => l_component_type
44806       ,p_event_type_code            => l_event_type_code
44807       ,p_line_definition_owner_code => l_line_definition_owner_code
44808       ,p_line_definition_code       => l_line_definition_code
44809       ,p_accounting_line_code       => l_component_code
44810       ,p_accounting_line_type_code  => l_component_type_code
44811       ,p_accounting_line_appl_id    => l_component_appl_id
44812       ,p_amb_context_code           => l_amb_context_code
44813       ,p_entity_code                => l_entity_code
44814       ,p_event_class_code           => l_event_class_code);
44815    --
44816    -- set accounting class
44817    --
44818    xla_ae_lines_pkg.SetAcctClass(
44819            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
44820          , p_ae_header_id           => l_ae_header_id
44821          );
44822 
44823    --
44824    -- set rounding class
44825    --
44826    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44827                       'AP_INV_PA_BURDENED';
44828 
44829    --
44830    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44831    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44832    --
44833    -- bulk performance
44834    --
44835    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44836 
44837    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44838       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44839 
44840    -- 4955764
44841    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44842       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44843 
44844    -- 4458381 Public Sector Enh
44845       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1060;
44846    --
44847    -- set accounting attributes for the line type
44848    --
44849    l_entered_amt_idx := 40;
44850    l_accted_amt_idx  := 46;
44851    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
44852    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44853    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
44854    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
44855    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
44856    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
44857    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
44858    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
44859    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
44860    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
44861    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
44862    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
44863    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
44864    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
44865    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
44866    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
44867    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
44868    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
44869    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
44870    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
44871    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
44872    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
44873    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
44874    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
44875    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
44876    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
44877    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
44878    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
44879    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
44880    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
44881    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
44882    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
44883    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
44884    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
44885    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
44886    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
44887    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
44888    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
44889    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
44890    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
44891    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
44892    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44893    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
44894    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
44898    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44895    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
44896    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
44897    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
44899    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
44900    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
44901    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
44902    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
44903    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
44904    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
44905    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
44906    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
44907    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
44908    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
44909    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
44910    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
44911    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
44912    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
44913    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
44914    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
44915    l_rec_acct_attrs.array_char_value(32)  := 
44916 xla_ae_sources_pkg.GetSystemSourceChar(
44917    p_source_code           => 'XLA_CURRENCY_CODE'
44918  , p_source_type_code      => 'Y'
44919  , p_source_application_id =>  602
44920 );
44921    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
44922    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
44923    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
44924    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
44925    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
44926    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
44927    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
44928    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
44929    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
44930    l_rec_acct_attrs.array_char_value(37)  := 
44931 xla_ae_sources_pkg.GetSystemSourceChar(
44932    p_source_code           => 'XLA_CURRENCY_CODE'
44933  , p_source_type_code      => 'Y'
44934  , p_source_application_id =>  602
44935 );
44936    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
44937    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
44938    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
44939    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
44940    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
44941    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
44942    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
44943    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
44944    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
44945    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
44946    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
44947    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
44948    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
44949    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
44950    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
44951    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
44952    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
44953    l_rec_acct_attrs.array_num_value(46)  := p_source_46;
44954    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
44955    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
44956    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
44957    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
44958    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
44959    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
44960    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
44961    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
44962    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
44963    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
44964 
44965    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44966    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44967 
44968    ---------------------------------------------------------------------------------------------------------------
44969    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44970    ---------------------------------------------------------------------------------------------------------------
44971    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44972 
44973    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44974    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44975 
44976    IF xla_accounting_cache_pkg.GetValueChar
44977          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44978          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44979    AND l_bflow_method_code = 'PRIOR_ENTRY'
44980 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44981    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44982          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44983        )
44984    THEN
44985          xla_ae_lines_pkg.BflowUpgEntry
44986            (p_business_method_code    => l_bflow_method_code
44987            ,p_business_class_code     => l_bflow_class_code
44988            ,p_balance_type            => l_balance_type_code);
44989    ELSE
44990       NULL;
44994    --
44991 -- No business flow processing for business flow method of NONE.
44992    END IF;
44993 
44995    -- call analytical criteria
44996    --
44997    
44998    --
44999    -- call description
45000    --
45001    -- No description or it is inherited.
45002    --
45003    -- call ADRs
45004    -- Bug 4922099
45005    --
45006    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45007         (NVL(l_actual_upg_option, 'N') = 'O') OR
45008         (NVL(l_enc_upg_option, 'N') = 'O')
45009       )
45010    THEN
45011    NULL;
45012    --
45013    --
45014    
45015   l_ccid := AcctDerRule_2(
45016            p_application_id           => p_application_id
45017          , p_ae_header_id             => l_ae_header_id 
45018 , p_source_2 => p_source_2
45019          , x_transaction_coa_id       => l_adr_transaction_coa_id
45020          , x_accounting_coa_id        => l_adr_accounting_coa_id
45021          , x_value_type_code          => l_adr_value_type_code
45022          , p_side                     => 'NA'
45023    );
45024 
45025    xla_ae_lines_pkg.set_ccid(
45026     p_code_combination_id          => l_ccid
45027   , p_value_type_code              => l_adr_value_type_code
45028   , p_transaction_coa_id           => l_adr_transaction_coa_id
45029   , p_accounting_coa_id            => l_adr_accounting_coa_id
45030   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
45031   , p_adr_type_code                => 'S'
45032   , p_component_type               => l_component_type
45033   , p_component_code               => l_component_code
45034   , p_component_type_code          => l_component_type_code
45035   , p_component_appl_id            => l_component_appl_id
45036   , p_amb_context_code             => l_amb_context_code
45037   , p_side                         => 'NA'
45038   );
45039 
45040 
45041    --
45042    --
45043    END IF;
45044    --
45045    -- Bug 4922099
45046    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45047           (NVL(l_enc_upg_option, 'N') = 'O')
45048         ) AND
45049         (l_bflow_method_code = 'PRIOR_ENTRY')
45050       )
45051    THEN
45052       IF
45053       --
45054       1 = 2
45055       --
45056       THEN
45057       xla_accounting_err_pkg.build_message
45058                                     (p_appli_s_name            => 'XLA'
45059                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45060                                     ,p_token_1                 => 'LINE_NUMBER'
45061                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45062                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45063                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45064                                                                              l_component_type
45065                                                                             ,l_component_code
45066                                                                             ,l_component_type_code
45067                                                                             ,l_component_appl_id
45068                                                                             ,l_amb_context_code
45069                                                                             ,l_entity_code
45070                                                                             ,l_event_class_code
45071                                                                            )
45072                                     ,p_token_3                 => 'OWNER'
45073                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45074                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45075                                                                           ,p_lookup_code    => l_component_type_code
45076                                                                          )
45077                                     ,p_token_4                 => 'PRODUCT_NAME'
45078                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45079                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45080                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45081                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45082                                     ,p_ae_header_id            =>  NULL
45083                                        );
45084 
45085         IF (C_LEVEL_ERROR>= g_log_level) THEN
45086                  trace
45087                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45088                       ,p_level    => C_LEVEL_ERROR
45089                       ,p_module   => l_log_module);
45090         END IF;
45091       END IF;
45092    END IF;
45093    --
45094    --
45095    ------------------------------------------------------------------------------------------------
45096    -- 4219869 Business Flow
45097    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45098    -- Prior Entry.  Currently, the following code is always generated.
45099    ------------------------------------------------------------------------------------------------
45100    XLA_AE_LINES_PKG.ValidateCurrentLine;
45101 
45102    ------------------------------------------------------------------------------------
45103    -- 4219869 Business Flow
45104    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45105    ------------------------------------------------------------------------------------
45106    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45107 
45111    ----------------------------------------------------------------------------------
45108    ----------------------------------------------------------------------------------
45109    -- 4219869 Business Flow
45110    -- Update journal entry status -- Need to generate this within IF <condition>
45112    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45113          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45114          ,p_balance_type_code => l_balance_type_code
45115          );
45116 
45117    -------------------------------------------------------------------------------------------
45118    -- 4262811 - Generate the Accrual Reversal lines
45119    -------------------------------------------------------------------------------------------
45120    BEGIN
45121       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45122                               (g_array_event(p_event_id).array_value_num('header_index'));
45123       IF l_acc_rev_flag IS NULL THEN
45124          l_acc_rev_flag := 'N';
45125       END IF;
45126    EXCEPTION
45127       WHEN OTHERS THEN
45128          l_acc_rev_flag := 'N';
45129    END;
45130    --
45131    IF (l_acc_rev_flag = 'Y') THEN
45132 
45133        -- 4645092  ------------------------------------------------------------------------------
45134        -- To allow MPA report to determine if it should generate report process
45135        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45136        ------------------------------------------------------------------------------------------
45137 
45138        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45139        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45140 
45141        --
45142        -- Update the line information that should be overwritten
45143        --
45144        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45145                                          p_header_num   => 1);
45146        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45147 
45148        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45149 
45150        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45151           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45152        END IF;
45153 
45154       --
45155       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45156       --
45157       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45158           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45159       ELSE
45160           ---------------------------------------------------------------------------------------------------
45161           -- 4262811a Switch Sign
45162           ---------------------------------------------------------------------------------------------------
45163           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45164           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45165                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45166           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45167                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45168           -- 5132302
45169           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45170                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45171 
45172       END IF;
45173 
45174       -- 4955764
45175       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45176       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45177 
45178 
45179       XLA_AE_LINES_PKG.ValidateCurrentLine;
45180       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45181 
45182       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45183                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45184                ,p_balance_type_code => l_balance_type_code);
45185 
45186    END IF;
45187 
45188    -----------------------------------------------------------------------------------------
45189    -- 4262811 Multiperiod Accounting
45190    -----------------------------------------------------------------------------------------
45191      -- No MPA option is assigned.
45192 
45193 
45194 END IF;
45195 END IF;
45196 --
45197 
45198 --
45199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45200    trace
45201       (p_msg      => 'END of AcctLineType_93'
45202       ,p_level    => C_LEVEL_PROCEDURE
45203       ,p_module   => l_log_module);
45204 END IF;
45205 --
45206 EXCEPTION
45207   WHEN xla_exceptions_pkg.application_exception THEN
45208       RAISE;
45209   WHEN OTHERS THEN
45210        xla_exceptions_pkg.raise_message
45211            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_93');
45212 END AcctLineType_93;
45213 --
45214 
45215 ---------------------------------------
45216 --
45217 -- PRIVATE FUNCTION
45218 --         AcctLineType_94
45219 --
45220 ---------------------------------------
45221 PROCEDURE AcctLineType_94 (
45222   p_application_id        IN NUMBER
45223  ,p_event_id              IN NUMBER
45224  ,p_calculate_acctd_flag  IN VARCHAR2
45225  ,p_calculate_g_l_flag    IN VARCHAR2
45226  ,p_actual_flag           IN OUT VARCHAR2
45227  ,p_balance_type_code     OUT VARCHAR2
45228  ,p_gain_or_loss_ref      OUT VARCHAR2
45229  
45230 --Budget Code Combination ID
45231  , p_source_2            IN NUMBER
45235  , p_source_6            IN NUMBER
45232 --Cost CCID
45233  , p_source_3            IN NUMBER
45234 --Cost Clearing CCID
45236 --Reversing Line Flag
45237  , p_source_22            IN VARCHAR2
45238 --Actual Upgrade Credit Accounting Class
45239  , p_source_23            IN VARCHAR2
45240 --Entered Currency Code
45241  , p_source_25            IN VARCHAR2
45242 --Exchange Rate Date
45243  , p_source_27            IN DATE
45244 --Exchange Rate
45245  , p_source_28            IN NUMBER
45246 --Exchange Rate Type
45247  , p_source_29            IN VARCHAR2
45248 --Actual Upgrade Debit Accounting Class
45249  , p_source_30            IN VARCHAR2
45250 --Use Actuals Upgrade Attributes Flag
45251  , p_source_31            IN VARCHAR2
45252 --Expenditure Item ID
45253  , p_source_32            IN NUMBER
45254 --Cost Distribution Line Number
45255  , p_source_33            IN NUMBER
45256 --Line Type
45257  , p_source_34            IN VARCHAR2
45258  , p_source_34_meaning    IN VARCHAR2
45259 --Reversed Line Number
45260  , p_source_35            IN NUMBER
45261 --Entered Burdened Cost
45262  , p_source_44            IN NUMBER
45263 --Accounted Burdened Cost
45264  , p_source_45            IN NUMBER
45265 --Encumbrance Amount
45266  , p_source_46            IN NUMBER
45267 --Project Encumbrance Applied to Application Identifier
45268  , p_source_47            IN NUMBER
45269 --Project Encumbrance Applied to Distribution Type
45270  , p_source_48            IN VARCHAR2
45271 --Project Encumbrance Applied to Entity Code
45272  , p_source_49            IN VARCHAR2
45273 --Project Encumbrance Applied to First Distribution ID
45274  , p_source_50            IN NUMBER
45275 --Project Encumbrance Applied to First System Transaction ID
45276  , p_source_51            IN NUMBER
45277 --Project Encumbrance Applied to Second Distribution ID
45278  , p_source_52            IN VARCHAR2
45279 --Encumbrance Upgrade Credit Accounting Class
45280  , p_source_53            IN VARCHAR2
45281 --Encumbrance Upgrade Debit Accounting Class
45282  , p_source_54            IN VARCHAR2
45283 --Use Encumbrance Upgrade Attributes Flag
45284  , p_source_55            IN VARCHAR2
45285 --Encumbrance Type ID
45286  , p_source_56            IN NUMBER
45287 --Project Encumbrance Type ID
45288  , p_source_57            IN NUMBER
45289 --Document Type
45290  , p_source_70            IN VARCHAR2
45291  , p_source_70_meaning    IN VARCHAR2
45292 --Encumbrance Journal Lines Reversed Flag
45293  , p_source_71            IN VARCHAR2
45294 )
45295 IS
45296 
45297 l_component_type              VARCHAR2(80);
45298 l_component_code              VARCHAR2(30);
45299 l_component_type_code         VARCHAR2(1);
45300 l_component_appl_id           INTEGER;
45301 l_amb_context_code            VARCHAR2(30);
45302 l_entity_code                 VARCHAR2(30);
45303 l_event_class_code            VARCHAR2(30);
45304 l_ae_header_id                NUMBER;
45305 l_event_type_code             VARCHAR2(30);
45306 l_line_definition_code        VARCHAR2(30);
45307 l_line_definition_owner_code  VARCHAR2(1);
45308 --
45309 -- adr variables
45310 l_segment                     VARCHAR2(30);
45311 l_ccid                        NUMBER;
45312 l_adr_transaction_coa_id      NUMBER;
45313 l_adr_accounting_coa_id       NUMBER;
45314 l_adr_flexfield_segment_code  VARCHAR2(30);
45315 l_adr_flex_value_set_id       NUMBER;
45316 l_adr_value_type_code         VARCHAR2(30);
45317 l_adr_value_combination_id    NUMBER;
45318 l_adr_value_segment_code      VARCHAR2(30);
45319 
45320 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45321 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45322 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45323 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45324 
45325 -- 4262811 Variables ------------------------------------------------------------------------------------------
45326 l_entered_amt_idx             NUMBER;
45327 l_accted_amt_idx              NUMBER;
45328 l_acc_rev_flag                VARCHAR2(1);
45329 l_accrual_line_num            NUMBER;
45330 l_tmp_amt                     NUMBER;
45331 l_acc_rev_natural_side_code   VARCHAR2(1);
45332 
45333 l_num_entries                 NUMBER;
45334 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45335 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45336 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45337 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45338 l_recog_line_1                NUMBER;
45339 l_recog_line_2                NUMBER;
45340 
45341 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45342 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45343 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45344 
45345 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45346 
45347 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45348 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45349 
45350 ---------------------------------------------------------------------------------------------------------------
45351 
45352 
45353 --
45354 -- bulk performance
45355 --
45356 l_balance_type_code           VARCHAR2(1);
45357 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45358 l_log_module                  VARCHAR2(240);
45359 
45360 --
45361 -- Upgrade strategy
45362 --
45363 l_actual_upg_option           VARCHAR2(1);
45364 l_enc_upg_option           VARCHAR2(1);
45365 
45366 --
45367 BEGIN
45368 --
45369 IF g_log_enabled THEN
45373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45370       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
45371 END IF;
45372 --
45374 
45375       trace
45376          (p_msg      => 'BEGIN of AcctLineType_94'
45377          ,p_level    => C_LEVEL_PROCEDURE
45378          ,p_module   => l_log_module);
45379 
45380 END IF;
45381 --
45382 l_component_type             := 'AMB_JLT';
45383 l_component_code             := 'REL_CANCELLED_INV_BURDEN_ENC';
45384 l_component_type_code        := 'S';
45385 l_component_appl_id          :=  275;
45386 l_amb_context_code           := 'DEFAULT';
45387 l_entity_code                := 'EXPENDITURES';
45388 l_event_class_code           := 'BURDEN_COST';
45389 l_event_type_code            := 'BURDEN_COST_ALL';
45390 l_line_definition_owner_code := 'S';
45391 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
45392 --
45393 l_balance_type_code          := 'E';
45394 l_segment                     := NULL;
45395 l_ccid                        := NULL;
45396 l_adr_transaction_coa_id      := NULL;
45397 l_adr_accounting_coa_id       := NULL;
45398 l_adr_flexfield_segment_code  := NULL;
45399 l_adr_flex_value_set_id       := NULL;
45400 l_adr_value_type_code         := NULL;
45401 l_adr_value_combination_id    := NULL;
45402 l_adr_value_segment_code      := NULL;
45403 
45404 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45405 l_bflow_class_code           := 'AP_INV_PA_BURDEN_ENC';    -- 4219869 Business Flow
45406 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45407 l_budgetary_control_flag     := 'N';
45408 
45409 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45410 l_bflow_applied_to_amt       := NULL; -- 5132302
45411 l_entered_amt_idx            := NULL;          -- 4262811
45412 l_accted_amt_idx             := NULL;          -- 4262811
45413 l_acc_rev_flag               := NULL;          -- 4262811
45414 l_accrual_line_num           := NULL;          -- 4262811
45415 l_tmp_amt                    := NULL;          -- 4262811
45416 --
45417  
45418 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45419     l_balance_type_code <> 'B' THEN
45420 IF NVL(p_source_34,'
45421 ') =  'E' AND 
45422 NVL(p_source_70,'
45423 ') =  'AP' AND 
45424 NVL(p_source_71,'
45425 ') =  'Y'
45426  THEN 
45427 
45428    --
45429    XLA_AE_LINES_PKG.SetNewLine;
45430 
45431    p_balance_type_code          := l_balance_type_code;
45432    -- set the flag so later we will know whether the gain loss line needs to be created
45433    
45434    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45435      p_actual_flag :='A';
45436    END IF;
45437 
45438    --
45439    -- bulk performance
45440    --
45441    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45442                                       p_header_num   => 0); -- 4262811
45443    --
45444    -- set accounting line options
45445    --
45446    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45447            p_natural_side_code          => 'C'
45448          , p_gain_or_loss_flag          => 'N'
45449          , p_gl_transfer_mode_code      => 'S'
45450          , p_acct_entry_type_code       => 'E'
45451          , p_switch_side_flag           => 'N'
45452          , p_merge_duplicate_code       => 'N'
45453          );
45454    --
45455    l_acc_rev_natural_side_code := 'D';  -- 4262811
45456    -- 
45457    --
45458    -- set accounting line type info
45459    --
45460    xla_ae_lines_pkg.SetAcctLineType
45461       (p_component_type             => l_component_type
45462       ,p_event_type_code            => l_event_type_code
45463       ,p_line_definition_owner_code => l_line_definition_owner_code
45464       ,p_line_definition_code       => l_line_definition_code
45465       ,p_accounting_line_code       => l_component_code
45466       ,p_accounting_line_type_code  => l_component_type_code
45467       ,p_accounting_line_appl_id    => l_component_appl_id
45468       ,p_amb_context_code           => l_amb_context_code
45469       ,p_entity_code                => l_entity_code
45470       ,p_event_class_code           => l_event_class_code);
45471    --
45472    -- set accounting class
45473    --
45474    xla_ae_lines_pkg.SetAcctClass(
45475            p_accounting_class_code  => 'AP_INV_PA_BURDEN'
45476          , p_ae_header_id           => l_ae_header_id
45477          );
45478 
45479    --
45480    -- set rounding class
45481    --
45482    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45483                       'AP_INV_PA_BURDEN';
45484 
45485    --
45486    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45487    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45488    --
45489    -- bulk performance
45490    --
45491    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45492 
45493    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45494       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45495 
45496    -- 4955764
45497    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45498       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45499 
45500    -- 4458381 Public Sector Enh
45501       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1060;
45502    --
45503    -- set accounting attributes for the line type
45504    --
45505    l_entered_amt_idx := 40;
45506    l_accted_amt_idx  := 45;
45507    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
45511    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
45508    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
45509    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
45510    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
45512    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
45513    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
45514    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
45515    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
45516    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
45517    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
45518    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
45519    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
45520    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
45521    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
45522    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
45523    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
45524    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
45525    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
45526    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
45527    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
45528    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
45529    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
45530    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
45531    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
45532    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
45533    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
45534    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
45535    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
45536    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
45537    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
45538    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
45539    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
45540    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
45541    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
45542    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
45543    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
45544    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
45545    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
45546    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
45547    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
45548    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
45549    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
45550    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
45551    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
45552    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
45553    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
45554    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
45555    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
45556    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
45557    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
45558    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
45559    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
45560    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
45561    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
45562    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
45563    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
45564    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
45565    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
45566    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
45567    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
45568    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
45569    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
45570    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
45571    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
45572    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
45573    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
45574    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
45575    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
45576    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
45577    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
45578    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
45579    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
45580    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
45581    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
45582    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
45583    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
45584    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
45585    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
45586    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
45587    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
45588    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
45589    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
45590    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
45591    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
45592    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
45593    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
45594    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
45595    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
45596    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
45600    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
45597    l_rec_acct_attrs.array_num_value(45)  := p_source_46;
45598    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
45599    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
45601    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
45602    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
45603    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
45604    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
45605    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
45606    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
45607    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
45608 
45609    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45610    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45611 
45612    ---------------------------------------------------------------------------------------------------------------
45613    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45614    ---------------------------------------------------------------------------------------------------------------
45615    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45616 
45617    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45618    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45619 
45620    IF xla_accounting_cache_pkg.GetValueChar
45621          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45622          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45623    AND l_bflow_method_code = 'PRIOR_ENTRY'
45624 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45625    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45626          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45627        )
45628    THEN
45629          xla_ae_lines_pkg.BflowUpgEntry
45630            (p_business_method_code    => l_bflow_method_code
45631            ,p_business_class_code     => l_bflow_class_code
45632            ,p_balance_type            => l_balance_type_code);
45633    ELSE
45634       NULL;
45635 -- No business flow processing for business flow method of NONE.
45636    END IF;
45637 
45638    --
45639    -- call analytical criteria
45640    --
45641    
45642    --
45643    -- call description
45644    --
45645    -- No description or it is inherited.
45646    --
45647    -- call ADRs
45648    -- Bug 4922099
45649    --
45650    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45651         (NVL(l_actual_upg_option, 'N') = 'O') OR
45652         (NVL(l_enc_upg_option, 'N') = 'O')
45653       )
45654    THEN
45655    NULL;
45656    --
45657    --
45658    
45659   l_ccid := AcctDerRule_2(
45660            p_application_id           => p_application_id
45661          , p_ae_header_id             => l_ae_header_id 
45662 , p_source_2 => p_source_2
45663          , x_transaction_coa_id       => l_adr_transaction_coa_id
45664          , x_accounting_coa_id        => l_adr_accounting_coa_id
45665          , x_value_type_code          => l_adr_value_type_code
45666          , p_side                     => 'NA'
45667    );
45668 
45669    xla_ae_lines_pkg.set_ccid(
45670     p_code_combination_id          => l_ccid
45671   , p_value_type_code              => l_adr_value_type_code
45672   , p_transaction_coa_id           => l_adr_transaction_coa_id
45673   , p_accounting_coa_id            => l_adr_accounting_coa_id
45674   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
45675   , p_adr_type_code                => 'S'
45676   , p_component_type               => l_component_type
45677   , p_component_code               => l_component_code
45678   , p_component_type_code          => l_component_type_code
45679   , p_component_appl_id            => l_component_appl_id
45680   , p_amb_context_code             => l_amb_context_code
45681   , p_side                         => 'NA'
45682   );
45683 
45684 
45685    --
45686    --
45687    END IF;
45688    --
45689    -- Bug 4922099
45690    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45691           (NVL(l_enc_upg_option, 'N') = 'O')
45692         ) AND
45693         (l_bflow_method_code = 'PRIOR_ENTRY')
45694       )
45695    THEN
45696       IF
45697       --
45698       1 = 2
45699       --
45700       THEN
45701       xla_accounting_err_pkg.build_message
45702                                     (p_appli_s_name            => 'XLA'
45703                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45704                                     ,p_token_1                 => 'LINE_NUMBER'
45705                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45706                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45707                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45708                                                                              l_component_type
45709                                                                             ,l_component_code
45710                                                                             ,l_component_type_code
45711                                                                             ,l_component_appl_id
45712                                                                             ,l_amb_context_code
45713                                                                             ,l_entity_code
45714                                                                             ,l_event_class_code
45718                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45715                                                                            )
45716                                     ,p_token_3                 => 'OWNER'
45717                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45719                                                                           ,p_lookup_code    => l_component_type_code
45720                                                                          )
45721                                     ,p_token_4                 => 'PRODUCT_NAME'
45722                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45723                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45724                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45725                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45726                                     ,p_ae_header_id            =>  NULL
45727                                        );
45728 
45729         IF (C_LEVEL_ERROR>= g_log_level) THEN
45730                  trace
45731                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45732                       ,p_level    => C_LEVEL_ERROR
45733                       ,p_module   => l_log_module);
45734         END IF;
45735       END IF;
45736    END IF;
45737    --
45738    --
45739    ------------------------------------------------------------------------------------------------
45740    -- 4219869 Business Flow
45741    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45742    -- Prior Entry.  Currently, the following code is always generated.
45743    ------------------------------------------------------------------------------------------------
45744    XLA_AE_LINES_PKG.ValidateCurrentLine;
45745 
45746    ------------------------------------------------------------------------------------
45747    -- 4219869 Business Flow
45748    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45749    ------------------------------------------------------------------------------------
45750    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45751 
45752    ----------------------------------------------------------------------------------
45753    -- 4219869 Business Flow
45754    -- Update journal entry status -- Need to generate this within IF <condition>
45755    ----------------------------------------------------------------------------------
45756    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45757          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45758          ,p_balance_type_code => l_balance_type_code
45759          );
45760 
45761    -------------------------------------------------------------------------------------------
45762    -- 4262811 - Generate the Accrual Reversal lines
45763    -------------------------------------------------------------------------------------------
45764    BEGIN
45765       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45766                               (g_array_event(p_event_id).array_value_num('header_index'));
45767       IF l_acc_rev_flag IS NULL THEN
45768          l_acc_rev_flag := 'N';
45769       END IF;
45770    EXCEPTION
45771       WHEN OTHERS THEN
45772          l_acc_rev_flag := 'N';
45773    END;
45774    --
45775    IF (l_acc_rev_flag = 'Y') THEN
45776 
45777        -- 4645092  ------------------------------------------------------------------------------
45778        -- To allow MPA report to determine if it should generate report process
45779        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45780        ------------------------------------------------------------------------------------------
45781 
45782        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45783        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45784 
45785        --
45786        -- Update the line information that should be overwritten
45787        --
45788        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45789                                          p_header_num   => 1);
45790        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45791 
45792        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45793 
45794        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45795           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45796        END IF;
45797 
45798       --
45799       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45800       --
45801       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45802           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45803       ELSE
45804           ---------------------------------------------------------------------------------------------------
45805           -- 4262811a Switch Sign
45806           ---------------------------------------------------------------------------------------------------
45807           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45808           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45809                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45810           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45811                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45812           -- 5132302
45816       END IF;
45813           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45814                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45815 
45817 
45818       -- 4955764
45819       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45820       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45821 
45822 
45823       XLA_AE_LINES_PKG.ValidateCurrentLine;
45824       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45825 
45826       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45827                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45828                ,p_balance_type_code => l_balance_type_code);
45829 
45830    END IF;
45831 
45832    -----------------------------------------------------------------------------------------
45833    -- 4262811 Multiperiod Accounting
45834    -----------------------------------------------------------------------------------------
45835      -- No MPA option is assigned.
45836 
45837 
45838 END IF;
45839 END IF;
45840 --
45841 
45842 --
45843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45844    trace
45845       (p_msg      => 'END of AcctLineType_94'
45846       ,p_level    => C_LEVEL_PROCEDURE
45847       ,p_module   => l_log_module);
45848 END IF;
45849 --
45850 EXCEPTION
45851   WHEN xla_exceptions_pkg.application_exception THEN
45852       RAISE;
45853   WHEN OTHERS THEN
45854        xla_exceptions_pkg.raise_message
45855            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_94');
45856 END AcctLineType_94;
45857 --
45858 
45859 ---------------------------------------
45860 --
45861 -- PRIVATE FUNCTION
45862 --         AcctLineType_95
45863 --
45864 ---------------------------------------
45865 PROCEDURE AcctLineType_95 (
45866   p_application_id        IN NUMBER
45867  ,p_event_id              IN NUMBER
45868  ,p_calculate_acctd_flag  IN VARCHAR2
45869  ,p_calculate_g_l_flag    IN VARCHAR2
45870  ,p_actual_flag           IN OUT VARCHAR2
45871  ,p_balance_type_code     OUT VARCHAR2
45872  ,p_gain_or_loss_ref      OUT VARCHAR2
45873  
45874 --Budget Code Combination ID
45875  , p_source_2            IN NUMBER
45876 --Cost CCID
45877  , p_source_3            IN NUMBER
45878 --Cost Clearing CCID
45879  , p_source_6            IN NUMBER
45880 --Reversing Line Flag
45881  , p_source_22            IN VARCHAR2
45882 --Actual Upgrade Credit Accounting Class
45883  , p_source_23            IN VARCHAR2
45884 --Entered Currency Code
45885  , p_source_25            IN VARCHAR2
45886 --Exchange Rate Date
45887  , p_source_27            IN DATE
45888 --Exchange Rate
45889  , p_source_28            IN NUMBER
45890 --Exchange Rate Type
45891  , p_source_29            IN VARCHAR2
45892 --Actual Upgrade Debit Accounting Class
45893  , p_source_30            IN VARCHAR2
45894 --Use Actuals Upgrade Attributes Flag
45895  , p_source_31            IN VARCHAR2
45896 --Expenditure Item ID
45897  , p_source_32            IN NUMBER
45898 --Cost Distribution Line Number
45899  , p_source_33            IN NUMBER
45900 --Line Type
45901  , p_source_34            IN VARCHAR2
45902  , p_source_34_meaning    IN VARCHAR2
45903 --Reversed Line Number
45904  , p_source_35            IN NUMBER
45905 --Entered Burdened Cost
45906  , p_source_44            IN NUMBER
45907 --Accounted Burdened Cost
45908  , p_source_45            IN NUMBER
45909 --Encumbrance Amount
45910  , p_source_46            IN NUMBER
45911 --Project Encumbrance Applied to Application Identifier
45912  , p_source_47            IN NUMBER
45913 --Project Encumbrance Applied to Distribution Type
45914  , p_source_48            IN VARCHAR2
45915 --Project Encumbrance Applied to Entity Code
45916  , p_source_49            IN VARCHAR2
45917 --Project Encumbrance Applied to First Distribution ID
45918  , p_source_50            IN NUMBER
45919 --Project Encumbrance Applied to First System Transaction ID
45920  , p_source_51            IN NUMBER
45921 --Project Encumbrance Applied to Second Distribution ID
45922  , p_source_52            IN VARCHAR2
45923 --Encumbrance Upgrade Debit Accounting Class
45924  , p_source_54            IN VARCHAR2
45925 --Use Encumbrance Upgrade Attributes Flag
45926  , p_source_55            IN VARCHAR2
45927 --Encumbrance Type ID
45928  , p_source_56            IN NUMBER
45929 --Project Encumbrance Type ID
45930  , p_source_57            IN NUMBER
45931 --Document Type
45932  , p_source_70            IN VARCHAR2
45933  , p_source_70_meaning    IN VARCHAR2
45934 --Release ID
45935  , p_source_72            IN NUMBER
45936 --Contingent Worker Timecard Flag
45937  , p_source_73            IN VARCHAR2
45938 )
45939 IS
45940 
45941 l_component_type              VARCHAR2(80);
45942 l_component_code              VARCHAR2(30);
45943 l_component_type_code         VARCHAR2(1);
45944 l_component_appl_id           INTEGER;
45945 l_amb_context_code            VARCHAR2(30);
45946 l_entity_code                 VARCHAR2(30);
45947 l_event_class_code            VARCHAR2(30);
45948 l_ae_header_id                NUMBER;
45949 l_event_type_code             VARCHAR2(30);
45950 l_line_definition_code        VARCHAR2(30);
45951 l_line_definition_owner_code  VARCHAR2(1);
45952 --
45953 -- adr variables
45954 l_segment                     VARCHAR2(30);
45955 l_ccid                        NUMBER;
45956 l_adr_transaction_coa_id      NUMBER;
45957 l_adr_accounting_coa_id       NUMBER;
45958 l_adr_flexfield_segment_code  VARCHAR2(30);
45959 l_adr_flex_value_set_id       NUMBER;
45960 l_adr_value_type_code         VARCHAR2(30);
45964 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45961 l_adr_value_combination_id    NUMBER;
45962 l_adr_value_segment_code      VARCHAR2(30);
45963 
45965 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45966 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45967 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45968 
45969 -- 4262811 Variables ------------------------------------------------------------------------------------------
45970 l_entered_amt_idx             NUMBER;
45971 l_accted_amt_idx              NUMBER;
45972 l_acc_rev_flag                VARCHAR2(1);
45973 l_accrual_line_num            NUMBER;
45974 l_tmp_amt                     NUMBER;
45975 l_acc_rev_natural_side_code   VARCHAR2(1);
45976 
45977 l_num_entries                 NUMBER;
45978 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45979 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45980 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45981 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45982 l_recog_line_1                NUMBER;
45983 l_recog_line_2                NUMBER;
45984 
45985 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45986 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45987 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45988 
45989 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45990 
45991 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45992 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45993 
45994 ---------------------------------------------------------------------------------------------------------------
45995 
45996 
45997 --
45998 -- bulk performance
45999 --
46000 l_balance_type_code           VARCHAR2(1);
46001 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46002 l_log_module                  VARCHAR2(240);
46003 
46004 --
46005 -- Upgrade strategy
46006 --
46007 l_actual_upg_option           VARCHAR2(1);
46008 l_enc_upg_option           VARCHAR2(1);
46009 
46010 --
46011 BEGIN
46012 --
46013 IF g_log_enabled THEN
46014       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
46015 END IF;
46016 --
46017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46018 
46019       trace
46020          (p_msg      => 'BEGIN of AcctLineType_95'
46021          ,p_level    => C_LEVEL_PROCEDURE
46022          ,p_module   => l_log_module);
46023 
46024 END IF;
46025 --
46026 l_component_type             := 'AMB_JLT';
46027 l_component_code             := 'REL_CWK_PO_BURDENED_ENC';
46028 l_component_type_code        := 'S';
46029 l_component_appl_id          :=  275;
46030 l_amb_context_code           := 'DEFAULT';
46031 l_entity_code                := 'EXPENDITURES';
46032 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
46033 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
46034 l_line_definition_owner_code := 'S';
46035 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
46036 --
46037 l_balance_type_code          := 'E';
46038 l_segment                     := NULL;
46039 l_ccid                        := NULL;
46040 l_adr_transaction_coa_id      := NULL;
46041 l_adr_accounting_coa_id       := NULL;
46042 l_adr_flexfield_segment_code  := NULL;
46043 l_adr_flex_value_set_id       := NULL;
46044 l_adr_value_type_code         := NULL;
46045 l_adr_value_combination_id    := NULL;
46046 l_adr_value_segment_code      := NULL;
46047 
46048 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46049 l_bflow_class_code           := '';    -- 4219869 Business Flow
46050 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46051 l_budgetary_control_flag     := 'N';
46052 
46053 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46054 l_bflow_applied_to_amt       := NULL; -- 5132302
46055 l_entered_amt_idx            := NULL;          -- 4262811
46056 l_accted_amt_idx             := NULL;          -- 4262811
46057 l_acc_rev_flag               := NULL;          -- 4262811
46058 l_accrual_line_num           := NULL;          -- 4262811
46059 l_tmp_amt                    := NULL;          -- 4262811
46060 --
46061  
46062 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46063     l_balance_type_code <> 'B' THEN
46064 IF NVL(p_source_34,'
46065 ') =  'E' AND 
46066 NVL(p_source_70,'
46067 ') =  'PO' AND 
46068 p_source_72 IS NULL AND 
46069 NVL(p_source_73,'
46070 ') =  'Y'
46071  THEN 
46072 
46073    --
46074    XLA_AE_LINES_PKG.SetNewLine;
46075 
46076    p_balance_type_code          := l_balance_type_code;
46077    -- set the flag so later we will know whether the gain loss line needs to be created
46078    
46079    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46080      p_actual_flag :='A';
46081    END IF;
46082 
46083    --
46084    -- bulk performance
46085    --
46086    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46087                                       p_header_num   => 0); -- 4262811
46088    --
46089    -- set accounting line options
46090    --
46091    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46092            p_natural_side_code          => 'C'
46093          , p_gain_or_loss_flag          => 'N'
46094          , p_gl_transfer_mode_code      => 'S'
46095          , p_acct_entry_type_code       => 'E'
46096          , p_switch_side_flag           => 'N'
46097          , p_merge_duplicate_code       => 'N'
46098          );
46099    --
46100    l_acc_rev_natural_side_code := 'D';  -- 4262811
46104    --
46101    -- 
46102    --
46103    -- set accounting line type info
46105    xla_ae_lines_pkg.SetAcctLineType
46106       (p_component_type             => l_component_type
46107       ,p_event_type_code            => l_event_type_code
46108       ,p_line_definition_owner_code => l_line_definition_owner_code
46109       ,p_line_definition_code       => l_line_definition_code
46110       ,p_accounting_line_code       => l_component_code
46111       ,p_accounting_line_type_code  => l_component_type_code
46112       ,p_accounting_line_appl_id    => l_component_appl_id
46113       ,p_amb_context_code           => l_amb_context_code
46114       ,p_entity_code                => l_entity_code
46115       ,p_event_class_code           => l_event_class_code);
46116    --
46117    -- set accounting class
46118    --
46119    xla_ae_lines_pkg.SetAcctClass(
46120            p_accounting_class_code  => 'PO_PA_BURDENED'
46121          , p_ae_header_id           => l_ae_header_id
46122          );
46123 
46124    --
46125    -- set rounding class
46126    --
46127    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46128                       'PO_PA_BURDENED';
46129 
46130    --
46131    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46132    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46133    --
46134    -- bulk performance
46135    --
46136    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46137 
46138    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46139       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46140 
46141    -- 4955764
46142    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46143       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46144 
46145    -- 4458381 Public Sector Enh
46146       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
46147    --
46148    -- set accounting attributes for the line type
46149    --
46150    l_entered_amt_idx := 35;
46151    l_accted_amt_idx  := 40;
46152    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
46153    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46154    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
46155    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
46156    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
46157    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
46158    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
46159    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
46160    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
46161    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
46162    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
46163    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
46164    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
46165    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
46166    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
46167    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
46168    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
46169    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
46170    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
46171    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
46172    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
46173    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
46174    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
46175    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
46176    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
46177    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
46178    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
46179    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
46180    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
46181    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
46182    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
46183    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
46184    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
46185    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
46186    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
46187    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
46188    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
46189    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
46190    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
46191    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
46192    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
46193    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46194    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
46195    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
46196    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
46197    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
46198    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
46199    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46200    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
46201    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
46202    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
46203    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
46204    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
46208    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
46205    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
46206    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
46207    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
46209    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
46210    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
46211    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
46212    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
46213    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
46214    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
46215    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
46216    l_rec_acct_attrs.array_char_value(32)  := 
46217 xla_ae_sources_pkg.GetSystemSourceChar(
46218    p_source_code           => 'XLA_CURRENCY_CODE'
46219  , p_source_type_code      => 'Y'
46220  , p_source_application_id =>  602
46221 );
46222    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
46223    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
46224    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
46225    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
46226    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
46227    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
46228    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
46229    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
46230    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
46231    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
46232    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
46233    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
46234    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
46235    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
46236    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
46237    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
46238    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
46239    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
46240    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
46241    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
46242    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
46243    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
46244    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
46245    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
46246    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
46247    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
46248 
46249    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46250    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46251 
46252    ---------------------------------------------------------------------------------------------------------------
46253    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46254    ---------------------------------------------------------------------------------------------------------------
46255    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46256 
46257    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46258    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46259 
46260    IF xla_accounting_cache_pkg.GetValueChar
46261          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46262          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46263    AND l_bflow_method_code = 'PRIOR_ENTRY'
46264 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46265    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46266          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46267        )
46268    THEN
46269          xla_ae_lines_pkg.BflowUpgEntry
46270            (p_business_method_code    => l_bflow_method_code
46271            ,p_business_class_code     => l_bflow_class_code
46272            ,p_balance_type            => l_balance_type_code);
46273    ELSE
46274       NULL;
46275 -- No business flow processing for business flow method of NONE.
46276    END IF;
46277 
46278    --
46279    -- call analytical criteria
46280    --
46281    
46282    --
46283    -- call description
46284    --
46285    -- No description or it is inherited.
46286    --
46287    -- call ADRs
46288    -- Bug 4922099
46289    --
46290    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46291         (NVL(l_actual_upg_option, 'N') = 'O') OR
46292         (NVL(l_enc_upg_option, 'N') = 'O')
46293       )
46294    THEN
46295    NULL;
46296    --
46297    --
46298    
46299   l_ccid := AcctDerRule_2(
46300            p_application_id           => p_application_id
46301          , p_ae_header_id             => l_ae_header_id 
46302 , p_source_2 => p_source_2
46303          , x_transaction_coa_id       => l_adr_transaction_coa_id
46304          , x_accounting_coa_id        => l_adr_accounting_coa_id
46305          , x_value_type_code          => l_adr_value_type_code
46306          , p_side                     => 'NA'
46307    );
46308 
46309    xla_ae_lines_pkg.set_ccid(
46310     p_code_combination_id          => l_ccid
46311   , p_value_type_code              => l_adr_value_type_code
46312   , p_transaction_coa_id           => l_adr_transaction_coa_id
46313   , p_accounting_coa_id            => l_adr_accounting_coa_id
46314   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
46315   , p_adr_type_code                => 'S'
46316   , p_component_type               => l_component_type
46320   , p_amb_context_code             => l_amb_context_code
46317   , p_component_code               => l_component_code
46318   , p_component_type_code          => l_component_type_code
46319   , p_component_appl_id            => l_component_appl_id
46321   , p_side                         => 'NA'
46322   );
46323 
46324 
46325    --
46326    --
46327    END IF;
46328    --
46329    -- Bug 4922099
46330    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46331           (NVL(l_enc_upg_option, 'N') = 'O')
46332         ) AND
46333         (l_bflow_method_code = 'PRIOR_ENTRY')
46334       )
46335    THEN
46336       IF
46337       --
46338       1 = 2
46339       --
46340       THEN
46341       xla_accounting_err_pkg.build_message
46342                                     (p_appli_s_name            => 'XLA'
46343                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46344                                     ,p_token_1                 => 'LINE_NUMBER'
46345                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46346                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46347                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46348                                                                              l_component_type
46349                                                                             ,l_component_code
46350                                                                             ,l_component_type_code
46351                                                                             ,l_component_appl_id
46352                                                                             ,l_amb_context_code
46353                                                                             ,l_entity_code
46354                                                                             ,l_event_class_code
46355                                                                            )
46356                                     ,p_token_3                 => 'OWNER'
46357                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46358                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46359                                                                           ,p_lookup_code    => l_component_type_code
46360                                                                          )
46361                                     ,p_token_4                 => 'PRODUCT_NAME'
46362                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46363                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46364                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46365                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46366                                     ,p_ae_header_id            =>  NULL
46367                                        );
46368 
46369         IF (C_LEVEL_ERROR>= g_log_level) THEN
46370                  trace
46371                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46372                       ,p_level    => C_LEVEL_ERROR
46373                       ,p_module   => l_log_module);
46374         END IF;
46375       END IF;
46376    END IF;
46377    --
46378    --
46379    ------------------------------------------------------------------------------------------------
46380    -- 4219869 Business Flow
46381    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46382    -- Prior Entry.  Currently, the following code is always generated.
46383    ------------------------------------------------------------------------------------------------
46384    XLA_AE_LINES_PKG.ValidateCurrentLine;
46385 
46386    ------------------------------------------------------------------------------------
46387    -- 4219869 Business Flow
46388    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46389    ------------------------------------------------------------------------------------
46390    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46391 
46392    ----------------------------------------------------------------------------------
46393    -- 4219869 Business Flow
46394    -- Update journal entry status -- Need to generate this within IF <condition>
46395    ----------------------------------------------------------------------------------
46396    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46397          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46398          ,p_balance_type_code => l_balance_type_code
46399          );
46400 
46401    -------------------------------------------------------------------------------------------
46402    -- 4262811 - Generate the Accrual Reversal lines
46403    -------------------------------------------------------------------------------------------
46404    BEGIN
46405       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46406                               (g_array_event(p_event_id).array_value_num('header_index'));
46407       IF l_acc_rev_flag IS NULL THEN
46408          l_acc_rev_flag := 'N';
46409       END IF;
46410    EXCEPTION
46411       WHEN OTHERS THEN
46412          l_acc_rev_flag := 'N';
46413    END;
46414    --
46415    IF (l_acc_rev_flag = 'Y') THEN
46416 
46417        -- 4645092  ------------------------------------------------------------------------------
46418        -- To allow MPA report to determine if it should generate report process
46419        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46420        ------------------------------------------------------------------------------------------
46421 
46422        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46426        -- Update the line information that should be overwritten
46423        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46424 
46425        --
46427        --
46428        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46429                                          p_header_num   => 1);
46430        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46431 
46432        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46433 
46434        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46435           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46436        END IF;
46437 
46438       --
46439       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46440       --
46441       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46442           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46443       ELSE
46444           ---------------------------------------------------------------------------------------------------
46445           -- 4262811a Switch Sign
46446           ---------------------------------------------------------------------------------------------------
46447           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46448           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46449                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46450           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46451                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46452           -- 5132302
46453           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46454                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46455 
46456       END IF;
46457 
46458       -- 4955764
46459       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46460       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46461 
46462 
46463       XLA_AE_LINES_PKG.ValidateCurrentLine;
46464       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46465 
46466       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46467                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46468                ,p_balance_type_code => l_balance_type_code);
46469 
46470    END IF;
46471 
46472    -----------------------------------------------------------------------------------------
46473    -- 4262811 Multiperiod Accounting
46474    -----------------------------------------------------------------------------------------
46475      -- No MPA option is assigned.
46476 
46477 
46478 END IF;
46479 END IF;
46480 --
46481 
46482 --
46483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46484    trace
46485       (p_msg      => 'END of AcctLineType_95'
46486       ,p_level    => C_LEVEL_PROCEDURE
46487       ,p_module   => l_log_module);
46488 END IF;
46489 --
46490 EXCEPTION
46491   WHEN xla_exceptions_pkg.application_exception THEN
46492       RAISE;
46493   WHEN OTHERS THEN
46494        xla_exceptions_pkg.raise_message
46495            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_95');
46496 END AcctLineType_95;
46497 --
46498 
46499 ---------------------------------------
46500 --
46501 -- PRIVATE FUNCTION
46502 --         AcctLineType_96
46503 --
46504 ---------------------------------------
46505 PROCEDURE AcctLineType_96 (
46506   p_application_id        IN NUMBER
46507  ,p_event_id              IN NUMBER
46508  ,p_calculate_acctd_flag  IN VARCHAR2
46509  ,p_calculate_g_l_flag    IN VARCHAR2
46510  ,p_actual_flag           IN OUT VARCHAR2
46511  ,p_balance_type_code     OUT VARCHAR2
46512  ,p_gain_or_loss_ref      OUT VARCHAR2
46513  
46514 --Budget Code Combination ID
46515  , p_source_2            IN NUMBER
46516 --Cost CCID
46517  , p_source_3            IN NUMBER
46518 --Cost Clearing CCID
46519  , p_source_6            IN NUMBER
46520 --Reversing Line Flag
46521  , p_source_22            IN VARCHAR2
46522 --Actual Upgrade Credit Accounting Class
46523  , p_source_23            IN VARCHAR2
46524 --Entered Currency Code
46525  , p_source_25            IN VARCHAR2
46526 --Exchange Rate Date
46527  , p_source_27            IN DATE
46528 --Exchange Rate
46529  , p_source_28            IN NUMBER
46530 --Exchange Rate Type
46531  , p_source_29            IN VARCHAR2
46532 --Actual Upgrade Debit Accounting Class
46533  , p_source_30            IN VARCHAR2
46534 --Use Actuals Upgrade Attributes Flag
46535  , p_source_31            IN VARCHAR2
46536 --Expenditure Item ID
46537  , p_source_32            IN NUMBER
46538 --Cost Distribution Line Number
46539  , p_source_33            IN NUMBER
46540 --Line Type
46541  , p_source_34            IN VARCHAR2
46542  , p_source_34_meaning    IN VARCHAR2
46543 --Reversed Line Number
46544  , p_source_35            IN NUMBER
46545 --Entered Burdened Cost
46546  , p_source_44            IN NUMBER
46547 --Accounted Burdened Cost
46548  , p_source_45            IN NUMBER
46549 --Encumbrance Amount
46550  , p_source_46            IN NUMBER
46551 --Project Encumbrance Applied to Application Identifier
46552  , p_source_47            IN NUMBER
46553 --Project Encumbrance Applied to Distribution Type
46554  , p_source_48            IN VARCHAR2
46555 --Project Encumbrance Applied to Entity Code
46556  , p_source_49            IN VARCHAR2
46560  , p_source_51            IN NUMBER
46557 --Project Encumbrance Applied to First Distribution ID
46558  , p_source_50            IN NUMBER
46559 --Project Encumbrance Applied to First System Transaction ID
46561 --Project Encumbrance Applied to Second Distribution ID
46562  , p_source_52            IN VARCHAR2
46563 --Encumbrance Upgrade Credit Accounting Class
46564  , p_source_53            IN VARCHAR2
46565 --Encumbrance Upgrade Debit Accounting Class
46566  , p_source_54            IN VARCHAR2
46567 --Use Encumbrance Upgrade Attributes Flag
46568  , p_source_55            IN VARCHAR2
46569 --Encumbrance Type ID
46570  , p_source_56            IN NUMBER
46571 --Project Encumbrance Type ID
46572  , p_source_57            IN NUMBER
46573 --Document Type
46574  , p_source_70            IN VARCHAR2
46575  , p_source_70_meaning    IN VARCHAR2
46576 --Release ID
46577  , p_source_72            IN NUMBER
46578 --Contingent Worker Timecard Flag
46579  , p_source_73            IN VARCHAR2
46580 )
46581 IS
46582 
46583 l_component_type              VARCHAR2(80);
46584 l_component_code              VARCHAR2(30);
46585 l_component_type_code         VARCHAR2(1);
46586 l_component_appl_id           INTEGER;
46587 l_amb_context_code            VARCHAR2(30);
46588 l_entity_code                 VARCHAR2(30);
46589 l_event_class_code            VARCHAR2(30);
46590 l_ae_header_id                NUMBER;
46591 l_event_type_code             VARCHAR2(30);
46592 l_line_definition_code        VARCHAR2(30);
46593 l_line_definition_owner_code  VARCHAR2(1);
46594 --
46595 -- adr variables
46596 l_segment                     VARCHAR2(30);
46597 l_ccid                        NUMBER;
46598 l_adr_transaction_coa_id      NUMBER;
46599 l_adr_accounting_coa_id       NUMBER;
46600 l_adr_flexfield_segment_code  VARCHAR2(30);
46601 l_adr_flex_value_set_id       NUMBER;
46602 l_adr_value_type_code         VARCHAR2(30);
46603 l_adr_value_combination_id    NUMBER;
46604 l_adr_value_segment_code      VARCHAR2(30);
46605 
46606 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46607 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46608 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46609 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46610 
46611 -- 4262811 Variables ------------------------------------------------------------------------------------------
46612 l_entered_amt_idx             NUMBER;
46613 l_accted_amt_idx              NUMBER;
46614 l_acc_rev_flag                VARCHAR2(1);
46615 l_accrual_line_num            NUMBER;
46616 l_tmp_amt                     NUMBER;
46617 l_acc_rev_natural_side_code   VARCHAR2(1);
46618 
46619 l_num_entries                 NUMBER;
46620 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46621 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46622 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46623 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46624 l_recog_line_1                NUMBER;
46625 l_recog_line_2                NUMBER;
46626 
46627 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46628 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46629 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46630 
46631 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46632 
46633 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46634 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46635 
46636 ---------------------------------------------------------------------------------------------------------------
46637 
46638 
46639 --
46640 -- bulk performance
46641 --
46642 l_balance_type_code           VARCHAR2(1);
46643 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46644 l_log_module                  VARCHAR2(240);
46645 
46646 --
46647 -- Upgrade strategy
46648 --
46649 l_actual_upg_option           VARCHAR2(1);
46650 l_enc_upg_option           VARCHAR2(1);
46651 
46652 --
46653 BEGIN
46654 --
46655 IF g_log_enabled THEN
46656       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
46657 END IF;
46658 --
46659 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46660 
46661       trace
46662          (p_msg      => 'BEGIN of AcctLineType_96'
46663          ,p_level    => C_LEVEL_PROCEDURE
46664          ,p_module   => l_log_module);
46665 
46666 END IF;
46667 --
46668 l_component_type             := 'AMB_JLT';
46669 l_component_code             := 'REL_CWK_PO_BURDENED_ENC';
46670 l_component_type_code        := 'S';
46671 l_component_appl_id          :=  275;
46672 l_amb_context_code           := 'DEFAULT';
46673 l_entity_code                := 'EXPENDITURES';
46674 l_event_class_code           := 'TOT_BURDENED_COST';
46675 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
46676 l_line_definition_owner_code := 'S';
46677 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
46678 --
46679 l_balance_type_code          := 'E';
46680 l_segment                     := NULL;
46681 l_ccid                        := NULL;
46682 l_adr_transaction_coa_id      := NULL;
46683 l_adr_accounting_coa_id       := NULL;
46684 l_adr_flexfield_segment_code  := NULL;
46685 l_adr_flex_value_set_id       := NULL;
46686 l_adr_value_type_code         := NULL;
46687 l_adr_value_combination_id    := NULL;
46688 l_adr_value_segment_code      := NULL;
46689 
46690 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46691 l_bflow_class_code           := '';    -- 4219869 Business Flow
46692 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46693 l_budgetary_control_flag     := 'N';
46694 
46698 l_accted_amt_idx             := NULL;          -- 4262811
46695 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46696 l_bflow_applied_to_amt       := NULL; -- 5132302
46697 l_entered_amt_idx            := NULL;          -- 4262811
46699 l_acc_rev_flag               := NULL;          -- 4262811
46700 l_accrual_line_num           := NULL;          -- 4262811
46701 l_tmp_amt                    := NULL;          -- 4262811
46702 --
46703  
46704 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46705     l_balance_type_code <> 'B' THEN
46706 IF NVL(p_source_34,'
46707 ') =  'E' AND 
46708 NVL(p_source_70,'
46709 ') =  'PO' AND 
46710 p_source_72 IS NULL AND 
46711 NVL(p_source_73,'
46712 ') =  'Y'
46713  THEN 
46714 
46715    --
46716    XLA_AE_LINES_PKG.SetNewLine;
46717 
46718    p_balance_type_code          := l_balance_type_code;
46719    -- set the flag so later we will know whether the gain loss line needs to be created
46720    
46721    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46722      p_actual_flag :='A';
46723    END IF;
46724 
46725    --
46726    -- bulk performance
46727    --
46728    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46729                                       p_header_num   => 0); -- 4262811
46730    --
46731    -- set accounting line options
46732    --
46733    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46734            p_natural_side_code          => 'C'
46735          , p_gain_or_loss_flag          => 'N'
46736          , p_gl_transfer_mode_code      => 'S'
46737          , p_acct_entry_type_code       => 'E'
46738          , p_switch_side_flag           => 'N'
46739          , p_merge_duplicate_code       => 'N'
46740          );
46741    --
46742    l_acc_rev_natural_side_code := 'D';  -- 4262811
46743    -- 
46744    --
46745    -- set accounting line type info
46746    --
46747    xla_ae_lines_pkg.SetAcctLineType
46748       (p_component_type             => l_component_type
46749       ,p_event_type_code            => l_event_type_code
46750       ,p_line_definition_owner_code => l_line_definition_owner_code
46751       ,p_line_definition_code       => l_line_definition_code
46752       ,p_accounting_line_code       => l_component_code
46753       ,p_accounting_line_type_code  => l_component_type_code
46754       ,p_accounting_line_appl_id    => l_component_appl_id
46755       ,p_amb_context_code           => l_amb_context_code
46756       ,p_entity_code                => l_entity_code
46757       ,p_event_class_code           => l_event_class_code);
46758    --
46759    -- set accounting class
46760    --
46761    xla_ae_lines_pkg.SetAcctClass(
46762            p_accounting_class_code  => 'PO_PA_BURDENED'
46763          , p_ae_header_id           => l_ae_header_id
46764          );
46765 
46766    --
46767    -- set rounding class
46768    --
46769    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46770                       'PO_PA_BURDENED';
46771 
46772    --
46773    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46774    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46775    --
46776    -- bulk performance
46777    --
46778    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46779 
46780    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46781       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46782 
46783    -- 4955764
46784    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46785       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46786 
46787    -- 4458381 Public Sector Enh
46788       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
46789    --
46790    -- set accounting attributes for the line type
46791    --
46792    l_entered_amt_idx := 40;
46793    l_accted_amt_idx  := 46;
46794    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
46795    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46796    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
46797    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
46798    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
46799    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
46800    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
46801    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
46802    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
46803    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
46804    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
46805    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
46806    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
46807    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
46808    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
46809    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
46810    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
46811    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
46812    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
46813    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
46814    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
46815    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
46816    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
46817    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
46818    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
46822    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
46819    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
46820    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
46821    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
46823    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
46824    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
46825    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
46826    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
46827    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
46828    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
46829    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
46830    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
46831    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
46832    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
46833    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
46834    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
46835    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46836    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
46837    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
46838    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
46839    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
46840    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
46841    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46842    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
46843    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
46844    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
46845    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
46846    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
46847    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
46848    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
46849    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
46850    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
46851    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
46852    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
46853    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
46854    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
46855    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
46856    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
46857    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
46858    l_rec_acct_attrs.array_char_value(32)  := 
46859 xla_ae_sources_pkg.GetSystemSourceChar(
46860    p_source_code           => 'XLA_CURRENCY_CODE'
46861  , p_source_type_code      => 'Y'
46862  , p_source_application_id =>  602
46863 );
46864    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
46865    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
46866    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
46867    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
46868    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
46869    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
46870    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
46871    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
46872    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
46873    l_rec_acct_attrs.array_char_value(37)  := 
46874 xla_ae_sources_pkg.GetSystemSourceChar(
46875    p_source_code           => 'XLA_CURRENCY_CODE'
46876  , p_source_type_code      => 'Y'
46877  , p_source_application_id =>  602
46878 );
46879    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
46880    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
46881    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
46882    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
46883    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
46884    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
46885    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
46886    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
46887    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
46888    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
46889    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
46890    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
46891    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
46892    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
46893    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
46894    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
46895    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
46896    l_rec_acct_attrs.array_num_value(46)  := p_source_46;
46897    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
46898    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
46899    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
46900    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
46901    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
46902    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
46903    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
46904    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
46905    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
46906    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
46907 
46908    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46909    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46910 
46911    ---------------------------------------------------------------------------------------------------------------
46915 
46912    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46913    ---------------------------------------------------------------------------------------------------------------
46914    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46916    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46917    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46918 
46919    IF xla_accounting_cache_pkg.GetValueChar
46920          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46921          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46922    AND l_bflow_method_code = 'PRIOR_ENTRY'
46923 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46924    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46925          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46926        )
46927    THEN
46928          xla_ae_lines_pkg.BflowUpgEntry
46929            (p_business_method_code    => l_bflow_method_code
46930            ,p_business_class_code     => l_bflow_class_code
46931            ,p_balance_type            => l_balance_type_code);
46932    ELSE
46933       NULL;
46934 -- No business flow processing for business flow method of NONE.
46935    END IF;
46936 
46937    --
46938    -- call analytical criteria
46939    --
46940    
46941    --
46942    -- call description
46943    --
46944    -- No description or it is inherited.
46945    --
46946    -- call ADRs
46947    -- Bug 4922099
46948    --
46949    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46950         (NVL(l_actual_upg_option, 'N') = 'O') OR
46951         (NVL(l_enc_upg_option, 'N') = 'O')
46952       )
46953    THEN
46954    NULL;
46955    --
46956    --
46957    
46958   l_ccid := AcctDerRule_2(
46959            p_application_id           => p_application_id
46960          , p_ae_header_id             => l_ae_header_id 
46961 , p_source_2 => p_source_2
46962          , x_transaction_coa_id       => l_adr_transaction_coa_id
46963          , x_accounting_coa_id        => l_adr_accounting_coa_id
46964          , x_value_type_code          => l_adr_value_type_code
46965          , p_side                     => 'NA'
46966    );
46967 
46968    xla_ae_lines_pkg.set_ccid(
46969     p_code_combination_id          => l_ccid
46970   , p_value_type_code              => l_adr_value_type_code
46971   , p_transaction_coa_id           => l_adr_transaction_coa_id
46972   , p_accounting_coa_id            => l_adr_accounting_coa_id
46973   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
46974   , p_adr_type_code                => 'S'
46975   , p_component_type               => l_component_type
46976   , p_component_code               => l_component_code
46977   , p_component_type_code          => l_component_type_code
46978   , p_component_appl_id            => l_component_appl_id
46979   , p_amb_context_code             => l_amb_context_code
46980   , p_side                         => 'NA'
46981   );
46982 
46983 
46984    --
46985    --
46986    END IF;
46987    --
46988    -- Bug 4922099
46989    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46990           (NVL(l_enc_upg_option, 'N') = 'O')
46991         ) AND
46992         (l_bflow_method_code = 'PRIOR_ENTRY')
46993       )
46994    THEN
46995       IF
46996       --
46997       1 = 2
46998       --
46999       THEN
47000       xla_accounting_err_pkg.build_message
47001                                     (p_appli_s_name            => 'XLA'
47002                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47003                                     ,p_token_1                 => 'LINE_NUMBER'
47004                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47005                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47006                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47007                                                                              l_component_type
47008                                                                             ,l_component_code
47009                                                                             ,l_component_type_code
47010                                                                             ,l_component_appl_id
47011                                                                             ,l_amb_context_code
47012                                                                             ,l_entity_code
47013                                                                             ,l_event_class_code
47014                                                                            )
47015                                     ,p_token_3                 => 'OWNER'
47016                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47017                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47018                                                                           ,p_lookup_code    => l_component_type_code
47019                                                                          )
47020                                     ,p_token_4                 => 'PRODUCT_NAME'
47021                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47022                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47023                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47024                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47028         IF (C_LEVEL_ERROR>= g_log_level) THEN
47025                                     ,p_ae_header_id            =>  NULL
47026                                        );
47027 
47029                  trace
47030                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47031                       ,p_level    => C_LEVEL_ERROR
47032                       ,p_module   => l_log_module);
47033         END IF;
47034       END IF;
47035    END IF;
47036    --
47037    --
47038    ------------------------------------------------------------------------------------------------
47039    -- 4219869 Business Flow
47040    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47041    -- Prior Entry.  Currently, the following code is always generated.
47042    ------------------------------------------------------------------------------------------------
47043    XLA_AE_LINES_PKG.ValidateCurrentLine;
47044 
47045    ------------------------------------------------------------------------------------
47046    -- 4219869 Business Flow
47047    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47048    ------------------------------------------------------------------------------------
47049    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47050 
47051    ----------------------------------------------------------------------------------
47052    -- 4219869 Business Flow
47053    -- Update journal entry status -- Need to generate this within IF <condition>
47054    ----------------------------------------------------------------------------------
47055    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47056          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47057          ,p_balance_type_code => l_balance_type_code
47058          );
47059 
47060    -------------------------------------------------------------------------------------------
47061    -- 4262811 - Generate the Accrual Reversal lines
47062    -------------------------------------------------------------------------------------------
47063    BEGIN
47064       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47065                               (g_array_event(p_event_id).array_value_num('header_index'));
47066       IF l_acc_rev_flag IS NULL THEN
47067          l_acc_rev_flag := 'N';
47068       END IF;
47069    EXCEPTION
47070       WHEN OTHERS THEN
47071          l_acc_rev_flag := 'N';
47072    END;
47073    --
47074    IF (l_acc_rev_flag = 'Y') THEN
47075 
47076        -- 4645092  ------------------------------------------------------------------------------
47077        -- To allow MPA report to determine if it should generate report process
47078        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47079        ------------------------------------------------------------------------------------------
47080 
47081        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47082        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47083 
47084        --
47085        -- Update the line information that should be overwritten
47086        --
47087        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47088                                          p_header_num   => 1);
47089        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47090 
47091        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47092 
47093        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47094           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47095        END IF;
47096 
47097       --
47098       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47099       --
47100       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47101           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47102       ELSE
47103           ---------------------------------------------------------------------------------------------------
47104           -- 4262811a Switch Sign
47105           ---------------------------------------------------------------------------------------------------
47106           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47107           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47108                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47109           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47110                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47111           -- 5132302
47112           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47113                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47114 
47115       END IF;
47116 
47117       -- 4955764
47118       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47119       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47120 
47121 
47122       XLA_AE_LINES_PKG.ValidateCurrentLine;
47123       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47124 
47125       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47126                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47127                ,p_balance_type_code => l_balance_type_code);
47128 
47129    END IF;
47130 
47131    -----------------------------------------------------------------------------------------
47132    -- 4262811 Multiperiod Accounting
47133    -----------------------------------------------------------------------------------------
47137 END IF;
47134      -- No MPA option is assigned.
47135 
47136 
47138 END IF;
47139 --
47140 
47141 --
47142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47143    trace
47144       (p_msg      => 'END of AcctLineType_96'
47145       ,p_level    => C_LEVEL_PROCEDURE
47146       ,p_module   => l_log_module);
47147 END IF;
47148 --
47149 EXCEPTION
47150   WHEN xla_exceptions_pkg.application_exception THEN
47151       RAISE;
47152   WHEN OTHERS THEN
47153        xla_exceptions_pkg.raise_message
47154            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_96');
47155 END AcctLineType_96;
47156 --
47157 
47158 ---------------------------------------
47159 --
47160 -- PRIVATE FUNCTION
47161 --         AcctLineType_97
47162 --
47163 ---------------------------------------
47164 PROCEDURE AcctLineType_97 (
47165   p_application_id        IN NUMBER
47166  ,p_event_id              IN NUMBER
47167  ,p_calculate_acctd_flag  IN VARCHAR2
47168  ,p_calculate_g_l_flag    IN VARCHAR2
47169  ,p_actual_flag           IN OUT VARCHAR2
47170  ,p_balance_type_code     OUT VARCHAR2
47171  ,p_gain_or_loss_ref      OUT VARCHAR2
47172  
47173 --Budget Code Combination ID
47174  , p_source_2            IN NUMBER
47175 --Cost CCID
47176  , p_source_3            IN NUMBER
47177 --Cost Clearing CCID
47178  , p_source_6            IN NUMBER
47179 --Reversing Line Flag
47180  , p_source_22            IN VARCHAR2
47181 --Actual Upgrade Credit Accounting Class
47182  , p_source_23            IN VARCHAR2
47183 --Entered Currency Code
47184  , p_source_25            IN VARCHAR2
47185 --Exchange Rate Date
47186  , p_source_27            IN DATE
47187 --Exchange Rate
47188  , p_source_28            IN NUMBER
47189 --Exchange Rate Type
47190  , p_source_29            IN VARCHAR2
47191 --Actual Upgrade Debit Accounting Class
47192  , p_source_30            IN VARCHAR2
47193 --Use Actuals Upgrade Attributes Flag
47194  , p_source_31            IN VARCHAR2
47195 --Expenditure Item ID
47196  , p_source_32            IN NUMBER
47197 --Cost Distribution Line Number
47198  , p_source_33            IN NUMBER
47199 --Line Type
47200  , p_source_34            IN VARCHAR2
47201  , p_source_34_meaning    IN VARCHAR2
47202 --Reversed Line Number
47203  , p_source_35            IN NUMBER
47204 --Entered Burdened Cost
47205  , p_source_44            IN NUMBER
47206 --Accounted Burdened Cost
47207  , p_source_45            IN NUMBER
47208 --Encumbrance Amount
47209  , p_source_46            IN NUMBER
47210 --Project Encumbrance Applied to Application Identifier
47211  , p_source_47            IN NUMBER
47212 --Project Encumbrance Applied to Distribution Type
47213  , p_source_48            IN VARCHAR2
47214 --Project Encumbrance Applied to Entity Code
47215  , p_source_49            IN VARCHAR2
47216 --Project Encumbrance Applied to First Distribution ID
47217  , p_source_50            IN NUMBER
47218 --Project Encumbrance Applied to First System Transaction ID
47219  , p_source_51            IN NUMBER
47220 --Project Encumbrance Applied to Second Distribution ID
47221  , p_source_52            IN VARCHAR2
47222 --Encumbrance Upgrade Credit Accounting Class
47223  , p_source_53            IN VARCHAR2
47224 --Encumbrance Upgrade Debit Accounting Class
47225  , p_source_54            IN VARCHAR2
47226 --Use Encumbrance Upgrade Attributes Flag
47227  , p_source_55            IN VARCHAR2
47228 --Encumbrance Type ID
47229  , p_source_56            IN NUMBER
47230 --Project Encumbrance Type ID
47231  , p_source_57            IN NUMBER
47232 --Document Type
47233  , p_source_70            IN VARCHAR2
47234  , p_source_70_meaning    IN VARCHAR2
47235 --Release ID
47236  , p_source_72            IN NUMBER
47237 --Contingent Worker Timecard Flag
47238  , p_source_73            IN VARCHAR2
47239 )
47240 IS
47241 
47242 l_component_type              VARCHAR2(80);
47243 l_component_code              VARCHAR2(30);
47244 l_component_type_code         VARCHAR2(1);
47245 l_component_appl_id           INTEGER;
47246 l_amb_context_code            VARCHAR2(30);
47247 l_entity_code                 VARCHAR2(30);
47248 l_event_class_code            VARCHAR2(30);
47249 l_ae_header_id                NUMBER;
47250 l_event_type_code             VARCHAR2(30);
47251 l_line_definition_code        VARCHAR2(30);
47252 l_line_definition_owner_code  VARCHAR2(1);
47253 --
47254 -- adr variables
47255 l_segment                     VARCHAR2(30);
47256 l_ccid                        NUMBER;
47257 l_adr_transaction_coa_id      NUMBER;
47258 l_adr_accounting_coa_id       NUMBER;
47259 l_adr_flexfield_segment_code  VARCHAR2(30);
47260 l_adr_flex_value_set_id       NUMBER;
47261 l_adr_value_type_code         VARCHAR2(30);
47262 l_adr_value_combination_id    NUMBER;
47263 l_adr_value_segment_code      VARCHAR2(30);
47264 
47265 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47266 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47267 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47268 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47269 
47270 -- 4262811 Variables ------------------------------------------------------------------------------------------
47271 l_entered_amt_idx             NUMBER;
47272 l_accted_amt_idx              NUMBER;
47273 l_acc_rev_flag                VARCHAR2(1);
47274 l_accrual_line_num            NUMBER;
47275 l_tmp_amt                     NUMBER;
47276 l_acc_rev_natural_side_code   VARCHAR2(1);
47277 
47278 l_num_entries                 NUMBER;
47279 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47280 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47281 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47285 
47282 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47283 l_recog_line_1                NUMBER;
47284 l_recog_line_2                NUMBER;
47286 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47287 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47288 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47289 
47290 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47291 
47292 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47293 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47294 
47295 ---------------------------------------------------------------------------------------------------------------
47296 
47297 
47298 --
47299 -- bulk performance
47300 --
47301 l_balance_type_code           VARCHAR2(1);
47302 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47303 l_log_module                  VARCHAR2(240);
47304 
47305 --
47306 -- Upgrade strategy
47307 --
47308 l_actual_upg_option           VARCHAR2(1);
47309 l_enc_upg_option           VARCHAR2(1);
47310 
47311 --
47312 BEGIN
47313 --
47314 IF g_log_enabled THEN
47315       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
47316 END IF;
47317 --
47318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47319 
47320       trace
47321          (p_msg      => 'BEGIN of AcctLineType_97'
47322          ,p_level    => C_LEVEL_PROCEDURE
47323          ,p_module   => l_log_module);
47324 
47325 END IF;
47326 --
47327 l_component_type             := 'AMB_JLT';
47328 l_component_code             := 'REL_CWK_PO_BURDEN_ENC';
47329 l_component_type_code        := 'S';
47330 l_component_appl_id          :=  275;
47331 l_amb_context_code           := 'DEFAULT';
47332 l_entity_code                := 'EXPENDITURES';
47333 l_event_class_code           := 'BURDEN_COST';
47334 l_event_type_code            := 'BURDEN_COST_ALL';
47335 l_line_definition_owner_code := 'S';
47336 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
47337 --
47338 l_balance_type_code          := 'E';
47339 l_segment                     := NULL;
47340 l_ccid                        := NULL;
47341 l_adr_transaction_coa_id      := NULL;
47342 l_adr_accounting_coa_id       := NULL;
47343 l_adr_flexfield_segment_code  := NULL;
47344 l_adr_flex_value_set_id       := NULL;
47345 l_adr_value_type_code         := NULL;
47346 l_adr_value_combination_id    := NULL;
47347 l_adr_value_segment_code      := NULL;
47348 
47349 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47350 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
47351 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47352 l_budgetary_control_flag     := 'N';
47353 
47354 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47355 l_bflow_applied_to_amt       := NULL; -- 5132302
47356 l_entered_amt_idx            := NULL;          -- 4262811
47357 l_accted_amt_idx             := NULL;          -- 4262811
47358 l_acc_rev_flag               := NULL;          -- 4262811
47359 l_accrual_line_num           := NULL;          -- 4262811
47360 l_tmp_amt                    := NULL;          -- 4262811
47361 --
47362  
47363 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47364     l_balance_type_code <> 'B' THEN
47365 IF NVL(p_source_34,'
47366 ') =  'E' AND 
47367 NVL(p_source_70,'
47368 ') =  'PO' AND 
47369 p_source_72 IS NULL AND 
47370 NVL(p_source_73,'
47371 ') =  'Y'
47372  THEN 
47373 
47374    --
47375    XLA_AE_LINES_PKG.SetNewLine;
47376 
47377    p_balance_type_code          := l_balance_type_code;
47378    -- set the flag so later we will know whether the gain loss line needs to be created
47379    
47380    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47381      p_actual_flag :='A';
47382    END IF;
47383 
47384    --
47385    -- bulk performance
47386    --
47387    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47388                                       p_header_num   => 0); -- 4262811
47389    --
47390    -- set accounting line options
47391    --
47392    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47393            p_natural_side_code          => 'C'
47394          , p_gain_or_loss_flag          => 'N'
47395          , p_gl_transfer_mode_code      => 'S'
47396          , p_acct_entry_type_code       => 'E'
47397          , p_switch_side_flag           => 'N'
47398          , p_merge_duplicate_code       => 'N'
47399          );
47400    --
47401    l_acc_rev_natural_side_code := 'D';  -- 4262811
47402    -- 
47403    --
47404    -- set accounting line type info
47405    --
47406    xla_ae_lines_pkg.SetAcctLineType
47407       (p_component_type             => l_component_type
47408       ,p_event_type_code            => l_event_type_code
47409       ,p_line_definition_owner_code => l_line_definition_owner_code
47410       ,p_line_definition_code       => l_line_definition_code
47411       ,p_accounting_line_code       => l_component_code
47412       ,p_accounting_line_type_code  => l_component_type_code
47413       ,p_accounting_line_appl_id    => l_component_appl_id
47414       ,p_amb_context_code           => l_amb_context_code
47415       ,p_entity_code                => l_entity_code
47416       ,p_event_class_code           => l_event_class_code);
47417    --
47418    -- set accounting class
47419    --
47420    xla_ae_lines_pkg.SetAcctClass(
47421            p_accounting_class_code  => 'PO_PA_BURDEN'
47422          , p_ae_header_id           => l_ae_header_id
47423          );
47424 
47425    --
47426    -- set rounding class
47430 
47427    --
47428    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47429                       'PO_PA_BURDEN';
47431    --
47432    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47433    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47434    --
47435    -- bulk performance
47436    --
47437    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47438 
47439    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47440       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47441 
47442    -- 4955764
47443    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47444       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47445 
47446    -- 4458381 Public Sector Enh
47447       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
47448    --
47449    -- set accounting attributes for the line type
47450    --
47451    l_entered_amt_idx := 40;
47452    l_accted_amt_idx  := 45;
47453    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
47454    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
47455    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
47456    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
47457    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
47458    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
47459    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
47460    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
47461    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
47462    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
47463    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
47464    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
47465    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
47466    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
47467    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
47468    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
47469    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
47470    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
47471    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
47472    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
47473    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
47474    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
47475    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
47476    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
47477    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
47478    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
47479    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
47480    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
47481    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
47482    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
47483    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
47484    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
47485    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
47486    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
47487    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
47488    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
47489    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
47490    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
47491    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
47492    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
47493    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
47494    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
47495    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
47496    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
47497    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
47498    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
47499    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
47500    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
47501    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
47502    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
47503    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
47504    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
47505    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
47506    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
47507    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
47508    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
47509    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
47510    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
47511    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
47512    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
47513    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
47514    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
47515    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
47516    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
47517    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
47518    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
47519    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
47520    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
47521    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
47525    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
47522    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
47523    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
47524    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
47526    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
47527    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
47528    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
47529    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
47530    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
47531    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
47532    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
47533    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
47534    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
47535    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
47536    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
47537    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
47538    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
47539    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
47540    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
47541    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
47542    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
47543    l_rec_acct_attrs.array_num_value(45)  := p_source_46;
47544    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
47545    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
47546    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
47547    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
47548    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
47549    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
47550    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
47551    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
47552    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
47553    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
47554 
47555    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47556    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47557 
47558    ---------------------------------------------------------------------------------------------------------------
47559    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47560    ---------------------------------------------------------------------------------------------------------------
47561    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47562 
47563    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47564    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47565 
47566    IF xla_accounting_cache_pkg.GetValueChar
47567          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47568          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47569    AND l_bflow_method_code = 'PRIOR_ENTRY'
47570 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47571    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47572          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47573        )
47574    THEN
47575          xla_ae_lines_pkg.BflowUpgEntry
47576            (p_business_method_code    => l_bflow_method_code
47577            ,p_business_class_code     => l_bflow_class_code
47578            ,p_balance_type            => l_balance_type_code);
47579    ELSE
47580       NULL;
47581 -- No business flow processing for business flow method of NONE.
47582    END IF;
47583 
47584    --
47585    -- call analytical criteria
47586    --
47587    
47588    --
47589    -- call description
47590    --
47591    -- No description or it is inherited.
47592    --
47593    -- call ADRs
47594    -- Bug 4922099
47595    --
47596    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47597         (NVL(l_actual_upg_option, 'N') = 'O') OR
47598         (NVL(l_enc_upg_option, 'N') = 'O')
47599       )
47600    THEN
47601    NULL;
47602    --
47603    --
47604    
47605   l_ccid := AcctDerRule_2(
47606            p_application_id           => p_application_id
47607          , p_ae_header_id             => l_ae_header_id 
47608 , p_source_2 => p_source_2
47609          , x_transaction_coa_id       => l_adr_transaction_coa_id
47610          , x_accounting_coa_id        => l_adr_accounting_coa_id
47611          , x_value_type_code          => l_adr_value_type_code
47612          , p_side                     => 'NA'
47613    );
47614 
47615    xla_ae_lines_pkg.set_ccid(
47616     p_code_combination_id          => l_ccid
47617   , p_value_type_code              => l_adr_value_type_code
47618   , p_transaction_coa_id           => l_adr_transaction_coa_id
47619   , p_accounting_coa_id            => l_adr_accounting_coa_id
47620   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
47621   , p_adr_type_code                => 'S'
47622   , p_component_type               => l_component_type
47623   , p_component_code               => l_component_code
47624   , p_component_type_code          => l_component_type_code
47625   , p_component_appl_id            => l_component_appl_id
47626   , p_amb_context_code             => l_amb_context_code
47627   , p_side                         => 'NA'
47628   );
47629 
47630 
47631    --
47632    --
47633    END IF;
47634    --
47635    -- Bug 4922099
47636    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47637           (NVL(l_enc_upg_option, 'N') = 'O')
47638         ) AND
47639         (l_bflow_method_code = 'PRIOR_ENTRY')
47640       )
47644       1 = 2
47641    THEN
47642       IF
47643       --
47645       --
47646       THEN
47647       xla_accounting_err_pkg.build_message
47648                                     (p_appli_s_name            => 'XLA'
47649                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47650                                     ,p_token_1                 => 'LINE_NUMBER'
47651                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47652                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47653                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47654                                                                              l_component_type
47655                                                                             ,l_component_code
47656                                                                             ,l_component_type_code
47657                                                                             ,l_component_appl_id
47658                                                                             ,l_amb_context_code
47659                                                                             ,l_entity_code
47660                                                                             ,l_event_class_code
47661                                                                            )
47662                                     ,p_token_3                 => 'OWNER'
47663                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47664                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47665                                                                           ,p_lookup_code    => l_component_type_code
47666                                                                          )
47667                                     ,p_token_4                 => 'PRODUCT_NAME'
47668                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47669                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47670                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47671                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47672                                     ,p_ae_header_id            =>  NULL
47673                                        );
47674 
47675         IF (C_LEVEL_ERROR>= g_log_level) THEN
47676                  trace
47677                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47678                       ,p_level    => C_LEVEL_ERROR
47679                       ,p_module   => l_log_module);
47680         END IF;
47681       END IF;
47682    END IF;
47683    --
47684    --
47685    ------------------------------------------------------------------------------------------------
47686    -- 4219869 Business Flow
47687    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47688    -- Prior Entry.  Currently, the following code is always generated.
47689    ------------------------------------------------------------------------------------------------
47690    XLA_AE_LINES_PKG.ValidateCurrentLine;
47691 
47692    ------------------------------------------------------------------------------------
47693    -- 4219869 Business Flow
47694    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47695    ------------------------------------------------------------------------------------
47696    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47697 
47698    ----------------------------------------------------------------------------------
47699    -- 4219869 Business Flow
47700    -- Update journal entry status -- Need to generate this within IF <condition>
47701    ----------------------------------------------------------------------------------
47702    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47703          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47704          ,p_balance_type_code => l_balance_type_code
47705          );
47706 
47707    -------------------------------------------------------------------------------------------
47708    -- 4262811 - Generate the Accrual Reversal lines
47709    -------------------------------------------------------------------------------------------
47710    BEGIN
47711       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47712                               (g_array_event(p_event_id).array_value_num('header_index'));
47713       IF l_acc_rev_flag IS NULL THEN
47714          l_acc_rev_flag := 'N';
47715       END IF;
47716    EXCEPTION
47717       WHEN OTHERS THEN
47718          l_acc_rev_flag := 'N';
47719    END;
47720    --
47721    IF (l_acc_rev_flag = 'Y') THEN
47722 
47723        -- 4645092  ------------------------------------------------------------------------------
47724        -- To allow MPA report to determine if it should generate report process
47725        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47726        ------------------------------------------------------------------------------------------
47727 
47728        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47729        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47730 
47731        --
47732        -- Update the line information that should be overwritten
47733        --
47734        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47735                                          p_header_num   => 1);
47736        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47737 
47738        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47739 
47740        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47744       --
47741           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47742        END IF;
47743 
47745       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47746       --
47747       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47748           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47749       ELSE
47750           ---------------------------------------------------------------------------------------------------
47751           -- 4262811a Switch Sign
47752           ---------------------------------------------------------------------------------------------------
47753           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47754           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47755                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47756           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47757                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47758           -- 5132302
47759           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47760                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47761 
47762       END IF;
47763 
47764       -- 4955764
47765       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47766       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47767 
47768 
47769       XLA_AE_LINES_PKG.ValidateCurrentLine;
47770       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47771 
47772       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47773                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47774                ,p_balance_type_code => l_balance_type_code);
47775 
47776    END IF;
47777 
47778    -----------------------------------------------------------------------------------------
47779    -- 4262811 Multiperiod Accounting
47780    -----------------------------------------------------------------------------------------
47781      -- No MPA option is assigned.
47782 
47783 
47784 END IF;
47785 END IF;
47786 --
47787 
47788 --
47789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47790    trace
47791       (p_msg      => 'END of AcctLineType_97'
47792       ,p_level    => C_LEVEL_PROCEDURE
47793       ,p_module   => l_log_module);
47794 END IF;
47795 --
47796 EXCEPTION
47797   WHEN xla_exceptions_pkg.application_exception THEN
47798       RAISE;
47799   WHEN OTHERS THEN
47800        xla_exceptions_pkg.raise_message
47801            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_97');
47802 END AcctLineType_97;
47803 --
47804 
47805 ---------------------------------------
47806 --
47807 -- PRIVATE FUNCTION
47808 --         AcctLineType_98
47809 --
47810 ---------------------------------------
47811 PROCEDURE AcctLineType_98 (
47812   p_application_id        IN NUMBER
47813  ,p_event_id              IN NUMBER
47814  ,p_calculate_acctd_flag  IN VARCHAR2
47815  ,p_calculate_g_l_flag    IN VARCHAR2
47816  ,p_actual_flag           IN OUT VARCHAR2
47817  ,p_balance_type_code     OUT VARCHAR2
47818  ,p_gain_or_loss_ref      OUT VARCHAR2
47819  
47820 --Budget Code Combination ID
47821  , p_source_2            IN NUMBER
47822 --Cost CCID
47823  , p_source_3            IN NUMBER
47824 --Cost Clearing CCID
47825  , p_source_6            IN NUMBER
47826 --Reversing Line Flag
47827  , p_source_22            IN VARCHAR2
47828 --Actual Upgrade Credit Accounting Class
47829  , p_source_23            IN VARCHAR2
47830 --Entered Currency Code
47831  , p_source_25            IN VARCHAR2
47832 --Exchange Rate Date
47833  , p_source_27            IN DATE
47834 --Exchange Rate
47835  , p_source_28            IN NUMBER
47836 --Exchange Rate Type
47837  , p_source_29            IN VARCHAR2
47838 --Actual Upgrade Debit Accounting Class
47839  , p_source_30            IN VARCHAR2
47840 --Use Actuals Upgrade Attributes Flag
47841  , p_source_31            IN VARCHAR2
47842 --Expenditure Item ID
47843  , p_source_32            IN NUMBER
47844 --Cost Distribution Line Number
47845  , p_source_33            IN NUMBER
47846 --Line Type
47847  , p_source_34            IN VARCHAR2
47848  , p_source_34_meaning    IN VARCHAR2
47849 --Reversed Line Number
47850  , p_source_35            IN NUMBER
47851 --Entered Burdened Cost
47852  , p_source_44            IN NUMBER
47853 --Accounted Burdened Cost
47854  , p_source_45            IN NUMBER
47855 --Encumbrance Amount
47856  , p_source_46            IN NUMBER
47857 --Encumbrance Upgrade Credit Accounting Class
47858  , p_source_53            IN VARCHAR2
47859 --Encumbrance Upgrade Debit Accounting Class
47860  , p_source_54            IN VARCHAR2
47861 --Use Encumbrance Upgrade Attributes Flag
47862  , p_source_55            IN VARCHAR2
47863 --Encumbrance Type ID
47864  , p_source_56            IN NUMBER
47865 --Project Encumbrance Type ID
47866  , p_source_57            IN NUMBER
47867 --Document Type
47868  , p_source_70            IN VARCHAR2
47869  , p_source_70_meaning    IN VARCHAR2
47870 --Encumbrance Journal Lines Reversed Flag
47871  , p_source_71            IN VARCHAR2
47872 --Invoice Burden Applied to Application Identifier
47873  , p_source_74            IN NUMBER
47874 --Invoice Burden Applied to Distribution Type
47875  , p_source_75            IN VARCHAR2
47876 --Invoice Burden Applied to Entity Code
47880 --Invoice Burden Applied to First System Transaction Identifier
47877  , p_source_76            IN VARCHAR2
47878 --Invoice Burden Applied to First Distribution Identifier
47879  , p_source_77            IN NUMBER
47881  , p_source_78            IN NUMBER
47882 --Invoice Burden Applied to Second Distribution Identifier
47883  , p_source_79            IN VARCHAR2
47884 )
47885 IS
47886 
47887 l_component_type              VARCHAR2(80);
47888 l_component_code              VARCHAR2(30);
47889 l_component_type_code         VARCHAR2(1);
47890 l_component_appl_id           INTEGER;
47891 l_amb_context_code            VARCHAR2(30);
47892 l_entity_code                 VARCHAR2(30);
47893 l_event_class_code            VARCHAR2(30);
47894 l_ae_header_id                NUMBER;
47895 l_event_type_code             VARCHAR2(30);
47896 l_line_definition_code        VARCHAR2(30);
47897 l_line_definition_owner_code  VARCHAR2(1);
47898 --
47899 -- adr variables
47900 l_segment                     VARCHAR2(30);
47901 l_ccid                        NUMBER;
47902 l_adr_transaction_coa_id      NUMBER;
47903 l_adr_accounting_coa_id       NUMBER;
47904 l_adr_flexfield_segment_code  VARCHAR2(30);
47905 l_adr_flex_value_set_id       NUMBER;
47906 l_adr_value_type_code         VARCHAR2(30);
47907 l_adr_value_combination_id    NUMBER;
47908 l_adr_value_segment_code      VARCHAR2(30);
47909 
47910 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47911 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47912 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47913 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47914 
47915 -- 4262811 Variables ------------------------------------------------------------------------------------------
47916 l_entered_amt_idx             NUMBER;
47917 l_accted_amt_idx              NUMBER;
47918 l_acc_rev_flag                VARCHAR2(1);
47919 l_accrual_line_num            NUMBER;
47920 l_tmp_amt                     NUMBER;
47921 l_acc_rev_natural_side_code   VARCHAR2(1);
47922 
47923 l_num_entries                 NUMBER;
47924 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47925 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47926 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47927 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47928 l_recog_line_1                NUMBER;
47929 l_recog_line_2                NUMBER;
47930 
47931 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47932 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47933 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47934 
47935 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47936 
47937 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47938 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47939 
47940 ---------------------------------------------------------------------------------------------------------------
47941 
47942 
47943 --
47944 -- bulk performance
47945 --
47946 l_balance_type_code           VARCHAR2(1);
47947 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47948 l_log_module                  VARCHAR2(240);
47949 
47950 --
47951 -- Upgrade strategy
47952 --
47953 l_actual_upg_option           VARCHAR2(1);
47954 l_enc_upg_option           VARCHAR2(1);
47955 
47956 --
47957 BEGIN
47958 --
47959 IF g_log_enabled THEN
47960       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
47961 END IF;
47962 --
47963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47964 
47965       trace
47966          (p_msg      => 'BEGIN of AcctLineType_98'
47967          ,p_level    => C_LEVEL_PROCEDURE
47968          ,p_module   => l_log_module);
47969 
47970 END IF;
47971 --
47972 l_component_type             := 'AMB_JLT';
47973 l_component_code             := 'REL_INV_BURDENED_ENC';
47974 l_component_type_code        := 'S';
47975 l_component_appl_id          :=  275;
47976 l_amb_context_code           := 'DEFAULT';
47977 l_entity_code                := 'EXPENDITURES';
47978 l_event_class_code           := 'TOT_BURDENED_COST';
47979 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
47980 l_line_definition_owner_code := 'S';
47981 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
47982 --
47983 l_balance_type_code          := 'E';
47984 l_segment                     := NULL;
47985 l_ccid                        := NULL;
47986 l_adr_transaction_coa_id      := NULL;
47987 l_adr_accounting_coa_id       := NULL;
47988 l_adr_flexfield_segment_code  := NULL;
47989 l_adr_flex_value_set_id       := NULL;
47990 l_adr_value_type_code         := NULL;
47991 l_adr_value_combination_id    := NULL;
47992 l_adr_value_segment_code      := NULL;
47993 
47994 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
47995 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
47996 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47997 l_budgetary_control_flag     := 'N';
47998 
47999 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48000 l_bflow_applied_to_amt       := NULL; -- 5132302
48001 l_entered_amt_idx            := NULL;          -- 4262811
48002 l_accted_amt_idx             := NULL;          -- 4262811
48003 l_acc_rev_flag               := NULL;          -- 4262811
48004 l_accrual_line_num           := NULL;          -- 4262811
48005 l_tmp_amt                    := NULL;          -- 4262811
48006 --
48007  
48008 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48009     l_balance_type_code <> 'B' THEN
48010 IF NVL(p_source_34,'
48014 NVL(p_source_71,'
48011 ') =  'E' AND 
48012 NVL(p_source_70,'
48013 ') =  'AP' AND 
48015 ') <>  'Y'
48016  THEN 
48017 
48018    --
48019    XLA_AE_LINES_PKG.SetNewLine;
48020 
48021    p_balance_type_code          := l_balance_type_code;
48022    -- set the flag so later we will know whether the gain loss line needs to be created
48023    
48024    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48025      p_actual_flag :='A';
48026    END IF;
48027 
48028    --
48029    -- bulk performance
48030    --
48031    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48032                                       p_header_num   => 0); -- 4262811
48033    --
48034    -- set accounting line options
48035    --
48036    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48037            p_natural_side_code          => 'C'
48038          , p_gain_or_loss_flag          => 'N'
48039          , p_gl_transfer_mode_code      => 'S'
48040          , p_acct_entry_type_code       => 'E'
48041          , p_switch_side_flag           => 'N'
48042          , p_merge_duplicate_code       => 'N'
48043          );
48044    --
48045    l_acc_rev_natural_side_code := 'D';  -- 4262811
48046    -- 
48047    --
48048    -- set accounting line type info
48049    --
48050    xla_ae_lines_pkg.SetAcctLineType
48051       (p_component_type             => l_component_type
48052       ,p_event_type_code            => l_event_type_code
48053       ,p_line_definition_owner_code => l_line_definition_owner_code
48054       ,p_line_definition_code       => l_line_definition_code
48055       ,p_accounting_line_code       => l_component_code
48056       ,p_accounting_line_type_code  => l_component_type_code
48057       ,p_accounting_line_appl_id    => l_component_appl_id
48058       ,p_amb_context_code           => l_amb_context_code
48059       ,p_entity_code                => l_entity_code
48060       ,p_event_class_code           => l_event_class_code);
48061    --
48062    -- set accounting class
48063    --
48064    xla_ae_lines_pkg.SetAcctClass(
48065            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
48066          , p_ae_header_id           => l_ae_header_id
48067          );
48068 
48069    --
48070    -- set rounding class
48071    --
48072    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48073                       'AP_INV_PA_BURDENED';
48074 
48075    --
48076    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48077    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48078    --
48079    -- bulk performance
48080    --
48081    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48082 
48083    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48084       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48085 
48086    -- 4955764
48087    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48088       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48089 
48090    -- 4458381 Public Sector Enh
48091    
48092    --
48093    -- set accounting attributes for the line type
48094    --
48095    l_entered_amt_idx := 40;
48096    l_accted_amt_idx  := 43;
48097    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
48098    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
48099    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
48100    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
48101    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
48102    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
48103    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
48104    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
48105    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
48106    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
48107    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
48108    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
48109    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
48110    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
48111    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
48112    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
48113    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
48114    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
48115    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
48116    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
48117    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
48118    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
48119    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
48120    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
48121    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
48122    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
48123    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
48124    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
48125    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
48126    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
48127    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
48128    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
48129    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
48130    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
48131    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
48132    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
48136    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
48133    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
48134    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
48135    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
48137    l_rec_acct_attrs.array_num_value(20)  := p_source_74;
48138    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48139    l_rec_acct_attrs.array_char_value(21)  := p_source_75;
48140    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
48141    l_rec_acct_attrs.array_char_value(22)  := p_source_76;
48142    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
48143    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_77);
48144    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48145    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_78);
48146    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
48147    l_rec_acct_attrs.array_char_value(25)  := p_source_79;
48148    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
48149    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
48150    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
48151    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
48152    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
48153    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
48154    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
48155    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
48156    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
48157    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
48158    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
48159    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
48160    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
48161    l_rec_acct_attrs.array_char_value(32)  := 
48162 xla_ae_sources_pkg.GetSystemSourceChar(
48163    p_source_code           => 'XLA_CURRENCY_CODE'
48164  , p_source_type_code      => 'Y'
48165  , p_source_application_id =>  602
48166 );
48167    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
48168    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
48169    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
48170    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
48171    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
48172    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
48173    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
48174    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
48175    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
48176    l_rec_acct_attrs.array_char_value(37)  := 
48177 xla_ae_sources_pkg.GetSystemSourceChar(
48178    p_source_code           => 'XLA_CURRENCY_CODE'
48179  , p_source_type_code      => 'Y'
48180  , p_source_application_id =>  602
48181 );
48182    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
48183    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
48184    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
48185    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
48186    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
48187    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
48188    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
48189    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
48190    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
48191    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
48192    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
48193    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
48194    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
48195    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
48196    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
48197    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
48198    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
48199    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
48200    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
48201    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
48202    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
48203    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
48204 
48205    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48206    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48207 
48208    ---------------------------------------------------------------------------------------------------------------
48209    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48210    ---------------------------------------------------------------------------------------------------------------
48211    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48212 
48213    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48214    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48215 
48216    IF xla_accounting_cache_pkg.GetValueChar
48217          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48218          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48219    AND l_bflow_method_code = 'PRIOR_ENTRY'
48220 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48221    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48222          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48223        )
48224    THEN
48225          xla_ae_lines_pkg.BflowUpgEntry
48226            (p_business_method_code    => l_bflow_method_code
48230       NULL;
48227            ,p_business_class_code     => l_bflow_class_code
48228            ,p_balance_type            => l_balance_type_code);
48229    ELSE
48231 XLA_AE_LINES_PKG.business_flow_validation(
48232                                 p_business_method_code     => l_bflow_method_code
48233                                ,p_business_class_code      => l_bflow_class_code
48234                                ,p_inherit_description_flag => l_inherit_desc_flag);
48235    END IF;
48236 
48237    --
48238    -- call analytical criteria
48239    --
48240    -- Inherited Analytical Criteria for business flow method of Prior Entry.
48241    --
48242    -- call description
48243    --
48244    -- No description or it is inherited.
48245    --
48246    -- call ADRs
48247    -- Bug 4922099
48248    --
48249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48250         (NVL(l_actual_upg_option, 'N') = 'O') OR
48251         (NVL(l_enc_upg_option, 'N') = 'O')
48252       )
48253    THEN
48254    NULL;
48255    --
48256    --
48257    
48258    --
48259    --
48260    END IF;
48261    --
48262    -- Bug 4922099
48263    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48264           (NVL(l_enc_upg_option, 'N') = 'O')
48265         ) AND
48266         (l_bflow_method_code = 'PRIOR_ENTRY')
48267       )
48268    THEN
48269       IF
48270       --
48271       1 = 1
48272       --
48273       THEN
48274       xla_accounting_err_pkg.build_message
48275                                     (p_appli_s_name            => 'XLA'
48276                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48277                                     ,p_token_1                 => 'LINE_NUMBER'
48278                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48279                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48280                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48281                                                                              l_component_type
48282                                                                             ,l_component_code
48283                                                                             ,l_component_type_code
48284                                                                             ,l_component_appl_id
48285                                                                             ,l_amb_context_code
48286                                                                             ,l_entity_code
48287                                                                             ,l_event_class_code
48288                                                                            )
48289                                     ,p_token_3                 => 'OWNER'
48290                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48291                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48292                                                                           ,p_lookup_code    => l_component_type_code
48293                                                                          )
48294                                     ,p_token_4                 => 'PRODUCT_NAME'
48295                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48296                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48297                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48298                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48299                                     ,p_ae_header_id            =>  NULL
48300                                        );
48301 
48302         IF (C_LEVEL_ERROR>= g_log_level) THEN
48303                  trace
48304                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48305                       ,p_level    => C_LEVEL_ERROR
48306                       ,p_module   => l_log_module);
48307         END IF;
48308       END IF;
48309    END IF;
48310    --
48311    --
48312    ------------------------------------------------------------------------------------------------
48313    -- 4219869 Business Flow
48314    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48315    -- Prior Entry.  Currently, the following code is always generated.
48316    ------------------------------------------------------------------------------------------------
48317    -- No ValidateCurrentLine for business flow method of Prior Entry
48318 
48319    ------------------------------------------------------------------------------------
48320    -- 4219869 Business Flow
48321    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48322    ------------------------------------------------------------------------------------
48323    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48324 
48325    ----------------------------------------------------------------------------------
48326    -- 4219869 Business Flow
48327    -- Update journal entry status -- Need to generate this within IF <condition>
48328    ----------------------------------------------------------------------------------
48329    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48330          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48331          ,p_balance_type_code => l_balance_type_code
48332          );
48333 
48334    -------------------------------------------------------------------------------------------
48335    -- 4262811 - Generate the Accrual Reversal lines
48336    -------------------------------------------------------------------------------------------
48337    BEGIN
48341          l_acc_rev_flag := 'N';
48338       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48339                               (g_array_event(p_event_id).array_value_num('header_index'));
48340       IF l_acc_rev_flag IS NULL THEN
48342       END IF;
48343    EXCEPTION
48344       WHEN OTHERS THEN
48345          l_acc_rev_flag := 'N';
48346    END;
48347    --
48348    IF (l_acc_rev_flag = 'Y') THEN
48349 
48350        -- 4645092  ------------------------------------------------------------------------------
48351        -- To allow MPA report to determine if it should generate report process
48352        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48353        ------------------------------------------------------------------------------------------
48354 
48355        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48356        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48357 
48358        --
48359        -- Update the line information that should be overwritten
48360        --
48361        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48362                                          p_header_num   => 1);
48363        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48364 
48365        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48366 
48367        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48368           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48369        END IF;
48370 
48371       --
48372       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48373       --
48374       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48375           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48376       ELSE
48377           ---------------------------------------------------------------------------------------------------
48378           -- 4262811a Switch Sign
48379           ---------------------------------------------------------------------------------------------------
48380           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48381           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48382                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48383           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48384                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48385           -- 5132302
48386           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48387                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48388 
48389       END IF;
48390 
48391       -- 4955764
48392       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48393       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48394 
48395 
48396       XLA_AE_LINES_PKG.ValidateCurrentLine;
48397       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48398 
48399       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48400                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48401                ,p_balance_type_code => l_balance_type_code);
48402 
48403    END IF;
48404 
48405    -----------------------------------------------------------------------------------------
48406    -- 4262811 Multiperiod Accounting
48407    -----------------------------------------------------------------------------------------
48408      -- No MPA option is assigned.
48409 
48410 
48411 END IF;
48412 END IF;
48413 --
48414 
48415 --
48416 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48417    trace
48418       (p_msg      => 'END of AcctLineType_98'
48419       ,p_level    => C_LEVEL_PROCEDURE
48420       ,p_module   => l_log_module);
48421 END IF;
48422 --
48423 EXCEPTION
48424   WHEN xla_exceptions_pkg.application_exception THEN
48425       RAISE;
48426   WHEN OTHERS THEN
48427        xla_exceptions_pkg.raise_message
48428            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_98');
48429 END AcctLineType_98;
48430 --
48431 
48432 ---------------------------------------
48433 --
48434 -- PRIVATE FUNCTION
48435 --         AcctLineType_99
48436 --
48437 ---------------------------------------
48438 PROCEDURE AcctLineType_99 (
48439   p_application_id        IN NUMBER
48440  ,p_event_id              IN NUMBER
48441  ,p_calculate_acctd_flag  IN VARCHAR2
48442  ,p_calculate_g_l_flag    IN VARCHAR2
48443  ,p_actual_flag           IN OUT VARCHAR2
48444  ,p_balance_type_code     OUT VARCHAR2
48445  ,p_gain_or_loss_ref      OUT VARCHAR2
48446  
48447 --Budget Code Combination ID
48448  , p_source_2            IN NUMBER
48449 --Cost CCID
48450  , p_source_3            IN NUMBER
48451 --Cost Clearing CCID
48452  , p_source_6            IN NUMBER
48453 --Reversing Line Flag
48454  , p_source_22            IN VARCHAR2
48455 --Actual Upgrade Credit Accounting Class
48456  , p_source_23            IN VARCHAR2
48457 --Entered Currency Code
48458  , p_source_25            IN VARCHAR2
48459 --Exchange Rate Date
48460  , p_source_27            IN DATE
48461 --Exchange Rate
48462  , p_source_28            IN NUMBER
48463 --Exchange Rate Type
48464  , p_source_29            IN VARCHAR2
48465 --Actual Upgrade Debit Accounting Class
48466  , p_source_30            IN VARCHAR2
48467 --Use Actuals Upgrade Attributes Flag
48471 --Cost Distribution Line Number
48468  , p_source_31            IN VARCHAR2
48469 --Expenditure Item ID
48470  , p_source_32            IN NUMBER
48472  , p_source_33            IN NUMBER
48473 --Line Type
48474  , p_source_34            IN VARCHAR2
48475  , p_source_34_meaning    IN VARCHAR2
48476 --Reversed Line Number
48477  , p_source_35            IN NUMBER
48478 --Entered Burdened Cost
48479  , p_source_44            IN NUMBER
48480 --Accounted Burdened Cost
48481  , p_source_45            IN NUMBER
48482 --Encumbrance Amount
48483  , p_source_46            IN NUMBER
48484 --Encumbrance Upgrade Debit Accounting Class
48485  , p_source_54            IN VARCHAR2
48486 --Use Encumbrance Upgrade Attributes Flag
48487  , p_source_55            IN VARCHAR2
48488 --Encumbrance Type ID
48489  , p_source_56            IN NUMBER
48490 --Project Encumbrance Type ID
48491  , p_source_57            IN NUMBER
48492 --Document Type
48493  , p_source_70            IN VARCHAR2
48494  , p_source_70_meaning    IN VARCHAR2
48495 --Encumbrance Journal Lines Reversed Flag
48496  , p_source_71            IN VARCHAR2
48497 --Invoice Burden Applied to Application Identifier
48498  , p_source_74            IN NUMBER
48499 --Invoice Burden Applied to Distribution Type
48500  , p_source_75            IN VARCHAR2
48501 --Invoice Burden Applied to Entity Code
48502  , p_source_76            IN VARCHAR2
48503 --Invoice Burden Applied to First Distribution Identifier
48504  , p_source_77            IN NUMBER
48505 --Invoice Burden Applied to First System Transaction Identifier
48506  , p_source_78            IN NUMBER
48507 --Invoice Burden Applied to Second Distribution Identifier
48508  , p_source_79            IN VARCHAR2
48509 )
48510 IS
48511 
48512 l_component_type              VARCHAR2(80);
48513 l_component_code              VARCHAR2(30);
48514 l_component_type_code         VARCHAR2(1);
48515 l_component_appl_id           INTEGER;
48516 l_amb_context_code            VARCHAR2(30);
48517 l_entity_code                 VARCHAR2(30);
48518 l_event_class_code            VARCHAR2(30);
48519 l_ae_header_id                NUMBER;
48520 l_event_type_code             VARCHAR2(30);
48521 l_line_definition_code        VARCHAR2(30);
48522 l_line_definition_owner_code  VARCHAR2(1);
48523 --
48524 -- adr variables
48525 l_segment                     VARCHAR2(30);
48526 l_ccid                        NUMBER;
48527 l_adr_transaction_coa_id      NUMBER;
48528 l_adr_accounting_coa_id       NUMBER;
48529 l_adr_flexfield_segment_code  VARCHAR2(30);
48530 l_adr_flex_value_set_id       NUMBER;
48531 l_adr_value_type_code         VARCHAR2(30);
48532 l_adr_value_combination_id    NUMBER;
48533 l_adr_value_segment_code      VARCHAR2(30);
48534 
48535 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48536 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48537 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48538 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48539 
48540 -- 4262811 Variables ------------------------------------------------------------------------------------------
48541 l_entered_amt_idx             NUMBER;
48542 l_accted_amt_idx              NUMBER;
48543 l_acc_rev_flag                VARCHAR2(1);
48544 l_accrual_line_num            NUMBER;
48545 l_tmp_amt                     NUMBER;
48546 l_acc_rev_natural_side_code   VARCHAR2(1);
48547 
48548 l_num_entries                 NUMBER;
48549 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48550 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48551 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48552 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48553 l_recog_line_1                NUMBER;
48554 l_recog_line_2                NUMBER;
48555 
48556 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48557 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48558 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48559 
48560 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48561 
48562 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48563 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48564 
48565 ---------------------------------------------------------------------------------------------------------------
48566 
48567 
48568 --
48569 -- bulk performance
48570 --
48571 l_balance_type_code           VARCHAR2(1);
48572 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48573 l_log_module                  VARCHAR2(240);
48574 
48575 --
48576 -- Upgrade strategy
48577 --
48578 l_actual_upg_option           VARCHAR2(1);
48579 l_enc_upg_option           VARCHAR2(1);
48580 
48581 --
48582 BEGIN
48583 --
48584 IF g_log_enabled THEN
48585       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
48586 END IF;
48587 --
48588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48589 
48590       trace
48591          (p_msg      => 'BEGIN of AcctLineType_99'
48592          ,p_level    => C_LEVEL_PROCEDURE
48593          ,p_module   => l_log_module);
48594 
48595 END IF;
48596 --
48597 l_component_type             := 'AMB_JLT';
48598 l_component_code             := 'REL_INV_BURDENED_ENC';
48599 l_component_type_code        := 'S';
48600 l_component_appl_id          :=  275;
48601 l_amb_context_code           := 'DEFAULT';
48602 l_entity_code                := 'EXPENDITURES';
48603 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
48604 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
48605 l_line_definition_owner_code := 'S';
48609 l_segment                     := NULL;
48606 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
48607 --
48608 l_balance_type_code          := 'E';
48610 l_ccid                        := NULL;
48611 l_adr_transaction_coa_id      := NULL;
48612 l_adr_accounting_coa_id       := NULL;
48613 l_adr_flexfield_segment_code  := NULL;
48614 l_adr_flex_value_set_id       := NULL;
48615 l_adr_value_type_code         := NULL;
48616 l_adr_value_combination_id    := NULL;
48617 l_adr_value_segment_code      := NULL;
48618 
48619 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
48620 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
48621 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48622 l_budgetary_control_flag     := 'N';
48623 
48624 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48625 l_bflow_applied_to_amt       := NULL; -- 5132302
48626 l_entered_amt_idx            := NULL;          -- 4262811
48627 l_accted_amt_idx             := NULL;          -- 4262811
48628 l_acc_rev_flag               := NULL;          -- 4262811
48629 l_accrual_line_num           := NULL;          -- 4262811
48630 l_tmp_amt                    := NULL;          -- 4262811
48631 --
48632  
48633 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48634     l_balance_type_code <> 'B' THEN
48635 IF NVL(p_source_34,'
48636 ') =  'E' AND 
48637 NVL(p_source_70,'
48638 ') =  'AP' AND 
48639 NVL(p_source_71,'
48640 ') <>  'Y'
48641  THEN 
48642 
48643    --
48644    XLA_AE_LINES_PKG.SetNewLine;
48645 
48646    p_balance_type_code          := l_balance_type_code;
48647    -- set the flag so later we will know whether the gain loss line needs to be created
48648    
48649    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48650      p_actual_flag :='A';
48651    END IF;
48652 
48653    --
48654    -- bulk performance
48655    --
48656    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48657                                       p_header_num   => 0); -- 4262811
48658    --
48659    -- set accounting line options
48660    --
48661    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48662            p_natural_side_code          => 'C'
48663          , p_gain_or_loss_flag          => 'N'
48664          , p_gl_transfer_mode_code      => 'S'
48665          , p_acct_entry_type_code       => 'E'
48666          , p_switch_side_flag           => 'N'
48667          , p_merge_duplicate_code       => 'N'
48668          );
48669    --
48670    l_acc_rev_natural_side_code := 'D';  -- 4262811
48671    -- 
48672    --
48673    -- set accounting line type info
48674    --
48675    xla_ae_lines_pkg.SetAcctLineType
48676       (p_component_type             => l_component_type
48677       ,p_event_type_code            => l_event_type_code
48678       ,p_line_definition_owner_code => l_line_definition_owner_code
48679       ,p_line_definition_code       => l_line_definition_code
48680       ,p_accounting_line_code       => l_component_code
48681       ,p_accounting_line_type_code  => l_component_type_code
48682       ,p_accounting_line_appl_id    => l_component_appl_id
48683       ,p_amb_context_code           => l_amb_context_code
48684       ,p_entity_code                => l_entity_code
48685       ,p_event_class_code           => l_event_class_code);
48686    --
48687    -- set accounting class
48688    --
48689    xla_ae_lines_pkg.SetAcctClass(
48690            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
48691          , p_ae_header_id           => l_ae_header_id
48692          );
48693 
48694    --
48695    -- set rounding class
48696    --
48697    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48698                       'AP_INV_PA_BURDENED';
48699 
48700    --
48701    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48702    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48703    --
48704    -- bulk performance
48705    --
48706    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48707 
48708    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48709       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48710 
48711    -- 4955764
48712    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48713       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48714 
48715    -- 4458381 Public Sector Enh
48716    
48717    --
48718    -- set accounting attributes for the line type
48719    --
48720    l_entered_amt_idx := 35;
48721    l_accted_amt_idx  := 37;
48722    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
48723    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
48724    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
48725    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
48726    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
48727    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
48728    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
48729    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
48730    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
48731    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
48732    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
48733    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
48734    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
48735    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
48736    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
48740    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
48737    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
48738    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
48739    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
48741    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
48742    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
48743    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
48744    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
48745    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
48746    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
48747    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
48748    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
48749    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
48750    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
48751    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
48752    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
48753    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
48754    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
48755    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
48756    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
48757    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
48758    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
48759    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
48760    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
48761    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
48762    l_rec_acct_attrs.array_num_value(20)  := p_source_74;
48763    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48764    l_rec_acct_attrs.array_char_value(21)  := p_source_75;
48765    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
48766    l_rec_acct_attrs.array_char_value(22)  := p_source_76;
48767    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
48768    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_77);
48769    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48770    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_78);
48771    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
48772    l_rec_acct_attrs.array_char_value(25)  := p_source_79;
48773    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
48774    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
48775    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
48776    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
48777    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
48778    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
48779    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
48780    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
48781    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
48782    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
48783    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
48784    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
48785    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
48786    l_rec_acct_attrs.array_char_value(32)  := 
48787 xla_ae_sources_pkg.GetSystemSourceChar(
48788    p_source_code           => 'XLA_CURRENCY_CODE'
48789  , p_source_type_code      => 'Y'
48790  , p_source_application_id =>  602
48791 );
48792    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
48793    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
48794    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
48795    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
48796    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
48797    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
48798    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
48799    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
48800    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
48801    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
48802    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
48803    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
48804    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
48805    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
48806    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
48807    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
48808    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
48809    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
48810    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
48811    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
48812 
48813    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48814    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48815 
48816    ---------------------------------------------------------------------------------------------------------------
48817    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48818    ---------------------------------------------------------------------------------------------------------------
48819    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48820 
48821    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48822    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48823 
48824    IF xla_accounting_cache_pkg.GetValueChar
48825          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48829    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48826          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48827    AND l_bflow_method_code = 'PRIOR_ENTRY'
48828 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48830          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48831        )
48832    THEN
48833          xla_ae_lines_pkg.BflowUpgEntry
48834            (p_business_method_code    => l_bflow_method_code
48835            ,p_business_class_code     => l_bflow_class_code
48836            ,p_balance_type            => l_balance_type_code);
48837    ELSE
48838       NULL;
48839 XLA_AE_LINES_PKG.business_flow_validation(
48840                                 p_business_method_code     => l_bflow_method_code
48841                                ,p_business_class_code      => l_bflow_class_code
48842                                ,p_inherit_description_flag => l_inherit_desc_flag);
48843    END IF;
48844 
48845    --
48846    -- call analytical criteria
48847    --
48848    -- Inherited Analytical Criteria for business flow method of Prior Entry.
48849    --
48850    -- call description
48851    --
48852    -- No description or it is inherited.
48853    --
48854    -- call ADRs
48855    -- Bug 4922099
48856    --
48857    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48858         (NVL(l_actual_upg_option, 'N') = 'O') OR
48859         (NVL(l_enc_upg_option, 'N') = 'O')
48860       )
48861    THEN
48862    NULL;
48863    --
48864    --
48865    
48866    --
48867    --
48868    END IF;
48869    --
48870    -- Bug 4922099
48871    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48872           (NVL(l_enc_upg_option, 'N') = 'O')
48873         ) AND
48874         (l_bflow_method_code = 'PRIOR_ENTRY')
48875       )
48876    THEN
48877       IF
48878       --
48879       1 = 1
48880       --
48881       THEN
48882       xla_accounting_err_pkg.build_message
48883                                     (p_appli_s_name            => 'XLA'
48884                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48885                                     ,p_token_1                 => 'LINE_NUMBER'
48886                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48887                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48888                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48889                                                                              l_component_type
48890                                                                             ,l_component_code
48891                                                                             ,l_component_type_code
48892                                                                             ,l_component_appl_id
48893                                                                             ,l_amb_context_code
48894                                                                             ,l_entity_code
48895                                                                             ,l_event_class_code
48896                                                                            )
48897                                     ,p_token_3                 => 'OWNER'
48898                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48899                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48900                                                                           ,p_lookup_code    => l_component_type_code
48901                                                                          )
48902                                     ,p_token_4                 => 'PRODUCT_NAME'
48903                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48904                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48905                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48906                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48907                                     ,p_ae_header_id            =>  NULL
48908                                        );
48909 
48910         IF (C_LEVEL_ERROR>= g_log_level) THEN
48911                  trace
48912                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48913                       ,p_level    => C_LEVEL_ERROR
48914                       ,p_module   => l_log_module);
48915         END IF;
48916       END IF;
48917    END IF;
48918    --
48919    --
48920    ------------------------------------------------------------------------------------------------
48921    -- 4219869 Business Flow
48922    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48923    -- Prior Entry.  Currently, the following code is always generated.
48924    ------------------------------------------------------------------------------------------------
48925    -- No ValidateCurrentLine for business flow method of Prior Entry
48926 
48927    ------------------------------------------------------------------------------------
48928    -- 4219869 Business Flow
48929    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48930    ------------------------------------------------------------------------------------
48931    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48932 
48933    ----------------------------------------------------------------------------------
48934    -- 4219869 Business Flow
48935    -- Update journal entry status -- Need to generate this within IF <condition>
48936    ----------------------------------------------------------------------------------
48940          );
48937    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48938          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48939          ,p_balance_type_code => l_balance_type_code
48941 
48942    -------------------------------------------------------------------------------------------
48943    -- 4262811 - Generate the Accrual Reversal lines
48944    -------------------------------------------------------------------------------------------
48945    BEGIN
48946       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48947                               (g_array_event(p_event_id).array_value_num('header_index'));
48948       IF l_acc_rev_flag IS NULL THEN
48949          l_acc_rev_flag := 'N';
48950       END IF;
48951    EXCEPTION
48952       WHEN OTHERS THEN
48953          l_acc_rev_flag := 'N';
48954    END;
48955    --
48956    IF (l_acc_rev_flag = 'Y') THEN
48957 
48958        -- 4645092  ------------------------------------------------------------------------------
48959        -- To allow MPA report to determine if it should generate report process
48960        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48961        ------------------------------------------------------------------------------------------
48962 
48963        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48964        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48965 
48966        --
48967        -- Update the line information that should be overwritten
48968        --
48969        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48970                                          p_header_num   => 1);
48971        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48972 
48973        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48974 
48975        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48976           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48977        END IF;
48978 
48979       --
48980       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48981       --
48982       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48983           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48984       ELSE
48985           ---------------------------------------------------------------------------------------------------
48986           -- 4262811a Switch Sign
48987           ---------------------------------------------------------------------------------------------------
48988           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48989           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48990                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48991           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48992                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48993           -- 5132302
48994           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48995                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48996 
48997       END IF;
48998 
48999       -- 4955764
49000       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49001       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49002 
49003 
49004       XLA_AE_LINES_PKG.ValidateCurrentLine;
49005       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49006 
49007       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49008                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49009                ,p_balance_type_code => l_balance_type_code);
49010 
49011    END IF;
49012 
49013    -----------------------------------------------------------------------------------------
49014    -- 4262811 Multiperiod Accounting
49015    -----------------------------------------------------------------------------------------
49016      -- No MPA option is assigned.
49017 
49018 
49019 END IF;
49020 END IF;
49021 --
49022 
49023 --
49024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49025    trace
49026       (p_msg      => 'END of AcctLineType_99'
49027       ,p_level    => C_LEVEL_PROCEDURE
49028       ,p_module   => l_log_module);
49029 END IF;
49030 --
49031 EXCEPTION
49032   WHEN xla_exceptions_pkg.application_exception THEN
49033       RAISE;
49034   WHEN OTHERS THEN
49035        xla_exceptions_pkg.raise_message
49036            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_99');
49037 END AcctLineType_99;
49038 --
49039 
49040 ---------------------------------------
49041 --
49042 -- PRIVATE FUNCTION
49043 --         AcctLineType_100
49044 --
49045 ---------------------------------------
49046 PROCEDURE AcctLineType_100 (
49047   p_application_id        IN NUMBER
49048  ,p_event_id              IN NUMBER
49049  ,p_calculate_acctd_flag  IN VARCHAR2
49050  ,p_calculate_g_l_flag    IN VARCHAR2
49051  ,p_actual_flag           IN OUT VARCHAR2
49052  ,p_balance_type_code     OUT VARCHAR2
49053  ,p_gain_or_loss_ref      OUT VARCHAR2
49054  
49055 --Budget Code Combination ID
49056  , p_source_2            IN NUMBER
49057 --Cost CCID
49058  , p_source_3            IN NUMBER
49059 --Cost Clearing CCID
49060  , p_source_6            IN NUMBER
49061 --Reversing Line Flag
49062  , p_source_22            IN VARCHAR2
49063 --Actual Upgrade Credit Accounting Class
49067 --Exchange Rate Date
49064  , p_source_23            IN VARCHAR2
49065 --Entered Currency Code
49066  , p_source_25            IN VARCHAR2
49068  , p_source_27            IN DATE
49069 --Exchange Rate
49070  , p_source_28            IN NUMBER
49071 --Exchange Rate Type
49072  , p_source_29            IN VARCHAR2
49073 --Actual Upgrade Debit Accounting Class
49074  , p_source_30            IN VARCHAR2
49075 --Use Actuals Upgrade Attributes Flag
49076  , p_source_31            IN VARCHAR2
49077 --Expenditure Item ID
49078  , p_source_32            IN NUMBER
49079 --Cost Distribution Line Number
49080  , p_source_33            IN NUMBER
49081 --Line Type
49082  , p_source_34            IN VARCHAR2
49083  , p_source_34_meaning    IN VARCHAR2
49084 --Reversed Line Number
49085  , p_source_35            IN NUMBER
49086 --Entered Burdened Cost
49087  , p_source_44            IN NUMBER
49088 --Accounted Burdened Cost
49089  , p_source_45            IN NUMBER
49090 --Encumbrance Amount
49091  , p_source_46            IN NUMBER
49092 --Encumbrance Upgrade Credit Accounting Class
49093  , p_source_53            IN VARCHAR2
49094 --Encumbrance Upgrade Debit Accounting Class
49095  , p_source_54            IN VARCHAR2
49096 --Use Encumbrance Upgrade Attributes Flag
49097  , p_source_55            IN VARCHAR2
49098 --Encumbrance Type ID
49099  , p_source_56            IN NUMBER
49100 --Project Encumbrance Type ID
49101  , p_source_57            IN NUMBER
49102 --Document Type
49103  , p_source_70            IN VARCHAR2
49104  , p_source_70_meaning    IN VARCHAR2
49105 --Encumbrance Journal Lines Reversed Flag
49106  , p_source_71            IN VARCHAR2
49107 --Invoice Burden Applied to Application Identifier
49108  , p_source_74            IN NUMBER
49109 --Invoice Burden Applied to Distribution Type
49110  , p_source_75            IN VARCHAR2
49111 --Invoice Burden Applied to Entity Code
49112  , p_source_76            IN VARCHAR2
49113 --Invoice Burden Applied to First Distribution Identifier
49114  , p_source_77            IN NUMBER
49115 --Invoice Burden Applied to First System Transaction Identifier
49116  , p_source_78            IN NUMBER
49117 --Invoice Burden Applied to Second Distribution Identifier
49118  , p_source_79            IN VARCHAR2
49119 )
49120 IS
49121 
49122 l_component_type              VARCHAR2(80);
49123 l_component_code              VARCHAR2(30);
49124 l_component_type_code         VARCHAR2(1);
49125 l_component_appl_id           INTEGER;
49126 l_amb_context_code            VARCHAR2(30);
49127 l_entity_code                 VARCHAR2(30);
49128 l_event_class_code            VARCHAR2(30);
49129 l_ae_header_id                NUMBER;
49130 l_event_type_code             VARCHAR2(30);
49131 l_line_definition_code        VARCHAR2(30);
49132 l_line_definition_owner_code  VARCHAR2(1);
49133 --
49134 -- adr variables
49135 l_segment                     VARCHAR2(30);
49136 l_ccid                        NUMBER;
49137 l_adr_transaction_coa_id      NUMBER;
49138 l_adr_accounting_coa_id       NUMBER;
49139 l_adr_flexfield_segment_code  VARCHAR2(30);
49140 l_adr_flex_value_set_id       NUMBER;
49141 l_adr_value_type_code         VARCHAR2(30);
49142 l_adr_value_combination_id    NUMBER;
49143 l_adr_value_segment_code      VARCHAR2(30);
49144 
49145 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49146 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49147 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49148 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49149 
49150 -- 4262811 Variables ------------------------------------------------------------------------------------------
49151 l_entered_amt_idx             NUMBER;
49152 l_accted_amt_idx              NUMBER;
49153 l_acc_rev_flag                VARCHAR2(1);
49154 l_accrual_line_num            NUMBER;
49155 l_tmp_amt                     NUMBER;
49156 l_acc_rev_natural_side_code   VARCHAR2(1);
49157 
49158 l_num_entries                 NUMBER;
49159 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49160 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49161 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49162 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49163 l_recog_line_1                NUMBER;
49164 l_recog_line_2                NUMBER;
49165 
49166 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49167 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49168 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49169 
49170 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49171 
49172 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49173 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49174 
49175 ---------------------------------------------------------------------------------------------------------------
49176 
49177 
49178 --
49179 -- bulk performance
49180 --
49181 l_balance_type_code           VARCHAR2(1);
49182 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49183 l_log_module                  VARCHAR2(240);
49184 
49185 --
49186 -- Upgrade strategy
49187 --
49188 l_actual_upg_option           VARCHAR2(1);
49189 l_enc_upg_option           VARCHAR2(1);
49190 
49191 --
49192 BEGIN
49193 --
49194 IF g_log_enabled THEN
49195       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
49196 END IF;
49197 --
49198 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49199 
49200       trace
49201          (p_msg      => 'BEGIN of AcctLineType_100'
49202          ,p_level    => C_LEVEL_PROCEDURE
49206 --
49203          ,p_module   => l_log_module);
49204 
49205 END IF;
49207 l_component_type             := 'AMB_JLT';
49208 l_component_code             := 'REL_INV_BURDEN_ENC';
49209 l_component_type_code        := 'S';
49210 l_component_appl_id          :=  275;
49211 l_amb_context_code           := 'DEFAULT';
49212 l_entity_code                := 'EXPENDITURES';
49213 l_event_class_code           := 'BURDEN_COST';
49214 l_event_type_code            := 'BURDEN_COST_ALL';
49215 l_line_definition_owner_code := 'S';
49216 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
49217 --
49218 l_balance_type_code          := 'E';
49219 l_segment                     := NULL;
49220 l_ccid                        := NULL;
49221 l_adr_transaction_coa_id      := NULL;
49222 l_adr_accounting_coa_id       := NULL;
49223 l_adr_flexfield_segment_code  := NULL;
49224 l_adr_flex_value_set_id       := NULL;
49225 l_adr_value_type_code         := NULL;
49226 l_adr_value_combination_id    := NULL;
49227 l_adr_value_segment_code      := NULL;
49228 
49229 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
49230 l_bflow_class_code           := 'AP_INV_PA_BURDEN_ENC';    -- 4219869 Business Flow
49231 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49232 l_budgetary_control_flag     := 'N';
49233 
49234 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49235 l_bflow_applied_to_amt       := NULL; -- 5132302
49236 l_entered_amt_idx            := NULL;          -- 4262811
49237 l_accted_amt_idx             := NULL;          -- 4262811
49238 l_acc_rev_flag               := NULL;          -- 4262811
49239 l_accrual_line_num           := NULL;          -- 4262811
49240 l_tmp_amt                    := NULL;          -- 4262811
49241 --
49242  
49243 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49244     l_balance_type_code <> 'B' THEN
49245 IF NVL(p_source_34,'
49246 ') =  'E' AND 
49247 NVL(p_source_70,'
49248 ') =  'AP' AND 
49249 NVL(p_source_71,'
49250 ') <>  'Y'
49251  THEN 
49252 
49253    --
49254    XLA_AE_LINES_PKG.SetNewLine;
49255 
49256    p_balance_type_code          := l_balance_type_code;
49257    -- set the flag so later we will know whether the gain loss line needs to be created
49258    
49259    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49260      p_actual_flag :='A';
49261    END IF;
49262 
49263    --
49264    -- bulk performance
49265    --
49266    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49267                                       p_header_num   => 0); -- 4262811
49268    --
49269    -- set accounting line options
49270    --
49271    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49272            p_natural_side_code          => 'C'
49273          , p_gain_or_loss_flag          => 'N'
49274          , p_gl_transfer_mode_code      => 'S'
49275          , p_acct_entry_type_code       => 'E'
49276          , p_switch_side_flag           => 'N'
49277          , p_merge_duplicate_code       => 'N'
49278          );
49279    --
49280    l_acc_rev_natural_side_code := 'D';  -- 4262811
49281    -- 
49282    --
49283    -- set accounting line type info
49284    --
49285    xla_ae_lines_pkg.SetAcctLineType
49286       (p_component_type             => l_component_type
49287       ,p_event_type_code            => l_event_type_code
49288       ,p_line_definition_owner_code => l_line_definition_owner_code
49289       ,p_line_definition_code       => l_line_definition_code
49290       ,p_accounting_line_code       => l_component_code
49291       ,p_accounting_line_type_code  => l_component_type_code
49292       ,p_accounting_line_appl_id    => l_component_appl_id
49293       ,p_amb_context_code           => l_amb_context_code
49294       ,p_entity_code                => l_entity_code
49295       ,p_event_class_code           => l_event_class_code);
49296    --
49297    -- set accounting class
49298    --
49299    xla_ae_lines_pkg.SetAcctClass(
49300            p_accounting_class_code  => 'AP_INV_PA_BURDEN'
49301          , p_ae_header_id           => l_ae_header_id
49302          );
49303 
49304    --
49305    -- set rounding class
49306    --
49307    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49308                       'AP_INV_PA_BURDEN';
49309 
49310    --
49311    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49312    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49313    --
49314    -- bulk performance
49315    --
49316    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49317 
49318    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49319       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49320 
49321    -- 4955764
49322    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49323       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49324 
49325    -- 4458381 Public Sector Enh
49326    
49327    --
49328    -- set accounting attributes for the line type
49329    --
49330    l_entered_amt_idx := 40;
49331    l_accted_amt_idx  := 42;
49332    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
49333    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
49334    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
49335    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
49336    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
49337    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
49338    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
49342    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
49339    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
49340    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
49341    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
49343    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
49344    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
49345    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
49346    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
49347    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
49348    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
49349    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
49350    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
49351    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
49352    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
49353    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
49354    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
49355    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
49356    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
49357    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
49358    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
49359    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
49360    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
49361    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
49362    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
49363    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
49364    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
49365    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
49366    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
49367    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
49368    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
49369    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
49370    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
49371    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
49372    l_rec_acct_attrs.array_num_value(20)  := p_source_74;
49373    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
49374    l_rec_acct_attrs.array_char_value(21)  := p_source_75;
49375    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
49376    l_rec_acct_attrs.array_char_value(22)  := p_source_76;
49377    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
49378    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_77);
49379    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
49380    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_78);
49381    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
49382    l_rec_acct_attrs.array_char_value(25)  := p_source_79;
49383    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
49384    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
49385    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
49386    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
49387    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
49388    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
49389    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
49390    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
49391    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
49392    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
49393    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
49394    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
49395    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
49396    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
49397    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
49398    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
49399    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
49400    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
49401    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
49402    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
49403    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
49404    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
49405    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
49406    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
49407    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
49408    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
49409    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
49410    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
49411    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
49412    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
49413    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
49414    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
49415    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
49416    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
49417    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
49418    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
49419    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
49420    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
49421    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
49422    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
49423    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
49424    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
49425    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
49426    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
49427 
49431    ---------------------------------------------------------------------------------------------------------------
49428    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49429    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49430 
49432    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49433    ---------------------------------------------------------------------------------------------------------------
49434    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49435 
49436    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49437    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49438 
49439    IF xla_accounting_cache_pkg.GetValueChar
49440          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49441          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49442    AND l_bflow_method_code = 'PRIOR_ENTRY'
49443 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49444    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49445          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49446        )
49447    THEN
49448          xla_ae_lines_pkg.BflowUpgEntry
49449            (p_business_method_code    => l_bflow_method_code
49450            ,p_business_class_code     => l_bflow_class_code
49451            ,p_balance_type            => l_balance_type_code);
49452    ELSE
49453       NULL;
49454 XLA_AE_LINES_PKG.business_flow_validation(
49455                                 p_business_method_code     => l_bflow_method_code
49456                                ,p_business_class_code      => l_bflow_class_code
49457                                ,p_inherit_description_flag => l_inherit_desc_flag);
49458    END IF;
49459 
49460    --
49461    -- call analytical criteria
49462    --
49463    -- Inherited Analytical Criteria for business flow method of Prior Entry.
49464    --
49465    -- call description
49466    --
49467    -- No description or it is inherited.
49468    --
49469    -- call ADRs
49470    -- Bug 4922099
49471    --
49472    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49473         (NVL(l_actual_upg_option, 'N') = 'O') OR
49474         (NVL(l_enc_upg_option, 'N') = 'O')
49475       )
49476    THEN
49477    NULL;
49478    --
49479    --
49480    
49481    --
49482    --
49483    END IF;
49484    --
49485    -- Bug 4922099
49486    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49487           (NVL(l_enc_upg_option, 'N') = 'O')
49488         ) AND
49489         (l_bflow_method_code = 'PRIOR_ENTRY')
49490       )
49491    THEN
49492       IF
49493       --
49494       1 = 1
49495       --
49496       THEN
49497       xla_accounting_err_pkg.build_message
49498                                     (p_appli_s_name            => 'XLA'
49499                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49500                                     ,p_token_1                 => 'LINE_NUMBER'
49501                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49502                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49503                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49504                                                                              l_component_type
49505                                                                             ,l_component_code
49506                                                                             ,l_component_type_code
49507                                                                             ,l_component_appl_id
49508                                                                             ,l_amb_context_code
49509                                                                             ,l_entity_code
49510                                                                             ,l_event_class_code
49511                                                                            )
49512                                     ,p_token_3                 => 'OWNER'
49513                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49514                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49515                                                                           ,p_lookup_code    => l_component_type_code
49516                                                                          )
49517                                     ,p_token_4                 => 'PRODUCT_NAME'
49518                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49519                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49520                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49521                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49522                                     ,p_ae_header_id            =>  NULL
49523                                        );
49524 
49525         IF (C_LEVEL_ERROR>= g_log_level) THEN
49526                  trace
49527                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49528                       ,p_level    => C_LEVEL_ERROR
49529                       ,p_module   => l_log_module);
49530         END IF;
49531       END IF;
49532    END IF;
49533    --
49534    --
49535    ------------------------------------------------------------------------------------------------
49536    -- 4219869 Business Flow
49537    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49541 
49538    -- Prior Entry.  Currently, the following code is always generated.
49539    ------------------------------------------------------------------------------------------------
49540    -- No ValidateCurrentLine for business flow method of Prior Entry
49542    ------------------------------------------------------------------------------------
49543    -- 4219869 Business Flow
49544    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49545    ------------------------------------------------------------------------------------
49546    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49547 
49548    ----------------------------------------------------------------------------------
49549    -- 4219869 Business Flow
49550    -- Update journal entry status -- Need to generate this within IF <condition>
49551    ----------------------------------------------------------------------------------
49552    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49553          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49554          ,p_balance_type_code => l_balance_type_code
49555          );
49556 
49557    -------------------------------------------------------------------------------------------
49558    -- 4262811 - Generate the Accrual Reversal lines
49559    -------------------------------------------------------------------------------------------
49560    BEGIN
49561       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49562                               (g_array_event(p_event_id).array_value_num('header_index'));
49563       IF l_acc_rev_flag IS NULL THEN
49564          l_acc_rev_flag := 'N';
49565       END IF;
49566    EXCEPTION
49567       WHEN OTHERS THEN
49568          l_acc_rev_flag := 'N';
49569    END;
49570    --
49571    IF (l_acc_rev_flag = 'Y') THEN
49572 
49573        -- 4645092  ------------------------------------------------------------------------------
49574        -- To allow MPA report to determine if it should generate report process
49575        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49576        ------------------------------------------------------------------------------------------
49577 
49578        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49579        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49580 
49581        --
49582        -- Update the line information that should be overwritten
49583        --
49584        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49585                                          p_header_num   => 1);
49586        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49587 
49588        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49589 
49590        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49591           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49592        END IF;
49593 
49594       --
49595       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49596       --
49597       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49598           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49599       ELSE
49600           ---------------------------------------------------------------------------------------------------
49601           -- 4262811a Switch Sign
49602           ---------------------------------------------------------------------------------------------------
49603           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49604           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49605                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49606           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49607                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49608           -- 5132302
49609           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49610                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49611 
49612       END IF;
49613 
49614       -- 4955764
49615       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49616       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49617 
49618 
49619       XLA_AE_LINES_PKG.ValidateCurrentLine;
49620       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49621 
49622       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49623                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49624                ,p_balance_type_code => l_balance_type_code);
49625 
49626    END IF;
49627 
49628    -----------------------------------------------------------------------------------------
49629    -- 4262811 Multiperiod Accounting
49630    -----------------------------------------------------------------------------------------
49631      -- No MPA option is assigned.
49632 
49633 
49634 END IF;
49635 END IF;
49636 --
49637 
49638 --
49639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49640    trace
49641       (p_msg      => 'END of AcctLineType_100'
49642       ,p_level    => C_LEVEL_PROCEDURE
49643       ,p_module   => l_log_module);
49644 END IF;
49645 --
49646 EXCEPTION
49647   WHEN xla_exceptions_pkg.application_exception THEN
49648       RAISE;
49649   WHEN OTHERS THEN
49650        xla_exceptions_pkg.raise_message
49651            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_100');
49652 END AcctLineType_100;
49653 --
49654 
49658 --         AcctLineType_101
49655 ---------------------------------------
49656 --
49657 -- PRIVATE FUNCTION
49659 --
49660 ---------------------------------------
49661 PROCEDURE AcctLineType_101 (
49662   p_application_id        IN NUMBER
49663  ,p_event_id              IN NUMBER
49664  ,p_calculate_acctd_flag  IN VARCHAR2
49665  ,p_calculate_g_l_flag    IN VARCHAR2
49666  ,p_actual_flag           IN OUT VARCHAR2
49667  ,p_balance_type_code     OUT VARCHAR2
49668  ,p_gain_or_loss_ref      OUT VARCHAR2
49669  
49670 --Budget Code Combination ID
49671  , p_source_2            IN NUMBER
49672 --Cost CCID
49673  , p_source_3            IN NUMBER
49674 --Cost Clearing CCID
49675  , p_source_6            IN NUMBER
49676 --Reversing Line Flag
49677  , p_source_22            IN VARCHAR2
49678 --Actual Upgrade Credit Accounting Class
49679  , p_source_23            IN VARCHAR2
49680 --Entered Currency Code
49681  , p_source_25            IN VARCHAR2
49682 --Exchange Rate Date
49683  , p_source_27            IN DATE
49684 --Exchange Rate
49685  , p_source_28            IN NUMBER
49686 --Exchange Rate Type
49687  , p_source_29            IN VARCHAR2
49688 --Actual Upgrade Debit Accounting Class
49689  , p_source_30            IN VARCHAR2
49690 --Use Actuals Upgrade Attributes Flag
49691  , p_source_31            IN VARCHAR2
49692 --Expenditure Item ID
49693  , p_source_32            IN NUMBER
49694 --Cost Distribution Line Number
49695  , p_source_33            IN NUMBER
49696 --Line Type
49697  , p_source_34            IN VARCHAR2
49698  , p_source_34_meaning    IN VARCHAR2
49699 --Reversed Line Number
49700  , p_source_35            IN NUMBER
49701 --Entered Burdened Cost
49702  , p_source_44            IN NUMBER
49703 --Accounted Burdened Cost
49704  , p_source_45            IN NUMBER
49705 --Encumbrance Amount
49706  , p_source_46            IN NUMBER
49707 --Encumbrance Upgrade Debit Accounting Class
49708  , p_source_54            IN VARCHAR2
49709 --Use Encumbrance Upgrade Attributes Flag
49710  , p_source_55            IN VARCHAR2
49711 --Encumbrance Type ID
49712  , p_source_56            IN NUMBER
49713 --Project Encumbrance Type ID
49714  , p_source_57            IN NUMBER
49715 --Document Type
49716  , p_source_70            IN VARCHAR2
49717  , p_source_70_meaning    IN VARCHAR2
49718 --Release ID
49719  , p_source_72            IN NUMBER
49720 --Contingent Worker Timecard Flag
49721  , p_source_73            IN VARCHAR2
49722 --Purchase Order Burden Applied to Application Identifier
49723  , p_source_80            IN NUMBER
49724 --Purchase Order Burden Applied to Distribution Type
49725  , p_source_81            IN VARCHAR2
49726 --Purchase Order Burden Applied to Entity Code
49727  , p_source_82            IN VARCHAR2
49728 --Purchase Order Burden Applied to First Distribution Identifier
49729  , p_source_83            IN NUMBER
49730 --Purchase Order Burden Applied to First System Transaction Identifier
49731  , p_source_84            IN NUMBER
49732 --Purchase Order Burden Applied to Second Distribution Identifier
49733  , p_source_85            IN VARCHAR2
49734 )
49735 IS
49736 
49737 l_component_type              VARCHAR2(80);
49738 l_component_code              VARCHAR2(30);
49739 l_component_type_code         VARCHAR2(1);
49740 l_component_appl_id           INTEGER;
49741 l_amb_context_code            VARCHAR2(30);
49742 l_entity_code                 VARCHAR2(30);
49743 l_event_class_code            VARCHAR2(30);
49744 l_ae_header_id                NUMBER;
49745 l_event_type_code             VARCHAR2(30);
49746 l_line_definition_code        VARCHAR2(30);
49747 l_line_definition_owner_code  VARCHAR2(1);
49748 --
49749 -- adr variables
49750 l_segment                     VARCHAR2(30);
49751 l_ccid                        NUMBER;
49752 l_adr_transaction_coa_id      NUMBER;
49753 l_adr_accounting_coa_id       NUMBER;
49754 l_adr_flexfield_segment_code  VARCHAR2(30);
49755 l_adr_flex_value_set_id       NUMBER;
49756 l_adr_value_type_code         VARCHAR2(30);
49757 l_adr_value_combination_id    NUMBER;
49758 l_adr_value_segment_code      VARCHAR2(30);
49759 
49760 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49761 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49762 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49763 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49764 
49765 -- 4262811 Variables ------------------------------------------------------------------------------------------
49766 l_entered_amt_idx             NUMBER;
49767 l_accted_amt_idx              NUMBER;
49768 l_acc_rev_flag                VARCHAR2(1);
49769 l_accrual_line_num            NUMBER;
49770 l_tmp_amt                     NUMBER;
49771 l_acc_rev_natural_side_code   VARCHAR2(1);
49772 
49773 l_num_entries                 NUMBER;
49774 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49775 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49776 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49777 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49778 l_recog_line_1                NUMBER;
49779 l_recog_line_2                NUMBER;
49780 
49781 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49782 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49783 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49784 
49785 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49786 
49787 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49788 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49789 
49793 --
49790 ---------------------------------------------------------------------------------------------------------------
49791 
49792 
49794 -- bulk performance
49795 --
49796 l_balance_type_code           VARCHAR2(1);
49797 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49798 l_log_module                  VARCHAR2(240);
49799 
49800 --
49801 -- Upgrade strategy
49802 --
49803 l_actual_upg_option           VARCHAR2(1);
49804 l_enc_upg_option           VARCHAR2(1);
49805 
49806 --
49807 BEGIN
49808 --
49809 IF g_log_enabled THEN
49810       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
49811 END IF;
49812 --
49813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49814 
49815       trace
49816          (p_msg      => 'BEGIN of AcctLineType_101'
49817          ,p_level    => C_LEVEL_PROCEDURE
49818          ,p_module   => l_log_module);
49819 
49820 END IF;
49821 --
49822 l_component_type             := 'AMB_JLT';
49823 l_component_code             := 'REL_PO_BURDENED_ENC';
49824 l_component_type_code        := 'S';
49825 l_component_appl_id          :=  275;
49826 l_amb_context_code           := 'DEFAULT';
49827 l_entity_code                := 'EXPENDITURES';
49828 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
49829 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
49830 l_line_definition_owner_code := 'S';
49831 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
49832 --
49833 l_balance_type_code          := 'E';
49834 l_segment                     := NULL;
49835 l_ccid                        := NULL;
49836 l_adr_transaction_coa_id      := NULL;
49837 l_adr_accounting_coa_id       := NULL;
49838 l_adr_flexfield_segment_code  := NULL;
49839 l_adr_flex_value_set_id       := NULL;
49840 l_adr_value_type_code         := NULL;
49841 l_adr_value_combination_id    := NULL;
49842 l_adr_value_segment_code      := NULL;
49843 
49844 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
49845 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
49846 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49847 l_budgetary_control_flag     := 'N';
49848 
49849 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49850 l_bflow_applied_to_amt       := NULL; -- 5132302
49851 l_entered_amt_idx            := NULL;          -- 4262811
49852 l_accted_amt_idx             := NULL;          -- 4262811
49853 l_acc_rev_flag               := NULL;          -- 4262811
49854 l_accrual_line_num           := NULL;          -- 4262811
49855 l_tmp_amt                    := NULL;          -- 4262811
49856 --
49857  
49858 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49859     l_balance_type_code <> 'B' THEN
49860 IF NVL(p_source_34,'
49861 ') =  'E' AND 
49862 NVL(p_source_70,'
49863 ') =  'PO' AND 
49864 p_source_72 IS NULL AND 
49865 NVL(p_source_73,'
49866 ') =  'N'
49867  THEN 
49868 
49869    --
49870    XLA_AE_LINES_PKG.SetNewLine;
49871 
49872    p_balance_type_code          := l_balance_type_code;
49873    -- set the flag so later we will know whether the gain loss line needs to be created
49874    
49875    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49876      p_actual_flag :='A';
49877    END IF;
49878 
49879    --
49880    -- bulk performance
49881    --
49882    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49883                                       p_header_num   => 0); -- 4262811
49884    --
49885    -- set accounting line options
49886    --
49887    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49888            p_natural_side_code          => 'C'
49889          , p_gain_or_loss_flag          => 'N'
49890          , p_gl_transfer_mode_code      => 'S'
49891          , p_acct_entry_type_code       => 'E'
49892          , p_switch_side_flag           => 'N'
49893          , p_merge_duplicate_code       => 'N'
49894          );
49895    --
49896    l_acc_rev_natural_side_code := 'D';  -- 4262811
49897    -- 
49898    --
49899    -- set accounting line type info
49900    --
49901    xla_ae_lines_pkg.SetAcctLineType
49902       (p_component_type             => l_component_type
49903       ,p_event_type_code            => l_event_type_code
49904       ,p_line_definition_owner_code => l_line_definition_owner_code
49905       ,p_line_definition_code       => l_line_definition_code
49906       ,p_accounting_line_code       => l_component_code
49907       ,p_accounting_line_type_code  => l_component_type_code
49908       ,p_accounting_line_appl_id    => l_component_appl_id
49909       ,p_amb_context_code           => l_amb_context_code
49910       ,p_entity_code                => l_entity_code
49911       ,p_event_class_code           => l_event_class_code);
49912    --
49913    -- set accounting class
49914    --
49915    xla_ae_lines_pkg.SetAcctClass(
49916            p_accounting_class_code  => 'PO_PA_BURDENED'
49917          , p_ae_header_id           => l_ae_header_id
49918          );
49919 
49920    --
49921    -- set rounding class
49922    --
49923    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49924                       'PO_PA_BURDENED';
49925 
49926    --
49927    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49928    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49929    --
49930    -- bulk performance
49931    --
49932    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49933 
49934    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49938    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49935       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49936 
49937    -- 4955764
49939       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49940 
49941    -- 4458381 Public Sector Enh
49942    
49943    --
49944    -- set accounting attributes for the line type
49945    --
49946    l_entered_amt_idx := 35;
49947    l_accted_amt_idx  := 37;
49948    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
49949    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
49950    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
49951    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
49952    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
49953    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
49954    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
49955    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
49956    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
49957    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
49958    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
49959    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
49960    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
49961    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
49962    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
49963    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
49964    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
49965    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
49966    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
49967    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
49968    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
49969    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
49970    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
49971    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
49972    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
49973    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
49974    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
49975    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
49976    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
49977    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
49978    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
49979    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
49980    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
49981    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
49982    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
49983    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
49984    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
49985    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
49986    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
49987    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
49988    l_rec_acct_attrs.array_num_value(20)  := p_source_80;
49989    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
49990    l_rec_acct_attrs.array_char_value(21)  := p_source_81;
49991    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
49992    l_rec_acct_attrs.array_char_value(22)  := p_source_82;
49993    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
49994    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_83);
49995    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
49996    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_84);
49997    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
49998    l_rec_acct_attrs.array_char_value(25)  := p_source_85;
49999    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
50000    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
50001    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
50002    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
50003    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
50004    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
50005    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
50006    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
50007    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
50008    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
50009    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
50010    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
50011    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
50012    l_rec_acct_attrs.array_char_value(32)  := 
50013 xla_ae_sources_pkg.GetSystemSourceChar(
50014    p_source_code           => 'XLA_CURRENCY_CODE'
50015  , p_source_type_code      => 'Y'
50016  , p_source_application_id =>  602
50017 );
50018    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
50019    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
50020    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
50021    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
50022    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
50023    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
50024    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
50025    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
50026    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
50027    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
50028    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
50029    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
50030    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
50034    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
50031    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
50032    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
50033    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
50035    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
50036    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
50037    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
50038 
50039    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50040    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50041 
50042    ---------------------------------------------------------------------------------------------------------------
50043    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50044    ---------------------------------------------------------------------------------------------------------------
50045    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50046 
50047    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50048    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50049 
50050    IF xla_accounting_cache_pkg.GetValueChar
50051          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50052          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50053    AND l_bflow_method_code = 'PRIOR_ENTRY'
50054 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50055    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50056          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50057        )
50058    THEN
50059          xla_ae_lines_pkg.BflowUpgEntry
50060            (p_business_method_code    => l_bflow_method_code
50061            ,p_business_class_code     => l_bflow_class_code
50062            ,p_balance_type            => l_balance_type_code);
50063    ELSE
50064       NULL;
50065 XLA_AE_LINES_PKG.business_flow_validation(
50066                                 p_business_method_code     => l_bflow_method_code
50067                                ,p_business_class_code      => l_bflow_class_code
50068                                ,p_inherit_description_flag => l_inherit_desc_flag);
50069    END IF;
50070 
50071    --
50072    -- call analytical criteria
50073    --
50074    -- Inherited Analytical Criteria for business flow method of Prior Entry.
50075    --
50076    -- call description
50077    --
50078    -- No description or it is inherited.
50079    --
50080    -- call ADRs
50081    -- Bug 4922099
50082    --
50083    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50084         (NVL(l_actual_upg_option, 'N') = 'O') OR
50085         (NVL(l_enc_upg_option, 'N') = 'O')
50086       )
50087    THEN
50088    NULL;
50089    --
50090    --
50091    
50092    --
50093    --
50094    END IF;
50095    --
50096    -- Bug 4922099
50097    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50098           (NVL(l_enc_upg_option, 'N') = 'O')
50099         ) AND
50100         (l_bflow_method_code = 'PRIOR_ENTRY')
50101       )
50102    THEN
50103       IF
50104       --
50105       1 = 1
50106       --
50107       THEN
50108       xla_accounting_err_pkg.build_message
50109                                     (p_appli_s_name            => 'XLA'
50110                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50111                                     ,p_token_1                 => 'LINE_NUMBER'
50112                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50113                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50114                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50115                                                                              l_component_type
50116                                                                             ,l_component_code
50117                                                                             ,l_component_type_code
50118                                                                             ,l_component_appl_id
50119                                                                             ,l_amb_context_code
50120                                                                             ,l_entity_code
50121                                                                             ,l_event_class_code
50122                                                                            )
50123                                     ,p_token_3                 => 'OWNER'
50124                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50125                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50126                                                                           ,p_lookup_code    => l_component_type_code
50127                                                                          )
50128                                     ,p_token_4                 => 'PRODUCT_NAME'
50129                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50130                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50131                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50132                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50133                                     ,p_ae_header_id            =>  NULL
50134                                        );
50135 
50136         IF (C_LEVEL_ERROR>= g_log_level) THEN
50137                  trace
50141         END IF;
50138                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50139                       ,p_level    => C_LEVEL_ERROR
50140                       ,p_module   => l_log_module);
50142       END IF;
50143    END IF;
50144    --
50145    --
50146    ------------------------------------------------------------------------------------------------
50147    -- 4219869 Business Flow
50148    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50149    -- Prior Entry.  Currently, the following code is always generated.
50150    ------------------------------------------------------------------------------------------------
50151    -- No ValidateCurrentLine for business flow method of Prior Entry
50152 
50153    ------------------------------------------------------------------------------------
50154    -- 4219869 Business Flow
50155    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50156    ------------------------------------------------------------------------------------
50157    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50158 
50159    ----------------------------------------------------------------------------------
50160    -- 4219869 Business Flow
50161    -- Update journal entry status -- Need to generate this within IF <condition>
50162    ----------------------------------------------------------------------------------
50163    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50164          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50165          ,p_balance_type_code => l_balance_type_code
50166          );
50167 
50168    -------------------------------------------------------------------------------------------
50169    -- 4262811 - Generate the Accrual Reversal lines
50170    -------------------------------------------------------------------------------------------
50171    BEGIN
50172       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50173                               (g_array_event(p_event_id).array_value_num('header_index'));
50174       IF l_acc_rev_flag IS NULL THEN
50175          l_acc_rev_flag := 'N';
50176       END IF;
50177    EXCEPTION
50178       WHEN OTHERS THEN
50179          l_acc_rev_flag := 'N';
50180    END;
50181    --
50182    IF (l_acc_rev_flag = 'Y') THEN
50183 
50184        -- 4645092  ------------------------------------------------------------------------------
50185        -- To allow MPA report to determine if it should generate report process
50186        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50187        ------------------------------------------------------------------------------------------
50188 
50189        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50190        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50191 
50192        --
50193        -- Update the line information that should be overwritten
50194        --
50195        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50196                                          p_header_num   => 1);
50197        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50198 
50199        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50200 
50201        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50202           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50203        END IF;
50204 
50205       --
50206       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50207       --
50208       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50209           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50210       ELSE
50211           ---------------------------------------------------------------------------------------------------
50212           -- 4262811a Switch Sign
50213           ---------------------------------------------------------------------------------------------------
50214           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50215           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50216                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50217           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50218                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50219           -- 5132302
50220           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50221                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50222 
50223       END IF;
50224 
50225       -- 4955764
50226       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50227       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50228 
50229 
50230       XLA_AE_LINES_PKG.ValidateCurrentLine;
50231       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50232 
50233       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50234                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50235                ,p_balance_type_code => l_balance_type_code);
50236 
50237    END IF;
50238 
50239    -----------------------------------------------------------------------------------------
50240    -- 4262811 Multiperiod Accounting
50241    -----------------------------------------------------------------------------------------
50242      -- No MPA option is assigned.
50243 
50244 
50245 END IF;
50246 END IF;
50247 --
50248 
50249 --
50250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50254       ,p_module   => l_log_module);
50251    trace
50252       (p_msg      => 'END of AcctLineType_101'
50253       ,p_level    => C_LEVEL_PROCEDURE
50255 END IF;
50256 --
50257 EXCEPTION
50258   WHEN xla_exceptions_pkg.application_exception THEN
50259       RAISE;
50260   WHEN OTHERS THEN
50261        xla_exceptions_pkg.raise_message
50262            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_101');
50263 END AcctLineType_101;
50264 --
50265 
50266 ---------------------------------------
50267 --
50268 -- PRIVATE FUNCTION
50269 --         AcctLineType_102
50270 --
50271 ---------------------------------------
50272 PROCEDURE AcctLineType_102 (
50273   p_application_id        IN NUMBER
50274  ,p_event_id              IN NUMBER
50275  ,p_calculate_acctd_flag  IN VARCHAR2
50276  ,p_calculate_g_l_flag    IN VARCHAR2
50277  ,p_actual_flag           IN OUT VARCHAR2
50278  ,p_balance_type_code     OUT VARCHAR2
50279  ,p_gain_or_loss_ref      OUT VARCHAR2
50280  
50281 --Budget Code Combination ID
50282  , p_source_2            IN NUMBER
50283 --Cost CCID
50284  , p_source_3            IN NUMBER
50285 --Cost Clearing CCID
50286  , p_source_6            IN NUMBER
50287 --Reversing Line Flag
50288  , p_source_22            IN VARCHAR2
50289 --Actual Upgrade Credit Accounting Class
50290  , p_source_23            IN VARCHAR2
50291 --Entered Currency Code
50292  , p_source_25            IN VARCHAR2
50293 --Exchange Rate Date
50294  , p_source_27            IN DATE
50295 --Exchange Rate
50296  , p_source_28            IN NUMBER
50297 --Exchange Rate Type
50298  , p_source_29            IN VARCHAR2
50299 --Actual Upgrade Debit Accounting Class
50300  , p_source_30            IN VARCHAR2
50301 --Use Actuals Upgrade Attributes Flag
50302  , p_source_31            IN VARCHAR2
50303 --Expenditure Item ID
50304  , p_source_32            IN NUMBER
50305 --Cost Distribution Line Number
50306  , p_source_33            IN NUMBER
50307 --Line Type
50308  , p_source_34            IN VARCHAR2
50309  , p_source_34_meaning    IN VARCHAR2
50310 --Reversed Line Number
50311  , p_source_35            IN NUMBER
50312 --Entered Burdened Cost
50313  , p_source_44            IN NUMBER
50314 --Accounted Burdened Cost
50315  , p_source_45            IN NUMBER
50316 --Encumbrance Amount
50317  , p_source_46            IN NUMBER
50318 --Encumbrance Upgrade Credit Accounting Class
50319  , p_source_53            IN VARCHAR2
50320 --Encumbrance Upgrade Debit Accounting Class
50321  , p_source_54            IN VARCHAR2
50322 --Use Encumbrance Upgrade Attributes Flag
50323  , p_source_55            IN VARCHAR2
50324 --Encumbrance Type ID
50325  , p_source_56            IN NUMBER
50326 --Project Encumbrance Type ID
50327  , p_source_57            IN NUMBER
50328 --Document Type
50329  , p_source_70            IN VARCHAR2
50330  , p_source_70_meaning    IN VARCHAR2
50331 --Release ID
50332  , p_source_72            IN NUMBER
50333 --Contingent Worker Timecard Flag
50334  , p_source_73            IN VARCHAR2
50335 --Purchase Order Burden Applied to Application Identifier
50336  , p_source_80            IN NUMBER
50337 --Purchase Order Burden Applied to Distribution Type
50338  , p_source_81            IN VARCHAR2
50339 --Purchase Order Burden Applied to Entity Code
50340  , p_source_82            IN VARCHAR2
50341 --Purchase Order Burden Applied to First Distribution Identifier
50342  , p_source_83            IN NUMBER
50343 --Purchase Order Burden Applied to First System Transaction Identifier
50344  , p_source_84            IN NUMBER
50345 --Purchase Order Burden Applied to Second Distribution Identifier
50346  , p_source_85            IN VARCHAR2
50347 )
50348 IS
50349 
50350 l_component_type              VARCHAR2(80);
50351 l_component_code              VARCHAR2(30);
50352 l_component_type_code         VARCHAR2(1);
50353 l_component_appl_id           INTEGER;
50354 l_amb_context_code            VARCHAR2(30);
50355 l_entity_code                 VARCHAR2(30);
50356 l_event_class_code            VARCHAR2(30);
50357 l_ae_header_id                NUMBER;
50358 l_event_type_code             VARCHAR2(30);
50359 l_line_definition_code        VARCHAR2(30);
50360 l_line_definition_owner_code  VARCHAR2(1);
50361 --
50362 -- adr variables
50363 l_segment                     VARCHAR2(30);
50364 l_ccid                        NUMBER;
50365 l_adr_transaction_coa_id      NUMBER;
50366 l_adr_accounting_coa_id       NUMBER;
50367 l_adr_flexfield_segment_code  VARCHAR2(30);
50368 l_adr_flex_value_set_id       NUMBER;
50369 l_adr_value_type_code         VARCHAR2(30);
50370 l_adr_value_combination_id    NUMBER;
50371 l_adr_value_segment_code      VARCHAR2(30);
50372 
50373 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50374 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50375 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50376 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50377 
50378 -- 4262811 Variables ------------------------------------------------------------------------------------------
50379 l_entered_amt_idx             NUMBER;
50380 l_accted_amt_idx              NUMBER;
50381 l_acc_rev_flag                VARCHAR2(1);
50382 l_accrual_line_num            NUMBER;
50383 l_tmp_amt                     NUMBER;
50384 l_acc_rev_natural_side_code   VARCHAR2(1);
50385 
50386 l_num_entries                 NUMBER;
50387 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50388 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50389 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50390 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50391 l_recog_line_1                NUMBER;
50392 l_recog_line_2                NUMBER;
50393 
50397 
50394 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50395 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50396 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50398 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50399 
50400 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50401 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50402 
50403 ---------------------------------------------------------------------------------------------------------------
50404 
50405 
50406 --
50407 -- bulk performance
50408 --
50409 l_balance_type_code           VARCHAR2(1);
50410 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50411 l_log_module                  VARCHAR2(240);
50412 
50413 --
50414 -- Upgrade strategy
50415 --
50416 l_actual_upg_option           VARCHAR2(1);
50417 l_enc_upg_option           VARCHAR2(1);
50418 
50419 --
50420 BEGIN
50421 --
50422 IF g_log_enabled THEN
50423       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
50424 END IF;
50425 --
50426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50427 
50428       trace
50429          (p_msg      => 'BEGIN of AcctLineType_102'
50430          ,p_level    => C_LEVEL_PROCEDURE
50431          ,p_module   => l_log_module);
50432 
50433 END IF;
50434 --
50435 l_component_type             := 'AMB_JLT';
50436 l_component_code             := 'REL_PO_BURDENED_ENC';
50437 l_component_type_code        := 'S';
50438 l_component_appl_id          :=  275;
50439 l_amb_context_code           := 'DEFAULT';
50440 l_entity_code                := 'EXPENDITURES';
50441 l_event_class_code           := 'TOT_BURDENED_COST';
50442 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
50443 l_line_definition_owner_code := 'S';
50444 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
50445 --
50446 l_balance_type_code          := 'E';
50447 l_segment                     := NULL;
50448 l_ccid                        := NULL;
50449 l_adr_transaction_coa_id      := NULL;
50450 l_adr_accounting_coa_id       := NULL;
50451 l_adr_flexfield_segment_code  := NULL;
50452 l_adr_flex_value_set_id       := NULL;
50453 l_adr_value_type_code         := NULL;
50454 l_adr_value_combination_id    := NULL;
50455 l_adr_value_segment_code      := NULL;
50456 
50457 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
50458 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
50459 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50460 l_budgetary_control_flag     := 'N';
50461 
50462 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50463 l_bflow_applied_to_amt       := NULL; -- 5132302
50464 l_entered_amt_idx            := NULL;          -- 4262811
50465 l_accted_amt_idx             := NULL;          -- 4262811
50466 l_acc_rev_flag               := NULL;          -- 4262811
50467 l_accrual_line_num           := NULL;          -- 4262811
50468 l_tmp_amt                    := NULL;          -- 4262811
50469 --
50470  
50471 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50472     l_balance_type_code <> 'B' THEN
50473 IF NVL(p_source_34,'
50474 ') =  'E' AND 
50475 NVL(p_source_70,'
50476 ') =  'PO' AND 
50477 p_source_72 IS NULL AND 
50478 NVL(p_source_73,'
50479 ') =  'N'
50480  THEN 
50481 
50482    --
50483    XLA_AE_LINES_PKG.SetNewLine;
50484 
50485    p_balance_type_code          := l_balance_type_code;
50486    -- set the flag so later we will know whether the gain loss line needs to be created
50487    
50488    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50489      p_actual_flag :='A';
50490    END IF;
50491 
50492    --
50493    -- bulk performance
50494    --
50495    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50496                                       p_header_num   => 0); -- 4262811
50497    --
50498    -- set accounting line options
50499    --
50500    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50501            p_natural_side_code          => 'C'
50502          , p_gain_or_loss_flag          => 'N'
50503          , p_gl_transfer_mode_code      => 'S'
50504          , p_acct_entry_type_code       => 'E'
50505          , p_switch_side_flag           => 'N'
50506          , p_merge_duplicate_code       => 'N'
50507          );
50508    --
50509    l_acc_rev_natural_side_code := 'D';  -- 4262811
50510    -- 
50511    --
50512    -- set accounting line type info
50513    --
50514    xla_ae_lines_pkg.SetAcctLineType
50515       (p_component_type             => l_component_type
50516       ,p_event_type_code            => l_event_type_code
50517       ,p_line_definition_owner_code => l_line_definition_owner_code
50518       ,p_line_definition_code       => l_line_definition_code
50519       ,p_accounting_line_code       => l_component_code
50520       ,p_accounting_line_type_code  => l_component_type_code
50521       ,p_accounting_line_appl_id    => l_component_appl_id
50522       ,p_amb_context_code           => l_amb_context_code
50523       ,p_entity_code                => l_entity_code
50524       ,p_event_class_code           => l_event_class_code);
50525    --
50526    -- set accounting class
50527    --
50528    xla_ae_lines_pkg.SetAcctClass(
50529            p_accounting_class_code  => 'PO_PA_BURDENED'
50530          , p_ae_header_id           => l_ae_header_id
50531          );
50532 
50533    --
50534    -- set rounding class
50535    --
50536    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50537                       'PO_PA_BURDENED';
50541    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50538 
50539    --
50540    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50542    --
50543    -- bulk performance
50544    --
50545    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50546 
50547    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50548       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50549 
50550    -- 4955764
50551    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50552       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50553 
50554    -- 4458381 Public Sector Enh
50555    
50556    --
50557    -- set accounting attributes for the line type
50558    --
50559    l_entered_amt_idx := 40;
50560    l_accted_amt_idx  := 43;
50561    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
50562    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
50563    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
50564    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
50565    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
50566    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
50567    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
50568    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
50569    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
50570    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
50571    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
50572    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
50573    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
50574    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
50575    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
50576    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
50577    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
50578    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
50579    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
50580    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
50581    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
50582    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
50583    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
50584    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
50585    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
50586    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
50587    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
50588    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
50589    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
50590    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
50591    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
50592    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
50593    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
50594    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
50595    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
50596    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
50597    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
50598    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
50599    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
50600    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
50601    l_rec_acct_attrs.array_num_value(20)  := p_source_80;
50602    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
50603    l_rec_acct_attrs.array_char_value(21)  := p_source_81;
50604    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
50605    l_rec_acct_attrs.array_char_value(22)  := p_source_82;
50606    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
50607    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_83);
50608    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
50609    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_84);
50610    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
50611    l_rec_acct_attrs.array_char_value(25)  := p_source_85;
50612    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
50613    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
50614    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
50615    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
50616    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
50617    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
50618    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
50619    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
50620    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
50621    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
50622    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
50623    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
50624    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
50625    l_rec_acct_attrs.array_char_value(32)  := 
50626 xla_ae_sources_pkg.GetSystemSourceChar(
50627    p_source_code           => 'XLA_CURRENCY_CODE'
50628  , p_source_type_code      => 'Y'
50629  , p_source_application_id =>  602
50630 );
50631    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
50632    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
50633    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
50634    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
50635    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
50639    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
50636    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
50637    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
50638    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
50640    l_rec_acct_attrs.array_char_value(37)  := 
50641 xla_ae_sources_pkg.GetSystemSourceChar(
50642    p_source_code           => 'XLA_CURRENCY_CODE'
50643  , p_source_type_code      => 'Y'
50644  , p_source_application_id =>  602
50645 );
50646    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
50647    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
50648    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
50649    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
50650    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
50651    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
50652    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
50653    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
50654    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
50655    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
50656    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
50657    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
50658    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
50659    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
50660    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
50661    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
50662    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
50663    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
50664    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
50665    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
50666    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
50667    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
50668 
50669    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50670    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50671 
50672    ---------------------------------------------------------------------------------------------------------------
50673    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50674    ---------------------------------------------------------------------------------------------------------------
50675    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50676 
50677    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50678    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50679 
50680    IF xla_accounting_cache_pkg.GetValueChar
50681          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50682          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50683    AND l_bflow_method_code = 'PRIOR_ENTRY'
50684 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50685    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50686          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50687        )
50688    THEN
50689          xla_ae_lines_pkg.BflowUpgEntry
50690            (p_business_method_code    => l_bflow_method_code
50691            ,p_business_class_code     => l_bflow_class_code
50692            ,p_balance_type            => l_balance_type_code);
50693    ELSE
50694       NULL;
50695 XLA_AE_LINES_PKG.business_flow_validation(
50696                                 p_business_method_code     => l_bflow_method_code
50697                                ,p_business_class_code      => l_bflow_class_code
50698                                ,p_inherit_description_flag => l_inherit_desc_flag);
50699    END IF;
50700 
50701    --
50702    -- call analytical criteria
50703    --
50704    -- Inherited Analytical Criteria for business flow method of Prior Entry.
50705    --
50706    -- call description
50707    --
50708    -- No description or it is inherited.
50709    --
50710    -- call ADRs
50711    -- Bug 4922099
50712    --
50713    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50714         (NVL(l_actual_upg_option, 'N') = 'O') OR
50715         (NVL(l_enc_upg_option, 'N') = 'O')
50716       )
50717    THEN
50718    NULL;
50719    --
50720    --
50721    
50722    --
50723    --
50724    END IF;
50725    --
50726    -- Bug 4922099
50727    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50728           (NVL(l_enc_upg_option, 'N') = 'O')
50729         ) AND
50730         (l_bflow_method_code = 'PRIOR_ENTRY')
50731       )
50732    THEN
50733       IF
50734       --
50735       1 = 1
50736       --
50737       THEN
50738       xla_accounting_err_pkg.build_message
50739                                     (p_appli_s_name            => 'XLA'
50740                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50741                                     ,p_token_1                 => 'LINE_NUMBER'
50742                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50743                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50744                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50745                                                                              l_component_type
50746                                                                             ,l_component_code
50747                                                                             ,l_component_type_code
50748                                                                             ,l_component_appl_id
50752                                                                            )
50749                                                                             ,l_amb_context_code
50750                                                                             ,l_entity_code
50751                                                                             ,l_event_class_code
50753                                     ,p_token_3                 => 'OWNER'
50754                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50755                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50756                                                                           ,p_lookup_code    => l_component_type_code
50757                                                                          )
50758                                     ,p_token_4                 => 'PRODUCT_NAME'
50759                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50760                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50761                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50762                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50763                                     ,p_ae_header_id            =>  NULL
50764                                        );
50765 
50766         IF (C_LEVEL_ERROR>= g_log_level) THEN
50767                  trace
50768                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50769                       ,p_level    => C_LEVEL_ERROR
50770                       ,p_module   => l_log_module);
50771         END IF;
50772       END IF;
50773    END IF;
50774    --
50775    --
50776    ------------------------------------------------------------------------------------------------
50777    -- 4219869 Business Flow
50778    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50779    -- Prior Entry.  Currently, the following code is always generated.
50780    ------------------------------------------------------------------------------------------------
50781    -- No ValidateCurrentLine for business flow method of Prior Entry
50782 
50783    ------------------------------------------------------------------------------------
50784    -- 4219869 Business Flow
50785    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50786    ------------------------------------------------------------------------------------
50787    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50788 
50789    ----------------------------------------------------------------------------------
50790    -- 4219869 Business Flow
50791    -- Update journal entry status -- Need to generate this within IF <condition>
50792    ----------------------------------------------------------------------------------
50793    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50794          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50795          ,p_balance_type_code => l_balance_type_code
50796          );
50797 
50798    -------------------------------------------------------------------------------------------
50799    -- 4262811 - Generate the Accrual Reversal lines
50800    -------------------------------------------------------------------------------------------
50801    BEGIN
50802       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50803                               (g_array_event(p_event_id).array_value_num('header_index'));
50804       IF l_acc_rev_flag IS NULL THEN
50805          l_acc_rev_flag := 'N';
50806       END IF;
50807    EXCEPTION
50808       WHEN OTHERS THEN
50809          l_acc_rev_flag := 'N';
50810    END;
50811    --
50812    IF (l_acc_rev_flag = 'Y') THEN
50813 
50814        -- 4645092  ------------------------------------------------------------------------------
50815        -- To allow MPA report to determine if it should generate report process
50816        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50817        ------------------------------------------------------------------------------------------
50818 
50819        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50820        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50821 
50822        --
50823        -- Update the line information that should be overwritten
50824        --
50825        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50826                                          p_header_num   => 1);
50827        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50828 
50829        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50830 
50831        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50832           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50833        END IF;
50834 
50835       --
50836       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50837       --
50838       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50839           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50840       ELSE
50841           ---------------------------------------------------------------------------------------------------
50842           -- 4262811a Switch Sign
50843           ---------------------------------------------------------------------------------------------------
50844           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50845           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50846                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50850           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50847           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50848                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50849           -- 5132302
50851                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50852 
50853       END IF;
50854 
50855       -- 4955764
50856       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50857       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50858 
50859 
50860       XLA_AE_LINES_PKG.ValidateCurrentLine;
50861       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50862 
50863       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50864                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50865                ,p_balance_type_code => l_balance_type_code);
50866 
50867    END IF;
50868 
50869    -----------------------------------------------------------------------------------------
50870    -- 4262811 Multiperiod Accounting
50871    -----------------------------------------------------------------------------------------
50872      -- No MPA option is assigned.
50873 
50874 
50875 END IF;
50876 END IF;
50877 --
50878 
50879 --
50880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50881    trace
50882       (p_msg      => 'END of AcctLineType_102'
50883       ,p_level    => C_LEVEL_PROCEDURE
50884       ,p_module   => l_log_module);
50885 END IF;
50886 --
50887 EXCEPTION
50888   WHEN xla_exceptions_pkg.application_exception THEN
50889       RAISE;
50890   WHEN OTHERS THEN
50891        xla_exceptions_pkg.raise_message
50892            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_102');
50893 END AcctLineType_102;
50894 --
50895 
50896 ---------------------------------------
50897 --
50898 -- PRIVATE FUNCTION
50899 --         AcctLineType_103
50900 --
50901 ---------------------------------------
50902 PROCEDURE AcctLineType_103 (
50903   p_application_id        IN NUMBER
50904  ,p_event_id              IN NUMBER
50905  ,p_calculate_acctd_flag  IN VARCHAR2
50906  ,p_calculate_g_l_flag    IN VARCHAR2
50907  ,p_actual_flag           IN OUT VARCHAR2
50908  ,p_balance_type_code     OUT VARCHAR2
50909  ,p_gain_or_loss_ref      OUT VARCHAR2
50910  
50911 --Budget Code Combination ID
50912  , p_source_2            IN NUMBER
50913 --Cost CCID
50914  , p_source_3            IN NUMBER
50915 --Cost Clearing CCID
50916  , p_source_6            IN NUMBER
50917 --Reversing Line Flag
50918  , p_source_22            IN VARCHAR2
50919 --Actual Upgrade Credit Accounting Class
50920  , p_source_23            IN VARCHAR2
50921 --Entered Currency Code
50922  , p_source_25            IN VARCHAR2
50923 --Exchange Rate Date
50924  , p_source_27            IN DATE
50925 --Exchange Rate
50926  , p_source_28            IN NUMBER
50927 --Exchange Rate Type
50928  , p_source_29            IN VARCHAR2
50929 --Actual Upgrade Debit Accounting Class
50930  , p_source_30            IN VARCHAR2
50931 --Use Actuals Upgrade Attributes Flag
50932  , p_source_31            IN VARCHAR2
50933 --Expenditure Item ID
50934  , p_source_32            IN NUMBER
50935 --Cost Distribution Line Number
50936  , p_source_33            IN NUMBER
50937 --Line Type
50938  , p_source_34            IN VARCHAR2
50939  , p_source_34_meaning    IN VARCHAR2
50940 --Reversed Line Number
50941  , p_source_35            IN NUMBER
50942 --Entered Burdened Cost
50943  , p_source_44            IN NUMBER
50944 --Accounted Burdened Cost
50945  , p_source_45            IN NUMBER
50946 --Encumbrance Amount
50947  , p_source_46            IN NUMBER
50948 --Encumbrance Upgrade Credit Accounting Class
50949  , p_source_53            IN VARCHAR2
50950 --Encumbrance Upgrade Debit Accounting Class
50951  , p_source_54            IN VARCHAR2
50952 --Use Encumbrance Upgrade Attributes Flag
50953  , p_source_55            IN VARCHAR2
50954 --Encumbrance Type ID
50955  , p_source_56            IN NUMBER
50956 --Project Encumbrance Type ID
50957  , p_source_57            IN NUMBER
50958 --Document Type
50959  , p_source_70            IN VARCHAR2
50960  , p_source_70_meaning    IN VARCHAR2
50961 --Release ID
50962  , p_source_72            IN NUMBER
50963 --Contingent Worker Timecard Flag
50964  , p_source_73            IN VARCHAR2
50965 --Purchase Order Burden Applied to Application Identifier
50966  , p_source_80            IN NUMBER
50967 --Purchase Order Burden Applied to Distribution Type
50968  , p_source_81            IN VARCHAR2
50969 --Purchase Order Burden Applied to Entity Code
50970  , p_source_82            IN VARCHAR2
50971 --Purchase Order Burden Applied to First Distribution Identifier
50972  , p_source_83            IN NUMBER
50973 --Purchase Order Burden Applied to First System Transaction Identifier
50974  , p_source_84            IN NUMBER
50975 --Purchase Order Burden Applied to Second Distribution Identifier
50976  , p_source_85            IN VARCHAR2
50977 )
50978 IS
50979 
50980 l_component_type              VARCHAR2(80);
50981 l_component_code              VARCHAR2(30);
50982 l_component_type_code         VARCHAR2(1);
50983 l_component_appl_id           INTEGER;
50984 l_amb_context_code            VARCHAR2(30);
50985 l_entity_code                 VARCHAR2(30);
50986 l_event_class_code            VARCHAR2(30);
50987 l_ae_header_id                NUMBER;
50988 l_event_type_code             VARCHAR2(30);
50989 l_line_definition_code        VARCHAR2(30);
50990 l_line_definition_owner_code  VARCHAR2(1);
50991 --
50992 -- adr variables
50996 l_adr_accounting_coa_id       NUMBER;
50993 l_segment                     VARCHAR2(30);
50994 l_ccid                        NUMBER;
50995 l_adr_transaction_coa_id      NUMBER;
50997 l_adr_flexfield_segment_code  VARCHAR2(30);
50998 l_adr_flex_value_set_id       NUMBER;
50999 l_adr_value_type_code         VARCHAR2(30);
51000 l_adr_value_combination_id    NUMBER;
51001 l_adr_value_segment_code      VARCHAR2(30);
51002 
51003 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51004 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51005 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51006 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51007 
51008 -- 4262811 Variables ------------------------------------------------------------------------------------------
51009 l_entered_amt_idx             NUMBER;
51010 l_accted_amt_idx              NUMBER;
51011 l_acc_rev_flag                VARCHAR2(1);
51012 l_accrual_line_num            NUMBER;
51013 l_tmp_amt                     NUMBER;
51014 l_acc_rev_natural_side_code   VARCHAR2(1);
51015 
51016 l_num_entries                 NUMBER;
51017 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51018 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51019 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51020 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51021 l_recog_line_1                NUMBER;
51022 l_recog_line_2                NUMBER;
51023 
51024 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51025 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51026 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51027 
51028 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51029 
51030 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51031 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51032 
51033 ---------------------------------------------------------------------------------------------------------------
51034 
51035 
51036 --
51037 -- bulk performance
51038 --
51039 l_balance_type_code           VARCHAR2(1);
51040 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51041 l_log_module                  VARCHAR2(240);
51042 
51043 --
51044 -- Upgrade strategy
51045 --
51046 l_actual_upg_option           VARCHAR2(1);
51047 l_enc_upg_option           VARCHAR2(1);
51048 
51049 --
51050 BEGIN
51051 --
51052 IF g_log_enabled THEN
51053       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
51054 END IF;
51055 --
51056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51057 
51058       trace
51059          (p_msg      => 'BEGIN of AcctLineType_103'
51060          ,p_level    => C_LEVEL_PROCEDURE
51061          ,p_module   => l_log_module);
51062 
51063 END IF;
51064 --
51065 l_component_type             := 'AMB_JLT';
51066 l_component_code             := 'REL_PO_BURDEN_ENC';
51067 l_component_type_code        := 'S';
51068 l_component_appl_id          :=  275;
51069 l_amb_context_code           := 'DEFAULT';
51070 l_entity_code                := 'EXPENDITURES';
51071 l_event_class_code           := 'BURDEN_COST';
51072 l_event_type_code            := 'BURDEN_COST_ALL';
51073 l_line_definition_owner_code := 'S';
51074 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
51075 --
51076 l_balance_type_code          := 'E';
51077 l_segment                     := NULL;
51078 l_ccid                        := NULL;
51079 l_adr_transaction_coa_id      := NULL;
51080 l_adr_accounting_coa_id       := NULL;
51081 l_adr_flexfield_segment_code  := NULL;
51082 l_adr_flex_value_set_id       := NULL;
51083 l_adr_value_type_code         := NULL;
51084 l_adr_value_combination_id    := NULL;
51085 l_adr_value_segment_code      := NULL;
51086 
51087 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
51088 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
51089 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51090 l_budgetary_control_flag     := 'N';
51091 
51092 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51093 l_bflow_applied_to_amt       := NULL; -- 5132302
51094 l_entered_amt_idx            := NULL;          -- 4262811
51095 l_accted_amt_idx             := NULL;          -- 4262811
51096 l_acc_rev_flag               := NULL;          -- 4262811
51097 l_accrual_line_num           := NULL;          -- 4262811
51098 l_tmp_amt                    := NULL;          -- 4262811
51099 --
51100  
51101 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51102     l_balance_type_code <> 'B' THEN
51103 IF NVL(p_source_34,'
51104 ') =  'E' AND 
51105 NVL(p_source_70,'
51106 ') =  'PO' AND 
51107 p_source_72 IS NULL AND 
51108 NVL(p_source_73,'
51109 ') =  'N'
51110  THEN 
51111 
51112    --
51113    XLA_AE_LINES_PKG.SetNewLine;
51114 
51115    p_balance_type_code          := l_balance_type_code;
51116    -- set the flag so later we will know whether the gain loss line needs to be created
51117    
51118    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51119      p_actual_flag :='A';
51120    END IF;
51121 
51122    --
51123    -- bulk performance
51124    --
51125    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51126                                       p_header_num   => 0); -- 4262811
51127    --
51128    -- set accounting line options
51129    --
51130    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51131            p_natural_side_code          => 'C'
51135          , p_switch_side_flag           => 'N'
51132          , p_gain_or_loss_flag          => 'N'
51133          , p_gl_transfer_mode_code      => 'S'
51134          , p_acct_entry_type_code       => 'E'
51136          , p_merge_duplicate_code       => 'N'
51137          );
51138    --
51139    l_acc_rev_natural_side_code := 'D';  -- 4262811
51140    -- 
51141    --
51142    -- set accounting line type info
51143    --
51144    xla_ae_lines_pkg.SetAcctLineType
51145       (p_component_type             => l_component_type
51146       ,p_event_type_code            => l_event_type_code
51147       ,p_line_definition_owner_code => l_line_definition_owner_code
51148       ,p_line_definition_code       => l_line_definition_code
51149       ,p_accounting_line_code       => l_component_code
51150       ,p_accounting_line_type_code  => l_component_type_code
51151       ,p_accounting_line_appl_id    => l_component_appl_id
51152       ,p_amb_context_code           => l_amb_context_code
51153       ,p_entity_code                => l_entity_code
51154       ,p_event_class_code           => l_event_class_code);
51155    --
51156    -- set accounting class
51157    --
51158    xla_ae_lines_pkg.SetAcctClass(
51159            p_accounting_class_code  => 'PO_PA_BURDEN'
51160          , p_ae_header_id           => l_ae_header_id
51161          );
51162 
51163    --
51164    -- set rounding class
51165    --
51166    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51167                       'PO_PA_BURDEN';
51168 
51169    --
51170    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51171    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51172    --
51173    -- bulk performance
51174    --
51175    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51176 
51177    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51178       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51179 
51180    -- 4955764
51181    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51182       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51183 
51184    -- 4458381 Public Sector Enh
51185    
51186    --
51187    -- set accounting attributes for the line type
51188    --
51189    l_entered_amt_idx := 40;
51190    l_accted_amt_idx  := 42;
51191    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
51192    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
51193    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
51194    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
51195    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
51196    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
51197    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
51198    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
51199    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
51200    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
51201    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
51202    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
51203    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
51204    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
51205    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
51206    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
51207    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
51208    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
51209    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
51210    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
51211    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
51212    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
51213    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
51214    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
51215    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
51216    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
51217    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
51218    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
51219    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
51220    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
51221    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
51222    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
51223    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
51224    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
51225    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
51226    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
51227    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
51228    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
51229    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
51230    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
51231    l_rec_acct_attrs.array_num_value(20)  := p_source_80;
51232    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51233    l_rec_acct_attrs.array_char_value(21)  := p_source_81;
51234    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
51235    l_rec_acct_attrs.array_char_value(22)  := p_source_82;
51236    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
51237    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_83);
51238    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51239    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_84);
51243    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
51240    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
51241    l_rec_acct_attrs.array_char_value(25)  := p_source_85;
51242    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
51244    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
51245    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
51246    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
51247    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
51248    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
51249    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
51250    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
51251    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
51252    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
51253    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
51254    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
51255    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
51256    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
51257    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
51258    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
51259    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
51260    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
51261    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
51262    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
51263    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
51264    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
51265    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
51266    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
51267    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
51268    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
51269    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
51270    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
51271    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
51272    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
51273    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
51274    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
51275    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
51276    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
51277    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
51278    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
51279    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
51280    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
51281    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
51282    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
51283    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
51284    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
51285    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
51286 
51287    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51288    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51289 
51290    ---------------------------------------------------------------------------------------------------------------
51291    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51292    ---------------------------------------------------------------------------------------------------------------
51293    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51294 
51295    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51296    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51297 
51298    IF xla_accounting_cache_pkg.GetValueChar
51299          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51300          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51301    AND l_bflow_method_code = 'PRIOR_ENTRY'
51302 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51303    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51304          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51305        )
51306    THEN
51307          xla_ae_lines_pkg.BflowUpgEntry
51308            (p_business_method_code    => l_bflow_method_code
51309            ,p_business_class_code     => l_bflow_class_code
51310            ,p_balance_type            => l_balance_type_code);
51311    ELSE
51312       NULL;
51313 XLA_AE_LINES_PKG.business_flow_validation(
51314                                 p_business_method_code     => l_bflow_method_code
51315                                ,p_business_class_code      => l_bflow_class_code
51316                                ,p_inherit_description_flag => l_inherit_desc_flag);
51317    END IF;
51318 
51319    --
51320    -- call analytical criteria
51321    --
51322    -- Inherited Analytical Criteria for business flow method of Prior Entry.
51323    --
51324    -- call description
51325    --
51326    -- No description or it is inherited.
51327    --
51328    -- call ADRs
51329    -- Bug 4922099
51330    --
51331    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51332         (NVL(l_actual_upg_option, 'N') = 'O') OR
51333         (NVL(l_enc_upg_option, 'N') = 'O')
51334       )
51335    THEN
51336    NULL;
51337    --
51338    --
51339    
51340    --
51341    --
51342    END IF;
51343    --
51344    -- Bug 4922099
51345    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51346           (NVL(l_enc_upg_option, 'N') = 'O')
51347         ) AND
51348         (l_bflow_method_code = 'PRIOR_ENTRY')
51349       )
51353       1 = 1
51350    THEN
51351       IF
51352       --
51354       --
51355       THEN
51356       xla_accounting_err_pkg.build_message
51357                                     (p_appli_s_name            => 'XLA'
51358                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51359                                     ,p_token_1                 => 'LINE_NUMBER'
51360                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51361                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51362                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51363                                                                              l_component_type
51364                                                                             ,l_component_code
51365                                                                             ,l_component_type_code
51366                                                                             ,l_component_appl_id
51367                                                                             ,l_amb_context_code
51368                                                                             ,l_entity_code
51369                                                                             ,l_event_class_code
51370                                                                            )
51371                                     ,p_token_3                 => 'OWNER'
51372                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51373                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51374                                                                           ,p_lookup_code    => l_component_type_code
51375                                                                          )
51376                                     ,p_token_4                 => 'PRODUCT_NAME'
51377                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51378                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51379                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51380                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51381                                     ,p_ae_header_id            =>  NULL
51382                                        );
51383 
51384         IF (C_LEVEL_ERROR>= g_log_level) THEN
51385                  trace
51386                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51387                       ,p_level    => C_LEVEL_ERROR
51388                       ,p_module   => l_log_module);
51389         END IF;
51390       END IF;
51391    END IF;
51392    --
51393    --
51394    ------------------------------------------------------------------------------------------------
51395    -- 4219869 Business Flow
51396    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51397    -- Prior Entry.  Currently, the following code is always generated.
51398    ------------------------------------------------------------------------------------------------
51399    -- No ValidateCurrentLine for business flow method of Prior Entry
51400 
51401    ------------------------------------------------------------------------------------
51402    -- 4219869 Business Flow
51403    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51404    ------------------------------------------------------------------------------------
51405    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51406 
51407    ----------------------------------------------------------------------------------
51408    -- 4219869 Business Flow
51409    -- Update journal entry status -- Need to generate this within IF <condition>
51410    ----------------------------------------------------------------------------------
51411    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51412          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51413          ,p_balance_type_code => l_balance_type_code
51414          );
51415 
51416    -------------------------------------------------------------------------------------------
51417    -- 4262811 - Generate the Accrual Reversal lines
51418    -------------------------------------------------------------------------------------------
51419    BEGIN
51420       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51421                               (g_array_event(p_event_id).array_value_num('header_index'));
51422       IF l_acc_rev_flag IS NULL THEN
51423          l_acc_rev_flag := 'N';
51424       END IF;
51425    EXCEPTION
51426       WHEN OTHERS THEN
51427          l_acc_rev_flag := 'N';
51428    END;
51429    --
51430    IF (l_acc_rev_flag = 'Y') THEN
51431 
51432        -- 4645092  ------------------------------------------------------------------------------
51433        -- To allow MPA report to determine if it should generate report process
51434        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51435        ------------------------------------------------------------------------------------------
51436 
51437        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51438        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51439 
51440        --
51441        -- Update the line information that should be overwritten
51442        --
51443        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51444                                          p_header_num   => 1);
51445        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51446 
51447        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51448 
51449        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51453       --
51450           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51451        END IF;
51452 
51454       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51455       --
51456       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51457           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51458       ELSE
51459           ---------------------------------------------------------------------------------------------------
51460           -- 4262811a Switch Sign
51461           ---------------------------------------------------------------------------------------------------
51462           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51463           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51464                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51465           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51466                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51467           -- 5132302
51468           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51469                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51470 
51471       END IF;
51472 
51473       -- 4955764
51474       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51475       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51476 
51477 
51478       XLA_AE_LINES_PKG.ValidateCurrentLine;
51479       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51480 
51481       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51482                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51483                ,p_balance_type_code => l_balance_type_code);
51484 
51485    END IF;
51486 
51487    -----------------------------------------------------------------------------------------
51488    -- 4262811 Multiperiod Accounting
51489    -----------------------------------------------------------------------------------------
51490      -- No MPA option is assigned.
51491 
51492 
51493 END IF;
51494 END IF;
51495 --
51496 
51497 --
51498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51499    trace
51500       (p_msg      => 'END of AcctLineType_103'
51501       ,p_level    => C_LEVEL_PROCEDURE
51502       ,p_module   => l_log_module);
51503 END IF;
51504 --
51505 EXCEPTION
51506   WHEN xla_exceptions_pkg.application_exception THEN
51507       RAISE;
51508   WHEN OTHERS THEN
51509        xla_exceptions_pkg.raise_message
51510            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_103');
51511 END AcctLineType_103;
51512 --
51513 
51514 ---------------------------------------
51515 --
51516 -- PRIVATE FUNCTION
51517 --         AcctLineType_104
51518 --
51519 ---------------------------------------
51520 PROCEDURE AcctLineType_104 (
51521   p_application_id        IN NUMBER
51522  ,p_event_id              IN NUMBER
51523  ,p_calculate_acctd_flag  IN VARCHAR2
51524  ,p_calculate_g_l_flag    IN VARCHAR2
51525  ,p_actual_flag           IN OUT VARCHAR2
51526  ,p_balance_type_code     OUT VARCHAR2
51527  ,p_gain_or_loss_ref      OUT VARCHAR2
51528  
51529 --Budget Code Combination ID
51530  , p_source_2            IN NUMBER
51531 --Cost CCID
51532  , p_source_3            IN NUMBER
51533 --Cost Clearing CCID
51534  , p_source_6            IN NUMBER
51535 --Reversing Line Flag
51536  , p_source_22            IN VARCHAR2
51537 --Actual Upgrade Credit Accounting Class
51538  , p_source_23            IN VARCHAR2
51539 --Entered Currency Code
51540  , p_source_25            IN VARCHAR2
51541 --Exchange Rate Date
51542  , p_source_27            IN DATE
51543 --Exchange Rate
51544  , p_source_28            IN NUMBER
51545 --Exchange Rate Type
51546  , p_source_29            IN VARCHAR2
51547 --Actual Upgrade Debit Accounting Class
51548  , p_source_30            IN VARCHAR2
51549 --Use Actuals Upgrade Attributes Flag
51550  , p_source_31            IN VARCHAR2
51551 --Expenditure Item ID
51552  , p_source_32            IN NUMBER
51553 --Cost Distribution Line Number
51554  , p_source_33            IN NUMBER
51555 --Line Type
51556  , p_source_34            IN VARCHAR2
51557  , p_source_34_meaning    IN VARCHAR2
51558 --Reversed Line Number
51559  , p_source_35            IN NUMBER
51560 --System Linkage Function
51561  , p_source_37            IN VARCHAR2
51562 --Entered Burdened Cost
51563  , p_source_44            IN NUMBER
51564 --Accounted Burdened Cost
51565  , p_source_45            IN NUMBER
51566 --Encumbrance Amount
51567  , p_source_46            IN NUMBER
51568 --Project Encumbrance Applied to Application Identifier
51569  , p_source_47            IN NUMBER
51570 --Project Encumbrance Applied to Distribution Type
51571  , p_source_48            IN VARCHAR2
51572 --Project Encumbrance Applied to Entity Code
51573  , p_source_49            IN VARCHAR2
51574 --Project Encumbrance Applied to First Distribution ID
51575  , p_source_50            IN NUMBER
51576 --Project Encumbrance Applied to First System Transaction ID
51577  , p_source_51            IN NUMBER
51578 --Project Encumbrance Applied to Second Distribution ID
51579  , p_source_52            IN VARCHAR2
51580 --Encumbrance Upgrade Debit Accounting Class
51581  , p_source_54            IN VARCHAR2
51582 --Use Encumbrance Upgrade Attributes Flag
51583  , p_source_55            IN VARCHAR2
51587  , p_source_57            IN NUMBER
51584 --Encumbrance Type ID
51585  , p_source_56            IN NUMBER
51586 --Project Encumbrance Type ID
51588 --Contingent Worker Timecard Flag
51589  , p_source_73            IN VARCHAR2
51590 --Encumbrance Accounting Enabled Flag
51591  , p_source_86            IN VARCHAR2
51592 --Liquidate Encumbrance Flag
51593  , p_source_87            IN VARCHAR2
51594 )
51595 IS
51596 
51597 l_component_type              VARCHAR2(80);
51598 l_component_code              VARCHAR2(30);
51599 l_component_type_code         VARCHAR2(1);
51600 l_component_appl_id           INTEGER;
51601 l_amb_context_code            VARCHAR2(30);
51602 l_entity_code                 VARCHAR2(30);
51603 l_event_class_code            VARCHAR2(30);
51604 l_ae_header_id                NUMBER;
51605 l_event_type_code             VARCHAR2(30);
51606 l_line_definition_code        VARCHAR2(30);
51607 l_line_definition_owner_code  VARCHAR2(1);
51608 --
51609 -- adr variables
51610 l_segment                     VARCHAR2(30);
51611 l_ccid                        NUMBER;
51612 l_adr_transaction_coa_id      NUMBER;
51613 l_adr_accounting_coa_id       NUMBER;
51614 l_adr_flexfield_segment_code  VARCHAR2(30);
51615 l_adr_flex_value_set_id       NUMBER;
51616 l_adr_value_type_code         VARCHAR2(30);
51617 l_adr_value_combination_id    NUMBER;
51618 l_adr_value_segment_code      VARCHAR2(30);
51619 
51620 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51621 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51622 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51623 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51624 
51625 -- 4262811 Variables ------------------------------------------------------------------------------------------
51626 l_entered_amt_idx             NUMBER;
51627 l_accted_amt_idx              NUMBER;
51628 l_acc_rev_flag                VARCHAR2(1);
51629 l_accrual_line_num            NUMBER;
51630 l_tmp_amt                     NUMBER;
51631 l_acc_rev_natural_side_code   VARCHAR2(1);
51632 
51633 l_num_entries                 NUMBER;
51634 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51635 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51636 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51637 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51638 l_recog_line_1                NUMBER;
51639 l_recog_line_2                NUMBER;
51640 
51641 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51642 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51643 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51644 
51645 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51646 
51647 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51648 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51649 
51650 ---------------------------------------------------------------------------------------------------------------
51651 
51652 
51653 --
51654 -- bulk performance
51655 --
51656 l_balance_type_code           VARCHAR2(1);
51657 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51658 l_log_module                  VARCHAR2(240);
51659 
51660 --
51661 -- Upgrade strategy
51662 --
51663 l_actual_upg_option           VARCHAR2(1);
51664 l_enc_upg_option           VARCHAR2(1);
51665 
51666 --
51667 BEGIN
51668 --
51669 IF g_log_enabled THEN
51670       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
51671 END IF;
51672 --
51673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51674 
51675       trace
51676          (p_msg      => 'BEGIN of AcctLineType_104'
51677          ,p_level    => C_LEVEL_PROCEDURE
51678          ,p_module   => l_log_module);
51679 
51680 END IF;
51681 --
51682 l_component_type             := 'AMB_JLT';
51683 l_component_code             := 'REL_PROJ_ENC';
51684 l_component_type_code        := 'S';
51685 l_component_appl_id          :=  275;
51686 l_amb_context_code           := 'DEFAULT';
51687 l_entity_code                := 'EXPENDITURES';
51688 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
51689 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
51690 l_line_definition_owner_code := 'S';
51691 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
51692 --
51693 l_balance_type_code          := 'E';
51694 l_segment                     := NULL;
51695 l_ccid                        := NULL;
51696 l_adr_transaction_coa_id      := NULL;
51697 l_adr_accounting_coa_id       := NULL;
51698 l_adr_flexfield_segment_code  := NULL;
51699 l_adr_flex_value_set_id       := NULL;
51700 l_adr_value_type_code         := NULL;
51701 l_adr_value_combination_id    := NULL;
51702 l_adr_value_segment_code      := NULL;
51703 
51704 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
51705 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
51706 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51707 l_budgetary_control_flag     := 'N';
51708 
51709 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51710 l_bflow_applied_to_amt       := NULL; -- 5132302
51711 l_entered_amt_idx            := NULL;          -- 4262811
51712 l_accted_amt_idx             := NULL;          -- 4262811
51713 l_acc_rev_flag               := NULL;          -- 4262811
51714 l_accrual_line_num           := NULL;          -- 4262811
51715 l_tmp_amt                    := NULL;          -- 4262811
51716 --
51717  
51718 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51719     l_balance_type_code <> 'B' THEN
51723 ') =  'Y' AND 
51720 IF NVL(p_source_34,'
51721 ') =  'D' AND 
51722 NVL(p_source_86,'
51724 ((NVL(p_source_37,'
51725 ') =  'ST' OR 
51726 NVL(p_source_37,'
51727 ') =  'OT' AND 
51728 NVL(p_source_73,'
51729 ') =  'Y') OR 
51730 NVL(p_source_37,'
51731 ') =  'VI') AND 
51732 NVL(p_source_87,'
51733 ') =  'Y'
51734  THEN 
51735 
51736    --
51737    XLA_AE_LINES_PKG.SetNewLine;
51738 
51739    p_balance_type_code          := l_balance_type_code;
51740    -- set the flag so later we will know whether the gain loss line needs to be created
51741    
51742    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51743      p_actual_flag :='A';
51744    END IF;
51745 
51746    --
51747    -- bulk performance
51748    --
51749    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51750                                       p_header_num   => 0); -- 4262811
51751    --
51752    -- set accounting line options
51753    --
51754    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51755            p_natural_side_code          => 'C'
51756          , p_gain_or_loss_flag          => 'N'
51757          , p_gl_transfer_mode_code      => 'S'
51758          , p_acct_entry_type_code       => 'E'
51759          , p_switch_side_flag           => 'N'
51760          , p_merge_duplicate_code       => 'N'
51761          );
51762    --
51763    l_acc_rev_natural_side_code := 'D';  -- 4262811
51764    -- 
51765    --
51766    -- set accounting line type info
51767    --
51768    xla_ae_lines_pkg.SetAcctLineType
51769       (p_component_type             => l_component_type
51770       ,p_event_type_code            => l_event_type_code
51771       ,p_line_definition_owner_code => l_line_definition_owner_code
51772       ,p_line_definition_code       => l_line_definition_code
51773       ,p_accounting_line_code       => l_component_code
51774       ,p_accounting_line_type_code  => l_component_type_code
51775       ,p_accounting_line_appl_id    => l_component_appl_id
51776       ,p_amb_context_code           => l_amb_context_code
51777       ,p_entity_code                => l_entity_code
51778       ,p_event_class_code           => l_event_class_code);
51779    --
51780    -- set accounting class
51781    --
51782    xla_ae_lines_pkg.SetAcctClass(
51783            p_accounting_class_code  => 'PA_BUDGET_ENC'
51784          , p_ae_header_id           => l_ae_header_id
51785          );
51786 
51787    --
51788    -- set rounding class
51789    --
51790    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51791                       'PA_BUDGET_ENC';
51792 
51793    --
51794    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51795    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51796    --
51797    -- bulk performance
51798    --
51799    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51800 
51801    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51802       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51803 
51804    -- 4955764
51805    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51806       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51807 
51808    -- 4458381 Public Sector Enh
51809    
51810    --
51811    -- set accounting attributes for the line type
51812    --
51813    l_entered_amt_idx := 35;
51814    l_accted_amt_idx  := 37;
51815    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
51816    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
51817    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
51818    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
51819    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
51820    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
51821    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
51822    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
51823    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
51824    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
51825    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
51826    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
51827    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
51828    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
51829    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
51830    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
51831    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
51832    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
51833    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
51834    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
51835    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
51836    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
51837    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
51838    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
51839    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
51840    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
51841    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
51842    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
51843    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
51844    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
51845    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
51846    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
51850    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
51847    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
51848    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
51849    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
51851    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
51852    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
51853    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
51854    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
51855    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
51856    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51857    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
51858    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
51859    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
51860    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
51861    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
51862    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51863    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
51864    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
51865    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
51866    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
51867    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
51868    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
51869    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
51870    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
51871    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
51872    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
51873    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
51874    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
51875    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
51876    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
51877    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
51878    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
51879    l_rec_acct_attrs.array_char_value(32)  := 
51880 xla_ae_sources_pkg.GetSystemSourceChar(
51881    p_source_code           => 'XLA_CURRENCY_CODE'
51882  , p_source_type_code      => 'Y'
51883  , p_source_application_id =>  602
51884 );
51885    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
51886    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
51887    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
51888    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
51889    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
51890    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
51891    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
51892    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
51893    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
51894    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
51895    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
51896    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
51897    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
51898    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
51899    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
51900    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
51901    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
51902    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
51903    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
51904    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
51905 
51906    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51907    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51908 
51909    ---------------------------------------------------------------------------------------------------------------
51910    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51911    ---------------------------------------------------------------------------------------------------------------
51912    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51913 
51914    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51915    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51916 
51917    IF xla_accounting_cache_pkg.GetValueChar
51918          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51919          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51920    AND l_bflow_method_code = 'PRIOR_ENTRY'
51921 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51922    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51923          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51924        )
51925    THEN
51926          xla_ae_lines_pkg.BflowUpgEntry
51927            (p_business_method_code    => l_bflow_method_code
51928            ,p_business_class_code     => l_bflow_class_code
51929            ,p_balance_type            => l_balance_type_code);
51930    ELSE
51931       NULL;
51932 XLA_AE_LINES_PKG.business_flow_validation(
51933                                 p_business_method_code     => l_bflow_method_code
51934                                ,p_business_class_code      => l_bflow_class_code
51935                                ,p_inherit_description_flag => l_inherit_desc_flag);
51936    END IF;
51937 
51938    --
51939    -- call analytical criteria
51940    --
51941    -- Inherited Analytical Criteria for business flow method of Prior Entry.
51942    --
51943    -- call description
51944    --
51948    -- Bug 4922099
51945    -- No description or it is inherited.
51946    --
51947    -- call ADRs
51949    --
51950    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51951         (NVL(l_actual_upg_option, 'N') = 'O') OR
51952         (NVL(l_enc_upg_option, 'N') = 'O')
51953       )
51954    THEN
51955    NULL;
51956    --
51957    --
51958    
51959    --
51960    --
51961    END IF;
51962    --
51963    -- Bug 4922099
51964    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51965           (NVL(l_enc_upg_option, 'N') = 'O')
51966         ) AND
51967         (l_bflow_method_code = 'PRIOR_ENTRY')
51968       )
51969    THEN
51970       IF
51971       --
51972       1 = 1
51973       --
51974       THEN
51975       xla_accounting_err_pkg.build_message
51976                                     (p_appli_s_name            => 'XLA'
51977                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51978                                     ,p_token_1                 => 'LINE_NUMBER'
51979                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51980                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51981                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51982                                                                              l_component_type
51983                                                                             ,l_component_code
51984                                                                             ,l_component_type_code
51985                                                                             ,l_component_appl_id
51986                                                                             ,l_amb_context_code
51987                                                                             ,l_entity_code
51988                                                                             ,l_event_class_code
51989                                                                            )
51990                                     ,p_token_3                 => 'OWNER'
51991                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51992                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51993                                                                           ,p_lookup_code    => l_component_type_code
51994                                                                          )
51995                                     ,p_token_4                 => 'PRODUCT_NAME'
51996                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51997                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51998                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51999                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52000                                     ,p_ae_header_id            =>  NULL
52001                                        );
52002 
52003         IF (C_LEVEL_ERROR>= g_log_level) THEN
52004                  trace
52005                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52006                       ,p_level    => C_LEVEL_ERROR
52007                       ,p_module   => l_log_module);
52008         END IF;
52009       END IF;
52010    END IF;
52011    --
52012    --
52013    ------------------------------------------------------------------------------------------------
52014    -- 4219869 Business Flow
52015    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52016    -- Prior Entry.  Currently, the following code is always generated.
52017    ------------------------------------------------------------------------------------------------
52018    -- No ValidateCurrentLine for business flow method of Prior Entry
52019 
52020    ------------------------------------------------------------------------------------
52021    -- 4219869 Business Flow
52022    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52023    ------------------------------------------------------------------------------------
52024    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52025 
52026    ----------------------------------------------------------------------------------
52027    -- 4219869 Business Flow
52028    -- Update journal entry status -- Need to generate this within IF <condition>
52029    ----------------------------------------------------------------------------------
52030    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52031          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52032          ,p_balance_type_code => l_balance_type_code
52033          );
52034 
52035    -------------------------------------------------------------------------------------------
52036    -- 4262811 - Generate the Accrual Reversal lines
52037    -------------------------------------------------------------------------------------------
52038    BEGIN
52039       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52040                               (g_array_event(p_event_id).array_value_num('header_index'));
52041       IF l_acc_rev_flag IS NULL THEN
52042          l_acc_rev_flag := 'N';
52043       END IF;
52044    EXCEPTION
52045       WHEN OTHERS THEN
52046          l_acc_rev_flag := 'N';
52047    END;
52048    --
52049    IF (l_acc_rev_flag = 'Y') THEN
52050 
52051        -- 4645092  ------------------------------------------------------------------------------
52052        -- To allow MPA report to determine if it should generate report process
52053        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52057        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52054        ------------------------------------------------------------------------------------------
52055 
52056        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52058 
52059        --
52060        -- Update the line information that should be overwritten
52061        --
52062        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52063                                          p_header_num   => 1);
52064        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52065 
52066        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52067 
52068        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52069           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52070        END IF;
52071 
52072       --
52073       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52074       --
52075       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52076           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52077       ELSE
52078           ---------------------------------------------------------------------------------------------------
52079           -- 4262811a Switch Sign
52080           ---------------------------------------------------------------------------------------------------
52081           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52082           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52083                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52084           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52085                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52086           -- 5132302
52087           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52088                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52089 
52090       END IF;
52091 
52092       -- 4955764
52093       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52094       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52095 
52096 
52097       XLA_AE_LINES_PKG.ValidateCurrentLine;
52098       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52099 
52100       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52101                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52102                ,p_balance_type_code => l_balance_type_code);
52103 
52104    END IF;
52105 
52106    -----------------------------------------------------------------------------------------
52107    -- 4262811 Multiperiod Accounting
52108    -----------------------------------------------------------------------------------------
52109      -- No MPA option is assigned.
52110 
52111 
52112 END IF;
52113 END IF;
52114 --
52115 
52116 --
52117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52118    trace
52119       (p_msg      => 'END of AcctLineType_104'
52120       ,p_level    => C_LEVEL_PROCEDURE
52121       ,p_module   => l_log_module);
52122 END IF;
52123 --
52124 EXCEPTION
52125   WHEN xla_exceptions_pkg.application_exception THEN
52126       RAISE;
52127   WHEN OTHERS THEN
52128        xla_exceptions_pkg.raise_message
52129            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_104');
52130 END AcctLineType_104;
52131 --
52132 
52133 ---------------------------------------
52134 --
52135 -- PRIVATE FUNCTION
52136 --         AcctLineType_105
52137 --
52138 ---------------------------------------
52139 PROCEDURE AcctLineType_105 (
52140   p_application_id        IN NUMBER
52141  ,p_event_id              IN NUMBER
52142  ,p_calculate_acctd_flag  IN VARCHAR2
52143  ,p_calculate_g_l_flag    IN VARCHAR2
52144  ,p_actual_flag           IN OUT VARCHAR2
52145  ,p_balance_type_code     OUT VARCHAR2
52146  ,p_gain_or_loss_ref      OUT VARCHAR2
52147  
52148 --Budget Code Combination ID
52149  , p_source_2            IN NUMBER
52150 --Cost CCID
52151  , p_source_3            IN NUMBER
52152 --Cost Clearing CCID
52153  , p_source_6            IN NUMBER
52154 --Reversing Line Flag
52155  , p_source_22            IN VARCHAR2
52156 --Actual Upgrade Credit Accounting Class
52157  , p_source_23            IN VARCHAR2
52158 --Entered Currency Code
52159  , p_source_25            IN VARCHAR2
52160 --Exchange Rate Date
52161  , p_source_27            IN DATE
52162 --Exchange Rate
52163  , p_source_28            IN NUMBER
52164 --Exchange Rate Type
52165  , p_source_29            IN VARCHAR2
52166 --Actual Upgrade Debit Accounting Class
52167  , p_source_30            IN VARCHAR2
52168 --Use Actuals Upgrade Attributes Flag
52169  , p_source_31            IN VARCHAR2
52170 --Expenditure Item ID
52171  , p_source_32            IN NUMBER
52172 --Cost Distribution Line Number
52173  , p_source_33            IN NUMBER
52174 --Line Type
52175  , p_source_34            IN VARCHAR2
52176  , p_source_34_meaning    IN VARCHAR2
52177 --Reversed Line Number
52178  , p_source_35            IN NUMBER
52179 --System Linkage Function
52180  , p_source_37            IN VARCHAR2
52181 --Entered Burdened Cost
52182  , p_source_44            IN NUMBER
52183 --Accounted Burdened Cost
52184  , p_source_45            IN NUMBER
52185 --Encumbrance Amount
52186  , p_source_46            IN NUMBER
52190  , p_source_48            IN VARCHAR2
52187 --Project Encumbrance Applied to Application Identifier
52188  , p_source_47            IN NUMBER
52189 --Project Encumbrance Applied to Distribution Type
52191 --Project Encumbrance Applied to Entity Code
52192  , p_source_49            IN VARCHAR2
52193 --Project Encumbrance Applied to First Distribution ID
52194  , p_source_50            IN NUMBER
52195 --Project Encumbrance Applied to First System Transaction ID
52196  , p_source_51            IN NUMBER
52197 --Project Encumbrance Applied to Second Distribution ID
52198  , p_source_52            IN VARCHAR2
52199 --Encumbrance Upgrade Credit Accounting Class
52200  , p_source_53            IN VARCHAR2
52201 --Encumbrance Upgrade Debit Accounting Class
52202  , p_source_54            IN VARCHAR2
52203 --Use Encumbrance Upgrade Attributes Flag
52204  , p_source_55            IN VARCHAR2
52205 --Encumbrance Type ID
52206  , p_source_56            IN NUMBER
52207 --Project Encumbrance Type ID
52208  , p_source_57            IN NUMBER
52209 --Encumbrance Accounting Enabled Flag
52210  , p_source_86            IN VARCHAR2
52211 --Liquidate Encumbrance Flag
52212  , p_source_87            IN VARCHAR2
52213 )
52214 IS
52215 
52216 l_component_type              VARCHAR2(80);
52217 l_component_code              VARCHAR2(30);
52218 l_component_type_code         VARCHAR2(1);
52219 l_component_appl_id           INTEGER;
52220 l_amb_context_code            VARCHAR2(30);
52221 l_entity_code                 VARCHAR2(30);
52222 l_event_class_code            VARCHAR2(30);
52223 l_ae_header_id                NUMBER;
52224 l_event_type_code             VARCHAR2(30);
52225 l_line_definition_code        VARCHAR2(30);
52226 l_line_definition_owner_code  VARCHAR2(1);
52227 --
52228 -- adr variables
52229 l_segment                     VARCHAR2(30);
52230 l_ccid                        NUMBER;
52231 l_adr_transaction_coa_id      NUMBER;
52232 l_adr_accounting_coa_id       NUMBER;
52233 l_adr_flexfield_segment_code  VARCHAR2(30);
52234 l_adr_flex_value_set_id       NUMBER;
52235 l_adr_value_type_code         VARCHAR2(30);
52236 l_adr_value_combination_id    NUMBER;
52237 l_adr_value_segment_code      VARCHAR2(30);
52238 
52239 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52240 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52241 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52242 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52243 
52244 -- 4262811 Variables ------------------------------------------------------------------------------------------
52245 l_entered_amt_idx             NUMBER;
52246 l_accted_amt_idx              NUMBER;
52247 l_acc_rev_flag                VARCHAR2(1);
52248 l_accrual_line_num            NUMBER;
52249 l_tmp_amt                     NUMBER;
52250 l_acc_rev_natural_side_code   VARCHAR2(1);
52251 
52252 l_num_entries                 NUMBER;
52253 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52254 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52255 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52256 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52257 l_recog_line_1                NUMBER;
52258 l_recog_line_2                NUMBER;
52259 
52260 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52261 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52262 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52263 
52264 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52265 
52266 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52267 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52268 
52269 ---------------------------------------------------------------------------------------------------------------
52270 
52271 
52272 --
52273 -- bulk performance
52274 --
52275 l_balance_type_code           VARCHAR2(1);
52276 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52277 l_log_module                  VARCHAR2(240);
52278 
52279 --
52280 -- Upgrade strategy
52281 --
52282 l_actual_upg_option           VARCHAR2(1);
52283 l_enc_upg_option           VARCHAR2(1);
52284 
52285 --
52286 BEGIN
52287 --
52288 IF g_log_enabled THEN
52289       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
52290 END IF;
52291 --
52292 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52293 
52294       trace
52295          (p_msg      => 'BEGIN of AcctLineType_105'
52296          ,p_level    => C_LEVEL_PROCEDURE
52297          ,p_module   => l_log_module);
52298 
52299 END IF;
52300 --
52301 l_component_type             := 'AMB_JLT';
52302 l_component_code             := 'REL_PROJ_ENC';
52303 l_component_type_code        := 'S';
52304 l_component_appl_id          :=  275;
52305 l_amb_context_code           := 'DEFAULT';
52306 l_entity_code                := 'EXPENDITURES';
52307 l_event_class_code           := 'BURDEN_COST';
52308 l_event_type_code            := 'BURDEN_COST_ALL';
52309 l_line_definition_owner_code := 'S';
52310 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
52311 --
52312 l_balance_type_code          := 'E';
52313 l_segment                     := NULL;
52314 l_ccid                        := NULL;
52315 l_adr_transaction_coa_id      := NULL;
52316 l_adr_accounting_coa_id       := NULL;
52317 l_adr_flexfield_segment_code  := NULL;
52318 l_adr_flex_value_set_id       := NULL;
52319 l_adr_value_type_code         := NULL;
52320 l_adr_value_combination_id    := NULL;
52321 l_adr_value_segment_code      := NULL;
52322 
52323 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
52327 
52324 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
52325 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52326 l_budgetary_control_flag     := 'N';
52328 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52329 l_bflow_applied_to_amt       := NULL; -- 5132302
52330 l_entered_amt_idx            := NULL;          -- 4262811
52331 l_accted_amt_idx             := NULL;          -- 4262811
52332 l_acc_rev_flag               := NULL;          -- 4262811
52333 l_accrual_line_num           := NULL;          -- 4262811
52334 l_tmp_amt                    := NULL;          -- 4262811
52335 --
52336  
52337 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52338     l_balance_type_code <> 'B' THEN
52339 IF NVL(p_source_34,'
52340 ') =  'R' AND 
52341 NVL(p_source_86,'
52342 ') =  'Y' AND 
52343 NVL(p_source_37,'
52344 ') =  'BTC' AND 
52345 NVL(p_source_87,'
52346 ') =  'Y'
52347  THEN 
52348 
52349    --
52350    XLA_AE_LINES_PKG.SetNewLine;
52351 
52352    p_balance_type_code          := l_balance_type_code;
52353    -- set the flag so later we will know whether the gain loss line needs to be created
52354    
52355    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52356      p_actual_flag :='A';
52357    END IF;
52358 
52359    --
52360    -- bulk performance
52361    --
52362    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52363                                       p_header_num   => 0); -- 4262811
52364    --
52365    -- set accounting line options
52366    --
52367    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52368            p_natural_side_code          => 'C'
52369          , p_gain_or_loss_flag          => 'N'
52370          , p_gl_transfer_mode_code      => 'S'
52371          , p_acct_entry_type_code       => 'E'
52372          , p_switch_side_flag           => 'N'
52373          , p_merge_duplicate_code       => 'N'
52374          );
52375    --
52376    l_acc_rev_natural_side_code := 'D';  -- 4262811
52377    -- 
52378    --
52379    -- set accounting line type info
52380    --
52381    xla_ae_lines_pkg.SetAcctLineType
52382       (p_component_type             => l_component_type
52383       ,p_event_type_code            => l_event_type_code
52384       ,p_line_definition_owner_code => l_line_definition_owner_code
52385       ,p_line_definition_code       => l_line_definition_code
52386       ,p_accounting_line_code       => l_component_code
52387       ,p_accounting_line_type_code  => l_component_type_code
52388       ,p_accounting_line_appl_id    => l_component_appl_id
52389       ,p_amb_context_code           => l_amb_context_code
52390       ,p_entity_code                => l_entity_code
52391       ,p_event_class_code           => l_event_class_code);
52392    --
52393    -- set accounting class
52394    --
52395    xla_ae_lines_pkg.SetAcctClass(
52396            p_accounting_class_code  => 'PA_BUDGET_ENC'
52397          , p_ae_header_id           => l_ae_header_id
52398          );
52399 
52400    --
52401    -- set rounding class
52402    --
52403    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52404                       'PA_BUDGET_ENC';
52405 
52406    --
52407    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52408    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52409    --
52410    -- bulk performance
52411    --
52412    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52413 
52414    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52415       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52416 
52417    -- 4955764
52418    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52419       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52420 
52421    -- 4458381 Public Sector Enh
52422    
52423    --
52424    -- set accounting attributes for the line type
52425    --
52426    l_entered_amt_idx := 40;
52427    l_accted_amt_idx  := 42;
52428    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
52429    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
52430    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
52431    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
52432    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
52433    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
52434    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
52435    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
52436    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
52437    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
52438    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
52439    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
52440    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
52441    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
52442    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
52443    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
52444    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
52445    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
52446    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
52447    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
52448    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
52449    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
52450    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
52454    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
52451    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
52452    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
52453    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
52455    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
52456    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
52457    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
52458    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
52459    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
52460    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
52461    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
52462    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
52463    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
52464    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
52465    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
52466    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
52467    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
52468    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
52469    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
52470    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
52471    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
52472    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
52473    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
52474    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
52475    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
52476    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
52477    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
52478    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
52479    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
52480    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
52481    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
52482    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
52483    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
52484    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
52485    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
52486    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
52487    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
52488    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
52489    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
52490    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
52491    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
52492    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
52493    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
52494    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
52495    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
52496    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
52497    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
52498    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
52499    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
52500    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
52501    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
52502    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
52503    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
52504    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
52505    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
52506    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
52507    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
52508    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
52509    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
52510    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
52511    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
52512    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
52513    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
52514    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
52515    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
52516    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
52517    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
52518    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
52519    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
52520    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
52521    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
52522    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
52523 
52524    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52525    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52526 
52527    ---------------------------------------------------------------------------------------------------------------
52528    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52529    ---------------------------------------------------------------------------------------------------------------
52530    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52531 
52532    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52533    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52534 
52535    IF xla_accounting_cache_pkg.GetValueChar
52536          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52537          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52538    AND l_bflow_method_code = 'PRIOR_ENTRY'
52542        )
52539 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52540    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52541          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52543    THEN
52544          xla_ae_lines_pkg.BflowUpgEntry
52545            (p_business_method_code    => l_bflow_method_code
52546            ,p_business_class_code     => l_bflow_class_code
52547            ,p_balance_type            => l_balance_type_code);
52548    ELSE
52549       NULL;
52550 XLA_AE_LINES_PKG.business_flow_validation(
52551                                 p_business_method_code     => l_bflow_method_code
52552                                ,p_business_class_code      => l_bflow_class_code
52553                                ,p_inherit_description_flag => l_inherit_desc_flag);
52554    END IF;
52555 
52556    --
52557    -- call analytical criteria
52558    --
52559    -- Inherited Analytical Criteria for business flow method of Prior Entry.
52560    --
52561    -- call description
52562    --
52563    -- No description or it is inherited.
52564    --
52565    -- call ADRs
52566    -- Bug 4922099
52567    --
52568    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52569         (NVL(l_actual_upg_option, 'N') = 'O') OR
52570         (NVL(l_enc_upg_option, 'N') = 'O')
52571       )
52572    THEN
52573    NULL;
52574    --
52575    --
52576    
52577    --
52578    --
52579    END IF;
52580    --
52581    -- Bug 4922099
52582    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52583           (NVL(l_enc_upg_option, 'N') = 'O')
52584         ) AND
52585         (l_bflow_method_code = 'PRIOR_ENTRY')
52586       )
52587    THEN
52588       IF
52589       --
52590       1 = 1
52591       --
52592       THEN
52593       xla_accounting_err_pkg.build_message
52594                                     (p_appli_s_name            => 'XLA'
52595                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52596                                     ,p_token_1                 => 'LINE_NUMBER'
52597                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52598                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52599                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52600                                                                              l_component_type
52601                                                                             ,l_component_code
52602                                                                             ,l_component_type_code
52603                                                                             ,l_component_appl_id
52604                                                                             ,l_amb_context_code
52605                                                                             ,l_entity_code
52606                                                                             ,l_event_class_code
52607                                                                            )
52608                                     ,p_token_3                 => 'OWNER'
52609                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52610                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52611                                                                           ,p_lookup_code    => l_component_type_code
52612                                                                          )
52613                                     ,p_token_4                 => 'PRODUCT_NAME'
52614                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52615                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52616                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52617                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52618                                     ,p_ae_header_id            =>  NULL
52619                                        );
52620 
52621         IF (C_LEVEL_ERROR>= g_log_level) THEN
52622                  trace
52623                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52624                       ,p_level    => C_LEVEL_ERROR
52625                       ,p_module   => l_log_module);
52626         END IF;
52627       END IF;
52628    END IF;
52629    --
52630    --
52631    ------------------------------------------------------------------------------------------------
52632    -- 4219869 Business Flow
52633    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52634    -- Prior Entry.  Currently, the following code is always generated.
52635    ------------------------------------------------------------------------------------------------
52636    -- No ValidateCurrentLine for business flow method of Prior Entry
52637 
52638    ------------------------------------------------------------------------------------
52639    -- 4219869 Business Flow
52640    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52641    ------------------------------------------------------------------------------------
52642    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52643 
52644    ----------------------------------------------------------------------------------
52645    -- 4219869 Business Flow
52646    -- Update journal entry status -- Need to generate this within IF <condition>
52647    ----------------------------------------------------------------------------------
52648    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52649          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52650          ,p_balance_type_code => l_balance_type_code
52654    -- 4262811 - Generate the Accrual Reversal lines
52651          );
52652 
52653    -------------------------------------------------------------------------------------------
52655    -------------------------------------------------------------------------------------------
52656    BEGIN
52657       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52658                               (g_array_event(p_event_id).array_value_num('header_index'));
52659       IF l_acc_rev_flag IS NULL THEN
52660          l_acc_rev_flag := 'N';
52661       END IF;
52662    EXCEPTION
52663       WHEN OTHERS THEN
52664          l_acc_rev_flag := 'N';
52665    END;
52666    --
52667    IF (l_acc_rev_flag = 'Y') THEN
52668 
52669        -- 4645092  ------------------------------------------------------------------------------
52670        -- To allow MPA report to determine if it should generate report process
52671        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52672        ------------------------------------------------------------------------------------------
52673 
52674        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52675        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52676 
52677        --
52678        -- Update the line information that should be overwritten
52679        --
52680        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52681                                          p_header_num   => 1);
52682        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52683 
52684        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52685 
52686        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52687           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52688        END IF;
52689 
52690       --
52691       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52692       --
52693       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52694           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52695       ELSE
52696           ---------------------------------------------------------------------------------------------------
52697           -- 4262811a Switch Sign
52698           ---------------------------------------------------------------------------------------------------
52699           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52700           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52701                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52702           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52703                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52704           -- 5132302
52705           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52706                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52707 
52708       END IF;
52709 
52710       -- 4955764
52711       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52712       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52713 
52714 
52715       XLA_AE_LINES_PKG.ValidateCurrentLine;
52716       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52717 
52718       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52719                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52720                ,p_balance_type_code => l_balance_type_code);
52721 
52722    END IF;
52723 
52724    -----------------------------------------------------------------------------------------
52725    -- 4262811 Multiperiod Accounting
52726    -----------------------------------------------------------------------------------------
52727      -- No MPA option is assigned.
52728 
52729 
52730 END IF;
52731 END IF;
52732 --
52733 
52734 --
52735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52736    trace
52737       (p_msg      => 'END of AcctLineType_105'
52738       ,p_level    => C_LEVEL_PROCEDURE
52739       ,p_module   => l_log_module);
52740 END IF;
52741 --
52742 EXCEPTION
52743   WHEN xla_exceptions_pkg.application_exception THEN
52744       RAISE;
52745   WHEN OTHERS THEN
52746        xla_exceptions_pkg.raise_message
52747            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_105');
52748 END AcctLineType_105;
52749 --
52750 
52751 ---------------------------------------
52752 --
52753 -- PRIVATE FUNCTION
52754 --         AcctLineType_106
52755 --
52756 ---------------------------------------
52757 PROCEDURE AcctLineType_106 (
52758   p_application_id        IN NUMBER
52759  ,p_event_id              IN NUMBER
52760  ,p_calculate_acctd_flag  IN VARCHAR2
52761  ,p_calculate_g_l_flag    IN VARCHAR2
52762  ,p_actual_flag           IN OUT VARCHAR2
52763  ,p_balance_type_code     OUT VARCHAR2
52764  ,p_gain_or_loss_ref      OUT VARCHAR2
52765  
52766 --Budget Code Combination ID
52767  , p_source_2            IN NUMBER
52768 --Cost CCID
52769  , p_source_3            IN NUMBER
52770 --Cost Clearing CCID
52771  , p_source_6            IN NUMBER
52772 --Reversing Line Flag
52773  , p_source_22            IN VARCHAR2
52774 --Actual Upgrade Credit Accounting Class
52775  , p_source_23            IN VARCHAR2
52776 --Entered Currency Code
52777  , p_source_25            IN VARCHAR2
52778 --Exchange Rate Date
52779  , p_source_27            IN DATE
52783  , p_source_29            IN VARCHAR2
52780 --Exchange Rate
52781  , p_source_28            IN NUMBER
52782 --Exchange Rate Type
52784 --Actual Upgrade Debit Accounting Class
52785  , p_source_30            IN VARCHAR2
52786 --Use Actuals Upgrade Attributes Flag
52787  , p_source_31            IN VARCHAR2
52788 --Expenditure Item ID
52789  , p_source_32            IN NUMBER
52790 --Cost Distribution Line Number
52791  , p_source_33            IN NUMBER
52792 --Line Type
52793  , p_source_34            IN VARCHAR2
52794  , p_source_34_meaning    IN VARCHAR2
52795 --Reversed Line Number
52796  , p_source_35            IN NUMBER
52797 --System Linkage Function
52798  , p_source_37            IN VARCHAR2
52799 --Entered Burdened Cost
52800  , p_source_44            IN NUMBER
52801 --Accounted Burdened Cost
52802  , p_source_45            IN NUMBER
52803 --Encumbrance Amount
52804  , p_source_46            IN NUMBER
52805 --Project Encumbrance Applied to Application Identifier
52806  , p_source_47            IN NUMBER
52807 --Project Encumbrance Applied to Distribution Type
52808  , p_source_48            IN VARCHAR2
52809 --Project Encumbrance Applied to Entity Code
52810  , p_source_49            IN VARCHAR2
52811 --Project Encumbrance Applied to First Distribution ID
52812  , p_source_50            IN NUMBER
52813 --Project Encumbrance Applied to First System Transaction ID
52814  , p_source_51            IN NUMBER
52815 --Project Encumbrance Applied to Second Distribution ID
52816  , p_source_52            IN VARCHAR2
52817 --Encumbrance Upgrade Credit Accounting Class
52818  , p_source_53            IN VARCHAR2
52819 --Encumbrance Upgrade Debit Accounting Class
52820  , p_source_54            IN VARCHAR2
52821 --Use Encumbrance Upgrade Attributes Flag
52822  , p_source_55            IN VARCHAR2
52823 --Encumbrance Type ID
52824  , p_source_56            IN NUMBER
52825 --Project Encumbrance Type ID
52826  , p_source_57            IN NUMBER
52827 --Contingent Worker Timecard Flag
52828  , p_source_73            IN VARCHAR2
52829 --Encumbrance Accounting Enabled Flag
52830  , p_source_86            IN VARCHAR2
52831 --Liquidate Encumbrance Flag
52832  , p_source_87            IN VARCHAR2
52833 )
52834 IS
52835 
52836 l_component_type              VARCHAR2(80);
52837 l_component_code              VARCHAR2(30);
52838 l_component_type_code         VARCHAR2(1);
52839 l_component_appl_id           INTEGER;
52840 l_amb_context_code            VARCHAR2(30);
52841 l_entity_code                 VARCHAR2(30);
52842 l_event_class_code            VARCHAR2(30);
52843 l_ae_header_id                NUMBER;
52844 l_event_type_code             VARCHAR2(30);
52845 l_line_definition_code        VARCHAR2(30);
52846 l_line_definition_owner_code  VARCHAR2(1);
52847 --
52848 -- adr variables
52849 l_segment                     VARCHAR2(30);
52850 l_ccid                        NUMBER;
52851 l_adr_transaction_coa_id      NUMBER;
52852 l_adr_accounting_coa_id       NUMBER;
52853 l_adr_flexfield_segment_code  VARCHAR2(30);
52854 l_adr_flex_value_set_id       NUMBER;
52855 l_adr_value_type_code         VARCHAR2(30);
52856 l_adr_value_combination_id    NUMBER;
52857 l_adr_value_segment_code      VARCHAR2(30);
52858 
52859 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52860 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52861 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52862 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52863 
52864 -- 4262811 Variables ------------------------------------------------------------------------------------------
52865 l_entered_amt_idx             NUMBER;
52866 l_accted_amt_idx              NUMBER;
52867 l_acc_rev_flag                VARCHAR2(1);
52868 l_accrual_line_num            NUMBER;
52869 l_tmp_amt                     NUMBER;
52870 l_acc_rev_natural_side_code   VARCHAR2(1);
52871 
52872 l_num_entries                 NUMBER;
52873 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52874 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52875 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52876 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52877 l_recog_line_1                NUMBER;
52878 l_recog_line_2                NUMBER;
52879 
52880 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52881 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52882 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52883 
52884 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52885 
52886 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52887 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52888 
52889 ---------------------------------------------------------------------------------------------------------------
52890 
52891 
52892 --
52893 -- bulk performance
52894 --
52895 l_balance_type_code           VARCHAR2(1);
52896 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52897 l_log_module                  VARCHAR2(240);
52898 
52899 --
52900 -- Upgrade strategy
52901 --
52902 l_actual_upg_option           VARCHAR2(1);
52903 l_enc_upg_option           VARCHAR2(1);
52904 
52905 --
52906 BEGIN
52907 --
52908 IF g_log_enabled THEN
52909       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
52910 END IF;
52911 --
52912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52913 
52914       trace
52915          (p_msg      => 'BEGIN of AcctLineType_106'
52916          ,p_level    => C_LEVEL_PROCEDURE
52917          ,p_module   => l_log_module);
52918 
52919 END IF;
52920 --
52924 l_component_appl_id          :=  275;
52921 l_component_type             := 'AMB_JLT';
52922 l_component_code             := 'REL_PROJ_ENC';
52923 l_component_type_code        := 'S';
52925 l_amb_context_code           := 'DEFAULT';
52926 l_entity_code                := 'EXPENDITURES';
52927 l_event_class_code           := 'TOT_BURDENED_COST';
52928 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
52929 l_line_definition_owner_code := 'S';
52930 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
52931 --
52932 l_balance_type_code          := 'E';
52933 l_segment                     := NULL;
52934 l_ccid                        := NULL;
52935 l_adr_transaction_coa_id      := NULL;
52936 l_adr_accounting_coa_id       := NULL;
52937 l_adr_flexfield_segment_code  := NULL;
52938 l_adr_flex_value_set_id       := NULL;
52939 l_adr_value_type_code         := NULL;
52940 l_adr_value_combination_id    := NULL;
52941 l_adr_value_segment_code      := NULL;
52942 
52943 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
52944 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
52945 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52946 l_budgetary_control_flag     := 'N';
52947 
52948 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52949 l_bflow_applied_to_amt       := NULL; -- 5132302
52950 l_entered_amt_idx            := NULL;          -- 4262811
52951 l_accted_amt_idx             := NULL;          -- 4262811
52952 l_acc_rev_flag               := NULL;          -- 4262811
52953 l_accrual_line_num           := NULL;          -- 4262811
52954 l_tmp_amt                    := NULL;          -- 4262811
52955 --
52956  
52957 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52958     l_balance_type_code <> 'B' THEN
52959 IF NVL(p_source_34,'
52960 ') =  'D' AND 
52961 NVL(p_source_86,'
52962 ') =  'Y' AND 
52963 ((NVL(p_source_37,'
52964 ') =  'ST' OR 
52965 NVL(p_source_37,'
52966 ') =  'OT' AND 
52967 NVL(p_source_73,'
52968 ') =  'Y') OR 
52969 NVL(p_source_37,'
52970 ') =  'VI') AND 
52971 NVL(p_source_87,'
52972 ') =  'Y'
52973  THEN 
52974 
52975    --
52976    XLA_AE_LINES_PKG.SetNewLine;
52977 
52978    p_balance_type_code          := l_balance_type_code;
52979    -- set the flag so later we will know whether the gain loss line needs to be created
52980    
52981    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52982      p_actual_flag :='A';
52983    END IF;
52984 
52985    --
52986    -- bulk performance
52987    --
52988    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52989                                       p_header_num   => 0); -- 4262811
52990    --
52991    -- set accounting line options
52992    --
52993    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52994            p_natural_side_code          => 'C'
52995          , p_gain_or_loss_flag          => 'N'
52996          , p_gl_transfer_mode_code      => 'S'
52997          , p_acct_entry_type_code       => 'E'
52998          , p_switch_side_flag           => 'N'
52999          , p_merge_duplicate_code       => 'N'
53000          );
53001    --
53002    l_acc_rev_natural_side_code := 'D';  -- 4262811
53003    -- 
53004    --
53005    -- set accounting line type info
53006    --
53007    xla_ae_lines_pkg.SetAcctLineType
53008       (p_component_type             => l_component_type
53009       ,p_event_type_code            => l_event_type_code
53010       ,p_line_definition_owner_code => l_line_definition_owner_code
53011       ,p_line_definition_code       => l_line_definition_code
53012       ,p_accounting_line_code       => l_component_code
53013       ,p_accounting_line_type_code  => l_component_type_code
53014       ,p_accounting_line_appl_id    => l_component_appl_id
53015       ,p_amb_context_code           => l_amb_context_code
53016       ,p_entity_code                => l_entity_code
53017       ,p_event_class_code           => l_event_class_code);
53018    --
53019    -- set accounting class
53020    --
53021    xla_ae_lines_pkg.SetAcctClass(
53022            p_accounting_class_code  => 'PA_BUDGET_ENC'
53023          , p_ae_header_id           => l_ae_header_id
53024          );
53025 
53026    --
53027    -- set rounding class
53028    --
53029    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53030                       'PA_BUDGET_ENC';
53031 
53032    --
53033    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53034    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53035    --
53036    -- bulk performance
53037    --
53038    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53039 
53040    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53041       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53042 
53043    -- 4955764
53044    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53045       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53046 
53047    -- 4458381 Public Sector Enh
53048    
53049    --
53050    -- set accounting attributes for the line type
53051    --
53052    l_entered_amt_idx := 40;
53053    l_accted_amt_idx  := 43;
53054    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
53055    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
53056    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
53057    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
53058    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
53062    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
53059    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
53060    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
53061    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
53063    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
53064    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
53065    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
53066    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
53067    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
53068    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
53069    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
53070    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
53071    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
53072    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
53073    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
53074    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
53075    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
53076    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
53077    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
53078    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
53079    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
53080    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
53081    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
53082    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
53083    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
53084    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
53085    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
53086    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
53087    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
53088    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
53089    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
53090    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
53091    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
53092    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
53093    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
53094    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
53095    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
53096    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
53097    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
53098    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
53099    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
53100    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
53101    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
53102    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
53103    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
53104    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
53105    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
53106    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
53107    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
53108    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
53109    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
53110    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
53111    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
53112    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
53113    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
53114    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
53115    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
53116    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
53117    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
53118    l_rec_acct_attrs.array_char_value(32)  := 
53119 xla_ae_sources_pkg.GetSystemSourceChar(
53120    p_source_code           => 'XLA_CURRENCY_CODE'
53121  , p_source_type_code      => 'Y'
53122  , p_source_application_id =>  602
53123 );
53124    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
53125    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
53126    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
53127    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
53128    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
53129    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
53130    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
53131    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
53132    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
53133    l_rec_acct_attrs.array_char_value(37)  := 
53134 xla_ae_sources_pkg.GetSystemSourceChar(
53135    p_source_code           => 'XLA_CURRENCY_CODE'
53136  , p_source_type_code      => 'Y'
53137  , p_source_application_id =>  602
53138 );
53139    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
53140    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
53141    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
53142    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
53143    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
53144    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
53145    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
53146    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
53147    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
53148    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
53149    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
53150    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
53151    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
53155    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
53152    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
53153    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
53154    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
53156    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
53157    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
53158    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
53159    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
53160    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
53161 
53162    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53163    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53164 
53165    ---------------------------------------------------------------------------------------------------------------
53166    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53167    ---------------------------------------------------------------------------------------------------------------
53168    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53169 
53170    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53171    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53172 
53173    IF xla_accounting_cache_pkg.GetValueChar
53174          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53175          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53176    AND l_bflow_method_code = 'PRIOR_ENTRY'
53177 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53178    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53179          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53180        )
53181    THEN
53182          xla_ae_lines_pkg.BflowUpgEntry
53183            (p_business_method_code    => l_bflow_method_code
53184            ,p_business_class_code     => l_bflow_class_code
53185            ,p_balance_type            => l_balance_type_code);
53186    ELSE
53187       NULL;
53188 XLA_AE_LINES_PKG.business_flow_validation(
53189                                 p_business_method_code     => l_bflow_method_code
53190                                ,p_business_class_code      => l_bflow_class_code
53191                                ,p_inherit_description_flag => l_inherit_desc_flag);
53192    END IF;
53193 
53194    --
53195    -- call analytical criteria
53196    --
53197    -- Inherited Analytical Criteria for business flow method of Prior Entry.
53198    --
53199    -- call description
53200    --
53201    -- No description or it is inherited.
53202    --
53203    -- call ADRs
53204    -- Bug 4922099
53205    --
53206    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53207         (NVL(l_actual_upg_option, 'N') = 'O') OR
53208         (NVL(l_enc_upg_option, 'N') = 'O')
53209       )
53210    THEN
53211    NULL;
53212    --
53213    --
53214    
53215    --
53216    --
53217    END IF;
53218    --
53219    -- Bug 4922099
53220    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53221           (NVL(l_enc_upg_option, 'N') = 'O')
53222         ) AND
53223         (l_bflow_method_code = 'PRIOR_ENTRY')
53224       )
53225    THEN
53226       IF
53227       --
53228       1 = 1
53229       --
53230       THEN
53231       xla_accounting_err_pkg.build_message
53232                                     (p_appli_s_name            => 'XLA'
53233                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53234                                     ,p_token_1                 => 'LINE_NUMBER'
53235                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53236                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53237                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53238                                                                              l_component_type
53239                                                                             ,l_component_code
53240                                                                             ,l_component_type_code
53241                                                                             ,l_component_appl_id
53242                                                                             ,l_amb_context_code
53243                                                                             ,l_entity_code
53244                                                                             ,l_event_class_code
53245                                                                            )
53246                                     ,p_token_3                 => 'OWNER'
53247                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53248                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53249                                                                           ,p_lookup_code    => l_component_type_code
53250                                                                          )
53251                                     ,p_token_4                 => 'PRODUCT_NAME'
53252                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53253                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53254                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53255                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53256                                     ,p_ae_header_id            =>  NULL
53260                  trace
53257                                        );
53258 
53259         IF (C_LEVEL_ERROR>= g_log_level) THEN
53261                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53262                       ,p_level    => C_LEVEL_ERROR
53263                       ,p_module   => l_log_module);
53264         END IF;
53265       END IF;
53266    END IF;
53267    --
53268    --
53269    ------------------------------------------------------------------------------------------------
53270    -- 4219869 Business Flow
53271    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53272    -- Prior Entry.  Currently, the following code is always generated.
53273    ------------------------------------------------------------------------------------------------
53274    -- No ValidateCurrentLine for business flow method of Prior Entry
53275 
53276    ------------------------------------------------------------------------------------
53277    -- 4219869 Business Flow
53278    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53279    ------------------------------------------------------------------------------------
53280    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53281 
53282    ----------------------------------------------------------------------------------
53283    -- 4219869 Business Flow
53284    -- Update journal entry status -- Need to generate this within IF <condition>
53285    ----------------------------------------------------------------------------------
53286    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53287          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53288          ,p_balance_type_code => l_balance_type_code
53289          );
53290 
53291    -------------------------------------------------------------------------------------------
53292    -- 4262811 - Generate the Accrual Reversal lines
53293    -------------------------------------------------------------------------------------------
53294    BEGIN
53295       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53296                               (g_array_event(p_event_id).array_value_num('header_index'));
53297       IF l_acc_rev_flag IS NULL THEN
53298          l_acc_rev_flag := 'N';
53299       END IF;
53300    EXCEPTION
53301       WHEN OTHERS THEN
53302          l_acc_rev_flag := 'N';
53303    END;
53304    --
53305    IF (l_acc_rev_flag = 'Y') THEN
53306 
53307        -- 4645092  ------------------------------------------------------------------------------
53308        -- To allow MPA report to determine if it should generate report process
53309        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53310        ------------------------------------------------------------------------------------------
53311 
53312        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53313        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53314 
53315        --
53316        -- Update the line information that should be overwritten
53317        --
53318        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53319                                          p_header_num   => 1);
53320        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53321 
53322        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53323 
53324        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53325           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53326        END IF;
53327 
53328       --
53329       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53330       --
53331       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53332           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53333       ELSE
53334           ---------------------------------------------------------------------------------------------------
53335           -- 4262811a Switch Sign
53336           ---------------------------------------------------------------------------------------------------
53337           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53338           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53339                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53340           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53341                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53342           -- 5132302
53343           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53344                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53345 
53346       END IF;
53347 
53348       -- 4955764
53349       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53350       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53351 
53352 
53353       XLA_AE_LINES_PKG.ValidateCurrentLine;
53354       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53355 
53356       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53357                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53358                ,p_balance_type_code => l_balance_type_code);
53359 
53360    END IF;
53361 
53362    -----------------------------------------------------------------------------------------
53363    -- 4262811 Multiperiod Accounting
53364    -----------------------------------------------------------------------------------------
53365      -- No MPA option is assigned.
53366 
53370 --
53367 
53368 END IF;
53369 END IF;
53371 
53372 --
53373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53374    trace
53375       (p_msg      => 'END of AcctLineType_106'
53376       ,p_level    => C_LEVEL_PROCEDURE
53377       ,p_module   => l_log_module);
53378 END IF;
53379 --
53380 EXCEPTION
53381   WHEN xla_exceptions_pkg.application_exception THEN
53382       RAISE;
53383   WHEN OTHERS THEN
53384        xla_exceptions_pkg.raise_message
53385            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_106');
53386 END AcctLineType_106;
53387 --
53388 
53389 ---------------------------------------
53390 --
53391 -- PRIVATE FUNCTION
53392 --         AcctLineType_107
53393 --
53394 ---------------------------------------
53395 PROCEDURE AcctLineType_107 (
53396   p_application_id        IN NUMBER
53397  ,p_event_id              IN NUMBER
53398  ,p_calculate_acctd_flag  IN VARCHAR2
53399  ,p_calculate_g_l_flag    IN VARCHAR2
53400  ,p_actual_flag           IN OUT VARCHAR2
53401  ,p_balance_type_code     OUT VARCHAR2
53402  ,p_gain_or_loss_ref      OUT VARCHAR2
53403  
53404 --Budget Code Combination ID
53405  , p_source_2            IN NUMBER
53406 --Cost CCID
53407  , p_source_3            IN NUMBER
53408 --Cost Clearing CCID
53409  , p_source_6            IN NUMBER
53410 --Reversing Line Flag
53411  , p_source_22            IN VARCHAR2
53412 --Actual Upgrade Credit Accounting Class
53413  , p_source_23            IN VARCHAR2
53414 --Entered Currency Code
53415  , p_source_25            IN VARCHAR2
53416 --Exchange Rate Date
53417  , p_source_27            IN DATE
53418 --Exchange Rate
53419  , p_source_28            IN NUMBER
53420 --Exchange Rate Type
53421  , p_source_29            IN VARCHAR2
53422 --Actual Upgrade Debit Accounting Class
53423  , p_source_30            IN VARCHAR2
53424 --Use Actuals Upgrade Attributes Flag
53425  , p_source_31            IN VARCHAR2
53426 --Expenditure Item ID
53427  , p_source_32            IN NUMBER
53428 --Cost Distribution Line Number
53429  , p_source_33            IN NUMBER
53430 --Line Type
53431  , p_source_34            IN VARCHAR2
53432  , p_source_34_meaning    IN VARCHAR2
53433 --Reversed Line Number
53434  , p_source_35            IN NUMBER
53435 --Entered Burdened Cost
53436  , p_source_44            IN NUMBER
53437 --Accounted Burdened Cost
53438  , p_source_45            IN NUMBER
53439 --Encumbrance Amount
53440  , p_source_46            IN NUMBER
53441 --Encumbrance Upgrade Credit Accounting Class
53442  , p_source_53            IN VARCHAR2
53443 --Encumbrance Upgrade Debit Accounting Class
53444  , p_source_54            IN VARCHAR2
53445 --Use Encumbrance Upgrade Attributes Flag
53446  , p_source_55            IN VARCHAR2
53447 --Encumbrance Type ID
53448  , p_source_56            IN NUMBER
53449 --Project Encumbrance Type ID
53450  , p_source_57            IN NUMBER
53451 --Document Type
53452  , p_source_70            IN VARCHAR2
53453  , p_source_70_meaning    IN VARCHAR2
53454 --Release ID
53455  , p_source_72            IN NUMBER
53456 --Contingent Worker Timecard Flag
53457  , p_source_73            IN VARCHAR2
53458 --Purchase Order Burden Applied to Application Identifier
53459  , p_source_80            IN NUMBER
53460 --Purchase Order Burden Applied to Distribution Type
53461  , p_source_81            IN VARCHAR2
53462 --Purchase Order Burden Applied to Entity Code
53463  , p_source_82            IN VARCHAR2
53464 --Purchase Order Burden Applied to First Distribution Identifier
53465  , p_source_83            IN NUMBER
53466 --Purchase Order Burden Applied to First System Transaction Identifier
53467  , p_source_84            IN NUMBER
53468 --Purchase Order Burden Applied to Second Distribution Identifier
53469  , p_source_85            IN VARCHAR2
53470 )
53471 IS
53472 
53473 l_component_type              VARCHAR2(80);
53474 l_component_code              VARCHAR2(30);
53475 l_component_type_code         VARCHAR2(1);
53476 l_component_appl_id           INTEGER;
53477 l_amb_context_code            VARCHAR2(30);
53478 l_entity_code                 VARCHAR2(30);
53479 l_event_class_code            VARCHAR2(30);
53480 l_ae_header_id                NUMBER;
53481 l_event_type_code             VARCHAR2(30);
53482 l_line_definition_code        VARCHAR2(30);
53483 l_line_definition_owner_code  VARCHAR2(1);
53484 --
53485 -- adr variables
53486 l_segment                     VARCHAR2(30);
53487 l_ccid                        NUMBER;
53488 l_adr_transaction_coa_id      NUMBER;
53489 l_adr_accounting_coa_id       NUMBER;
53490 l_adr_flexfield_segment_code  VARCHAR2(30);
53491 l_adr_flex_value_set_id       NUMBER;
53492 l_adr_value_type_code         VARCHAR2(30);
53493 l_adr_value_combination_id    NUMBER;
53494 l_adr_value_segment_code      VARCHAR2(30);
53495 
53496 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53497 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53498 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53499 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53500 
53501 -- 4262811 Variables ------------------------------------------------------------------------------------------
53502 l_entered_amt_idx             NUMBER;
53503 l_accted_amt_idx              NUMBER;
53504 l_acc_rev_flag                VARCHAR2(1);
53505 l_accrual_line_num            NUMBER;
53506 l_tmp_amt                     NUMBER;
53507 l_acc_rev_natural_side_code   VARCHAR2(1);
53508 
53509 l_num_entries                 NUMBER;
53510 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53511 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53512 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53516 
53513 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53514 l_recog_line_1                NUMBER;
53515 l_recog_line_2                NUMBER;
53517 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53518 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53519 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53520 
53521 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53522 
53523 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53524 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53525 
53526 ---------------------------------------------------------------------------------------------------------------
53527 
53528 
53529 --
53530 -- bulk performance
53531 --
53532 l_balance_type_code           VARCHAR2(1);
53533 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53534 l_log_module                  VARCHAR2(240);
53535 
53536 --
53537 -- Upgrade strategy
53538 --
53539 l_actual_upg_option           VARCHAR2(1);
53540 l_enc_upg_option           VARCHAR2(1);
53541 
53542 --
53543 BEGIN
53544 --
53545 IF g_log_enabled THEN
53546       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
53547 END IF;
53548 --
53549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53550 
53551       trace
53552          (p_msg      => 'BEGIN of AcctLineType_107'
53553          ,p_level    => C_LEVEL_PROCEDURE
53554          ,p_module   => l_log_module);
53555 
53556 END IF;
53557 --
53558 l_component_type             := 'AMB_JLT';
53559 l_component_code             := 'REL_RELEASE_BURDENED_ENC';
53560 l_component_type_code        := 'S';
53561 l_component_appl_id          :=  275;
53562 l_amb_context_code           := 'DEFAULT';
53563 l_entity_code                := 'EXPENDITURES';
53564 l_event_class_code           := 'TOT_BURDENED_COST';
53565 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
53566 l_line_definition_owner_code := 'S';
53567 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
53568 --
53569 l_balance_type_code          := 'E';
53570 l_segment                     := NULL;
53571 l_ccid                        := NULL;
53572 l_adr_transaction_coa_id      := NULL;
53573 l_adr_accounting_coa_id       := NULL;
53574 l_adr_flexfield_segment_code  := NULL;
53575 l_adr_flex_value_set_id       := NULL;
53576 l_adr_value_type_code         := NULL;
53577 l_adr_value_combination_id    := NULL;
53578 l_adr_value_segment_code      := NULL;
53579 
53580 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
53581 l_bflow_class_code           := 'REL_PA_BURDENED_ENC';    -- 4219869 Business Flow
53582 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53583 l_budgetary_control_flag     := 'N';
53584 
53585 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53586 l_bflow_applied_to_amt       := NULL; -- 5132302
53587 l_entered_amt_idx            := NULL;          -- 4262811
53588 l_accted_amt_idx             := NULL;          -- 4262811
53589 l_acc_rev_flag               := NULL;          -- 4262811
53590 l_accrual_line_num           := NULL;          -- 4262811
53591 l_tmp_amt                    := NULL;          -- 4262811
53592 --
53593  
53594 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53595     l_balance_type_code <> 'B' THEN
53596 IF NVL(p_source_34,'
53597 ') =  'E' AND 
53598 NVL(p_source_70,'
53599 ') =  'PO' AND 
53600 p_source_72 IS NOT NULL AND 
53601 NVL(p_source_73,'
53602 ') =  'N'
53603  THEN 
53604 
53605    --
53606    XLA_AE_LINES_PKG.SetNewLine;
53607 
53608    p_balance_type_code          := l_balance_type_code;
53609    -- set the flag so later we will know whether the gain loss line needs to be created
53610    
53611    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53612      p_actual_flag :='A';
53613    END IF;
53614 
53615    --
53616    -- bulk performance
53617    --
53618    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53619                                       p_header_num   => 0); -- 4262811
53620    --
53621    -- set accounting line options
53622    --
53623    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53624            p_natural_side_code          => 'C'
53625          , p_gain_or_loss_flag          => 'N'
53626          , p_gl_transfer_mode_code      => 'S'
53627          , p_acct_entry_type_code       => 'E'
53628          , p_switch_side_flag           => 'N'
53629          , p_merge_duplicate_code       => 'N'
53630          );
53631    --
53632    l_acc_rev_natural_side_code := 'D';  -- 4262811
53633    -- 
53634    --
53635    -- set accounting line type info
53636    --
53637    xla_ae_lines_pkg.SetAcctLineType
53638       (p_component_type             => l_component_type
53639       ,p_event_type_code            => l_event_type_code
53640       ,p_line_definition_owner_code => l_line_definition_owner_code
53641       ,p_line_definition_code       => l_line_definition_code
53642       ,p_accounting_line_code       => l_component_code
53643       ,p_accounting_line_type_code  => l_component_type_code
53644       ,p_accounting_line_appl_id    => l_component_appl_id
53645       ,p_amb_context_code           => l_amb_context_code
53646       ,p_entity_code                => l_entity_code
53647       ,p_event_class_code           => l_event_class_code);
53648    --
53649    -- set accounting class
53650    --
53651    xla_ae_lines_pkg.SetAcctClass(
53652            p_accounting_class_code  => 'PO_PA_BURDENED'
53653          , p_ae_header_id           => l_ae_header_id
53654          );
53655 
53656    --
53660                       'PO_PA_BURDENED';
53657    -- set rounding class
53658    --
53659    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53661 
53662    --
53663    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53664    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53665    --
53666    -- bulk performance
53667    --
53668    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53669 
53670    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53671       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53672 
53673    -- 4955764
53674    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53675       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53676 
53677    -- 4458381 Public Sector Enh
53678    
53679    --
53680    -- set accounting attributes for the line type
53681    --
53682    l_entered_amt_idx := 40;
53683    l_accted_amt_idx  := 43;
53684    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
53685    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
53686    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
53687    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
53688    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
53689    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
53690    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
53691    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
53692    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
53693    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
53694    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
53695    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
53696    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
53697    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
53698    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
53699    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
53700    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
53701    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
53702    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
53703    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
53704    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
53705    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
53706    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
53707    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
53708    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
53709    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
53710    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
53711    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
53712    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
53713    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
53714    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
53715    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
53716    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
53717    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
53718    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
53719    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
53720    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
53721    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
53722    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
53723    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
53724    l_rec_acct_attrs.array_num_value(20)  := p_source_80;
53725    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
53726    l_rec_acct_attrs.array_char_value(21)  := p_source_81;
53727    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
53728    l_rec_acct_attrs.array_char_value(22)  := p_source_82;
53729    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
53730    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_83);
53731    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
53732    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_84);
53733    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
53734    l_rec_acct_attrs.array_char_value(25)  := p_source_85;
53735    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
53736    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
53737    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
53738    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
53739    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
53740    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
53741    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
53742    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
53743    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
53744    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
53745    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
53746    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
53747    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
53748    l_rec_acct_attrs.array_char_value(32)  := 
53749 xla_ae_sources_pkg.GetSystemSourceChar(
53750    p_source_code           => 'XLA_CURRENCY_CODE'
53751  , p_source_type_code      => 'Y'
53752  , p_source_application_id =>  602
53753 );
53754    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
53755    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
53759    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
53756    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
53757    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
53758    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
53760    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
53761    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
53762    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
53763    l_rec_acct_attrs.array_char_value(37)  := 
53764 xla_ae_sources_pkg.GetSystemSourceChar(
53765    p_source_code           => 'XLA_CURRENCY_CODE'
53766  , p_source_type_code      => 'Y'
53767  , p_source_application_id =>  602
53768 );
53769    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
53770    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
53771    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
53772    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
53773    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
53774    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
53775    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
53776    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
53777    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
53778    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
53779    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
53780    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
53781    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
53782    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
53783    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
53784    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
53785    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
53786    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
53787    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
53788    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
53789    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
53790    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
53791 
53792    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53793    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53794 
53795    ---------------------------------------------------------------------------------------------------------------
53796    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53797    ---------------------------------------------------------------------------------------------------------------
53798    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53799 
53800    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53801    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53802 
53803    IF xla_accounting_cache_pkg.GetValueChar
53804          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53805          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53806    AND l_bflow_method_code = 'PRIOR_ENTRY'
53807 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53808    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53809          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53810        )
53811    THEN
53812          xla_ae_lines_pkg.BflowUpgEntry
53813            (p_business_method_code    => l_bflow_method_code
53814            ,p_business_class_code     => l_bflow_class_code
53815            ,p_balance_type            => l_balance_type_code);
53816    ELSE
53817       NULL;
53818 XLA_AE_LINES_PKG.business_flow_validation(
53819                                 p_business_method_code     => l_bflow_method_code
53820                                ,p_business_class_code      => l_bflow_class_code
53821                                ,p_inherit_description_flag => l_inherit_desc_flag);
53822    END IF;
53823 
53824    --
53825    -- call analytical criteria
53826    --
53827    -- Inherited Analytical Criteria for business flow method of Prior Entry.
53828    --
53829    -- call description
53830    --
53831    -- No description or it is inherited.
53832    --
53833    -- call ADRs
53834    -- Bug 4922099
53835    --
53836    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53837         (NVL(l_actual_upg_option, 'N') = 'O') OR
53838         (NVL(l_enc_upg_option, 'N') = 'O')
53839       )
53840    THEN
53841    NULL;
53842    --
53843    --
53844    
53845    --
53846    --
53847    END IF;
53848    --
53849    -- Bug 4922099
53850    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53851           (NVL(l_enc_upg_option, 'N') = 'O')
53852         ) AND
53853         (l_bflow_method_code = 'PRIOR_ENTRY')
53854       )
53855    THEN
53856       IF
53857       --
53858       1 = 1
53859       --
53860       THEN
53861       xla_accounting_err_pkg.build_message
53862                                     (p_appli_s_name            => 'XLA'
53863                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53864                                     ,p_token_1                 => 'LINE_NUMBER'
53865                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53866                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53867                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53868                                                                              l_component_type
53869                                                                             ,l_component_code
53873                                                                             ,l_entity_code
53870                                                                             ,l_component_type_code
53871                                                                             ,l_component_appl_id
53872                                                                             ,l_amb_context_code
53874                                                                             ,l_event_class_code
53875                                                                            )
53876                                     ,p_token_3                 => 'OWNER'
53877                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53878                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53879                                                                           ,p_lookup_code    => l_component_type_code
53880                                                                          )
53881                                     ,p_token_4                 => 'PRODUCT_NAME'
53882                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53883                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53884                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53885                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53886                                     ,p_ae_header_id            =>  NULL
53887                                        );
53888 
53889         IF (C_LEVEL_ERROR>= g_log_level) THEN
53890                  trace
53891                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53892                       ,p_level    => C_LEVEL_ERROR
53893                       ,p_module   => l_log_module);
53894         END IF;
53895       END IF;
53896    END IF;
53897    --
53898    --
53899    ------------------------------------------------------------------------------------------------
53900    -- 4219869 Business Flow
53901    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53902    -- Prior Entry.  Currently, the following code is always generated.
53903    ------------------------------------------------------------------------------------------------
53904    -- No ValidateCurrentLine for business flow method of Prior Entry
53905 
53906    ------------------------------------------------------------------------------------
53907    -- 4219869 Business Flow
53908    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53909    ------------------------------------------------------------------------------------
53910    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53911 
53912    ----------------------------------------------------------------------------------
53913    -- 4219869 Business Flow
53914    -- Update journal entry status -- Need to generate this within IF <condition>
53915    ----------------------------------------------------------------------------------
53916    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53917          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53918          ,p_balance_type_code => l_balance_type_code
53919          );
53920 
53921    -------------------------------------------------------------------------------------------
53922    -- 4262811 - Generate the Accrual Reversal lines
53923    -------------------------------------------------------------------------------------------
53924    BEGIN
53925       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53926                               (g_array_event(p_event_id).array_value_num('header_index'));
53927       IF l_acc_rev_flag IS NULL THEN
53928          l_acc_rev_flag := 'N';
53929       END IF;
53930    EXCEPTION
53931       WHEN OTHERS THEN
53932          l_acc_rev_flag := 'N';
53933    END;
53934    --
53935    IF (l_acc_rev_flag = 'Y') THEN
53936 
53937        -- 4645092  ------------------------------------------------------------------------------
53938        -- To allow MPA report to determine if it should generate report process
53939        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53940        ------------------------------------------------------------------------------------------
53941 
53942        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53943        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53944 
53945        --
53946        -- Update the line information that should be overwritten
53947        --
53948        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53949                                          p_header_num   => 1);
53950        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53951 
53952        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53953 
53954        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53955           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53956        END IF;
53957 
53958       --
53959       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53960       --
53961       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53962           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53963       ELSE
53964           ---------------------------------------------------------------------------------------------------
53965           -- 4262811a Switch Sign
53966           ---------------------------------------------------------------------------------------------------
53967           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53971                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53968           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53969                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53970           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53972           -- 5132302
53973           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53974                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53975 
53976       END IF;
53977 
53978       -- 4955764
53979       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53980       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53981 
53982 
53983       XLA_AE_LINES_PKG.ValidateCurrentLine;
53984       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53985 
53986       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53987                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53988                ,p_balance_type_code => l_balance_type_code);
53989 
53990    END IF;
53991 
53992    -----------------------------------------------------------------------------------------
53993    -- 4262811 Multiperiod Accounting
53994    -----------------------------------------------------------------------------------------
53995      -- No MPA option is assigned.
53996 
53997 
53998 END IF;
53999 END IF;
54000 --
54001 
54002 --
54003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54004    trace
54005       (p_msg      => 'END of AcctLineType_107'
54006       ,p_level    => C_LEVEL_PROCEDURE
54007       ,p_module   => l_log_module);
54008 END IF;
54009 --
54010 EXCEPTION
54011   WHEN xla_exceptions_pkg.application_exception THEN
54012       RAISE;
54013   WHEN OTHERS THEN
54014        xla_exceptions_pkg.raise_message
54015            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_107');
54016 END AcctLineType_107;
54017 --
54018 
54019 ---------------------------------------
54020 --
54021 -- PRIVATE FUNCTION
54022 --         AcctLineType_108
54023 --
54024 ---------------------------------------
54025 PROCEDURE AcctLineType_108 (
54026   p_application_id        IN NUMBER
54027  ,p_event_id              IN NUMBER
54028  ,p_calculate_acctd_flag  IN VARCHAR2
54029  ,p_calculate_g_l_flag    IN VARCHAR2
54030  ,p_actual_flag           IN OUT VARCHAR2
54031  ,p_balance_type_code     OUT VARCHAR2
54032  ,p_gain_or_loss_ref      OUT VARCHAR2
54033  
54034 --Budget Code Combination ID
54035  , p_source_2            IN NUMBER
54036 --Cost CCID
54037  , p_source_3            IN NUMBER
54038 --Cost Clearing CCID
54039  , p_source_6            IN NUMBER
54040 --Reversing Line Flag
54041  , p_source_22            IN VARCHAR2
54042 --Actual Upgrade Credit Accounting Class
54043  , p_source_23            IN VARCHAR2
54044 --Entered Currency Code
54045  , p_source_25            IN VARCHAR2
54046 --Exchange Rate Date
54047  , p_source_27            IN DATE
54048 --Exchange Rate
54049  , p_source_28            IN NUMBER
54050 --Exchange Rate Type
54051  , p_source_29            IN VARCHAR2
54052 --Actual Upgrade Debit Accounting Class
54053  , p_source_30            IN VARCHAR2
54054 --Use Actuals Upgrade Attributes Flag
54055  , p_source_31            IN VARCHAR2
54056 --Expenditure Item ID
54057  , p_source_32            IN NUMBER
54058 --Cost Distribution Line Number
54059  , p_source_33            IN NUMBER
54060 --Line Type
54061  , p_source_34            IN VARCHAR2
54062  , p_source_34_meaning    IN VARCHAR2
54063 --Reversed Line Number
54064  , p_source_35            IN NUMBER
54065 --Entered Burdened Cost
54066  , p_source_44            IN NUMBER
54067 --Accounted Burdened Cost
54068  , p_source_45            IN NUMBER
54069 --Encumbrance Amount
54070  , p_source_46            IN NUMBER
54071 --Encumbrance Upgrade Debit Accounting Class
54072  , p_source_54            IN VARCHAR2
54073 --Use Encumbrance Upgrade Attributes Flag
54074  , p_source_55            IN VARCHAR2
54075 --Encumbrance Type ID
54076  , p_source_56            IN NUMBER
54077 --Project Encumbrance Type ID
54078  , p_source_57            IN NUMBER
54079 --Document Type
54080  , p_source_70            IN VARCHAR2
54081  , p_source_70_meaning    IN VARCHAR2
54082 --Release ID
54083  , p_source_72            IN NUMBER
54084 --Contingent Worker Timecard Flag
54085  , p_source_73            IN VARCHAR2
54086 --Purchase Order Burden Applied to Application Identifier
54087  , p_source_80            IN NUMBER
54088 --Purchase Order Burden Applied to Distribution Type
54089  , p_source_81            IN VARCHAR2
54090 --Purchase Order Burden Applied to Entity Code
54091  , p_source_82            IN VARCHAR2
54092 --Purchase Order Burden Applied to First Distribution Identifier
54093  , p_source_83            IN NUMBER
54094 --Purchase Order Burden Applied to First System Transaction Identifier
54095  , p_source_84            IN NUMBER
54096 --Purchase Order Burden Applied to Second Distribution Identifier
54097  , p_source_85            IN VARCHAR2
54098 )
54099 IS
54100 
54101 l_component_type              VARCHAR2(80);
54102 l_component_code              VARCHAR2(30);
54103 l_component_type_code         VARCHAR2(1);
54104 l_component_appl_id           INTEGER;
54105 l_amb_context_code            VARCHAR2(30);
54106 l_entity_code                 VARCHAR2(30);
54107 l_event_class_code            VARCHAR2(30);
54108 l_ae_header_id                NUMBER;
54109 l_event_type_code             VARCHAR2(30);
54110 l_line_definition_code        VARCHAR2(30);
54114 l_segment                     VARCHAR2(30);
54111 l_line_definition_owner_code  VARCHAR2(1);
54112 --
54113 -- adr variables
54115 l_ccid                        NUMBER;
54116 l_adr_transaction_coa_id      NUMBER;
54117 l_adr_accounting_coa_id       NUMBER;
54118 l_adr_flexfield_segment_code  VARCHAR2(30);
54119 l_adr_flex_value_set_id       NUMBER;
54120 l_adr_value_type_code         VARCHAR2(30);
54121 l_adr_value_combination_id    NUMBER;
54122 l_adr_value_segment_code      VARCHAR2(30);
54123 
54124 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54125 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54126 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54127 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54128 
54129 -- 4262811 Variables ------------------------------------------------------------------------------------------
54130 l_entered_amt_idx             NUMBER;
54131 l_accted_amt_idx              NUMBER;
54132 l_acc_rev_flag                VARCHAR2(1);
54133 l_accrual_line_num            NUMBER;
54134 l_tmp_amt                     NUMBER;
54135 l_acc_rev_natural_side_code   VARCHAR2(1);
54136 
54137 l_num_entries                 NUMBER;
54138 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54139 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54140 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54141 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54142 l_recog_line_1                NUMBER;
54143 l_recog_line_2                NUMBER;
54144 
54145 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54146 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54147 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54148 
54149 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54150 
54151 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54152 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54153 
54154 ---------------------------------------------------------------------------------------------------------------
54155 
54156 
54157 --
54158 -- bulk performance
54159 --
54160 l_balance_type_code           VARCHAR2(1);
54161 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54162 l_log_module                  VARCHAR2(240);
54163 
54164 --
54165 -- Upgrade strategy
54166 --
54167 l_actual_upg_option           VARCHAR2(1);
54168 l_enc_upg_option           VARCHAR2(1);
54169 
54170 --
54171 BEGIN
54172 --
54173 IF g_log_enabled THEN
54174       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
54175 END IF;
54176 --
54177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54178 
54179       trace
54180          (p_msg      => 'BEGIN of AcctLineType_108'
54181          ,p_level    => C_LEVEL_PROCEDURE
54182          ,p_module   => l_log_module);
54183 
54184 END IF;
54185 --
54186 l_component_type             := 'AMB_JLT';
54187 l_component_code             := 'REL_RELEASE_BURDENED_ENC';
54188 l_component_type_code        := 'S';
54189 l_component_appl_id          :=  275;
54190 l_amb_context_code           := 'DEFAULT';
54191 l_entity_code                := 'EXPENDITURES';
54192 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
54193 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
54194 l_line_definition_owner_code := 'S';
54195 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
54196 --
54197 l_balance_type_code          := 'E';
54198 l_segment                     := NULL;
54199 l_ccid                        := NULL;
54200 l_adr_transaction_coa_id      := NULL;
54201 l_adr_accounting_coa_id       := NULL;
54202 l_adr_flexfield_segment_code  := NULL;
54203 l_adr_flex_value_set_id       := NULL;
54204 l_adr_value_type_code         := NULL;
54205 l_adr_value_combination_id    := NULL;
54206 l_adr_value_segment_code      := NULL;
54207 
54208 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
54209 l_bflow_class_code           := 'REL_PA_BURDENED_ENC';    -- 4219869 Business Flow
54210 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54211 l_budgetary_control_flag     := 'N';
54212 
54213 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54214 l_bflow_applied_to_amt       := NULL; -- 5132302
54215 l_entered_amt_idx            := NULL;          -- 4262811
54216 l_accted_amt_idx             := NULL;          -- 4262811
54217 l_acc_rev_flag               := NULL;          -- 4262811
54218 l_accrual_line_num           := NULL;          -- 4262811
54219 l_tmp_amt                    := NULL;          -- 4262811
54220 --
54221  
54222 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54223     l_balance_type_code <> 'B' THEN
54224 IF NVL(p_source_34,'
54225 ') =  'E' AND 
54226 NVL(p_source_70,'
54227 ') =  'PO' AND 
54228 p_source_72 IS NOT NULL AND 
54229 NVL(p_source_73,'
54230 ') =  'N'
54231  THEN 
54232 
54233    --
54234    XLA_AE_LINES_PKG.SetNewLine;
54235 
54236    p_balance_type_code          := l_balance_type_code;
54237    -- set the flag so later we will know whether the gain loss line needs to be created
54238    
54239    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54240      p_actual_flag :='A';
54241    END IF;
54242 
54243    --
54244    -- bulk performance
54245    --
54246    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54247                                       p_header_num   => 0); -- 4262811
54248    --
54249    -- set accounting line options
54250    --
54254          , p_gl_transfer_mode_code      => 'S'
54251    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54252            p_natural_side_code          => 'C'
54253          , p_gain_or_loss_flag          => 'N'
54255          , p_acct_entry_type_code       => 'E'
54256          , p_switch_side_flag           => 'N'
54257          , p_merge_duplicate_code       => 'N'
54258          );
54259    --
54260    l_acc_rev_natural_side_code := 'D';  -- 4262811
54261    -- 
54262    --
54263    -- set accounting line type info
54264    --
54265    xla_ae_lines_pkg.SetAcctLineType
54266       (p_component_type             => l_component_type
54267       ,p_event_type_code            => l_event_type_code
54268       ,p_line_definition_owner_code => l_line_definition_owner_code
54269       ,p_line_definition_code       => l_line_definition_code
54270       ,p_accounting_line_code       => l_component_code
54271       ,p_accounting_line_type_code  => l_component_type_code
54272       ,p_accounting_line_appl_id    => l_component_appl_id
54273       ,p_amb_context_code           => l_amb_context_code
54274       ,p_entity_code                => l_entity_code
54275       ,p_event_class_code           => l_event_class_code);
54276    --
54277    -- set accounting class
54278    --
54279    xla_ae_lines_pkg.SetAcctClass(
54280            p_accounting_class_code  => 'PO_PA_BURDENED'
54281          , p_ae_header_id           => l_ae_header_id
54282          );
54283 
54284    --
54285    -- set rounding class
54286    --
54287    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54288                       'PO_PA_BURDENED';
54289 
54290    --
54291    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54292    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54293    --
54294    -- bulk performance
54295    --
54296    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54297 
54298    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54299       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54300 
54301    -- 4955764
54302    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54303       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54304 
54305    -- 4458381 Public Sector Enh
54306    
54307    --
54308    -- set accounting attributes for the line type
54309    --
54310    l_entered_amt_idx := 35;
54311    l_accted_amt_idx  := 37;
54312    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
54313    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
54314    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
54315    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
54316    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
54317    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
54318    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
54319    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
54320    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
54321    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
54322    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
54323    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
54324    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
54325    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
54326    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
54327    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
54328    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
54329    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
54330    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
54331    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
54332    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
54333    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
54334    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
54335    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
54336    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
54337    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
54338    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
54339    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
54340    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
54341    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
54342    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
54343    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
54344    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
54345    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
54346    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
54347    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
54348    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
54349    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
54350    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
54351    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
54352    l_rec_acct_attrs.array_num_value(20)  := p_source_80;
54353    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54354    l_rec_acct_attrs.array_char_value(21)  := p_source_81;
54355    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
54356    l_rec_acct_attrs.array_char_value(22)  := p_source_82;
54357    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
54358    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_83);
54359    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54363    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
54360    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_84);
54361    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
54362    l_rec_acct_attrs.array_char_value(25)  := p_source_85;
54364    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
54365    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
54366    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
54367    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
54368    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
54369    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
54370    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
54371    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
54372    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
54373    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
54374    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
54375    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
54376    l_rec_acct_attrs.array_char_value(32)  := 
54377 xla_ae_sources_pkg.GetSystemSourceChar(
54378    p_source_code           => 'XLA_CURRENCY_CODE'
54379  , p_source_type_code      => 'Y'
54380  , p_source_application_id =>  602
54381 );
54382    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
54383    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
54384    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
54385    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
54386    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
54387    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
54388    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
54389    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
54390    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
54391    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
54392    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
54393    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
54394    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
54395    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
54396    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
54397    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
54398    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
54399    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
54400    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
54401    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
54402 
54403    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54404    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54405 
54406    ---------------------------------------------------------------------------------------------------------------
54407    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54408    ---------------------------------------------------------------------------------------------------------------
54409    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54410 
54411    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54412    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54413 
54414    IF xla_accounting_cache_pkg.GetValueChar
54415          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54416          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54417    AND l_bflow_method_code = 'PRIOR_ENTRY'
54418 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54419    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54420          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54421        )
54422    THEN
54423          xla_ae_lines_pkg.BflowUpgEntry
54424            (p_business_method_code    => l_bflow_method_code
54425            ,p_business_class_code     => l_bflow_class_code
54426            ,p_balance_type            => l_balance_type_code);
54427    ELSE
54428       NULL;
54429 XLA_AE_LINES_PKG.business_flow_validation(
54430                                 p_business_method_code     => l_bflow_method_code
54431                                ,p_business_class_code      => l_bflow_class_code
54432                                ,p_inherit_description_flag => l_inherit_desc_flag);
54433    END IF;
54434 
54435    --
54436    -- call analytical criteria
54437    --
54438    -- Inherited Analytical Criteria for business flow method of Prior Entry.
54439    --
54440    -- call description
54441    --
54442    -- No description or it is inherited.
54443    --
54444    -- call ADRs
54445    -- Bug 4922099
54446    --
54447    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54448         (NVL(l_actual_upg_option, 'N') = 'O') OR
54449         (NVL(l_enc_upg_option, 'N') = 'O')
54450       )
54451    THEN
54452    NULL;
54453    --
54454    --
54455    
54456    --
54457    --
54458    END IF;
54459    --
54460    -- Bug 4922099
54461    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54462           (NVL(l_enc_upg_option, 'N') = 'O')
54463         ) AND
54464         (l_bflow_method_code = 'PRIOR_ENTRY')
54465       )
54466    THEN
54467       IF
54468       --
54469       1 = 1
54470       --
54471       THEN
54472       xla_accounting_err_pkg.build_message
54473                                     (p_appli_s_name            => 'XLA'
54474                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54475                                     ,p_token_1                 => 'LINE_NUMBER'
54479                                                                              l_component_type
54476                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54477                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54478                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54480                                                                             ,l_component_code
54481                                                                             ,l_component_type_code
54482                                                                             ,l_component_appl_id
54483                                                                             ,l_amb_context_code
54484                                                                             ,l_entity_code
54485                                                                             ,l_event_class_code
54486                                                                            )
54487                                     ,p_token_3                 => 'OWNER'
54488                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54489                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54490                                                                           ,p_lookup_code    => l_component_type_code
54491                                                                          )
54492                                     ,p_token_4                 => 'PRODUCT_NAME'
54493                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54494                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54495                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54496                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54497                                     ,p_ae_header_id            =>  NULL
54498                                        );
54499 
54500         IF (C_LEVEL_ERROR>= g_log_level) THEN
54501                  trace
54502                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54503                       ,p_level    => C_LEVEL_ERROR
54504                       ,p_module   => l_log_module);
54505         END IF;
54506       END IF;
54507    END IF;
54508    --
54509    --
54510    ------------------------------------------------------------------------------------------------
54511    -- 4219869 Business Flow
54512    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54513    -- Prior Entry.  Currently, the following code is always generated.
54514    ------------------------------------------------------------------------------------------------
54515    -- No ValidateCurrentLine for business flow method of Prior Entry
54516 
54517    ------------------------------------------------------------------------------------
54518    -- 4219869 Business Flow
54519    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54520    ------------------------------------------------------------------------------------
54521    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54522 
54523    ----------------------------------------------------------------------------------
54524    -- 4219869 Business Flow
54525    -- Update journal entry status -- Need to generate this within IF <condition>
54526    ----------------------------------------------------------------------------------
54527    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54528          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54529          ,p_balance_type_code => l_balance_type_code
54530          );
54531 
54532    -------------------------------------------------------------------------------------------
54533    -- 4262811 - Generate the Accrual Reversal lines
54534    -------------------------------------------------------------------------------------------
54535    BEGIN
54536       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54537                               (g_array_event(p_event_id).array_value_num('header_index'));
54538       IF l_acc_rev_flag IS NULL THEN
54539          l_acc_rev_flag := 'N';
54540       END IF;
54541    EXCEPTION
54542       WHEN OTHERS THEN
54543          l_acc_rev_flag := 'N';
54544    END;
54545    --
54546    IF (l_acc_rev_flag = 'Y') THEN
54547 
54548        -- 4645092  ------------------------------------------------------------------------------
54549        -- To allow MPA report to determine if it should generate report process
54550        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54551        ------------------------------------------------------------------------------------------
54552 
54553        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54554        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54555 
54556        --
54557        -- Update the line information that should be overwritten
54558        --
54559        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54560                                          p_header_num   => 1);
54561        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54562 
54563        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54564 
54565        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54566           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54567        END IF;
54568 
54569       --
54570       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54571       --
54572       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54576           -- 4262811a Switch Sign
54573           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54574       ELSE
54575           ---------------------------------------------------------------------------------------------------
54577           ---------------------------------------------------------------------------------------------------
54578           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54579           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54580                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54581           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54582                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54583           -- 5132302
54584           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54585                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54586 
54587       END IF;
54588 
54589       -- 4955764
54590       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54591       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54592 
54593 
54594       XLA_AE_LINES_PKG.ValidateCurrentLine;
54595       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54596 
54597       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54598                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54599                ,p_balance_type_code => l_balance_type_code);
54600 
54601    END IF;
54602 
54603    -----------------------------------------------------------------------------------------
54604    -- 4262811 Multiperiod Accounting
54605    -----------------------------------------------------------------------------------------
54606      -- No MPA option is assigned.
54607 
54608 
54609 END IF;
54610 END IF;
54611 --
54612 
54613 --
54614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54615    trace
54616       (p_msg      => 'END of AcctLineType_108'
54617       ,p_level    => C_LEVEL_PROCEDURE
54618       ,p_module   => l_log_module);
54619 END IF;
54620 --
54621 EXCEPTION
54622   WHEN xla_exceptions_pkg.application_exception THEN
54623       RAISE;
54624   WHEN OTHERS THEN
54625        xla_exceptions_pkg.raise_message
54626            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_108');
54627 END AcctLineType_108;
54628 --
54629 
54630 ---------------------------------------
54631 --
54632 -- PRIVATE FUNCTION
54633 --         AcctLineType_109
54634 --
54635 ---------------------------------------
54636 PROCEDURE AcctLineType_109 (
54637   p_application_id        IN NUMBER
54638  ,p_event_id              IN NUMBER
54639  ,p_calculate_acctd_flag  IN VARCHAR2
54640  ,p_calculate_g_l_flag    IN VARCHAR2
54641  ,p_actual_flag           IN OUT VARCHAR2
54642  ,p_balance_type_code     OUT VARCHAR2
54643  ,p_gain_or_loss_ref      OUT VARCHAR2
54644  
54645 --Budget Code Combination ID
54646  , p_source_2            IN NUMBER
54647 --Cost CCID
54648  , p_source_3            IN NUMBER
54649 --Cost Clearing CCID
54650  , p_source_6            IN NUMBER
54651 --Reversing Line Flag
54652  , p_source_22            IN VARCHAR2
54653 --Actual Upgrade Credit Accounting Class
54654  , p_source_23            IN VARCHAR2
54655 --Entered Currency Code
54656  , p_source_25            IN VARCHAR2
54657 --Exchange Rate Date
54658  , p_source_27            IN DATE
54659 --Exchange Rate
54660  , p_source_28            IN NUMBER
54661 --Exchange Rate Type
54662  , p_source_29            IN VARCHAR2
54663 --Actual Upgrade Debit Accounting Class
54664  , p_source_30            IN VARCHAR2
54665 --Use Actuals Upgrade Attributes Flag
54666  , p_source_31            IN VARCHAR2
54667 --Expenditure Item ID
54668  , p_source_32            IN NUMBER
54669 --Cost Distribution Line Number
54670  , p_source_33            IN NUMBER
54671 --Line Type
54672  , p_source_34            IN VARCHAR2
54673  , p_source_34_meaning    IN VARCHAR2
54674 --Reversed Line Number
54675  , p_source_35            IN NUMBER
54676 --Entered Burdened Cost
54677  , p_source_44            IN NUMBER
54678 --Accounted Burdened Cost
54679  , p_source_45            IN NUMBER
54680 --Encumbrance Amount
54681  , p_source_46            IN NUMBER
54682 --Encumbrance Upgrade Credit Accounting Class
54683  , p_source_53            IN VARCHAR2
54684 --Encumbrance Upgrade Debit Accounting Class
54685  , p_source_54            IN VARCHAR2
54686 --Use Encumbrance Upgrade Attributes Flag
54687  , p_source_55            IN VARCHAR2
54688 --Encumbrance Type ID
54689  , p_source_56            IN NUMBER
54690 --Project Encumbrance Type ID
54691  , p_source_57            IN NUMBER
54692 --Document Type
54693  , p_source_70            IN VARCHAR2
54694  , p_source_70_meaning    IN VARCHAR2
54695 --Release ID
54696  , p_source_72            IN NUMBER
54697 --Contingent Worker Timecard Flag
54698  , p_source_73            IN VARCHAR2
54699 --Purchase Order Burden Applied to Application Identifier
54700  , p_source_80            IN NUMBER
54701 --Purchase Order Burden Applied to Distribution Type
54702  , p_source_81            IN VARCHAR2
54703 --Purchase Order Burden Applied to Entity Code
54704  , p_source_82            IN VARCHAR2
54705 --Purchase Order Burden Applied to First Distribution Identifier
54706  , p_source_83            IN NUMBER
54707 --Purchase Order Burden Applied to First System Transaction Identifier
54708  , p_source_84            IN NUMBER
54712 IS
54709 --Purchase Order Burden Applied to Second Distribution Identifier
54710  , p_source_85            IN VARCHAR2
54711 )
54713 
54714 l_component_type              VARCHAR2(80);
54715 l_component_code              VARCHAR2(30);
54716 l_component_type_code         VARCHAR2(1);
54717 l_component_appl_id           INTEGER;
54718 l_amb_context_code            VARCHAR2(30);
54719 l_entity_code                 VARCHAR2(30);
54720 l_event_class_code            VARCHAR2(30);
54721 l_ae_header_id                NUMBER;
54722 l_event_type_code             VARCHAR2(30);
54723 l_line_definition_code        VARCHAR2(30);
54724 l_line_definition_owner_code  VARCHAR2(1);
54725 --
54726 -- adr variables
54727 l_segment                     VARCHAR2(30);
54728 l_ccid                        NUMBER;
54729 l_adr_transaction_coa_id      NUMBER;
54730 l_adr_accounting_coa_id       NUMBER;
54731 l_adr_flexfield_segment_code  VARCHAR2(30);
54732 l_adr_flex_value_set_id       NUMBER;
54733 l_adr_value_type_code         VARCHAR2(30);
54734 l_adr_value_combination_id    NUMBER;
54735 l_adr_value_segment_code      VARCHAR2(30);
54736 
54737 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54738 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54739 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54740 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54741 
54742 -- 4262811 Variables ------------------------------------------------------------------------------------------
54743 l_entered_amt_idx             NUMBER;
54744 l_accted_amt_idx              NUMBER;
54745 l_acc_rev_flag                VARCHAR2(1);
54746 l_accrual_line_num            NUMBER;
54747 l_tmp_amt                     NUMBER;
54748 l_acc_rev_natural_side_code   VARCHAR2(1);
54749 
54750 l_num_entries                 NUMBER;
54751 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54752 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54753 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54754 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54755 l_recog_line_1                NUMBER;
54756 l_recog_line_2                NUMBER;
54757 
54758 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54759 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54760 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54761 
54762 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54763 
54764 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54765 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54766 
54767 ---------------------------------------------------------------------------------------------------------------
54768 
54769 
54770 --
54771 -- bulk performance
54772 --
54773 l_balance_type_code           VARCHAR2(1);
54774 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54775 l_log_module                  VARCHAR2(240);
54776 
54777 --
54778 -- Upgrade strategy
54779 --
54780 l_actual_upg_option           VARCHAR2(1);
54781 l_enc_upg_option           VARCHAR2(1);
54782 
54783 --
54784 BEGIN
54785 --
54786 IF g_log_enabled THEN
54787       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
54788 END IF;
54789 --
54790 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54791 
54792       trace
54793          (p_msg      => 'BEGIN of AcctLineType_109'
54794          ,p_level    => C_LEVEL_PROCEDURE
54795          ,p_module   => l_log_module);
54796 
54797 END IF;
54798 --
54799 l_component_type             := 'AMB_JLT';
54800 l_component_code             := 'REL_RELEASE_BURDEN_ENC';
54801 l_component_type_code        := 'S';
54802 l_component_appl_id          :=  275;
54803 l_amb_context_code           := 'DEFAULT';
54804 l_entity_code                := 'EXPENDITURES';
54805 l_event_class_code           := 'BURDEN_COST';
54806 l_event_type_code            := 'BURDEN_COST_ALL';
54807 l_line_definition_owner_code := 'S';
54808 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
54809 --
54810 l_balance_type_code          := 'E';
54811 l_segment                     := NULL;
54812 l_ccid                        := NULL;
54813 l_adr_transaction_coa_id      := NULL;
54814 l_adr_accounting_coa_id       := NULL;
54815 l_adr_flexfield_segment_code  := NULL;
54816 l_adr_flex_value_set_id       := NULL;
54817 l_adr_value_type_code         := NULL;
54818 l_adr_value_combination_id    := NULL;
54819 l_adr_value_segment_code      := NULL;
54820 
54821 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
54822 l_bflow_class_code           := 'REL_PA_BURDEN_ENC';    -- 4219869 Business Flow
54823 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54824 l_budgetary_control_flag     := 'N';
54825 
54826 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54827 l_bflow_applied_to_amt       := NULL; -- 5132302
54828 l_entered_amt_idx            := NULL;          -- 4262811
54829 l_accted_amt_idx             := NULL;          -- 4262811
54830 l_acc_rev_flag               := NULL;          -- 4262811
54831 l_accrual_line_num           := NULL;          -- 4262811
54832 l_tmp_amt                    := NULL;          -- 4262811
54833 --
54834  
54835 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54836     l_balance_type_code <> 'B' THEN
54837 IF NVL(p_source_34,'
54838 ') =  'E' AND 
54839 NVL(p_source_70,'
54840 ') =  'PO' AND 
54841 p_source_72 IS NOT NULL AND 
54842 NVL(p_source_73,'
54843 ') =  'N'
54844  THEN 
54845 
54846    --
54847    XLA_AE_LINES_PKG.SetNewLine;
54848 
54852    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54849    p_balance_type_code          := l_balance_type_code;
54850    -- set the flag so later we will know whether the gain loss line needs to be created
54851    
54853      p_actual_flag :='A';
54854    END IF;
54855 
54856    --
54857    -- bulk performance
54858    --
54859    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54860                                       p_header_num   => 0); -- 4262811
54861    --
54862    -- set accounting line options
54863    --
54864    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54865            p_natural_side_code          => 'C'
54866          , p_gain_or_loss_flag          => 'N'
54867          , p_gl_transfer_mode_code      => 'S'
54868          , p_acct_entry_type_code       => 'E'
54869          , p_switch_side_flag           => 'N'
54870          , p_merge_duplicate_code       => 'N'
54871          );
54872    --
54873    l_acc_rev_natural_side_code := 'D';  -- 4262811
54874    -- 
54875    --
54876    -- set accounting line type info
54877    --
54878    xla_ae_lines_pkg.SetAcctLineType
54879       (p_component_type             => l_component_type
54880       ,p_event_type_code            => l_event_type_code
54881       ,p_line_definition_owner_code => l_line_definition_owner_code
54882       ,p_line_definition_code       => l_line_definition_code
54883       ,p_accounting_line_code       => l_component_code
54884       ,p_accounting_line_type_code  => l_component_type_code
54885       ,p_accounting_line_appl_id    => l_component_appl_id
54886       ,p_amb_context_code           => l_amb_context_code
54887       ,p_entity_code                => l_entity_code
54888       ,p_event_class_code           => l_event_class_code);
54889    --
54890    -- set accounting class
54891    --
54892    xla_ae_lines_pkg.SetAcctClass(
54893            p_accounting_class_code  => 'PO_PA_BURDEN'
54894          , p_ae_header_id           => l_ae_header_id
54895          );
54896 
54897    --
54898    -- set rounding class
54899    --
54900    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54901                       'PO_PA_BURDEN';
54902 
54903    --
54904    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54905    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54906    --
54907    -- bulk performance
54908    --
54909    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54910 
54911    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54912       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54913 
54914    -- 4955764
54915    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54917 
54918    -- 4458381 Public Sector Enh
54919    
54920    --
54921    -- set accounting attributes for the line type
54922    --
54923    l_entered_amt_idx := 40;
54924    l_accted_amt_idx  := 42;
54925    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
54926    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
54927    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
54928    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
54929    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
54930    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
54931    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
54932    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
54933    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
54934    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
54935    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
54936    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
54937    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
54938    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
54939    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
54940    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
54941    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
54942    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
54943    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
54944    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
54945    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
54946    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
54947    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
54948    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
54949    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
54950    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
54951    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
54952    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
54953    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
54954    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
54955    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
54956    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
54957    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
54958    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
54959    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
54960    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
54961    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
54962    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
54963    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
54964    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
54968    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
54965    l_rec_acct_attrs.array_num_value(20)  := p_source_80;
54966    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54967    l_rec_acct_attrs.array_char_value(21)  := p_source_81;
54969    l_rec_acct_attrs.array_char_value(22)  := p_source_82;
54970    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
54971    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_83);
54972    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54973    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_84);
54974    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
54975    l_rec_acct_attrs.array_char_value(25)  := p_source_85;
54976    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
54977    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
54978    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
54979    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
54980    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
54981    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
54982    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
54983    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
54984    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
54985    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
54986    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
54987    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
54988    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
54989    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
54990    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
54991    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
54992    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
54993    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
54994    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
54995    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
54996    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
54997    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
54998    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
54999    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
55000    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
55001    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
55002    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
55003    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
55004    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
55005    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
55006    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
55007    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
55008    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
55009    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
55010    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
55011    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
55012    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
55013    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
55014    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
55015    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
55016    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
55017    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
55018    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
55019    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
55020 
55021    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55022    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55023 
55024    ---------------------------------------------------------------------------------------------------------------
55025    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55026    ---------------------------------------------------------------------------------------------------------------
55027    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55028 
55029    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55030    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55031 
55032    IF xla_accounting_cache_pkg.GetValueChar
55033          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55034          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55035    AND l_bflow_method_code = 'PRIOR_ENTRY'
55036 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55037    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55038          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55039        )
55040    THEN
55041          xla_ae_lines_pkg.BflowUpgEntry
55042            (p_business_method_code    => l_bflow_method_code
55043            ,p_business_class_code     => l_bflow_class_code
55044            ,p_balance_type            => l_balance_type_code);
55045    ELSE
55046       NULL;
55047 XLA_AE_LINES_PKG.business_flow_validation(
55048                                 p_business_method_code     => l_bflow_method_code
55049                                ,p_business_class_code      => l_bflow_class_code
55050                                ,p_inherit_description_flag => l_inherit_desc_flag);
55051    END IF;
55052 
55053    --
55054    -- call analytical criteria
55055    --
55056    -- Inherited Analytical Criteria for business flow method of Prior Entry.
55057    --
55058    -- call description
55059    --
55060    -- No description or it is inherited.
55061    --
55062    -- call ADRs
55066         (NVL(l_actual_upg_option, 'N') = 'O') OR
55063    -- Bug 4922099
55064    --
55065    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55067         (NVL(l_enc_upg_option, 'N') = 'O')
55068       )
55069    THEN
55070    NULL;
55071    --
55072    --
55073    
55074    --
55075    --
55076    END IF;
55077    --
55078    -- Bug 4922099
55079    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55080           (NVL(l_enc_upg_option, 'N') = 'O')
55081         ) AND
55082         (l_bflow_method_code = 'PRIOR_ENTRY')
55083       )
55084    THEN
55085       IF
55086       --
55087       1 = 1
55088       --
55089       THEN
55090       xla_accounting_err_pkg.build_message
55091                                     (p_appli_s_name            => 'XLA'
55092                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55093                                     ,p_token_1                 => 'LINE_NUMBER'
55094                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55095                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55096                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55097                                                                              l_component_type
55098                                                                             ,l_component_code
55099                                                                             ,l_component_type_code
55100                                                                             ,l_component_appl_id
55101                                                                             ,l_amb_context_code
55102                                                                             ,l_entity_code
55103                                                                             ,l_event_class_code
55104                                                                            )
55105                                     ,p_token_3                 => 'OWNER'
55106                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55107                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55108                                                                           ,p_lookup_code    => l_component_type_code
55109                                                                          )
55110                                     ,p_token_4                 => 'PRODUCT_NAME'
55111                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55112                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55113                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55114                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55115                                     ,p_ae_header_id            =>  NULL
55116                                        );
55117 
55118         IF (C_LEVEL_ERROR>= g_log_level) THEN
55119                  trace
55120                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55121                       ,p_level    => C_LEVEL_ERROR
55122                       ,p_module   => l_log_module);
55123         END IF;
55124       END IF;
55125    END IF;
55126    --
55127    --
55128    ------------------------------------------------------------------------------------------------
55129    -- 4219869 Business Flow
55130    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55131    -- Prior Entry.  Currently, the following code is always generated.
55132    ------------------------------------------------------------------------------------------------
55133    -- No ValidateCurrentLine for business flow method of Prior Entry
55134 
55135    ------------------------------------------------------------------------------------
55136    -- 4219869 Business Flow
55137    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55138    ------------------------------------------------------------------------------------
55139    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55140 
55141    ----------------------------------------------------------------------------------
55142    -- 4219869 Business Flow
55143    -- Update journal entry status -- Need to generate this within IF <condition>
55144    ----------------------------------------------------------------------------------
55145    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55146          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55147          ,p_balance_type_code => l_balance_type_code
55148          );
55149 
55150    -------------------------------------------------------------------------------------------
55151    -- 4262811 - Generate the Accrual Reversal lines
55152    -------------------------------------------------------------------------------------------
55153    BEGIN
55154       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55155                               (g_array_event(p_event_id).array_value_num('header_index'));
55156       IF l_acc_rev_flag IS NULL THEN
55157          l_acc_rev_flag := 'N';
55158       END IF;
55159    EXCEPTION
55160       WHEN OTHERS THEN
55161          l_acc_rev_flag := 'N';
55162    END;
55163    --
55164    IF (l_acc_rev_flag = 'Y') THEN
55165 
55166        -- 4645092  ------------------------------------------------------------------------------
55167        -- To allow MPA report to determine if it should generate report process
55168        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55169        ------------------------------------------------------------------------------------------
55170 
55171        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55175        -- Update the line information that should be overwritten
55172        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55173 
55174        --
55176        --
55177        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55178                                          p_header_num   => 1);
55179        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55180 
55181        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55182 
55183        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55184           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55185        END IF;
55186 
55187       --
55188       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55189       --
55190       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55191           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55192       ELSE
55193           ---------------------------------------------------------------------------------------------------
55194           -- 4262811a Switch Sign
55195           ---------------------------------------------------------------------------------------------------
55196           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55197           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55198                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55199           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55200                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55201           -- 5132302
55202           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55203                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55204 
55205       END IF;
55206 
55207       -- 4955764
55208       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55209       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55210 
55211 
55212       XLA_AE_LINES_PKG.ValidateCurrentLine;
55213       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55214 
55215       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55216                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55217                ,p_balance_type_code => l_balance_type_code);
55218 
55219    END IF;
55220 
55221    -----------------------------------------------------------------------------------------
55222    -- 4262811 Multiperiod Accounting
55223    -----------------------------------------------------------------------------------------
55224      -- No MPA option is assigned.
55225 
55226 
55227 END IF;
55228 END IF;
55229 --
55230 
55231 --
55232 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55233    trace
55234       (p_msg      => 'END of AcctLineType_109'
55235       ,p_level    => C_LEVEL_PROCEDURE
55236       ,p_module   => l_log_module);
55237 END IF;
55238 --
55239 EXCEPTION
55240   WHEN xla_exceptions_pkg.application_exception THEN
55241       RAISE;
55242   WHEN OTHERS THEN
55243        xla_exceptions_pkg.raise_message
55244            (p_location => 'XLA_00275_AAD_S_000016_PKG.AcctLineType_109');
55245 END AcctLineType_109;
55246 --
55247 
55248 ---------------------------------------
55249 --
55250 -- PRIVATE PROCEDURE
55251 --         insert_sources_110
55252 --
55253 ----------------------------------------
55254 --
55255 PROCEDURE insert_sources_110(
55256                                 p_target_ledger_id       IN NUMBER
55257                               , p_language               IN VARCHAR2
55258                               , p_sla_ledger_id          IN NUMBER
55259                               , p_pad_start_date         IN DATE
55260                               , p_pad_end_date           IN DATE
55261                          )
55262 IS
55263 
55264 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ADJ_ALL';
55265 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT_ADJ';
55266 p_apps_owner                   VARCHAR2(30);
55267 l_log_module                   VARCHAR2(240);
55268 BEGIN
55269 IF g_log_enabled THEN
55270       l_log_module := C_DEFAULT_MODULE||'.insert_sources_110';
55271 END IF;
55272 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55273 
55274       trace
55275          (p_msg      => 'BEGIN of insert_sources_110'
55276          ,p_level    => C_LEVEL_PROCEDURE
55277          ,p_module   => l_log_module);
55278 
55279 END IF;
55280 
55281 -- select APPS owner
55282 SELECT oracle_username
55283   INTO p_apps_owner
55284   FROM fnd_oracle_userid
55285  WHERE read_only_flag = 'U'
55286 ;
55287 
55288 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55289       trace
55290          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
55291                         ' - p_language = '||p_language||
55292                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
55293                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
55294                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
55295                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
55296          ,p_level    => C_LEVEL_STATEMENT
55297          ,p_module   => l_log_module);
55298 END IF;
55299 
55300 
55301 --
55302 INSERT INTO xla_diag_sources --hdr2
55303 (
55304         event_id
55305       , ledger_id
55309       , object_type_code
55306       , sla_ledger_id
55307       , description_language
55308       , object_name
55310       , line_number
55311       , source_application_id
55312       , source_type_code
55313       , source_code
55314       , source_value
55315       , source_meaning
55316       , created_by
55317       , creation_date
55318       , last_update_date
55319       , last_updated_by
55320       , last_update_login
55321       , program_update_date
55322       , program_application_id
55323       , program_id
55324       , request_id
55325 )
55326 SELECT
55327         event_id
55328       , p_target_ledger_id
55329       , p_sla_ledger_id
55330       , p_language
55331       , object_name
55332       , object_type_code
55333       , line_number
55334       , source_application_id
55335       , source_type_code
55336       , source_code
55337       , SUBSTR(source_value ,1,1996)
55338       , SUBSTR(source_meaning ,1,200)
55339       , xla_environment_pkg.g_Usr_Id
55340       , TRUNC(SYSDATE)
55341       , TRUNC(SYSDATE)
55342       , xla_environment_pkg.g_Usr_Id
55343       , xla_environment_pkg.g_Login_Id
55344       , TRUNC(SYSDATE)
55345       , xla_environment_pkg.g_Prog_Appl_Id
55346       , xla_environment_pkg.g_Prog_Id
55347       , xla_environment_pkg.g_Req_Id
55348   FROM (
55349        SELECT xet.event_id                  event_id
55350             , 0                          line_number
55351             , CASE r
55352                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
55353                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
55354                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
55355                 
55356                ELSE null
55357               END                           object_name
55358             , CASE r
55359                 WHEN 1 THEN 'HEADER' 
55360                 WHEN 2 THEN 'HEADER' 
55361                 WHEN 3 THEN 'HEADER' 
55362                 
55363                 ELSE null
55364               END                           object_type_code
55365             , CASE r
55366                 WHEN 1 THEN '275' 
55367                 WHEN 2 THEN '275' 
55368                 WHEN 3 THEN '275' 
55369                 
55370                 ELSE null
55371               END                           source_application_id
55372             , 'S'             source_type_code
55373             , CASE r
55374                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
55375                 WHEN 2 THEN 'TP_AMT_TYPE_CODE' 
55376                 WHEN 3 THEN 'GL_DATE' 
55377                 
55378                 ELSE null
55379               END                           source_code
55380             , CASE r
55381                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
55382                 WHEN 2 THEN TO_CHAR(h2.TP_AMT_TYPE_CODE)
55383                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
55384                 
55385                 ELSE null
55386               END                           source_value
55387             , CASE r
55388                 WHEN 2 THEN fvl67.meaning
55389                 
55390                 ELSE null
55391               END               source_meaning
55392          FROM xla_events_gt     xet  
55393       , PA_XLA_EXP_HEADER_V  h2
55394   , fnd_lookup_values    fvl67
55395              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
55396          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
55397            AND xet.event_class_code = C_EVENT_CLASS_CODE
55398               AND h2.event_id = xet.event_id
55399    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
55400   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
55401   AND fvl67.view_application_id(+) = 275
55402   AND fvl67.language(+)            = USERENV('LANG')
55403   
55404 )
55405 ;
55406 --
55407 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55408 
55409       trace
55410          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
55411          ,p_level    => C_LEVEL_STATEMENT
55412          ,p_module   => l_log_module);
55413 
55414 END IF;
55415 --
55416 
55417 
55418 
55419 --
55420 INSERT INTO xla_diag_sources  --line2
55421 (
55422         event_id
55423       , ledger_id
55424       , sla_ledger_id
55425       , description_language
55426       , object_name
55427       , object_type_code
55428       , line_number
55429       , source_application_id
55430       , source_type_code
55431       , source_code
55432       , source_value
55433       , source_meaning
55434       , created_by
55435       , creation_date
55436       , last_update_date
55437       , last_updated_by
55438       , last_update_login
55439       , program_update_date
55440       , program_application_id
55441       , program_id
55442       , request_id
55443 )
55444 SELECT  event_id
55445       , p_target_ledger_id
55446       , p_sla_ledger_id
55447       , p_language
55448       , object_name
55449       , object_type_code
55450       , line_number
55451       , source_application_id
55452       , source_type_code
55453       , source_code
55454       , SUBSTR(source_value,1,1996)
55455       , SUBSTR(source_meaning ,1,200)
55456       , xla_environment_pkg.g_Usr_Id
55457       , TRUNC(SYSDATE)
55458       , TRUNC(SYSDATE)
55459       , xla_environment_pkg.g_Usr_Id
55460       , xla_environment_pkg.g_Login_Id
55461       , TRUNC(SYSDATE)
55462       , xla_environment_pkg.g_Prog_Appl_Id
55463       , xla_environment_pkg.g_Prog_Id
55464       , xla_environment_pkg.g_Req_Id
55465   FROM (
55466        SELECT xet.event_id                  event_id
55470                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
55467             , l1.line_number                 line_number
55468             , CASE r
55469                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
55471                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
55472                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
55473                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
55474                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
55475                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
55476                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
55477                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
55478                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
55479                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
55480                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
55481                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
55482                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
55483                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
55484                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
55485                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
55486                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
55487                 
55488                ELSE null
55489               END                           object_name
55490             , CASE r
55491                 WHEN 1 THEN 'LINE' 
55492                 WHEN 2 THEN 'LINE' 
55493                 WHEN 3 THEN 'LINE' 
55494                 WHEN 4 THEN 'LINE' 
55495                 WHEN 5 THEN 'LINE' 
55496                 WHEN 6 THEN 'LINE' 
55497                 WHEN 7 THEN 'LINE' 
55498                 WHEN 8 THEN 'LINE' 
55499                 WHEN 9 THEN 'LINE' 
55500                 WHEN 10 THEN 'LINE' 
55501                 WHEN 11 THEN 'LINE' 
55502                 WHEN 12 THEN 'LINE' 
55503                 WHEN 13 THEN 'LINE' 
55504                 WHEN 14 THEN 'LINE' 
55505                 WHEN 15 THEN 'LINE' 
55506                 WHEN 16 THEN 'LINE' 
55507                 WHEN 17 THEN 'LINE' 
55508                 WHEN 18 THEN 'LINE' 
55509                 
55510                 ELSE null
55511               END                           object_type_code
55512             , CASE r
55513                 WHEN 1 THEN '275' 
55514                 WHEN 2 THEN '275' 
55515                 WHEN 3 THEN '275' 
55516                 WHEN 4 THEN '275' 
55517                 WHEN 5 THEN '275' 
55518                 WHEN 6 THEN '275' 
55519                 WHEN 7 THEN '275' 
55520                 WHEN 8 THEN '275' 
55521                 WHEN 9 THEN '275' 
55522                 WHEN 10 THEN '275' 
55523                 WHEN 11 THEN '275' 
55524                 WHEN 12 THEN '275' 
55525                 WHEN 13 THEN '275' 
55526                 WHEN 14 THEN '275' 
55527                 WHEN 15 THEN '275' 
55528                 WHEN 16 THEN '275' 
55529                 WHEN 17 THEN '275' 
55530                 WHEN 18 THEN '275' 
55531                 
55532                 ELSE null
55533               END                           source_application_id
55534             , 'S'             source_type_code
55535             , CASE r
55536                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
55537                 WHEN 2 THEN 'PROVIDER_CCID' 
55538                 WHEN 3 THEN 'ADJ_PROVIDER_CCID' 
55539                 WHEN 4 THEN 'ADJ_RECEIVER_CCID' 
55540                 WHEN 5 THEN 'RECEIVER_CCID' 
55541                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
55542                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
55543                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
55544                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
55545                 WHEN 10 THEN 'EXCHANGE_RATE' 
55546                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
55547                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
55548                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
55549                 WHEN 14 THEN 'LINE_NUMBER' 
55550                 WHEN 15 THEN 'LINE_TYPE' 
55551                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
55552                 WHEN 17 THEN 'ENTERED_AMOUNT' 
55553                 WHEN 18 THEN 'ACCT_AMOUNT' 
55554                 
55555                 ELSE null
55556               END                           source_code
55557             , CASE r
55558                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
55559                 WHEN 2 THEN TO_CHAR(l1.PROVIDER_CCID)
55560                 WHEN 3 THEN TO_CHAR(l1.ADJ_PROVIDER_CCID)
55561                 WHEN 4 THEN TO_CHAR(l1.ADJ_RECEIVER_CCID)
55562                 WHEN 5 THEN TO_CHAR(l1.RECEIVER_CCID)
55563                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
55564                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
55565                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
55566                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
55567                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
55568                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
55569                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
55570                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
55571                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
55572                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
55573                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
55574                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
55575                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
55576                 
55577                 ELSE null
55578               END                           source_value
55579             , CASE r
55580                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
55581                           103371
55582                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
55583                          ,'ALLOW_OVERRIDE_CCID_FLAG'
55584                          ,'S'
55585                          ,275)
55586                 WHEN 15 THEN fvl34.meaning
55587                 
55588                 ELSE null
55589               END               source_meaning
55593             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
55590          FROM  xla_events_gt     xet  
55591         , PA_XLA_CCDL_LINES_V  l1
55592   , fnd_lookup_values    fvl34
55594         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
55595           AND xet.event_class_code = C_EVENT_CLASS_CODE
55596             AND l1.event_id          = xet.event_id
55597    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
55598   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
55599   AND fvl34.view_application_id(+) = 275
55600   AND fvl34.language(+)            = USERENV('LANG')
55601   
55602 )
55603 ;
55604 --
55605 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55606 
55607       trace
55608          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
55609          ,p_level    => C_LEVEL_STATEMENT
55610          ,p_module   => l_log_module);
55611 
55612 END IF;
55613 
55614 
55615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55616       trace
55617          (p_msg      => 'END of insert_sources_110'
55618          ,p_level    => C_LEVEL_PROCEDURE
55619          ,p_module   => l_log_module);
55620 END IF;
55621 EXCEPTION
55622   WHEN xla_exceptions_pkg.application_exception THEN
55623       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
55624             trace
55625                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
55626                ,p_level    => C_LEVEL_EXCEPTION
55627                ,p_module   => l_log_module);
55628       END IF;
55629       RAISE;
55630   WHEN OTHERS THEN
55631       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
55632             trace
55633                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
55634                ,p_level    => C_LEVEL_EXCEPTION
55635                ,p_module   => l_log_module);
55636        END IF;
55637        xla_exceptions_pkg.raise_message
55638            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_110');
55639 END insert_sources_110;
55640 --
55641 
55642 ---------------------------------------
55643 --
55644 -- PRIVATE FUNCTION
55645 --         EventClass_110
55646 --
55647 ----------------------------------------
55648 --
55649 FUNCTION EventClass_110
55650        (p_application_id         IN NUMBER
55651        ,p_base_ledger_id         IN NUMBER
55652        ,p_target_ledger_id       IN NUMBER
55653        ,p_language               IN VARCHAR2
55654        ,p_currency_code          IN VARCHAR2
55655        ,p_sla_ledger_id          IN NUMBER
55656        ,p_pad_start_date         IN DATE
55657        ,p_pad_end_date           IN DATE
55658        ,p_primary_ledger_id      IN NUMBER)
55659 RETURN BOOLEAN IS
55660 --
55661 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ADJ_ALL';
55662 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT_ADJ';
55663 
55664 l_calculate_acctd_flag   VARCHAR2(1) :='N';
55665 l_calculate_g_l_flag     VARCHAR2(1) :='N';
55666 --
55667 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55668 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55669 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55670 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55671 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55672 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55673 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55674 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55675 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55676 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55677 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55678 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55679 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55680 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55681 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55682 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55683 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55684 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55685 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55686 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55687 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55688 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55689 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
55690 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55691 
55692 l_event_id                             NUMBER;
55693 l_previous_event_id                    NUMBER;
55694 l_first_event_id                       NUMBER;
55695 l_last_event_id                        NUMBER;
55696 
55697 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
55698 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
55699 --
55700 --
55701 l_result                    BOOLEAN := TRUE;
55702 l_rows                      NUMBER  := 1000;
55703 l_event_type_name           VARCHAR2(80) := 'All';
55704 l_event_class_name          VARCHAR2(80) := 'Borrowed and Lent Adjustment';
55705 l_description               VARCHAR2(4000);
55706 l_transaction_reversal      NUMBER;
55707 l_ae_header_id              NUMBER;
55708 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
55709 l_log_module                VARCHAR2(240);
55710 --
55711 l_acct_reversal_source      VARCHAR2(30);
55712 l_trx_reversal_source       VARCHAR2(30);
55716 l_acc_rev_gl_date_source    DATE;                      -- 4262811
55713 
55714 l_continue_with_lines       BOOLEAN := TRUE;
55715 --
55717 --
55718 type t_array_event_id is table of number index by binary_integer;
55719 
55720 l_rec_array_event                    t_rec_array_event;
55721 l_null_rec_array_event               t_rec_array_event;
55722 l_array_ae_header_id                 xla_number_array_type;
55723 l_actual_flag                        VARCHAR2(1) := NULL;
55724 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
55725 l_balance_type_code                  VARCHAR2(1) :=NULL;
55726 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
55727 
55728 --
55729 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
55730 --
55731 
55732 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
55733 TYPE t_array_source_67 IS TABLE OF PA_XLA_EXP_HEADER_V.TP_AMT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
55734 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
55735 
55736 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
55737 TYPE t_array_source_8 IS TABLE OF PA_XLA_CCDL_LINES_V.PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
55738 TYPE t_array_source_9 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
55739 TYPE t_array_source_10 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
55740 TYPE t_array_source_15 IS TABLE OF PA_XLA_CCDL_LINES_V.RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
55741 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
55742 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
55743 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
55744 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
55745 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
55746 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
55747 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
55748 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
55749 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
55750 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
55751 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
55752 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
55753 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
55754 
55755 l_array_source_32              t_array_source_32;
55756 l_array_source_67              t_array_source_67;
55757 l_array_source_67_meaning      t_array_lookup_meaning;
55758 l_array_source_88              t_array_source_88;
55759 
55760 l_array_source_4      t_array_source_4;
55761 l_array_source_8      t_array_source_8;
55762 l_array_source_9      t_array_source_9;
55763 l_array_source_10      t_array_source_10;
55764 l_array_source_15      t_array_source_15;
55765 l_array_source_22      t_array_source_22;
55766 l_array_source_23      t_array_source_23;
55767 l_array_source_25      t_array_source_25;
55768 l_array_source_27      t_array_source_27;
55769 l_array_source_28      t_array_source_28;
55770 l_array_source_29      t_array_source_29;
55771 l_array_source_30      t_array_source_30;
55772 l_array_source_31      t_array_source_31;
55773 l_array_source_33      t_array_source_33;
55774 l_array_source_34      t_array_source_34;
55775 l_array_source_34_meaning      t_array_lookup_meaning;
55776 l_array_source_35      t_array_source_35;
55777 l_array_source_41      t_array_source_41;
55778 l_array_source_43      t_array_source_43;
55779 
55780 --
55781 CURSOR header_cur
55782 IS
55783 SELECT /*+ leading(xet) cardinality(xet,1) */
55784 -- Event Class Code: BORROWED_AND_LENT_ADJ
55785     xet.entity_id
55786    ,xet.legal_entity_id
55787    ,xet.entity_code
55788    ,xet.transaction_number
55789    ,xet.event_id
55790    ,xet.event_class_code
55791    ,xet.event_type_code
55792    ,xet.event_number
55793    ,xet.event_date
55794    ,xet.transaction_date
55795    ,xet.reference_num_1
55796    ,xet.reference_num_2
55797    ,xet.reference_num_3
55798    ,xet.reference_num_4
55799    ,xet.reference_char_1
55800    ,xet.reference_char_2
55801    ,xet.reference_char_3
55802    ,xet.reference_char_4
55803    ,xet.reference_date_1
55804    ,xet.reference_date_2
55805    ,xet.reference_date_3
55806    ,xet.reference_date_4
55807    ,xet.event_created_by
55808    ,xet.budgetary_control_flag 
55809   , h2.EXPENDITURE_ITEM_ID    source_32
55810   , h2.TP_AMT_TYPE_CODE    source_67
55811   , fvl67.meaning   source_67_meaning
55812   , h2.GL_DATE    source_88
55813   FROM xla_events_gt     xet 
55814   , PA_XLA_EXP_HEADER_V  h2
55815   , fnd_lookup_values    fvl67
55816  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
55817    and xet.event_class_code = C_EVENT_CLASS_CODE
55818    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
55819    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
55820   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
55821   AND fvl67.view_application_id(+) = 275
55822   AND fvl67.language(+)            = USERENV('LANG')
55823   
55824  ORDER BY event_id
55825 ;
55826 
55827 
55828 --
55829 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
55830 IS
55831 SELECT  /*+ leading(xet) cardinality(xet,1) */
55832 -- Event Class Code: BORROWED_AND_LENT_ADJ
55836    ,xet.transaction_number
55833     xet.entity_id
55834    ,xet.legal_entity_id
55835    ,xet.entity_code
55837    ,xet.event_id
55838    ,xet.event_class_code
55839    ,xet.event_type_code
55840    ,xet.event_number
55841    ,xet.event_date
55842    ,xet.transaction_date
55843    ,xet.reference_num_1
55844    ,xet.reference_num_2
55845    ,xet.reference_num_3
55846    ,xet.reference_num_4
55847    ,xet.reference_char_1
55848    ,xet.reference_char_2
55849    ,xet.reference_char_3
55850    ,xet.reference_char_4
55851    ,xet.reference_date_1
55852    ,xet.reference_date_2
55853    ,xet.reference_date_3
55854    ,xet.reference_date_4
55855    ,xet.event_created_by
55856    ,xet.budgetary_control_flag
55857  , l1.LINE_NUMBER  
55858   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
55859   , l1.PROVIDER_CCID    source_8
55860   , l1.ADJ_PROVIDER_CCID    source_9
55861   , l1.ADJ_RECEIVER_CCID    source_10
55862   , l1.RECEIVER_CCID    source_15
55863   , l1.REVERSING_LINE_FLAG    source_22
55864   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
55865   , l1.ENTERED_CURRENCY_CODE    source_25
55866   , l1.EXCHANGE_RATE_DATE    source_27
55867   , l1.EXCHANGE_RATE    source_28
55868   , l1.EXCHANGE_RATE_TYPE    source_29
55869   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
55870   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
55871   , l1.LINE_NUMBER    source_33
55872   , l1.LINE_TYPE    source_34
55873   , fvl34.meaning   source_34_meaning
55874   , l1.LINE_NUM_REVERSED    source_35
55875   , l1.ENTERED_AMOUNT    source_41
55876   , l1.ACCT_AMOUNT    source_43
55877   FROM xla_events_gt     xet 
55878   , PA_XLA_CCDL_LINES_V  l1
55879   , fnd_lookup_values    fvl34
55880  WHERE xet.event_id between x_first_event_id and x_last_event_id
55881    and xet.event_date between p_pad_start_date and p_pad_end_date
55882    and xet.event_class_code = C_EVENT_CLASS_CODE
55883    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
55884    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
55885   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
55886   AND fvl34.view_application_id(+) = 275
55887   AND fvl34.language(+)            = USERENV('LANG')
55888   ;
55889 
55890 --
55891 BEGIN
55892 IF g_log_enabled THEN
55893    l_log_module := C_DEFAULT_MODULE||'.EventClass_110';
55894 END IF;
55895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55896    trace
55897       (p_msg      => 'BEGIN of EventClass_110'
55898       ,p_level    => C_LEVEL_PROCEDURE
55899       ,p_module   => l_log_module);
55900 END IF;
55901 
55902 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55903    trace
55904       (p_msg      => 'p_application_id = '||p_application_id||
55905                      ' - p_base_ledger_id = '||p_base_ledger_id||
55906                      ' - p_target_ledger_id  = '||p_target_ledger_id||
55907                      ' - p_language = '||p_language||
55908                      ' - p_currency_code = '||p_currency_code||
55909                      ' - p_sla_ledger_id = '||p_sla_ledger_id
55910       ,p_level    => C_LEVEL_STATEMENT
55911       ,p_module   => l_log_module);
55912 END IF;
55913 --
55914 -- initialze arrays
55915 --
55916 g_array_event.DELETE;
55917 l_rec_array_event := l_null_rec_array_event;
55918 --
55919 --------------------------------------
55920 -- 4262811 Initialze MPA Line Number
55921 --------------------------------------
55922 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
55923 
55924 --
55925 
55926 --
55927 OPEN header_cur;
55928 --
55929 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55930    trace
55931    (p_msg      => 'SQL - FETCH header_cur'
55932    ,p_level    => C_LEVEL_STATEMENT
55933    ,p_module   => l_log_module);
55934 END IF;
55935 --
55936 LOOP
55937 FETCH header_cur BULK COLLECT INTO
55938         l_array_entity_id
55939       , l_array_legal_entity_id
55940       , l_array_entity_code
55941       , l_array_transaction_num
55942       , l_array_event_id
55943       , l_array_class_code
55944       , l_array_event_type
55945       , l_array_event_number
55946       , l_array_event_date
55947       , l_array_transaction_date
55948       , l_array_reference_num_1
55949       , l_array_reference_num_2
55950       , l_array_reference_num_3
55951       , l_array_reference_num_4
55952       , l_array_reference_char_1
55953       , l_array_reference_char_2
55954       , l_array_reference_char_3
55955       , l_array_reference_char_4
55956       , l_array_reference_date_1
55957       , l_array_reference_date_2
55958       , l_array_reference_date_3
55959       , l_array_reference_date_4
55960       , l_array_event_created_by
55961       , l_array_budgetary_control_flag 
55962       , l_array_source_32
55963       , l_array_source_67
55964       , l_array_source_67_meaning
55965       , l_array_source_88
55966       LIMIT l_rows;
55967 --
55968 IF (C_LEVEL_EVENT >= g_log_level) THEN
55969    trace
55970    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
55971    ,p_level    => C_LEVEL_EVENT
55972    ,p_module   => l_log_module);
55973 END IF;
55974 --
55975 EXIT WHEN l_array_entity_id.COUNT = 0;
55976 
55977 -- initialize arrays
55978 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
55979 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
55980 
55981 --
55982 -- Bug 4458708
55983 --
55984 XLA_AE_LINES_PKG.g_LineNumber := 0;
55985 
55986 
55987 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
55988 g_last_hdr_idx := l_array_event_id.LAST;
55989 --
55990 -- loop for the headers. Each iteration is for each header extract row
55991 -- fetched in header cursor
55995 --
55992 --
55993 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
55994 
55996 -- set event info as cache for other routines to refer event attributes
55997 --
55998 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
55999    (p_application_id           => p_application_id
56000    ,p_primary_ledger_id        => p_primary_ledger_id
56001    ,p_base_ledger_id           => p_base_ledger_id
56002    ,p_target_ledger_id         => p_target_ledger_id
56003    ,p_entity_id                => l_array_entity_id(hdr_idx)
56004    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
56005    ,p_entity_code              => l_array_entity_code(hdr_idx)
56006    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
56007    ,p_event_id                 => l_array_event_id(hdr_idx)
56008    ,p_event_class_code         => l_array_class_code(hdr_idx)
56009    ,p_event_type_code          => l_array_event_type(hdr_idx)
56010    ,p_event_number             => l_array_event_number(hdr_idx)
56011    ,p_event_date               => l_array_event_date(hdr_idx)
56012    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
56013    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
56014    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
56015    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
56016    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
56017    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
56018    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
56019    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
56020    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
56021    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
56022    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
56023    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
56024    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
56025    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
56026    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
56027 
56028 --
56029 -- set the status of entry to C_VALID (0)
56030 --
56031 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
56032 
56033 --
56034 -- initialize a row for ae header
56035 --
56036 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
56037 
56038 l_event_id := l_array_event_id(hdr_idx);
56039 
56040 --
56041 -- storing the hdr_idx for event. May be used by line cursor.
56042 --
56043 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
56044 
56045 --
56046 -- store sources from header extract. This can be improved to
56047 -- store only those sources from header extract that may be used in lines
56048 --
56049 
56050 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
56051 g_array_event(l_event_id).array_value_char('source_67') := l_array_source_67(hdr_idx);
56052 g_array_event(l_event_id).array_value_char('source_67_meaning') := l_array_source_67_meaning(hdr_idx);
56053 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
56054 
56055 --
56056 -- initilaize the status of ae headers for diffrent balance types
56057 -- the status is initialised to C_NOT_CREATED (2)
56058 --
56059 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
56060 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
56061 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
56062 
56063 --
56064 -- call api to validate and store accounting attributes for header
56065 --
56066 
56067 ------------------------------------------------------------
56068 -- Accrual Reversal : to get date for Standard Source (NONE)
56069 ------------------------------------------------------------
56070 l_acc_rev_gl_date_source := NULL;
56071 
56072      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
56073       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
56074 
56075 
56076 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
56077 
56078 XLA_AE_HEADER_PKG.SetJeCategoryName;
56079 
56080 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
56081 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
56082 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
56083 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
56084 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
56085 
56086 
56087 -- No header level analytical criteria
56088 
56089 --
56090 --accounting attribute enhancement, bug 3612931
56091 --
56092 l_trx_reversal_source := SUBSTR(NULL, 1,30);
56093 
56094 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
56095    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
56096 
56097    xla_accounting_err_pkg.build_message
56098       (p_appli_s_name            => 'XLA'
56099       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
56100       ,p_token_1                 => 'ACCT_ATTR_NAME'
56101       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
56102       ,p_token_2                 => 'PRODUCT_NAME'
56103       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
56104       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
56105       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
56106       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
56107 
56111    -- accounting for a distributeion
56108 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
56109    --
56110    -- following sets the accounting attributes needed to reverse
56112    --
56113    xla_ae_lines_pkg.SetTrxReversalAttrs
56114       (p_event_id              => l_event_id
56115       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
56116       ,p_trx_reversal_source   => l_trx_reversal_source);
56117 
56118 END IF;
56119 
56120 
56121 ----------------------------------------------------------------
56122 -- 4262811 -  update the header statuses to invalid in need be
56123 ----------------------------------------------------------------
56124 --
56125 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
56126 
56127 
56128   -----------------------------------------------
56129   -- No accrual reversal for the event class/type
56130   -----------------------------------------------
56131 ----------------------------------------------------------------
56132 
56133 --
56134 -- this ends the header loop iteration for one bulk fetch
56135 --
56136 END LOOP;
56137 
56138 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
56139 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
56140 
56141 --
56142 -- insert dummy rows into lines gt table that were created due to
56143 -- transaction reversals
56144 --
56145 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
56146    l_result := XLA_AE_LINES_PKG.InsertLines;
56147 END IF;
56148 
56149 --
56150 -- reset the temp_line_num for each set of events fetched from header
56151 -- cursor rather than doing it for each new event in line cursor
56152 -- Bug 3939231
56153 --
56154 xla_ae_lines_pkg.g_temp_line_num := 0;
56155 
56156 
56157 
56158 --
56159 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
56160 --
56161 --
56162 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56163 
56164       trace
56165          (p_msg      => 'SQL - FETCH line_cur'
56166          ,p_level    => C_LEVEL_STATEMENT
56167          ,p_module   => l_log_module);
56168 
56169 END IF;
56170 --
56171 --
56172 LOOP
56173   --
56174   FETCH line_cur BULK COLLECT INTO
56175         l_array_entity_id
56176       , l_array_legal_entity_id
56177       , l_array_entity_code
56178       , l_array_transaction_num
56179       , l_array_event_id
56180       , l_array_class_code
56181       , l_array_event_type
56182       , l_array_event_number
56183       , l_array_event_date
56184       , l_array_transaction_date
56185       , l_array_reference_num_1
56186       , l_array_reference_num_2
56187       , l_array_reference_num_3
56188       , l_array_reference_num_4
56189       , l_array_reference_char_1
56190       , l_array_reference_char_2
56191       , l_array_reference_char_3
56192       , l_array_reference_char_4
56193       , l_array_reference_date_1
56194       , l_array_reference_date_2
56195       , l_array_reference_date_3
56196       , l_array_reference_date_4
56197       , l_array_event_created_by
56198       , l_array_budgetary_control_flag
56199       , l_array_extract_line_num 
56200       , l_array_source_4
56201       , l_array_source_8
56202       , l_array_source_9
56203       , l_array_source_10
56204       , l_array_source_15
56205       , l_array_source_22
56206       , l_array_source_23
56207       , l_array_source_25
56208       , l_array_source_27
56209       , l_array_source_28
56210       , l_array_source_29
56211       , l_array_source_30
56212       , l_array_source_31
56213       , l_array_source_33
56214       , l_array_source_34
56215       , l_array_source_34_meaning
56216       , l_array_source_35
56217       , l_array_source_41
56218       , l_array_source_43
56219       LIMIT l_rows;
56220 
56221   --
56222   IF (C_LEVEL_EVENT >= g_log_level) THEN
56223             trace
56224                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
56225                ,p_level    => C_LEVEL_EVENT
56226                ,p_module   => l_log_module);
56227   END IF;
56228   --
56229   EXIT WHEN l_array_entity_id.count = 0;
56230 
56231   XLA_AE_LINES_PKG.g_rec_lines := null;
56232 
56233 --
56234 -- Bug 4458708
56235 --
56236 XLA_AE_LINES_PKG.g_LineNumber := 0;
56237 --
56238 --
56239 
56240 FOR Idx IN 1..l_array_event_id.count LOOP
56241    --
56242    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
56243    --
56244    l_event_id := l_array_event_id(idx);  -- 5648433
56245 
56246    --
56247    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
56248    --
56249 
56250    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
56251              (g_array_event(l_event_id).array_value_num('header_index'))
56252          ,'N'
56253          ) <> 'Y'
56254    THEN
56255       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56256          trace
56257             (p_msg      => 'Trancaction revesal option is not Y '
56258             ,p_level    => C_LEVEL_STATEMENT
56259             ,p_module   => l_log_module);
56260       END IF;
56261 
56262 --
56263 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
56264 --
56265 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
56266 --
56267 -- set event info as cache for other routines to refer event attributes
56268 --
56269 
56270 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
56271    l_previous_event_id := l_event_id;
56272 
56276       ,p_base_ledger_id           => p_base_ledger_id
56273    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
56274       (p_application_id           => p_application_id
56275       ,p_primary_ledger_id        => p_primary_ledger_id
56277       ,p_target_ledger_id         => p_target_ledger_id
56278       ,p_entity_id                => l_array_entity_id(Idx)
56279       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
56280       ,p_entity_code              => l_array_entity_code(Idx)
56281       ,p_transaction_num          => l_array_transaction_num(Idx)
56282       ,p_event_id                 => l_array_event_id(Idx)
56283       ,p_event_class_code         => l_array_class_code(Idx)
56284       ,p_event_type_code          => l_array_event_type(Idx)
56285       ,p_event_number             => l_array_event_number(Idx)
56286       ,p_event_date               => l_array_event_date(Idx)
56287       ,p_transaction_date         => l_array_transaction_date(Idx)
56288       ,p_reference_num_1          => l_array_reference_num_1(Idx)
56289       ,p_reference_num_2          => l_array_reference_num_2(Idx)
56290       ,p_reference_num_3          => l_array_reference_num_3(Idx)
56291       ,p_reference_num_4          => l_array_reference_num_4(Idx)
56292       ,p_reference_char_1         => l_array_reference_char_1(Idx)
56293       ,p_reference_char_2         => l_array_reference_char_2(Idx)
56294       ,p_reference_char_3         => l_array_reference_char_3(Idx)
56295       ,p_reference_char_4         => l_array_reference_char_4(Idx)
56296       ,p_reference_date_1         => l_array_reference_date_1(Idx)
56297       ,p_reference_date_2         => l_array_reference_date_2(Idx)
56298       ,p_reference_date_3         => l_array_reference_date_3(Idx)
56299       ,p_reference_date_4         => l_array_reference_date_4(Idx)
56300       ,p_event_created_by         => l_array_event_created_by(Idx)
56301       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
56302        --
56303 END IF;
56304 
56305 
56306 
56307 --
56308 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
56309 
56310 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
56311 
56312 IF l_continue_with_lines THEN
56313    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
56314       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
56315 
56316       xla_accounting_err_pkg.build_message
56317          (p_appli_s_name            => 'XLA'
56318          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
56319          ,p_token_1                 => 'LINE_NUMBER'
56320          ,p_value_1                 => l_array_extract_line_num(Idx)
56321          ,p_token_2                 => 'PRODUCT_NAME'
56322          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
56323          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
56324          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
56325          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
56326 
56327    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
56328       --
56329       -- following sets the accounting attributes needed to reverse
56330       -- accounting for a distributeion
56331       --
56332 
56333       --
56334       -- 5217187
56335       --
56336       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
56337       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
56338                                        g_array_event(l_event_id).array_value_num('header_index'));
56339       --
56340       --
56341 
56342       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
56343       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
56344       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
56345       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
56346       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
56347       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_8(Idx));
56348       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
56349       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
56350       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
56351       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
56352       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
56353       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
56354       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
56355       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
56356       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
56357       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
56358       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
56359       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
56360       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
56361       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
56362       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
56363       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_15(Idx));
56364       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
56365       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
56366       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
56367       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
56368       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
56369       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
56370       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
56374       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
56371       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
56372       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
56373       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
56375       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
56376       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
56377       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
56378       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
56379       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
56380       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
56381       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
56382       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
56383       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
56384       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
56385       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
56386       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
56387       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
56388       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
56389       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
56390 
56391 
56392       xla_ae_lines_pkg.SetAcctReversalAttrs
56393          (p_event_id             => l_event_id
56394          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
56395          ,p_calculate_acctd_flag => l_calculate_acctd_flag
56396          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
56397    END IF;
56398 
56399    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
56400        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
56401 
56402 --
56403 AcctLineType_38 (
56404  p_application_id  => p_application_id
56405  ,p_event_id     => l_event_id
56406  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56407  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56408  ,p_actual_flag => l_actual_flag
56409  ,p_balance_type_code => l_balance_type_code
56410  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56411  
56412  , p_source_4 => l_array_source_4(Idx)
56413  , p_source_8 => l_array_source_8(Idx)
56414  , p_source_9 => l_array_source_9(Idx)
56415  , p_source_15 => l_array_source_15(Idx)
56416  , p_source_22 => l_array_source_22(Idx)
56417  , p_source_23 => l_array_source_23(Idx)
56418  , p_source_25 => l_array_source_25(Idx)
56419  , p_source_27 => l_array_source_27(Idx)
56420  , p_source_28 => l_array_source_28(Idx)
56421  , p_source_29 => l_array_source_29(Idx)
56422  , p_source_30 => l_array_source_30(Idx)
56423  , p_source_31 => l_array_source_31(Idx)
56424  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56425  , p_source_33 => l_array_source_33(Idx)
56426  , p_source_34 => l_array_source_34(Idx)
56427  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56428  , p_source_35 => l_array_source_35(Idx)
56429  , p_source_41 => l_array_source_41(Idx)
56430  , p_source_43 => l_array_source_43(Idx)
56431  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56432  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56433  );
56434 If(l_balance_type_code = 'A') THEN
56435   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56436 END IF;
56437 
56438 --
56439 
56440 
56441 --
56442 AcctLineType_40 (
56443  p_application_id  => p_application_id
56444  ,p_event_id     => l_event_id
56445  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56446  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56447  ,p_actual_flag => l_actual_flag
56448  ,p_balance_type_code => l_balance_type_code
56449  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56450  
56451  , p_source_4 => l_array_source_4(Idx)
56452  , p_source_8 => l_array_source_8(Idx)
56453  , p_source_9 => l_array_source_9(Idx)
56454  , p_source_15 => l_array_source_15(Idx)
56455  , p_source_22 => l_array_source_22(Idx)
56456  , p_source_23 => l_array_source_23(Idx)
56457  , p_source_25 => l_array_source_25(Idx)
56458  , p_source_27 => l_array_source_27(Idx)
56459  , p_source_28 => l_array_source_28(Idx)
56460  , p_source_29 => l_array_source_29(Idx)
56461  , p_source_30 => l_array_source_30(Idx)
56462  , p_source_31 => l_array_source_31(Idx)
56463  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56464  , p_source_33 => l_array_source_33(Idx)
56465  , p_source_34 => l_array_source_34(Idx)
56466  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56467  , p_source_35 => l_array_source_35(Idx)
56468  , p_source_41 => l_array_source_41(Idx)
56469  , p_source_43 => l_array_source_43(Idx)
56470  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56471  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56472  );
56473 If(l_balance_type_code = 'A') THEN
56474   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56475 END IF;
56476 
56477 --
56478 
56479 
56480 --
56481 AcctLineType_70 (
56482  p_application_id  => p_application_id
56483  ,p_event_id     => l_event_id
56484  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56485  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56486  ,p_actual_flag => l_actual_flag
56487  ,p_balance_type_code => l_balance_type_code
56488  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56489  
56490  , p_source_4 => l_array_source_4(Idx)
56491  , p_source_8 => l_array_source_8(Idx)
56492  , p_source_10 => l_array_source_10(Idx)
56493  , p_source_15 => l_array_source_15(Idx)
56494  , p_source_22 => l_array_source_22(Idx)
56498  , p_source_28 => l_array_source_28(Idx)
56495  , p_source_23 => l_array_source_23(Idx)
56496  , p_source_25 => l_array_source_25(Idx)
56497  , p_source_27 => l_array_source_27(Idx)
56499  , p_source_29 => l_array_source_29(Idx)
56500  , p_source_30 => l_array_source_30(Idx)
56501  , p_source_31 => l_array_source_31(Idx)
56502  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56503  , p_source_33 => l_array_source_33(Idx)
56504  , p_source_34 => l_array_source_34(Idx)
56505  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56506  , p_source_35 => l_array_source_35(Idx)
56507  , p_source_41 => l_array_source_41(Idx)
56508  , p_source_43 => l_array_source_43(Idx)
56509  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56510  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56511  );
56512 If(l_balance_type_code = 'A') THEN
56513   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56514 END IF;
56515 
56516 --
56517 
56518 
56519 --
56520 AcctLineType_72 (
56521  p_application_id  => p_application_id
56522  ,p_event_id     => l_event_id
56523  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56524  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56525  ,p_actual_flag => l_actual_flag
56526  ,p_balance_type_code => l_balance_type_code
56527  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56528  
56529  , p_source_4 => l_array_source_4(Idx)
56530  , p_source_8 => l_array_source_8(Idx)
56531  , p_source_10 => l_array_source_10(Idx)
56532  , p_source_15 => l_array_source_15(Idx)
56533  , p_source_22 => l_array_source_22(Idx)
56534  , p_source_23 => l_array_source_23(Idx)
56535  , p_source_25 => l_array_source_25(Idx)
56536  , p_source_27 => l_array_source_27(Idx)
56537  , p_source_28 => l_array_source_28(Idx)
56538  , p_source_29 => l_array_source_29(Idx)
56539  , p_source_30 => l_array_source_30(Idx)
56540  , p_source_31 => l_array_source_31(Idx)
56541  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56542  , p_source_33 => l_array_source_33(Idx)
56543  , p_source_34 => l_array_source_34(Idx)
56544  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56545  , p_source_35 => l_array_source_35(Idx)
56546  , p_source_41 => l_array_source_41(Idx)
56547  , p_source_43 => l_array_source_43(Idx)
56548  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56549  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56550  );
56551 If(l_balance_type_code = 'A') THEN
56552   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56553 END IF;
56554 
56555 --
56556 
56557       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
56558       -- or secondary ledger that has different currency with primary
56559       -- or alc that is calculated by sla
56560       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
56561             (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'))
56562 
56563 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
56564 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
56565           AND (l_actual_flag = 'A')) THEN
56566         XLA_AE_LINES_PKG.CreateGainOrLossLines(
56567           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
56568          ,p_application_id   => p_application_id
56569          ,p_amb_context_code => 'DEFAULT'
56570          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
56571          ,p_event_class_code => C_EVENT_CLASS_CODE
56572          ,p_event_type_code  => C_EVENT_TYPE_CODE
56573          
56574          ,p_gain_ccid        => -1
56575          ,p_loss_ccid        => -1
56576 
56577          ,p_actual_flag      => l_actual_flag
56578          ,p_enc_flag         => null
56579          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
56580          ,p_enc_g_l_ref      => null
56581          );
56582       END IF;
56583    END IF;
56584 END IF;
56585 
56586    ELSE
56587       --
56588       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
56589       --
56590       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56591          trace
56592             (p_msg      => 'Trancaction revesal option is Y'
56593             ,p_level    => C_LEVEL_STATEMENT
56594             ,p_module   => l_log_module);
56595       END IF;
56596    END IF;
56597 
56598 END LOOP;
56599 l_result := XLA_AE_LINES_PKG.InsertLines ;
56600 end loop;
56601 close line_cur;
56602 
56603 
56604 --
56605 -- insert headers into xla_ae_headers_gt table
56606 --
56607 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
56608 
56609 -- insert into errors table here.
56610 
56611 END LOOP;
56612 
56613 --
56614 -- 4865292
56615 --
56616 -- Compare g_hdr_extract_count with event count in
56617 -- CreateHeadersAndLines.
56618 --
56619 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
56620 
56621 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56622    trace (p_msg     => '# rows extracted from header extract objects '
56623                     || ' (running total): '
56624                     || g_hdr_extract_count
56625          ,p_level   => C_LEVEL_STATEMENT
56626          ,p_module  => l_log_module);
56627 END IF;
56628 
56629 CLOSE header_cur;
56630 --
56631 
56632 --
56633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56634    trace
56635       (p_msg      => 'END of EventClass_110'
56636       ,p_level    => C_LEVEL_PROCEDURE
56637       ,p_module   => l_log_module);
56638 END IF;
56639 --
56640 RETURN l_result;
56644 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
56641 EXCEPTION
56642 WHEN xla_exceptions_pkg.application_exception THEN
56643    
56645 
56646    
56647 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
56648 
56649    RAISE;
56650 WHEN OTHERS THEN
56651    xla_exceptions_pkg.raise_message
56652       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_110');
56653 END EventClass_110;
56654 --
56655 
56656 ---------------------------------------
56657 --
56658 -- PRIVATE PROCEDURE
56659 --         insert_sources_111
56660 --
56661 ----------------------------------------
56662 --
56663 PROCEDURE insert_sources_111(
56664                                 p_target_ledger_id       IN NUMBER
56665                               , p_language               IN VARCHAR2
56666                               , p_sla_ledger_id          IN NUMBER
56667                               , p_pad_start_date         IN DATE
56668                               , p_pad_end_date           IN DATE
56669                          )
56670 IS
56671 
56672 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ALL';
56673 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT';
56674 p_apps_owner                   VARCHAR2(30);
56675 l_log_module                   VARCHAR2(240);
56676 BEGIN
56677 IF g_log_enabled THEN
56678       l_log_module := C_DEFAULT_MODULE||'.insert_sources_111';
56679 END IF;
56680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56681 
56682       trace
56683          (p_msg      => 'BEGIN of insert_sources_111'
56684          ,p_level    => C_LEVEL_PROCEDURE
56685          ,p_module   => l_log_module);
56686 
56687 END IF;
56688 
56689 -- select APPS owner
56690 SELECT oracle_username
56691   INTO p_apps_owner
56692   FROM fnd_oracle_userid
56693  WHERE read_only_flag = 'U'
56694 ;
56695 
56696 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56697       trace
56698          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
56699                         ' - p_language = '||p_language||
56700                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
56701                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
56702                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
56703                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
56704          ,p_level    => C_LEVEL_STATEMENT
56705          ,p_module   => l_log_module);
56706 END IF;
56707 
56708 
56709 --
56710 INSERT INTO xla_diag_sources --hdr2
56711 (
56712         event_id
56713       , ledger_id
56714       , sla_ledger_id
56715       , description_language
56716       , object_name
56717       , object_type_code
56718       , line_number
56719       , source_application_id
56720       , source_type_code
56721       , source_code
56722       , source_value
56723       , source_meaning
56724       , created_by
56725       , creation_date
56726       , last_update_date
56727       , last_updated_by
56728       , last_update_login
56729       , program_update_date
56730       , program_application_id
56731       , program_id
56732       , request_id
56733 )
56734 SELECT
56735         event_id
56736       , p_target_ledger_id
56737       , p_sla_ledger_id
56738       , p_language
56739       , object_name
56740       , object_type_code
56741       , line_number
56742       , source_application_id
56743       , source_type_code
56744       , source_code
56745       , SUBSTR(source_value ,1,1996)
56746       , SUBSTR(source_meaning ,1,200)
56747       , xla_environment_pkg.g_Usr_Id
56748       , TRUNC(SYSDATE)
56749       , TRUNC(SYSDATE)
56750       , xla_environment_pkg.g_Usr_Id
56751       , xla_environment_pkg.g_Login_Id
56752       , TRUNC(SYSDATE)
56753       , xla_environment_pkg.g_Prog_Appl_Id
56754       , xla_environment_pkg.g_Prog_Id
56755       , xla_environment_pkg.g_Req_Id
56756   FROM (
56757        SELECT xet.event_id                  event_id
56758             , 0                          line_number
56759             , CASE r
56760                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
56761                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
56762                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
56763                 
56764                ELSE null
56765               END                           object_name
56766             , CASE r
56767                 WHEN 1 THEN 'HEADER' 
56768                 WHEN 2 THEN 'HEADER' 
56769                 WHEN 3 THEN 'HEADER' 
56770                 
56771                 ELSE null
56772               END                           object_type_code
56773             , CASE r
56774                 WHEN 1 THEN '275' 
56775                 WHEN 2 THEN '275' 
56776                 WHEN 3 THEN '275' 
56777                 
56778                 ELSE null
56779               END                           source_application_id
56780             , 'S'             source_type_code
56781             , CASE r
56782                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
56783                 WHEN 2 THEN 'TP_AMT_TYPE_CODE' 
56784                 WHEN 3 THEN 'GL_DATE' 
56785                 
56786                 ELSE null
56787               END                           source_code
56788             , CASE r
56789                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
56790                 WHEN 2 THEN TO_CHAR(h2.TP_AMT_TYPE_CODE)
56791                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
56792                 
56793                 ELSE null
56794               END                           source_value
56795             , CASE r
56796                 WHEN 2 THEN fvl67.meaning
56797                 
56801       , PA_XLA_EXP_HEADER_V  h2
56798                 ELSE null
56799               END               source_meaning
56800          FROM xla_events_gt     xet  
56802   , fnd_lookup_values    fvl67
56803              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
56804          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
56805            AND xet.event_class_code = C_EVENT_CLASS_CODE
56806               AND h2.event_id = xet.event_id
56807    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
56808   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
56809   AND fvl67.view_application_id(+) = 275
56810   AND fvl67.language(+)            = USERENV('LANG')
56811   
56812 )
56813 ;
56814 --
56815 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56816 
56817       trace
56818          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
56819          ,p_level    => C_LEVEL_STATEMENT
56820          ,p_module   => l_log_module);
56821 
56822 END IF;
56823 --
56824 
56825 
56826 
56827 --
56828 INSERT INTO xla_diag_sources  --line2
56829 (
56830         event_id
56831       , ledger_id
56832       , sla_ledger_id
56833       , description_language
56834       , object_name
56835       , object_type_code
56836       , line_number
56837       , source_application_id
56838       , source_type_code
56839       , source_code
56840       , source_value
56841       , source_meaning
56842       , created_by
56843       , creation_date
56844       , last_update_date
56845       , last_updated_by
56846       , last_update_login
56847       , program_update_date
56848       , program_application_id
56849       , program_id
56850       , request_id
56851 )
56852 SELECT  event_id
56853       , p_target_ledger_id
56854       , p_sla_ledger_id
56855       , p_language
56856       , object_name
56857       , object_type_code
56858       , line_number
56859       , source_application_id
56860       , source_type_code
56861       , source_code
56862       , SUBSTR(source_value,1,1996)
56863       , SUBSTR(source_meaning ,1,200)
56864       , xla_environment_pkg.g_Usr_Id
56865       , TRUNC(SYSDATE)
56866       , TRUNC(SYSDATE)
56867       , xla_environment_pkg.g_Usr_Id
56868       , xla_environment_pkg.g_Login_Id
56869       , TRUNC(SYSDATE)
56870       , xla_environment_pkg.g_Prog_Appl_Id
56871       , xla_environment_pkg.g_Prog_Id
56872       , xla_environment_pkg.g_Req_Id
56873   FROM (
56874        SELECT xet.event_id                  event_id
56875             , l1.line_number                 line_number
56876             , CASE r
56877                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
56878                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
56879                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
56880                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
56881                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
56882                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
56883                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
56884                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
56885                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
56886                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
56887                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
56888                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
56889                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
56890                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
56891                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
56892                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
56893                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
56894                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
56895                 
56896                ELSE null
56897               END                           object_name
56898             , CASE r
56899                 WHEN 1 THEN 'LINE' 
56900                 WHEN 2 THEN 'LINE' 
56901                 WHEN 3 THEN 'LINE' 
56902                 WHEN 4 THEN 'LINE' 
56903                 WHEN 5 THEN 'LINE' 
56904                 WHEN 6 THEN 'LINE' 
56905                 WHEN 7 THEN 'LINE' 
56906                 WHEN 8 THEN 'LINE' 
56907                 WHEN 9 THEN 'LINE' 
56908                 WHEN 10 THEN 'LINE' 
56909                 WHEN 11 THEN 'LINE' 
56910                 WHEN 12 THEN 'LINE' 
56911                 WHEN 13 THEN 'LINE' 
56912                 WHEN 14 THEN 'LINE' 
56913                 WHEN 15 THEN 'LINE' 
56914                 WHEN 16 THEN 'LINE' 
56915                 WHEN 17 THEN 'LINE' 
56916                 WHEN 18 THEN 'LINE' 
56917                 
56918                 ELSE null
56919               END                           object_type_code
56920             , CASE r
56921                 WHEN 1 THEN '275' 
56922                 WHEN 2 THEN '275' 
56923                 WHEN 3 THEN '275' 
56924                 WHEN 4 THEN '275' 
56925                 WHEN 5 THEN '275' 
56926                 WHEN 6 THEN '275' 
56927                 WHEN 7 THEN '275' 
56928                 WHEN 8 THEN '275' 
56929                 WHEN 9 THEN '275' 
56930                 WHEN 10 THEN '275' 
56931                 WHEN 11 THEN '275' 
56932                 WHEN 12 THEN '275' 
56933                 WHEN 13 THEN '275' 
56934                 WHEN 14 THEN '275' 
56935                 WHEN 15 THEN '275' 
56936                 WHEN 16 THEN '275' 
56937                 WHEN 17 THEN '275' 
56938                 WHEN 18 THEN '275' 
56939                 
56940                 ELSE null
56941               END                           source_application_id
56942             , 'S'             source_type_code
56943             , CASE r
56944                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
56945                 WHEN 2 THEN 'PROVIDER_CCID' 
56949                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
56946                 WHEN 3 THEN 'ADJ_PROVIDER_CCID' 
56947                 WHEN 4 THEN 'ADJ_RECEIVER_CCID' 
56948                 WHEN 5 THEN 'RECEIVER_CCID' 
56950                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
56951                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
56952                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
56953                 WHEN 10 THEN 'EXCHANGE_RATE' 
56954                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
56955                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
56956                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
56957                 WHEN 14 THEN 'LINE_NUMBER' 
56958                 WHEN 15 THEN 'LINE_TYPE' 
56959                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
56960                 WHEN 17 THEN 'ENTERED_AMOUNT' 
56961                 WHEN 18 THEN 'ACCT_AMOUNT' 
56962                 
56963                 ELSE null
56964               END                           source_code
56965             , CASE r
56966                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
56967                 WHEN 2 THEN TO_CHAR(l1.PROVIDER_CCID)
56968                 WHEN 3 THEN TO_CHAR(l1.ADJ_PROVIDER_CCID)
56969                 WHEN 4 THEN TO_CHAR(l1.ADJ_RECEIVER_CCID)
56970                 WHEN 5 THEN TO_CHAR(l1.RECEIVER_CCID)
56971                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
56972                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
56973                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
56974                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
56975                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
56976                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
56977                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
56978                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
56979                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
56980                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
56981                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
56982                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
56983                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
56984                 
56985                 ELSE null
56986               END                           source_value
56987             , CASE r
56988                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
56989                           103371
56990                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
56991                          ,'ALLOW_OVERRIDE_CCID_FLAG'
56992                          ,'S'
56993                          ,275)
56994                 WHEN 15 THEN fvl34.meaning
56995                 
56996                 ELSE null
56997               END               source_meaning
56998          FROM  xla_events_gt     xet  
56999         , PA_XLA_CCDL_LINES_V  l1
57000   , fnd_lookup_values    fvl34
57001             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
57002         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
57003           AND xet.event_class_code = C_EVENT_CLASS_CODE
57004             AND l1.event_id          = xet.event_id
57005    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
57006   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
57007   AND fvl34.view_application_id(+) = 275
57008   AND fvl34.language(+)            = USERENV('LANG')
57009   
57010 )
57011 ;
57012 --
57013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57014 
57015       trace
57016          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
57017          ,p_level    => C_LEVEL_STATEMENT
57018          ,p_module   => l_log_module);
57019 
57020 END IF;
57021 
57022 
57023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57024       trace
57025          (p_msg      => 'END of insert_sources_111'
57026          ,p_level    => C_LEVEL_PROCEDURE
57027          ,p_module   => l_log_module);
57028 END IF;
57029 EXCEPTION
57030   WHEN xla_exceptions_pkg.application_exception THEN
57031       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
57032             trace
57033                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
57034                ,p_level    => C_LEVEL_EXCEPTION
57035                ,p_module   => l_log_module);
57036       END IF;
57037       RAISE;
57038   WHEN OTHERS THEN
57039       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
57040             trace
57041                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
57042                ,p_level    => C_LEVEL_EXCEPTION
57043                ,p_module   => l_log_module);
57044        END IF;
57045        xla_exceptions_pkg.raise_message
57046            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_111');
57047 END insert_sources_111;
57048 --
57049 
57050 ---------------------------------------
57051 --
57052 -- PRIVATE FUNCTION
57053 --         EventClass_111
57054 --
57055 ----------------------------------------
57056 --
57057 FUNCTION EventClass_111
57058        (p_application_id         IN NUMBER
57059        ,p_base_ledger_id         IN NUMBER
57060        ,p_target_ledger_id       IN NUMBER
57061        ,p_language               IN VARCHAR2
57062        ,p_currency_code          IN VARCHAR2
57063        ,p_sla_ledger_id          IN NUMBER
57064        ,p_pad_start_date         IN DATE
57065        ,p_pad_end_date           IN DATE
57066        ,p_primary_ledger_id      IN NUMBER)
57067 RETURN BOOLEAN IS
57068 --
57069 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ALL';
57070 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT';
57071 
57072 l_calculate_acctd_flag   VARCHAR2(1) :='N';
57073 l_calculate_g_l_flag     VARCHAR2(1) :='N';
57074 --
57075 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57079 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57076 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57077 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57078 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57080 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57081 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57082 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57083 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57084 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57085 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57086 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57087 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57088 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57089 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57090 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57091 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57092 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57093 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57094 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57095 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57096 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57097 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
57098 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57099 
57100 l_event_id                             NUMBER;
57101 l_previous_event_id                    NUMBER;
57102 l_first_event_id                       NUMBER;
57103 l_last_event_id                        NUMBER;
57104 
57105 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
57106 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
57107 --
57108 --
57109 l_result                    BOOLEAN := TRUE;
57110 l_rows                      NUMBER  := 1000;
57111 l_event_type_name           VARCHAR2(80) := 'All';
57112 l_event_class_name          VARCHAR2(80) := 'Borrowed and Lent';
57113 l_description               VARCHAR2(4000);
57114 l_transaction_reversal      NUMBER;
57115 l_ae_header_id              NUMBER;
57116 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
57117 l_log_module                VARCHAR2(240);
57118 --
57119 l_acct_reversal_source      VARCHAR2(30);
57120 l_trx_reversal_source       VARCHAR2(30);
57121 
57122 l_continue_with_lines       BOOLEAN := TRUE;
57123 --
57124 l_acc_rev_gl_date_source    DATE;                      -- 4262811
57125 --
57126 type t_array_event_id is table of number index by binary_integer;
57127 
57128 l_rec_array_event                    t_rec_array_event;
57129 l_null_rec_array_event               t_rec_array_event;
57130 l_array_ae_header_id                 xla_number_array_type;
57131 l_actual_flag                        VARCHAR2(1) := NULL;
57132 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
57133 l_balance_type_code                  VARCHAR2(1) :=NULL;
57134 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
57135 
57136 --
57137 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
57138 --
57139 
57140 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
57141 TYPE t_array_source_67 IS TABLE OF PA_XLA_EXP_HEADER_V.TP_AMT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
57142 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
57143 
57144 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
57145 TYPE t_array_source_8 IS TABLE OF PA_XLA_CCDL_LINES_V.PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
57146 TYPE t_array_source_9 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
57147 TYPE t_array_source_10 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
57148 TYPE t_array_source_15 IS TABLE OF PA_XLA_CCDL_LINES_V.RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
57149 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
57150 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
57151 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
57152 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
57153 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
57154 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
57155 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
57156 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
57157 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
57158 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
57159 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
57160 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
57161 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
57162 
57163 l_array_source_32              t_array_source_32;
57164 l_array_source_67              t_array_source_67;
57165 l_array_source_67_meaning      t_array_lookup_meaning;
57166 l_array_source_88              t_array_source_88;
57167 
57168 l_array_source_4      t_array_source_4;
57172 l_array_source_15      t_array_source_15;
57169 l_array_source_8      t_array_source_8;
57170 l_array_source_9      t_array_source_9;
57171 l_array_source_10      t_array_source_10;
57173 l_array_source_22      t_array_source_22;
57174 l_array_source_23      t_array_source_23;
57175 l_array_source_25      t_array_source_25;
57176 l_array_source_27      t_array_source_27;
57177 l_array_source_28      t_array_source_28;
57178 l_array_source_29      t_array_source_29;
57179 l_array_source_30      t_array_source_30;
57180 l_array_source_31      t_array_source_31;
57181 l_array_source_33      t_array_source_33;
57182 l_array_source_34      t_array_source_34;
57183 l_array_source_34_meaning      t_array_lookup_meaning;
57184 l_array_source_35      t_array_source_35;
57185 l_array_source_41      t_array_source_41;
57186 l_array_source_43      t_array_source_43;
57187 
57188 --
57189 CURSOR header_cur
57190 IS
57191 SELECT /*+ leading(xet) cardinality(xet,1) */
57192 -- Event Class Code: BORROWED_AND_LENT
57193     xet.entity_id
57194    ,xet.legal_entity_id
57195    ,xet.entity_code
57196    ,xet.transaction_number
57197    ,xet.event_id
57198    ,xet.event_class_code
57199    ,xet.event_type_code
57200    ,xet.event_number
57201    ,xet.event_date
57202    ,xet.transaction_date
57203    ,xet.reference_num_1
57204    ,xet.reference_num_2
57205    ,xet.reference_num_3
57206    ,xet.reference_num_4
57207    ,xet.reference_char_1
57208    ,xet.reference_char_2
57209    ,xet.reference_char_3
57210    ,xet.reference_char_4
57211    ,xet.reference_date_1
57212    ,xet.reference_date_2
57213    ,xet.reference_date_3
57214    ,xet.reference_date_4
57215    ,xet.event_created_by
57216    ,xet.budgetary_control_flag 
57217   , h2.EXPENDITURE_ITEM_ID    source_32
57218   , h2.TP_AMT_TYPE_CODE    source_67
57219   , fvl67.meaning   source_67_meaning
57220   , h2.GL_DATE    source_88
57221   FROM xla_events_gt     xet 
57222   , PA_XLA_EXP_HEADER_V  h2
57223   , fnd_lookup_values    fvl67
57224  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
57225    and xet.event_class_code = C_EVENT_CLASS_CODE
57226    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
57227    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
57228   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
57229   AND fvl67.view_application_id(+) = 275
57230   AND fvl67.language(+)            = USERENV('LANG')
57231   
57232  ORDER BY event_id
57233 ;
57234 
57235 
57236 --
57237 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
57238 IS
57239 SELECT  /*+ leading(xet) cardinality(xet,1) */
57240 -- Event Class Code: BORROWED_AND_LENT
57241     xet.entity_id
57242    ,xet.legal_entity_id
57243    ,xet.entity_code
57244    ,xet.transaction_number
57245    ,xet.event_id
57246    ,xet.event_class_code
57247    ,xet.event_type_code
57248    ,xet.event_number
57249    ,xet.event_date
57250    ,xet.transaction_date
57251    ,xet.reference_num_1
57252    ,xet.reference_num_2
57253    ,xet.reference_num_3
57254    ,xet.reference_num_4
57255    ,xet.reference_char_1
57256    ,xet.reference_char_2
57257    ,xet.reference_char_3
57258    ,xet.reference_char_4
57259    ,xet.reference_date_1
57260    ,xet.reference_date_2
57261    ,xet.reference_date_3
57262    ,xet.reference_date_4
57263    ,xet.event_created_by
57264    ,xet.budgetary_control_flag
57265  , l1.LINE_NUMBER  
57266   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
57267   , l1.PROVIDER_CCID    source_8
57268   , l1.ADJ_PROVIDER_CCID    source_9
57269   , l1.ADJ_RECEIVER_CCID    source_10
57270   , l1.RECEIVER_CCID    source_15
57271   , l1.REVERSING_LINE_FLAG    source_22
57272   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
57273   , l1.ENTERED_CURRENCY_CODE    source_25
57274   , l1.EXCHANGE_RATE_DATE    source_27
57275   , l1.EXCHANGE_RATE    source_28
57276   , l1.EXCHANGE_RATE_TYPE    source_29
57277   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
57278   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
57279   , l1.LINE_NUMBER    source_33
57280   , l1.LINE_TYPE    source_34
57281   , fvl34.meaning   source_34_meaning
57282   , l1.LINE_NUM_REVERSED    source_35
57283   , l1.ENTERED_AMOUNT    source_41
57284   , l1.ACCT_AMOUNT    source_43
57285   FROM xla_events_gt     xet 
57286   , PA_XLA_CCDL_LINES_V  l1
57287   , fnd_lookup_values    fvl34
57288  WHERE xet.event_id between x_first_event_id and x_last_event_id
57289    and xet.event_date between p_pad_start_date and p_pad_end_date
57290    and xet.event_class_code = C_EVENT_CLASS_CODE
57291    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
57292    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
57293   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
57294   AND fvl34.view_application_id(+) = 275
57295   AND fvl34.language(+)            = USERENV('LANG')
57296   ;
57297 
57298 --
57299 BEGIN
57300 IF g_log_enabled THEN
57301    l_log_module := C_DEFAULT_MODULE||'.EventClass_111';
57302 END IF;
57303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57304    trace
57305       (p_msg      => 'BEGIN of EventClass_111'
57306       ,p_level    => C_LEVEL_PROCEDURE
57307       ,p_module   => l_log_module);
57308 END IF;
57309 
57310 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57311    trace
57312       (p_msg      => 'p_application_id = '||p_application_id||
57313                      ' - p_base_ledger_id = '||p_base_ledger_id||
57314                      ' - p_target_ledger_id  = '||p_target_ledger_id||
57315                      ' - p_language = '||p_language||
57316                      ' - p_currency_code = '||p_currency_code||
57317                      ' - p_sla_ledger_id = '||p_sla_ledger_id
57318       ,p_level    => C_LEVEL_STATEMENT
57322 -- initialze arrays
57319       ,p_module   => l_log_module);
57320 END IF;
57321 --
57323 --
57324 g_array_event.DELETE;
57325 l_rec_array_event := l_null_rec_array_event;
57326 --
57327 --------------------------------------
57328 -- 4262811 Initialze MPA Line Number
57329 --------------------------------------
57330 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
57331 
57332 --
57333 
57334 --
57335 OPEN header_cur;
57336 --
57337 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57338    trace
57339    (p_msg      => 'SQL - FETCH header_cur'
57340    ,p_level    => C_LEVEL_STATEMENT
57341    ,p_module   => l_log_module);
57342 END IF;
57343 --
57344 LOOP
57345 FETCH header_cur BULK COLLECT INTO
57346         l_array_entity_id
57347       , l_array_legal_entity_id
57348       , l_array_entity_code
57349       , l_array_transaction_num
57350       , l_array_event_id
57351       , l_array_class_code
57352       , l_array_event_type
57353       , l_array_event_number
57354       , l_array_event_date
57355       , l_array_transaction_date
57356       , l_array_reference_num_1
57357       , l_array_reference_num_2
57358       , l_array_reference_num_3
57359       , l_array_reference_num_4
57360       , l_array_reference_char_1
57361       , l_array_reference_char_2
57362       , l_array_reference_char_3
57363       , l_array_reference_char_4
57364       , l_array_reference_date_1
57365       , l_array_reference_date_2
57366       , l_array_reference_date_3
57367       , l_array_reference_date_4
57368       , l_array_event_created_by
57369       , l_array_budgetary_control_flag 
57370       , l_array_source_32
57371       , l_array_source_67
57372       , l_array_source_67_meaning
57373       , l_array_source_88
57374       LIMIT l_rows;
57375 --
57376 IF (C_LEVEL_EVENT >= g_log_level) THEN
57377    trace
57378    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
57379    ,p_level    => C_LEVEL_EVENT
57380    ,p_module   => l_log_module);
57381 END IF;
57382 --
57383 EXIT WHEN l_array_entity_id.COUNT = 0;
57384 
57385 -- initialize arrays
57386 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
57387 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
57388 
57389 --
57390 -- Bug 4458708
57391 --
57392 XLA_AE_LINES_PKG.g_LineNumber := 0;
57393 
57394 
57395 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
57396 g_last_hdr_idx := l_array_event_id.LAST;
57397 --
57398 -- loop for the headers. Each iteration is for each header extract row
57399 -- fetched in header cursor
57400 --
57401 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
57402 
57403 --
57404 -- set event info as cache for other routines to refer event attributes
57405 --
57406 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
57407    (p_application_id           => p_application_id
57408    ,p_primary_ledger_id        => p_primary_ledger_id
57409    ,p_base_ledger_id           => p_base_ledger_id
57410    ,p_target_ledger_id         => p_target_ledger_id
57411    ,p_entity_id                => l_array_entity_id(hdr_idx)
57412    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
57413    ,p_entity_code              => l_array_entity_code(hdr_idx)
57414    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
57415    ,p_event_id                 => l_array_event_id(hdr_idx)
57416    ,p_event_class_code         => l_array_class_code(hdr_idx)
57417    ,p_event_type_code          => l_array_event_type(hdr_idx)
57418    ,p_event_number             => l_array_event_number(hdr_idx)
57419    ,p_event_date               => l_array_event_date(hdr_idx)
57420    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
57421    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
57422    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
57423    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
57424    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
57425    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
57426    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
57427    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
57428    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
57429    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
57430    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
57431    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
57432    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
57433    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
57434    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
57435 
57436 --
57437 -- set the status of entry to C_VALID (0)
57438 --
57439 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
57440 
57441 --
57442 -- initialize a row for ae header
57443 --
57444 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
57445 
57446 l_event_id := l_array_event_id(hdr_idx);
57447 
57448 --
57449 -- storing the hdr_idx for event. May be used by line cursor.
57450 --
57451 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
57452 
57453 --
57454 -- store sources from header extract. This can be improved to
57455 -- store only those sources from header extract that may be used in lines
57456 --
57457 
57458 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
57459 g_array_event(l_event_id).array_value_char('source_67') := l_array_source_67(hdr_idx);
57460 g_array_event(l_event_id).array_value_char('source_67_meaning') := l_array_source_67_meaning(hdr_idx);
57461 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
57465 -- the status is initialised to C_NOT_CREATED (2)
57462 
57463 --
57464 -- initilaize the status of ae headers for diffrent balance types
57466 --
57467 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57468 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57469 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57470 
57471 --
57472 -- call api to validate and store accounting attributes for header
57473 --
57474 
57475 ------------------------------------------------------------
57476 -- Accrual Reversal : to get date for Standard Source (NONE)
57477 ------------------------------------------------------------
57478 l_acc_rev_gl_date_source := NULL;
57479 
57480      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
57481       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
57482 
57483 
57484 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
57485 
57486 XLA_AE_HEADER_PKG.SetJeCategoryName;
57487 
57488 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
57489 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
57490 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
57491 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
57492 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
57493 
57494 
57495 -- No header level analytical criteria
57496 
57497 --
57498 --accounting attribute enhancement, bug 3612931
57499 --
57500 l_trx_reversal_source := SUBSTR(NULL, 1,30);
57501 
57502 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
57503    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
57504 
57505    xla_accounting_err_pkg.build_message
57506       (p_appli_s_name            => 'XLA'
57507       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
57508       ,p_token_1                 => 'ACCT_ATTR_NAME'
57509       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
57510       ,p_token_2                 => 'PRODUCT_NAME'
57511       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
57512       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
57513       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
57514       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
57515 
57516 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
57517    --
57518    -- following sets the accounting attributes needed to reverse
57519    -- accounting for a distributeion
57520    --
57521    xla_ae_lines_pkg.SetTrxReversalAttrs
57522       (p_event_id              => l_event_id
57523       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
57524       ,p_trx_reversal_source   => l_trx_reversal_source);
57525 
57526 END IF;
57527 
57528 
57529 ----------------------------------------------------------------
57530 -- 4262811 -  update the header statuses to invalid in need be
57531 ----------------------------------------------------------------
57532 --
57533 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
57534 
57535 
57536   -----------------------------------------------
57537   -- No accrual reversal for the event class/type
57538   -----------------------------------------------
57539 ----------------------------------------------------------------
57540 
57541 --
57542 -- this ends the header loop iteration for one bulk fetch
57543 --
57544 END LOOP;
57545 
57546 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
57547 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
57548 
57549 --
57550 -- insert dummy rows into lines gt table that were created due to
57551 -- transaction reversals
57552 --
57553 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
57554    l_result := XLA_AE_LINES_PKG.InsertLines;
57555 END IF;
57556 
57557 --
57558 -- reset the temp_line_num for each set of events fetched from header
57559 -- cursor rather than doing it for each new event in line cursor
57560 -- Bug 3939231
57561 --
57562 xla_ae_lines_pkg.g_temp_line_num := 0;
57563 
57564 
57565 
57566 --
57567 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
57568 --
57569 --
57570 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57571 
57572       trace
57573          (p_msg      => 'SQL - FETCH line_cur'
57574          ,p_level    => C_LEVEL_STATEMENT
57575          ,p_module   => l_log_module);
57576 
57577 END IF;
57578 --
57579 --
57580 LOOP
57581   --
57582   FETCH line_cur BULK COLLECT INTO
57583         l_array_entity_id
57584       , l_array_legal_entity_id
57585       , l_array_entity_code
57586       , l_array_transaction_num
57587       , l_array_event_id
57588       , l_array_class_code
57589       , l_array_event_type
57590       , l_array_event_number
57591       , l_array_event_date
57592       , l_array_transaction_date
57593       , l_array_reference_num_1
57594       , l_array_reference_num_2
57595       , l_array_reference_num_3
57596       , l_array_reference_num_4
57597       , l_array_reference_char_1
57598       , l_array_reference_char_2
57599       , l_array_reference_char_3
57600       , l_array_reference_char_4
57601       , l_array_reference_date_1
57602       , l_array_reference_date_2
57603       , l_array_reference_date_3
57607       , l_array_extract_line_num 
57604       , l_array_reference_date_4
57605       , l_array_event_created_by
57606       , l_array_budgetary_control_flag
57608       , l_array_source_4
57609       , l_array_source_8
57610       , l_array_source_9
57611       , l_array_source_10
57612       , l_array_source_15
57613       , l_array_source_22
57614       , l_array_source_23
57615       , l_array_source_25
57616       , l_array_source_27
57617       , l_array_source_28
57618       , l_array_source_29
57619       , l_array_source_30
57620       , l_array_source_31
57621       , l_array_source_33
57622       , l_array_source_34
57623       , l_array_source_34_meaning
57624       , l_array_source_35
57625       , l_array_source_41
57626       , l_array_source_43
57627       LIMIT l_rows;
57628 
57629   --
57630   IF (C_LEVEL_EVENT >= g_log_level) THEN
57631             trace
57632                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
57633                ,p_level    => C_LEVEL_EVENT
57634                ,p_module   => l_log_module);
57635   END IF;
57636   --
57637   EXIT WHEN l_array_entity_id.count = 0;
57638 
57639   XLA_AE_LINES_PKG.g_rec_lines := null;
57640 
57641 --
57642 -- Bug 4458708
57643 --
57644 XLA_AE_LINES_PKG.g_LineNumber := 0;
57645 --
57646 --
57647 
57648 FOR Idx IN 1..l_array_event_id.count LOOP
57649    --
57650    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
57651    --
57652    l_event_id := l_array_event_id(idx);  -- 5648433
57653 
57654    --
57655    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
57656    --
57657 
57658    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
57659              (g_array_event(l_event_id).array_value_num('header_index'))
57660          ,'N'
57661          ) <> 'Y'
57662    THEN
57663       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57664          trace
57665             (p_msg      => 'Trancaction revesal option is not Y '
57666             ,p_level    => C_LEVEL_STATEMENT
57667             ,p_module   => l_log_module);
57668       END IF;
57669 
57670 --
57671 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
57672 --
57673 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
57674 --
57675 -- set event info as cache for other routines to refer event attributes
57676 --
57677 
57678 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
57679    l_previous_event_id := l_event_id;
57680 
57681    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
57682       (p_application_id           => p_application_id
57683       ,p_primary_ledger_id        => p_primary_ledger_id
57684       ,p_base_ledger_id           => p_base_ledger_id
57685       ,p_target_ledger_id         => p_target_ledger_id
57686       ,p_entity_id                => l_array_entity_id(Idx)
57687       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
57688       ,p_entity_code              => l_array_entity_code(Idx)
57689       ,p_transaction_num          => l_array_transaction_num(Idx)
57690       ,p_event_id                 => l_array_event_id(Idx)
57691       ,p_event_class_code         => l_array_class_code(Idx)
57692       ,p_event_type_code          => l_array_event_type(Idx)
57693       ,p_event_number             => l_array_event_number(Idx)
57694       ,p_event_date               => l_array_event_date(Idx)
57695       ,p_transaction_date         => l_array_transaction_date(Idx)
57696       ,p_reference_num_1          => l_array_reference_num_1(Idx)
57697       ,p_reference_num_2          => l_array_reference_num_2(Idx)
57698       ,p_reference_num_3          => l_array_reference_num_3(Idx)
57699       ,p_reference_num_4          => l_array_reference_num_4(Idx)
57700       ,p_reference_char_1         => l_array_reference_char_1(Idx)
57701       ,p_reference_char_2         => l_array_reference_char_2(Idx)
57702       ,p_reference_char_3         => l_array_reference_char_3(Idx)
57703       ,p_reference_char_4         => l_array_reference_char_4(Idx)
57704       ,p_reference_date_1         => l_array_reference_date_1(Idx)
57705       ,p_reference_date_2         => l_array_reference_date_2(Idx)
57706       ,p_reference_date_3         => l_array_reference_date_3(Idx)
57707       ,p_reference_date_4         => l_array_reference_date_4(Idx)
57708       ,p_event_created_by         => l_array_event_created_by(Idx)
57709       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
57710        --
57711 END IF;
57712 
57713 
57714 
57715 --
57716 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
57717 
57718 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
57719 
57720 IF l_continue_with_lines THEN
57721    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
57722       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
57723 
57724       xla_accounting_err_pkg.build_message
57725          (p_appli_s_name            => 'XLA'
57726          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
57727          ,p_token_1                 => 'LINE_NUMBER'
57728          ,p_value_1                 => l_array_extract_line_num(Idx)
57729          ,p_token_2                 => 'PRODUCT_NAME'
57730          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
57731          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
57732          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
57733          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
57734 
57735    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
57736       --
57740 
57737       -- following sets the accounting attributes needed to reverse
57738       -- accounting for a distributeion
57739       --
57741       --
57742       -- 5217187
57743       --
57744       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
57745       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
57746                                        g_array_event(l_event_id).array_value_num('header_index'));
57747       --
57748       --
57749 
57750       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
57751       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
57752       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
57753       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
57754       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
57755       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_8(Idx));
57756       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
57757       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
57758       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
57759       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
57760       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
57761       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
57762       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
57763       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
57764       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
57765       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
57766       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
57767       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
57768       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
57769       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
57770       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
57771       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_15(Idx));
57772       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
57773       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
57774       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
57775       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
57776       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
57777       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
57778       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
57779       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
57780       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
57781       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
57782       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
57783       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
57784       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
57785       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
57786       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
57787       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
57788       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
57789       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
57790       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
57791       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
57792       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
57793       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
57794       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
57795       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
57796       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
57797       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
57798 
57799 
57800       xla_ae_lines_pkg.SetAcctReversalAttrs
57801          (p_event_id             => l_event_id
57802          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
57803          ,p_calculate_acctd_flag => l_calculate_acctd_flag
57804          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
57805    END IF;
57806 
57807    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
57808        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
57809 
57810 --
57811 AcctLineType_37 (
57812  p_application_id  => p_application_id
57813  ,p_event_id     => l_event_id
57814  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57815  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57816  ,p_actual_flag => l_actual_flag
57817  ,p_balance_type_code => l_balance_type_code
57818  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57819  
57820  , p_source_4 => l_array_source_4(Idx)
57821  , p_source_8 => l_array_source_8(Idx)
57822  , p_source_9 => l_array_source_9(Idx)
57823  , p_source_15 => l_array_source_15(Idx)
57824  , p_source_22 => l_array_source_22(Idx)
57825  , p_source_23 => l_array_source_23(Idx)
57826  , p_source_25 => l_array_source_25(Idx)
57827  , p_source_27 => l_array_source_27(Idx)
57828  , p_source_28 => l_array_source_28(Idx)
57829  , p_source_29 => l_array_source_29(Idx)
57830  , p_source_30 => l_array_source_30(Idx)
57831  , p_source_31 => l_array_source_31(Idx)
57832  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57833  , p_source_33 => l_array_source_33(Idx)
57834  , p_source_34 => l_array_source_34(Idx)
57835  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57839  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57836  , p_source_35 => l_array_source_35(Idx)
57837  , p_source_41 => l_array_source_41(Idx)
57838  , p_source_43 => l_array_source_43(Idx)
57840  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57841  );
57842 If(l_balance_type_code = 'A') THEN
57843   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57844 END IF;
57845 
57846 --
57847 
57848 
57849 --
57850 AcctLineType_39 (
57851  p_application_id  => p_application_id
57852  ,p_event_id     => l_event_id
57853  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57854  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57855  ,p_actual_flag => l_actual_flag
57856  ,p_balance_type_code => l_balance_type_code
57857  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57858  
57859  , p_source_4 => l_array_source_4(Idx)
57860  , p_source_8 => l_array_source_8(Idx)
57861  , p_source_9 => l_array_source_9(Idx)
57862  , p_source_15 => l_array_source_15(Idx)
57863  , p_source_22 => l_array_source_22(Idx)
57864  , p_source_23 => l_array_source_23(Idx)
57865  , p_source_25 => l_array_source_25(Idx)
57866  , p_source_27 => l_array_source_27(Idx)
57867  , p_source_28 => l_array_source_28(Idx)
57868  , p_source_29 => l_array_source_29(Idx)
57869  , p_source_30 => l_array_source_30(Idx)
57870  , p_source_31 => l_array_source_31(Idx)
57871  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57872  , p_source_33 => l_array_source_33(Idx)
57873  , p_source_34 => l_array_source_34(Idx)
57874  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57875  , p_source_35 => l_array_source_35(Idx)
57876  , p_source_41 => l_array_source_41(Idx)
57877  , p_source_43 => l_array_source_43(Idx)
57878  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57879  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57880  );
57881 If(l_balance_type_code = 'A') THEN
57882   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57883 END IF;
57884 
57885 --
57886 
57887 
57888 --
57889 AcctLineType_69 (
57890  p_application_id  => p_application_id
57891  ,p_event_id     => l_event_id
57892  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57893  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57894  ,p_actual_flag => l_actual_flag
57895  ,p_balance_type_code => l_balance_type_code
57896  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57897  
57898  , p_source_4 => l_array_source_4(Idx)
57899  , p_source_8 => l_array_source_8(Idx)
57900  , p_source_10 => l_array_source_10(Idx)
57901  , p_source_15 => l_array_source_15(Idx)
57902  , p_source_22 => l_array_source_22(Idx)
57903  , p_source_23 => l_array_source_23(Idx)
57904  , p_source_25 => l_array_source_25(Idx)
57905  , p_source_27 => l_array_source_27(Idx)
57906  , p_source_28 => l_array_source_28(Idx)
57907  , p_source_29 => l_array_source_29(Idx)
57908  , p_source_30 => l_array_source_30(Idx)
57909  , p_source_31 => l_array_source_31(Idx)
57910  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57911  , p_source_33 => l_array_source_33(Idx)
57912  , p_source_34 => l_array_source_34(Idx)
57913  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57914  , p_source_35 => l_array_source_35(Idx)
57915  , p_source_41 => l_array_source_41(Idx)
57916  , p_source_43 => l_array_source_43(Idx)
57917  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57918  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57919  );
57920 If(l_balance_type_code = 'A') THEN
57921   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57922 END IF;
57923 
57924 --
57925 
57926 
57927 --
57928 AcctLineType_71 (
57929  p_application_id  => p_application_id
57930  ,p_event_id     => l_event_id
57931  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57932  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57933  ,p_actual_flag => l_actual_flag
57934  ,p_balance_type_code => l_balance_type_code
57935  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57936  
57937  , p_source_4 => l_array_source_4(Idx)
57938  , p_source_8 => l_array_source_8(Idx)
57939  , p_source_10 => l_array_source_10(Idx)
57940  , p_source_15 => l_array_source_15(Idx)
57941  , p_source_22 => l_array_source_22(Idx)
57942  , p_source_23 => l_array_source_23(Idx)
57943  , p_source_25 => l_array_source_25(Idx)
57944  , p_source_27 => l_array_source_27(Idx)
57945  , p_source_28 => l_array_source_28(Idx)
57946  , p_source_29 => l_array_source_29(Idx)
57947  , p_source_30 => l_array_source_30(Idx)
57948  , p_source_31 => l_array_source_31(Idx)
57949  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57950  , p_source_33 => l_array_source_33(Idx)
57951  , p_source_34 => l_array_source_34(Idx)
57952  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57953  , p_source_35 => l_array_source_35(Idx)
57954  , p_source_41 => l_array_source_41(Idx)
57955  , p_source_43 => l_array_source_43(Idx)
57956  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57957  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57958  );
57959 If(l_balance_type_code = 'A') THEN
57960   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57961 END IF;
57962 
57963 --
57964 
57965       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
57966       -- or secondary ledger that has different currency with primary
57967       -- or alc that is calculated by sla
57968       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
57969             (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'))
57970 
57974         XLA_AE_LINES_PKG.CreateGainOrLossLines(
57971 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
57972 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
57973           AND (l_actual_flag = 'A')) THEN
57975           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
57976          ,p_application_id   => p_application_id
57977          ,p_amb_context_code => 'DEFAULT'
57978          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
57979          ,p_event_class_code => C_EVENT_CLASS_CODE
57980          ,p_event_type_code  => C_EVENT_TYPE_CODE
57981          
57982          ,p_gain_ccid        => -1
57983          ,p_loss_ccid        => -1
57984 
57985          ,p_actual_flag      => l_actual_flag
57986          ,p_enc_flag         => null
57987          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
57988          ,p_enc_g_l_ref      => null
57989          );
57990       END IF;
57991    END IF;
57992 END IF;
57993 
57994    ELSE
57995       --
57996       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
57997       --
57998       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57999          trace
58000             (p_msg      => 'Trancaction revesal option is Y'
58001             ,p_level    => C_LEVEL_STATEMENT
58002             ,p_module   => l_log_module);
58003       END IF;
58004    END IF;
58005 
58006 END LOOP;
58007 l_result := XLA_AE_LINES_PKG.InsertLines ;
58008 end loop;
58009 close line_cur;
58010 
58011 
58012 --
58013 -- insert headers into xla_ae_headers_gt table
58014 --
58015 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
58016 
58017 -- insert into errors table here.
58018 
58019 END LOOP;
58020 
58021 --
58022 -- 4865292
58023 --
58024 -- Compare g_hdr_extract_count with event count in
58025 -- CreateHeadersAndLines.
58026 --
58027 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
58028 
58029 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58030    trace (p_msg     => '# rows extracted from header extract objects '
58031                     || ' (running total): '
58032                     || g_hdr_extract_count
58033          ,p_level   => C_LEVEL_STATEMENT
58034          ,p_module  => l_log_module);
58035 END IF;
58036 
58037 CLOSE header_cur;
58038 --
58039 
58040 --
58041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58042    trace
58043       (p_msg      => 'END of EventClass_111'
58044       ,p_level    => C_LEVEL_PROCEDURE
58045       ,p_module   => l_log_module);
58046 END IF;
58047 --
58048 RETURN l_result;
58049 EXCEPTION
58050 WHEN xla_exceptions_pkg.application_exception THEN
58051    
58052 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
58053 
58054    
58055 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
58056 
58057    RAISE;
58058 WHEN OTHERS THEN
58059    xla_exceptions_pkg.raise_message
58060       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_111');
58061 END EventClass_111;
58062 --
58063 
58064 ---------------------------------------
58065 --
58066 -- PRIVATE PROCEDURE
58067 --         insert_sources_112
58068 --
58069 ----------------------------------------
58070 --
58071 PROCEDURE insert_sources_112(
58072                                 p_target_ledger_id       IN NUMBER
58073                               , p_language               IN VARCHAR2
58074                               , p_sla_ledger_id          IN NUMBER
58075                               , p_pad_start_date         IN DATE
58076                               , p_pad_end_date           IN DATE
58077                          )
58078 IS
58079 
58080 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
58081 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BUDGET';
58082 p_apps_owner                   VARCHAR2(30);
58083 l_log_module                   VARCHAR2(240);
58084 BEGIN
58085 IF g_log_enabled THEN
58086       l_log_module := C_DEFAULT_MODULE||'.insert_sources_112';
58087 END IF;
58088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58089 
58090       trace
58091          (p_msg      => 'BEGIN of insert_sources_112'
58092          ,p_level    => C_LEVEL_PROCEDURE
58093          ,p_module   => l_log_module);
58094 
58095 END IF;
58096 
58097 -- select APPS owner
58098 SELECT oracle_username
58099   INTO p_apps_owner
58100   FROM fnd_oracle_userid
58101  WHERE read_only_flag = 'U'
58102 ;
58103 
58104 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58105       trace
58106          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
58107                         ' - p_language = '||p_language||
58108                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
58109                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
58110                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
58111                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
58112          ,p_level    => C_LEVEL_STATEMENT
58113          ,p_module   => l_log_module);
58114 END IF;
58115 
58116 
58117 --
58118 INSERT INTO xla_diag_sources --hdr2
58119 (
58120         event_id
58121       , ledger_id
58122       , sla_ledger_id
58123       , description_language
58124       , object_name
58125       , object_type_code
58126       , line_number
58127       , source_application_id
58128       , source_type_code
58129       , source_code
58130       , source_value
58131       , source_meaning
58132       , created_by
58133       , creation_date
58134       , last_update_date
58135       , last_updated_by
58139       , program_id
58136       , last_update_login
58137       , program_update_date
58138       , program_application_id
58140       , request_id
58141 )
58142 SELECT
58143         event_id
58144       , p_target_ledger_id
58145       , p_sla_ledger_id
58146       , p_language
58147       , object_name
58148       , object_type_code
58149       , line_number
58150       , source_application_id
58151       , source_type_code
58152       , source_code
58153       , SUBSTR(source_value ,1,1996)
58154       , SUBSTR(source_meaning ,1,200)
58155       , xla_environment_pkg.g_Usr_Id
58156       , TRUNC(SYSDATE)
58157       , TRUNC(SYSDATE)
58158       , xla_environment_pkg.g_Usr_Id
58159       , xla_environment_pkg.g_Login_Id
58160       , TRUNC(SYSDATE)
58161       , xla_environment_pkg.g_Prog_Appl_Id
58162       , xla_environment_pkg.g_Prog_Id
58163       , xla_environment_pkg.g_Req_Id
58164   FROM (
58165        SELECT xet.event_id                  event_id
58166             , 0                          line_number
58167             , CASE r
58168                WHEN 1 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
58169                 WHEN 2 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
58170                 
58171                ELSE null
58172               END                           object_name
58173             , CASE r
58174                 WHEN 1 THEN 'HEADER' 
58175                 WHEN 2 THEN 'HEADER' 
58176                 
58177                 ELSE null
58178               END                           object_type_code
58179             , CASE r
58180                 WHEN 1 THEN '275' 
58181                 WHEN 2 THEN '275' 
58182                 
58183                 ELSE null
58184               END                           source_application_id
58185             , 'S'             source_type_code
58186             , CASE r
58187                 WHEN 1 THEN 'GL_DATE' 
58188                 WHEN 2 THEN 'GL_BUDGET_VERSION_ID' 
58189                 
58190                 ELSE null
58191               END                           source_code
58192             , CASE r
58193                 WHEN 1 THEN TO_CHAR(h1.GL_DATE)
58194                 WHEN 2 THEN TO_CHAR(h1.GL_BUDGET_VERSION_ID)
58195                 
58196                 ELSE null
58197               END                           source_value
58198             , null              source_meaning
58199          FROM xla_events_gt     xet  
58200       , PA_XLA_BC_BUDGET_HEADER_V  h1
58201              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
58202          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
58203            AND xet.event_class_code = C_EVENT_CLASS_CODE
58204               AND h1.event_id = xet.event_id
58205 
58206 )
58207 ;
58208 --
58209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58210 
58211       trace
58212          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
58213          ,p_level    => C_LEVEL_STATEMENT
58214          ,p_module   => l_log_module);
58215 
58216 END IF;
58217 --
58218 
58219 
58220 
58221 --
58222 INSERT INTO xla_diag_sources  --line2
58223 (
58224         event_id
58225       , ledger_id
58226       , sla_ledger_id
58227       , description_language
58228       , object_name
58229       , object_type_code
58230       , line_number
58231       , source_application_id
58232       , source_type_code
58233       , source_code
58234       , source_value
58235       , source_meaning
58236       , created_by
58237       , creation_date
58238       , last_update_date
58239       , last_updated_by
58240       , last_update_login
58241       , program_update_date
58242       , program_application_id
58243       , program_id
58244       , request_id
58245 )
58246 SELECT  event_id
58247       , p_target_ledger_id
58248       , p_sla_ledger_id
58249       , p_language
58250       , object_name
58251       , object_type_code
58252       , line_number
58253       , source_application_id
58254       , source_type_code
58255       , source_code
58256       , SUBSTR(source_value,1,1996)
58257       , SUBSTR(source_meaning ,1,200)
58258       , xla_environment_pkg.g_Usr_Id
58259       , TRUNC(SYSDATE)
58260       , TRUNC(SYSDATE)
58261       , xla_environment_pkg.g_Usr_Id
58262       , xla_environment_pkg.g_Login_Id
58263       , TRUNC(SYSDATE)
58264       , xla_environment_pkg.g_Prog_Appl_Id
58265       , xla_environment_pkg.g_Prog_Id
58266       , xla_environment_pkg.g_Req_Id
58267   FROM (
58268        SELECT xet.event_id                  event_id
58269             , l2.line_number                 line_number
58270             , CASE r
58271                WHEN 1 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58272                 WHEN 2 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58273                 WHEN 3 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58274                 WHEN 4 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58275                 WHEN 5 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58276                 WHEN 6 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58277                 WHEN 7 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58278                 WHEN 8 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58279                 WHEN 9 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58280                 WHEN 10 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58281                 
58282                ELSE null
58283               END                           object_name
58284             , CASE r
58285                 WHEN 1 THEN 'LINE' 
58286                 WHEN 2 THEN 'LINE' 
58287                 WHEN 3 THEN 'LINE' 
58288                 WHEN 4 THEN 'LINE' 
58289                 WHEN 5 THEN 'LINE' 
58290                 WHEN 6 THEN 'LINE' 
58294                 WHEN 10 THEN 'LINE' 
58291                 WHEN 7 THEN 'LINE' 
58292                 WHEN 8 THEN 'LINE' 
58293                 WHEN 9 THEN 'LINE' 
58295                 
58296                 ELSE null
58297               END                           object_type_code
58298             , CASE r
58299                 WHEN 1 THEN '275' 
58300                 WHEN 2 THEN '275' 
58301                 WHEN 3 THEN '275' 
58302                 WHEN 4 THEN '275' 
58303                 WHEN 5 THEN '275' 
58304                 WHEN 6 THEN '275' 
58305                 WHEN 7 THEN '275' 
58306                 WHEN 8 THEN '275' 
58307                 WHEN 9 THEN '275' 
58308                 WHEN 10 THEN '275' 
58309                 
58310                 ELSE null
58311               END                           source_application_id
58312             , 'S'             source_type_code
58313             , CASE r
58314                 WHEN 1 THEN 'BUDGET_CCID' 
58315                 WHEN 2 THEN 'REVERSING_LINE_FLAG' 
58316                 WHEN 3 THEN 'ENTERED_CURRENCY_CODE' 
58317                 WHEN 4 THEN 'LINE_TYPE' 
58318                 WHEN 5 THEN 'ENTERED_AMOUNT' 
58319                 WHEN 6 THEN 'ACCT_AMOUNT' 
58320                 WHEN 7 THEN 'ENC_UPG_DR_ACCT_CLASS' 
58321                 WHEN 8 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
58322                 WHEN 9 THEN 'BUDGET_LINE_ID' 
58323                 WHEN 10 THEN 'ENC_UPG_ENC_TYPE_ID' 
58324                 
58325                 ELSE null
58326               END                           source_code
58327             , CASE r
58328                 WHEN 1 THEN TO_CHAR(l2.BUDGET_CCID)
58329                 WHEN 2 THEN TO_CHAR(l2.REVERSING_LINE_FLAG)
58330                 WHEN 3 THEN TO_CHAR(l2.ENTERED_CURRENCY_CODE)
58331                 WHEN 4 THEN TO_CHAR(l2.LINE_TYPE)
58332                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
58333                 WHEN 6 THEN TO_CHAR(l2.ACCT_AMOUNT)
58334                 WHEN 7 THEN TO_CHAR(l2.ENC_UPG_DR_ACCT_CLASS)
58335                 WHEN 8 THEN TO_CHAR(l2.USE_ENC_UPG_ATTRIB_FLAG)
58336                 WHEN 9 THEN TO_CHAR(l2.BUDGET_LINE_ID)
58337                 WHEN 10 THEN TO_CHAR(l2.ENC_UPG_ENC_TYPE_ID)
58338                 
58339                 ELSE null
58340               END                           source_value
58341             , CASE r
58342                 WHEN 4 THEN fvl34.meaning
58343                 
58344                 ELSE null
58345               END               source_meaning
58346          FROM  xla_events_gt     xet  
58347         , PA_XLA_BC_BUDGET_LINES_V  l2
58348   , fnd_lookup_values    fvl34
58349             , (select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
58350         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
58351           AND xet.event_class_code = C_EVENT_CLASS_CODE
58352             AND l2.event_id          = xet.event_id
58353    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
58354   AND fvl34.lookup_code(+)         = l2.LINE_TYPE
58355   AND fvl34.view_application_id(+) = 275
58356   AND fvl34.language(+)            = USERENV('LANG')
58357   
58358 )
58359 ;
58360 --
58361 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58362 
58363       trace
58364          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
58365          ,p_level    => C_LEVEL_STATEMENT
58366          ,p_module   => l_log_module);
58367 
58368 END IF;
58369 
58370 
58371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58372       trace
58373          (p_msg      => 'END of insert_sources_112'
58374          ,p_level    => C_LEVEL_PROCEDURE
58375          ,p_module   => l_log_module);
58376 END IF;
58377 EXCEPTION
58378   WHEN xla_exceptions_pkg.application_exception THEN
58379       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
58380             trace
58381                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
58382                ,p_level    => C_LEVEL_EXCEPTION
58383                ,p_module   => l_log_module);
58384       END IF;
58385       RAISE;
58386   WHEN OTHERS THEN
58387       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
58388             trace
58389                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
58390                ,p_level    => C_LEVEL_EXCEPTION
58391                ,p_module   => l_log_module);
58392        END IF;
58393        xla_exceptions_pkg.raise_message
58394            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_112');
58395 END insert_sources_112;
58396 --
58397 
58398 ---------------------------------------
58399 --
58400 -- PRIVATE FUNCTION
58401 --         EventClass_112
58402 --
58403 ----------------------------------------
58404 --
58405 FUNCTION EventClass_112
58406        (p_application_id         IN NUMBER
58407        ,p_base_ledger_id         IN NUMBER
58408        ,p_target_ledger_id       IN NUMBER
58409        ,p_language               IN VARCHAR2
58410        ,p_currency_code          IN VARCHAR2
58411        ,p_sla_ledger_id          IN NUMBER
58412        ,p_pad_start_date         IN DATE
58413        ,p_pad_end_date           IN DATE
58414        ,p_primary_ledger_id      IN NUMBER)
58415 RETURN BOOLEAN IS
58416 --
58417 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
58418 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BUDGET';
58419 
58420 l_calculate_acctd_flag   VARCHAR2(1) :='N';
58421 l_calculate_g_l_flag     VARCHAR2(1) :='N';
58422 --
58423 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58424 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58425 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58426 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58430 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58427 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58428 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58429 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58431 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58432 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58433 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58434 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58435 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58436 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58437 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58438 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58439 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58440 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58441 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58442 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58443 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58444 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58445 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
58446 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58447 
58448 l_event_id                             NUMBER;
58449 l_previous_event_id                    NUMBER;
58450 l_first_event_id                       NUMBER;
58451 l_last_event_id                        NUMBER;
58452 
58453 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
58454 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
58455 --
58456 --
58457 l_result                    BOOLEAN := TRUE;
58458 l_rows                      NUMBER  := 1000;
58459 l_event_type_name           VARCHAR2(80) := 'All';
58460 l_event_class_name          VARCHAR2(80) := 'Budget';
58461 l_description               VARCHAR2(4000);
58462 l_transaction_reversal      NUMBER;
58463 l_ae_header_id              NUMBER;
58464 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
58465 l_log_module                VARCHAR2(240);
58466 --
58467 l_acct_reversal_source      VARCHAR2(30);
58468 l_trx_reversal_source       VARCHAR2(30);
58469 
58470 l_continue_with_lines       BOOLEAN := TRUE;
58471 --
58472 l_acc_rev_gl_date_source    DATE;                      -- 4262811
58473 --
58474 type t_array_event_id is table of number index by binary_integer;
58475 
58476 l_rec_array_event                    t_rec_array_event;
58477 l_null_rec_array_event               t_rec_array_event;
58478 l_array_ae_header_id                 xla_number_array_type;
58479 l_actual_flag                        VARCHAR2(1) := NULL;
58480 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
58481 l_balance_type_code                  VARCHAR2(1) :=NULL;
58482 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
58483 
58484 --
58485 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
58486 --
58487 
58488 TYPE t_array_source_88 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
58489 TYPE t_array_source_89 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_BUDGET_VERSION_ID%TYPE INDEX BY BINARY_INTEGER;
58490 
58491 TYPE t_array_source_2 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
58492 TYPE t_array_source_22 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
58493 TYPE t_array_source_25 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
58494 TYPE t_array_source_34 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
58495 TYPE t_array_source_41 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
58496 TYPE t_array_source_43 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
58497 TYPE t_array_source_53 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
58498 TYPE t_array_source_55 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
58499 TYPE t_array_source_90 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
58500 TYPE t_array_source_91 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
58501 
58502 l_array_source_88              t_array_source_88;
58503 l_array_source_89              t_array_source_89;
58504 
58505 l_array_source_2      t_array_source_2;
58506 l_array_source_22      t_array_source_22;
58507 l_array_source_25      t_array_source_25;
58508 l_array_source_34      t_array_source_34;
58509 l_array_source_34_meaning      t_array_lookup_meaning;
58510 l_array_source_41      t_array_source_41;
58511 l_array_source_43      t_array_source_43;
58512 l_array_source_53      t_array_source_53;
58513 l_array_source_55      t_array_source_55;
58514 l_array_source_90      t_array_source_90;
58515 l_array_source_91      t_array_source_91;
58516 
58517 --
58518 CURSOR header_cur
58519 IS
58520 SELECT /*+ leading(xet) cardinality(xet,1) */
58521 -- Event Class Code: BUDGET
58522     xet.entity_id
58523    ,xet.legal_entity_id
58524    ,xet.entity_code
58525    ,xet.transaction_number
58526    ,xet.event_id
58527    ,xet.event_class_code
58528    ,xet.event_type_code
58529    ,xet.event_number
58530    ,xet.event_date
58531    ,xet.transaction_date
58532    ,xet.reference_num_1
58533    ,xet.reference_num_2
58534    ,xet.reference_num_3
58535    ,xet.reference_num_4
58536    ,xet.reference_char_1
58537    ,xet.reference_char_2
58538    ,xet.reference_char_3
58539    ,xet.reference_char_4
58543    ,xet.reference_date_4
58540    ,xet.reference_date_1
58541    ,xet.reference_date_2
58542    ,xet.reference_date_3
58544    ,xet.event_created_by
58545    ,xet.budgetary_control_flag 
58546   , h1.GL_DATE    source_88
58547   , h1.GL_BUDGET_VERSION_ID    source_89
58548   FROM xla_events_gt     xet 
58549   , PA_XLA_BC_BUDGET_HEADER_V  h1
58550  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
58551    and xet.event_class_code = C_EVENT_CLASS_CODE
58552    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
58553 
58554  ORDER BY event_id
58555 ;
58556 
58557 
58558 --
58559 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
58560 IS
58561 SELECT  /*+ leading(xet) cardinality(xet,1) */
58562 -- Event Class Code: BUDGET
58563     xet.entity_id
58564    ,xet.legal_entity_id
58565    ,xet.entity_code
58566    ,xet.transaction_number
58567    ,xet.event_id
58568    ,xet.event_class_code
58569    ,xet.event_type_code
58570    ,xet.event_number
58571    ,xet.event_date
58572    ,xet.transaction_date
58573    ,xet.reference_num_1
58574    ,xet.reference_num_2
58575    ,xet.reference_num_3
58576    ,xet.reference_num_4
58577    ,xet.reference_char_1
58578    ,xet.reference_char_2
58579    ,xet.reference_char_3
58580    ,xet.reference_char_4
58581    ,xet.reference_date_1
58582    ,xet.reference_date_2
58583    ,xet.reference_date_3
58584    ,xet.reference_date_4
58585    ,xet.event_created_by
58586    ,xet.budgetary_control_flag
58587  , l2.LINE_NUMBER  
58588   , l2.BUDGET_CCID    source_2
58589   , l2.REVERSING_LINE_FLAG    source_22
58590   , l2.ENTERED_CURRENCY_CODE    source_25
58591   , l2.LINE_TYPE    source_34
58592   , fvl34.meaning   source_34_meaning
58593   , l2.ENTERED_AMOUNT    source_41
58594   , l2.ACCT_AMOUNT    source_43
58595   , l2.ENC_UPG_DR_ACCT_CLASS    source_53
58596   , l2.USE_ENC_UPG_ATTRIB_FLAG    source_55
58597   , l2.BUDGET_LINE_ID    source_90
58598   , l2.ENC_UPG_ENC_TYPE_ID    source_91
58599   FROM xla_events_gt     xet 
58600   , PA_XLA_BC_BUDGET_LINES_V  l2
58601   , fnd_lookup_values    fvl34
58602  WHERE xet.event_id between x_first_event_id and x_last_event_id
58603    and xet.event_date between p_pad_start_date and p_pad_end_date
58604    and xet.event_class_code = C_EVENT_CLASS_CODE
58605    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
58606    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
58607   AND fvl34.lookup_code(+)         = l2.LINE_TYPE
58608   AND fvl34.view_application_id(+) = 275
58609   AND fvl34.language(+)            = USERENV('LANG')
58610   ;
58611 
58612 --
58613 BEGIN
58614 IF g_log_enabled THEN
58615    l_log_module := C_DEFAULT_MODULE||'.EventClass_112';
58616 END IF;
58617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58618    trace
58619       (p_msg      => 'BEGIN of EventClass_112'
58620       ,p_level    => C_LEVEL_PROCEDURE
58621       ,p_module   => l_log_module);
58622 END IF;
58623 
58624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58625    trace
58626       (p_msg      => 'p_application_id = '||p_application_id||
58627                      ' - p_base_ledger_id = '||p_base_ledger_id||
58628                      ' - p_target_ledger_id  = '||p_target_ledger_id||
58629                      ' - p_language = '||p_language||
58630                      ' - p_currency_code = '||p_currency_code||
58631                      ' - p_sla_ledger_id = '||p_sla_ledger_id
58632       ,p_level    => C_LEVEL_STATEMENT
58633       ,p_module   => l_log_module);
58634 END IF;
58635 --
58636 -- initialze arrays
58637 --
58638 g_array_event.DELETE;
58639 l_rec_array_event := l_null_rec_array_event;
58640 --
58641 --------------------------------------
58642 -- 4262811 Initialze MPA Line Number
58643 --------------------------------------
58644 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
58645 
58646 --
58647 
58648 --
58649 OPEN header_cur;
58650 --
58651 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58652    trace
58653    (p_msg      => 'SQL - FETCH header_cur'
58654    ,p_level    => C_LEVEL_STATEMENT
58655    ,p_module   => l_log_module);
58656 END IF;
58657 --
58658 LOOP
58659 FETCH header_cur BULK COLLECT INTO
58660         l_array_entity_id
58661       , l_array_legal_entity_id
58662       , l_array_entity_code
58663       , l_array_transaction_num
58664       , l_array_event_id
58665       , l_array_class_code
58666       , l_array_event_type
58667       , l_array_event_number
58668       , l_array_event_date
58669       , l_array_transaction_date
58670       , l_array_reference_num_1
58671       , l_array_reference_num_2
58672       , l_array_reference_num_3
58673       , l_array_reference_num_4
58674       , l_array_reference_char_1
58675       , l_array_reference_char_2
58676       , l_array_reference_char_3
58677       , l_array_reference_char_4
58678       , l_array_reference_date_1
58679       , l_array_reference_date_2
58680       , l_array_reference_date_3
58681       , l_array_reference_date_4
58682       , l_array_event_created_by
58683       , l_array_budgetary_control_flag 
58684       , l_array_source_88
58685       , l_array_source_89
58686       LIMIT l_rows;
58687 --
58688 IF (C_LEVEL_EVENT >= g_log_level) THEN
58689    trace
58690    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
58691    ,p_level    => C_LEVEL_EVENT
58692    ,p_module   => l_log_module);
58693 END IF;
58694 --
58695 EXIT WHEN l_array_entity_id.COUNT = 0;
58696 
58697 -- initialize arrays
58698 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
58699 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
58703 --
58700 
58701 --
58702 -- Bug 4458708
58704 XLA_AE_LINES_PKG.g_LineNumber := 0;
58705 
58706 
58707 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
58708 g_last_hdr_idx := l_array_event_id.LAST;
58709 --
58710 -- loop for the headers. Each iteration is for each header extract row
58711 -- fetched in header cursor
58712 --
58713 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
58714 
58715 --
58716 -- set event info as cache for other routines to refer event attributes
58717 --
58718 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
58719    (p_application_id           => p_application_id
58720    ,p_primary_ledger_id        => p_primary_ledger_id
58721    ,p_base_ledger_id           => p_base_ledger_id
58722    ,p_target_ledger_id         => p_target_ledger_id
58723    ,p_entity_id                => l_array_entity_id(hdr_idx)
58724    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
58725    ,p_entity_code              => l_array_entity_code(hdr_idx)
58726    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
58727    ,p_event_id                 => l_array_event_id(hdr_idx)
58728    ,p_event_class_code         => l_array_class_code(hdr_idx)
58729    ,p_event_type_code          => l_array_event_type(hdr_idx)
58730    ,p_event_number             => l_array_event_number(hdr_idx)
58731    ,p_event_date               => l_array_event_date(hdr_idx)
58732    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
58733    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
58734    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
58735    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
58736    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
58737    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
58738    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
58739    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
58740    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
58741    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
58742    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
58743    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
58744    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
58745    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
58746    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
58747 
58748 --
58749 -- set the status of entry to C_VALID (0)
58750 --
58751 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
58752 
58753 --
58754 -- initialize a row for ae header
58755 --
58756 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
58757 
58758 l_event_id := l_array_event_id(hdr_idx);
58759 
58760 --
58761 -- storing the hdr_idx for event. May be used by line cursor.
58762 --
58763 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
58764 
58765 --
58766 -- store sources from header extract. This can be improved to
58767 -- store only those sources from header extract that may be used in lines
58768 --
58769 
58770 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
58771 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
58772 
58773 --
58774 -- initilaize the status of ae headers for diffrent balance types
58775 -- the status is initialised to C_NOT_CREATED (2)
58776 --
58777 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
58778 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
58779 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
58780 
58781 --
58782 -- call api to validate and store accounting attributes for header
58783 --
58784 
58785 ------------------------------------------------------------
58786 -- Accrual Reversal : to get date for Standard Source (NONE)
58787 ------------------------------------------------------------
58788 l_acc_rev_gl_date_source := NULL;
58789 
58790      l_rec_acct_attrs.array_acct_attr_code(1)   := 'BUDGET_VERSION_ID';
58791       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_89');
58792      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
58793       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_88');
58794 
58795 
58796 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
58797 
58798 XLA_AE_HEADER_PKG.SetJeCategoryName;
58799 
58800 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
58801 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
58802 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
58803 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
58804 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
58805 
58806 
58807 -- No header level analytical criteria
58808 
58809 --
58810 --accounting attribute enhancement, bug 3612931
58811 --
58812 l_trx_reversal_source := SUBSTR(NULL, 1,30);
58813 
58814 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
58815    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
58816 
58817    xla_accounting_err_pkg.build_message
58818       (p_appli_s_name            => 'XLA'
58819       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
58820       ,p_token_1                 => 'ACCT_ATTR_NAME'
58821       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
58822       ,p_token_2                 => 'PRODUCT_NAME'
58826       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
58823       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
58824       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
58825       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
58827 
58828 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
58829    --
58830    -- following sets the accounting attributes needed to reverse
58831    -- accounting for a distributeion
58832    --
58833    xla_ae_lines_pkg.SetTrxReversalAttrs
58834       (p_event_id              => l_event_id
58835       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
58836       ,p_trx_reversal_source   => l_trx_reversal_source);
58837 
58838 END IF;
58839 
58840 
58841 ----------------------------------------------------------------
58842 -- 4262811 -  update the header statuses to invalid in need be
58843 ----------------------------------------------------------------
58844 --
58845 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
58846 
58847 
58848   -----------------------------------------------
58849   -- No accrual reversal for the event class/type
58850   -----------------------------------------------
58851 ----------------------------------------------------------------
58852 
58853 --
58854 -- this ends the header loop iteration for one bulk fetch
58855 --
58856 END LOOP;
58857 
58858 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
58859 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
58860 
58861 --
58862 -- insert dummy rows into lines gt table that were created due to
58863 -- transaction reversals
58864 --
58865 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
58866    l_result := XLA_AE_LINES_PKG.InsertLines;
58867 END IF;
58868 
58869 --
58870 -- reset the temp_line_num for each set of events fetched from header
58871 -- cursor rather than doing it for each new event in line cursor
58872 -- Bug 3939231
58873 --
58874 xla_ae_lines_pkg.g_temp_line_num := 0;
58875 
58876 
58877 
58878 --
58879 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
58880 --
58881 --
58882 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58883 
58884       trace
58885          (p_msg      => 'SQL - FETCH line_cur'
58886          ,p_level    => C_LEVEL_STATEMENT
58887          ,p_module   => l_log_module);
58888 
58889 END IF;
58890 --
58891 --
58892 LOOP
58893   --
58894   FETCH line_cur BULK COLLECT INTO
58895         l_array_entity_id
58896       , l_array_legal_entity_id
58897       , l_array_entity_code
58898       , l_array_transaction_num
58899       , l_array_event_id
58900       , l_array_class_code
58901       , l_array_event_type
58902       , l_array_event_number
58903       , l_array_event_date
58904       , l_array_transaction_date
58905       , l_array_reference_num_1
58906       , l_array_reference_num_2
58907       , l_array_reference_num_3
58908       , l_array_reference_num_4
58909       , l_array_reference_char_1
58910       , l_array_reference_char_2
58911       , l_array_reference_char_3
58912       , l_array_reference_char_4
58913       , l_array_reference_date_1
58914       , l_array_reference_date_2
58915       , l_array_reference_date_3
58916       , l_array_reference_date_4
58917       , l_array_event_created_by
58918       , l_array_budgetary_control_flag
58919       , l_array_extract_line_num 
58920       , l_array_source_2
58921       , l_array_source_22
58922       , l_array_source_25
58923       , l_array_source_34
58924       , l_array_source_34_meaning
58925       , l_array_source_41
58926       , l_array_source_43
58927       , l_array_source_53
58928       , l_array_source_55
58929       , l_array_source_90
58930       , l_array_source_91
58931       LIMIT l_rows;
58932 
58933   --
58934   IF (C_LEVEL_EVENT >= g_log_level) THEN
58935             trace
58936                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
58937                ,p_level    => C_LEVEL_EVENT
58938                ,p_module   => l_log_module);
58939   END IF;
58940   --
58941   EXIT WHEN l_array_entity_id.count = 0;
58942 
58943   XLA_AE_LINES_PKG.g_rec_lines := null;
58944 
58945 --
58946 -- Bug 4458708
58947 --
58948 XLA_AE_LINES_PKG.g_LineNumber := 0;
58949 --
58950 --
58951 
58952 FOR Idx IN 1..l_array_event_id.count LOOP
58953    --
58954    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
58955    --
58956    l_event_id := l_array_event_id(idx);  -- 5648433
58957 
58958    --
58959    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
58960    --
58961 
58962    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
58963              (g_array_event(l_event_id).array_value_num('header_index'))
58964          ,'N'
58965          ) <> 'Y'
58966    THEN
58967       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58968          trace
58969             (p_msg      => 'Trancaction revesal option is not Y '
58970             ,p_level    => C_LEVEL_STATEMENT
58971             ,p_module   => l_log_module);
58972       END IF;
58973 
58974 --
58975 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
58976 --
58977 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
58978 --
58979 -- set event info as cache for other routines to refer event attributes
58980 --
58981 
58982 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
58986       (p_application_id           => p_application_id
58983    l_previous_event_id := l_event_id;
58984 
58985    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
58987       ,p_primary_ledger_id        => p_primary_ledger_id
58988       ,p_base_ledger_id           => p_base_ledger_id
58989       ,p_target_ledger_id         => p_target_ledger_id
58990       ,p_entity_id                => l_array_entity_id(Idx)
58991       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
58992       ,p_entity_code              => l_array_entity_code(Idx)
58993       ,p_transaction_num          => l_array_transaction_num(Idx)
58994       ,p_event_id                 => l_array_event_id(Idx)
58995       ,p_event_class_code         => l_array_class_code(Idx)
58996       ,p_event_type_code          => l_array_event_type(Idx)
58997       ,p_event_number             => l_array_event_number(Idx)
58998       ,p_event_date               => l_array_event_date(Idx)
58999       ,p_transaction_date         => l_array_transaction_date(Idx)
59000       ,p_reference_num_1          => l_array_reference_num_1(Idx)
59001       ,p_reference_num_2          => l_array_reference_num_2(Idx)
59002       ,p_reference_num_3          => l_array_reference_num_3(Idx)
59003       ,p_reference_num_4          => l_array_reference_num_4(Idx)
59004       ,p_reference_char_1         => l_array_reference_char_1(Idx)
59005       ,p_reference_char_2         => l_array_reference_char_2(Idx)
59006       ,p_reference_char_3         => l_array_reference_char_3(Idx)
59007       ,p_reference_char_4         => l_array_reference_char_4(Idx)
59008       ,p_reference_date_1         => l_array_reference_date_1(Idx)
59009       ,p_reference_date_2         => l_array_reference_date_2(Idx)
59010       ,p_reference_date_3         => l_array_reference_date_3(Idx)
59011       ,p_reference_date_4         => l_array_reference_date_4(Idx)
59012       ,p_event_created_by         => l_array_event_created_by(Idx)
59013       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
59014        --
59015 END IF;
59016 
59017 
59018 
59019 --
59020 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
59021 
59022 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
59023 
59024 IF l_continue_with_lines THEN
59025    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
59026       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
59027 
59028       xla_accounting_err_pkg.build_message
59029          (p_appli_s_name            => 'XLA'
59030          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
59031          ,p_token_1                 => 'LINE_NUMBER'
59032          ,p_value_1                 => l_array_extract_line_num(Idx)
59033          ,p_token_2                 => 'PRODUCT_NAME'
59034          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
59035          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
59036          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
59037          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
59038 
59039    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
59040       --
59041       -- following sets the accounting attributes needed to reverse
59042       -- accounting for a distributeion
59043       --
59044 
59045       --
59046       -- 5217187
59047       --
59048       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
59049       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
59050                                        g_array_event(l_event_id).array_value_num('header_index'));
59051       --
59052       --
59053 
59054       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
59055       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
59056       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
59057       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_90(Idx);
59058       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
59059       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_34(Idx);
59060       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_ACCT_CLASS';
59061       l_rec_rev_acct_attrs.array_char_value(5)  := l_array_source_53(Idx);
59062       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_CCID';
59063       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_2(Idx);
59064       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_AMT';
59065       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_41(Idx);
59066       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_ENTERED_CURR';
59067       l_rec_rev_acct_attrs.array_char_value(8)  := l_array_source_25(Idx);
59068       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_LEDGER_AMT';
59069       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_43(Idx);
59070       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_OPTION';
59071       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_55(Idx);
59072       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID1';
59073       l_rec_rev_acct_attrs.array_num_value(11)  := l_array_source_90(Idx);
59074       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
59075       l_rec_rev_acct_attrs.array_char_value(12)  := l_array_source_34(Idx);
59076       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'UPG_DR_ENC_TYPE_ID';
59077       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_91(Idx);
59078 
59079 
59080       xla_ae_lines_pkg.SetAcctReversalAttrs
59081          (p_event_id             => l_event_id
59082          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
59083          ,p_calculate_acctd_flag => l_calculate_acctd_flag
59084          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
59085    END IF;
59086 
59090       -- or secondary ledger that has different currency with primary
59087    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
59088        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
59089       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
59091       -- or alc that is calculated by sla
59092       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
59093             (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'))
59094 
59095 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
59096 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
59097           AND (l_actual_flag = 'A')) THEN
59098         XLA_AE_LINES_PKG.CreateGainOrLossLines(
59099           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
59100          ,p_application_id   => p_application_id
59101          ,p_amb_context_code => 'DEFAULT'
59102          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
59103          ,p_event_class_code => C_EVENT_CLASS_CODE
59104          ,p_event_type_code  => C_EVENT_TYPE_CODE
59105          
59106          ,p_gain_ccid        => -1
59107          ,p_loss_ccid        => -1
59108 
59109          ,p_actual_flag      => l_actual_flag
59110          ,p_enc_flag         => null
59111          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
59112          ,p_enc_g_l_ref      => null
59113          );
59114       END IF;
59115    END IF;
59116 END IF;
59117 
59118    ELSE
59119       --
59120       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
59121       --
59122       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59123          trace
59124             (p_msg      => 'Trancaction revesal option is Y'
59125             ,p_level    => C_LEVEL_STATEMENT
59126             ,p_module   => l_log_module);
59127       END IF;
59128    END IF;
59129 
59130 END LOOP;
59131 l_result := XLA_AE_LINES_PKG.InsertLines ;
59132 end loop;
59133 close line_cur;
59134 
59135 
59136 --
59137 -- insert headers into xla_ae_headers_gt table
59138 --
59139 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
59140 
59141 -- insert into errors table here.
59142 
59143 END LOOP;
59144 
59145 --
59146 -- 4865292
59147 --
59148 -- Compare g_hdr_extract_count with event count in
59149 -- CreateHeadersAndLines.
59150 --
59151 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
59152 
59153 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59154    trace (p_msg     => '# rows extracted from header extract objects '
59155                     || ' (running total): '
59156                     || g_hdr_extract_count
59157          ,p_level   => C_LEVEL_STATEMENT
59158          ,p_module  => l_log_module);
59159 END IF;
59160 
59161 CLOSE header_cur;
59162 --
59163 
59164 --
59165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59166    trace
59167       (p_msg      => 'END of EventClass_112'
59168       ,p_level    => C_LEVEL_PROCEDURE
59169       ,p_module   => l_log_module);
59170 END IF;
59171 --
59172 RETURN l_result;
59173 EXCEPTION
59174 WHEN xla_exceptions_pkg.application_exception THEN
59175    
59176 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
59177 
59178    
59179 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
59180 
59181    RAISE;
59182 WHEN OTHERS THEN
59183    xla_exceptions_pkg.raise_message
59184       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_112');
59185 END EventClass_112;
59186 --
59187 
59188 ---------------------------------------
59189 --
59190 -- PRIVATE PROCEDURE
59191 --         insert_sources_113
59192 --
59193 ----------------------------------------
59194 --
59195 PROCEDURE insert_sources_113(
59196                                 p_target_ledger_id       IN NUMBER
59197                               , p_language               IN VARCHAR2
59198                               , p_sla_ledger_id          IN NUMBER
59199                               , p_pad_start_date         IN DATE
59200                               , p_pad_end_date           IN DATE
59201                          )
59202 IS
59203 
59204 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ADJ_ALL';
59205 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BURDEN_COST_ADJ';
59206 p_apps_owner                   VARCHAR2(30);
59207 l_log_module                   VARCHAR2(240);
59208 BEGIN
59209 IF g_log_enabled THEN
59210       l_log_module := C_DEFAULT_MODULE||'.insert_sources_113';
59211 END IF;
59212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59213 
59214       trace
59215          (p_msg      => 'BEGIN of insert_sources_113'
59216          ,p_level    => C_LEVEL_PROCEDURE
59217          ,p_module   => l_log_module);
59218 
59219 END IF;
59220 
59221 -- select APPS owner
59222 SELECT oracle_username
59223   INTO p_apps_owner
59224   FROM fnd_oracle_userid
59225  WHERE read_only_flag = 'U'
59226 ;
59227 
59228 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59229       trace
59230          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
59231                         ' - p_language = '||p_language||
59232                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
59233                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
59234                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
59235                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
59236          ,p_level    => C_LEVEL_STATEMENT
59237          ,p_module   => l_log_module);
59241 --
59238 END IF;
59239 
59240 
59242 INSERT INTO xla_diag_sources --hdr2
59243 (
59244         event_id
59245       , ledger_id
59246       , sla_ledger_id
59247       , description_language
59248       , object_name
59249       , object_type_code
59250       , line_number
59251       , source_application_id
59252       , source_type_code
59253       , source_code
59254       , source_value
59255       , source_meaning
59256       , created_by
59257       , creation_date
59258       , last_update_date
59259       , last_updated_by
59260       , last_update_login
59261       , program_update_date
59262       , program_application_id
59263       , program_id
59264       , request_id
59265 )
59266 SELECT
59267         event_id
59268       , p_target_ledger_id
59269       , p_sla_ledger_id
59270       , p_language
59271       , object_name
59272       , object_type_code
59273       , line_number
59274       , source_application_id
59275       , source_type_code
59276       , source_code
59277       , SUBSTR(source_value ,1,1996)
59278       , SUBSTR(source_meaning ,1,200)
59279       , xla_environment_pkg.g_Usr_Id
59280       , TRUNC(SYSDATE)
59281       , TRUNC(SYSDATE)
59282       , xla_environment_pkg.g_Usr_Id
59283       , xla_environment_pkg.g_Login_Id
59284       , TRUNC(SYSDATE)
59285       , xla_environment_pkg.g_Prog_Appl_Id
59286       , xla_environment_pkg.g_Prog_Id
59287       , xla_environment_pkg.g_Req_Id
59288   FROM (
59289        SELECT xet.event_id                  event_id
59290             , 0                          line_number
59291             , CASE r
59292                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
59293                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
59294                 
59295                ELSE null
59296               END                           object_name
59297             , CASE r
59298                 WHEN 1 THEN 'HEADER' 
59299                 WHEN 2 THEN 'HEADER' 
59300                 
59301                 ELSE null
59302               END                           object_type_code
59303             , CASE r
59304                 WHEN 1 THEN '275' 
59305                 WHEN 2 THEN '275' 
59306                 
59307                 ELSE null
59308               END                           source_application_id
59309             , 'S'             source_type_code
59310             , CASE r
59311                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
59312                 WHEN 2 THEN 'GL_DATE' 
59313                 
59314                 ELSE null
59315               END                           source_code
59316             , CASE r
59317                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
59318                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
59319                 
59320                 ELSE null
59321               END                           source_value
59322             , null              source_meaning
59323          FROM xla_events_gt     xet  
59324       , PA_XLA_EXP_HEADER_V  h2
59325              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
59326          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
59327            AND xet.event_class_code = C_EVENT_CLASS_CODE
59328               AND h2.event_id = xet.event_id
59329 
59330 )
59331 ;
59332 --
59333 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59334 
59335       trace
59336          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
59337          ,p_level    => C_LEVEL_STATEMENT
59338          ,p_module   => l_log_module);
59339 
59340 END IF;
59341 --
59342 
59343 
59344 
59345 --
59346 INSERT INTO xla_diag_sources  --line2
59347 (
59348         event_id
59349       , ledger_id
59350       , sla_ledger_id
59351       , description_language
59352       , object_name
59353       , object_type_code
59354       , line_number
59355       , source_application_id
59356       , source_type_code
59357       , source_code
59358       , source_value
59359       , source_meaning
59360       , created_by
59361       , creation_date
59362       , last_update_date
59363       , last_updated_by
59364       , last_update_login
59365       , program_update_date
59366       , program_application_id
59367       , program_id
59368       , request_id
59369 )
59370 SELECT  event_id
59371       , p_target_ledger_id
59372       , p_sla_ledger_id
59373       , p_language
59374       , object_name
59375       , object_type_code
59376       , line_number
59377       , source_application_id
59378       , source_type_code
59379       , source_code
59380       , SUBSTR(source_value,1,1996)
59381       , SUBSTR(source_meaning ,1,200)
59382       , xla_environment_pkg.g_Usr_Id
59383       , TRUNC(SYSDATE)
59384       , TRUNC(SYSDATE)
59385       , xla_environment_pkg.g_Usr_Id
59386       , xla_environment_pkg.g_Login_Id
59387       , TRUNC(SYSDATE)
59388       , xla_environment_pkg.g_Prog_Appl_Id
59389       , xla_environment_pkg.g_Prog_Id
59390       , xla_environment_pkg.g_Req_Id
59391   FROM (
59392        SELECT xet.event_id                  event_id
59393             , l1.line_number                 line_number
59394             , CASE r
59395                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
59396                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
59397                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
59398                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
59399                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
59400                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
59401                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
59405                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
59402                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
59403                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
59404                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
59406                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
59407                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
59408                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
59409                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
59410                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
59411                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
59412                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
59413                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
59414                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
59415                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
59416                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
59417                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
59418                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
59419                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
59420                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
59421                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
59422                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
59423                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
59424                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
59425                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
59426                 
59427                ELSE null
59428               END                           object_name
59429             , CASE r
59430                 WHEN 1 THEN 'LINE' 
59431                 WHEN 2 THEN 'LINE' 
59432                 WHEN 3 THEN 'LINE' 
59433                 WHEN 4 THEN 'LINE' 
59434                 WHEN 5 THEN 'LINE' 
59435                 WHEN 6 THEN 'LINE' 
59436                 WHEN 7 THEN 'LINE' 
59437                 WHEN 8 THEN 'LINE' 
59438                 WHEN 9 THEN 'LINE' 
59439                 WHEN 10 THEN 'LINE' 
59440                 WHEN 11 THEN 'LINE' 
59441                 WHEN 12 THEN 'LINE' 
59442                 WHEN 13 THEN 'LINE' 
59443                 WHEN 14 THEN 'LINE' 
59444                 WHEN 15 THEN 'LINE' 
59445                 WHEN 16 THEN 'LINE' 
59446                 WHEN 17 THEN 'LINE' 
59447                 WHEN 18 THEN 'LINE' 
59448                 WHEN 19 THEN 'LINE' 
59449                 WHEN 20 THEN 'LINE' 
59450                 WHEN 21 THEN 'LINE' 
59451                 WHEN 22 THEN 'LINE' 
59452                 WHEN 23 THEN 'LINE' 
59453                 WHEN 24 THEN 'LINE' 
59454                 WHEN 25 THEN 'LINE' 
59455                 WHEN 26 THEN 'LINE' 
59456                 WHEN 27 THEN 'LINE' 
59457                 WHEN 28 THEN 'LINE' 
59458                 WHEN 29 THEN 'LINE' 
59459                 WHEN 30 THEN 'LINE' 
59460                 WHEN 31 THEN 'LINE' 
59461                 
59462                 ELSE null
59463               END                           object_type_code
59464             , CASE r
59465                 WHEN 1 THEN '275' 
59466                 WHEN 2 THEN '275' 
59467                 WHEN 3 THEN '275' 
59468                 WHEN 4 THEN '275' 
59469                 WHEN 5 THEN '275' 
59470                 WHEN 6 THEN '275' 
59471                 WHEN 7 THEN '275' 
59472                 WHEN 8 THEN '275' 
59473                 WHEN 9 THEN '275' 
59474                 WHEN 10 THEN '275' 
59475                 WHEN 11 THEN '275' 
59476                 WHEN 12 THEN '275' 
59477                 WHEN 13 THEN '275' 
59478                 WHEN 14 THEN '275' 
59479                 WHEN 15 THEN '275' 
59480                 WHEN 16 THEN '275' 
59481                 WHEN 17 THEN '275' 
59482                 WHEN 18 THEN '275' 
59483                 WHEN 19 THEN '275' 
59484                 WHEN 20 THEN '275' 
59485                 WHEN 21 THEN '275' 
59486                 WHEN 22 THEN '275' 
59487                 WHEN 23 THEN '275' 
59488                 WHEN 24 THEN '275' 
59489                 WHEN 25 THEN '275' 
59490                 WHEN 26 THEN '275' 
59491                 WHEN 27 THEN '275' 
59492                 WHEN 28 THEN '275' 
59493                 WHEN 29 THEN '275' 
59494                 WHEN 30 THEN '275' 
59495                 WHEN 31 THEN '275' 
59496                 
59497                 ELSE null
59498               END                           source_application_id
59499             , 'S'             source_type_code
59500             , CASE r
59501                 WHEN 1 THEN 'BUDGET_CCID' 
59502                 WHEN 2 THEN 'COST_CCID' 
59503                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
59504                 WHEN 4 THEN 'ADJ_COST_CCID' 
59505                 WHEN 5 THEN 'COST_CLEARING_CCID' 
59506                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
59507                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
59508                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
59509                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
59510                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
59511                 WHEN 11 THEN 'EXCHANGE_RATE' 
59512                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
59513                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
59514                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
59515                 WHEN 15 THEN 'LINE_NUMBER' 
59516                 WHEN 16 THEN 'LINE_TYPE' 
59517                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
59518                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
59519                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
59520                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
59521                 WHEN 21 THEN 'PA_APPLICATION_ID' 
59522                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
59523                 WHEN 23 THEN 'PA_ENTITY_CODE' 
59524                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
59525                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
59526                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
59527                 WHEN 27 THEN 'ENC_UPG_DR_ACCT_CLASS' 
59531                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
59528                 WHEN 28 THEN 'ENC_UPG_CR_ACCT_CLASS' 
59529                 WHEN 29 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
59530                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
59532                 
59533                 ELSE null
59534               END                           source_code
59535             , CASE r
59536                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
59537                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
59538                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
59539                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
59540                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
59541                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
59542                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
59543                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
59544                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
59545                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
59546                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
59547                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
59548                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
59549                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
59550                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
59551                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
59552                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
59553                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
59554                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
59555                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
59556                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
59557                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
59558                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
59559                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
59560                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
59561                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
59562                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
59563                 WHEN 28 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
59564                 WHEN 29 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
59565                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
59566                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
59567                 
59568                 ELSE null
59569               END                           source_value
59570             , CASE r
59571                 WHEN 3 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
59572                           103371
59573                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
59574                          ,'ALLOW_OVERRIDE_CCID_FLAG'
59575                          ,'S'
59576                          ,275)
59577                 WHEN 16 THEN fvl34.meaning
59578                 
59579                 ELSE null
59580               END               source_meaning
59581          FROM  xla_events_gt     xet  
59582         , PA_XLA_CDL_LINES_V  l1
59583   , fnd_lookup_values    fvl34
59584             , (select rownum r from all_objects where rownum <= 31 and owner = p_apps_owner)
59585         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
59586           AND xet.event_class_code = C_EVENT_CLASS_CODE
59587             AND l1.event_id          = xet.event_id
59588    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
59589   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
59590   AND fvl34.view_application_id(+) = 275
59591   AND fvl34.language(+)            = USERENV('LANG')
59592   
59593 )
59594 ;
59595 --
59596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59597 
59598       trace
59599          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
59600          ,p_level    => C_LEVEL_STATEMENT
59601          ,p_module   => l_log_module);
59602 
59603 END IF;
59604 
59605 
59606 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59607       trace
59608          (p_msg      => 'END of insert_sources_113'
59609          ,p_level    => C_LEVEL_PROCEDURE
59610          ,p_module   => l_log_module);
59611 END IF;
59612 EXCEPTION
59613   WHEN xla_exceptions_pkg.application_exception THEN
59614       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
59615             trace
59616                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
59617                ,p_level    => C_LEVEL_EXCEPTION
59618                ,p_module   => l_log_module);
59619       END IF;
59620       RAISE;
59621   WHEN OTHERS THEN
59622       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
59623             trace
59624                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
59625                ,p_level    => C_LEVEL_EXCEPTION
59626                ,p_module   => l_log_module);
59627        END IF;
59628        xla_exceptions_pkg.raise_message
59629            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_113');
59630 END insert_sources_113;
59631 --
59632 
59633 ---------------------------------------
59634 --
59635 -- PRIVATE FUNCTION
59636 --         EventClass_113
59637 --
59638 ----------------------------------------
59639 --
59640 FUNCTION EventClass_113
59641        (p_application_id         IN NUMBER
59642        ,p_base_ledger_id         IN NUMBER
59643        ,p_target_ledger_id       IN NUMBER
59644        ,p_language               IN VARCHAR2
59645        ,p_currency_code          IN VARCHAR2
59646        ,p_sla_ledger_id          IN NUMBER
59647        ,p_pad_start_date         IN DATE
59648        ,p_pad_end_date           IN DATE
59649        ,p_primary_ledger_id      IN NUMBER)
59650 RETURN BOOLEAN IS
59651 --
59652 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ADJ_ALL';
59653 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BURDEN_COST_ADJ';
59654 
59655 l_calculate_acctd_flag   VARCHAR2(1) :='N';
59659 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59656 l_calculate_g_l_flag     VARCHAR2(1) :='N';
59657 --
59658 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59660 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59661 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59662 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59663 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59664 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59665 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59666 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59667 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59668 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59669 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59670 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59671 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59672 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59673 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59674 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59675 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59676 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59677 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59678 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59679 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59680 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
59681 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59682 
59683 l_event_id                             NUMBER;
59684 l_previous_event_id                    NUMBER;
59685 l_first_event_id                       NUMBER;
59686 l_last_event_id                        NUMBER;
59687 
59688 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
59689 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
59690 --
59691 --
59692 l_result                    BOOLEAN := TRUE;
59693 l_rows                      NUMBER  := 1000;
59694 l_event_type_name           VARCHAR2(80) := 'All';
59695 l_event_class_name          VARCHAR2(80) := 'Burden Cost Adjustments';
59696 l_description               VARCHAR2(4000);
59697 l_transaction_reversal      NUMBER;
59698 l_ae_header_id              NUMBER;
59699 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
59700 l_log_module                VARCHAR2(240);
59701 --
59702 l_acct_reversal_source      VARCHAR2(30);
59703 l_trx_reversal_source       VARCHAR2(30);
59704 
59705 l_continue_with_lines       BOOLEAN := TRUE;
59706 --
59707 l_acc_rev_gl_date_source    DATE;                      -- 4262811
59708 --
59709 type t_array_event_id is table of number index by binary_integer;
59710 
59711 l_rec_array_event                    t_rec_array_event;
59712 l_null_rec_array_event               t_rec_array_event;
59713 l_array_ae_header_id                 xla_number_array_type;
59714 l_actual_flag                        VARCHAR2(1) := NULL;
59715 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
59716 l_balance_type_code                  VARCHAR2(1) :=NULL;
59717 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
59718 
59719 --
59720 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
59721 --
59722 
59723 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
59724 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
59725 
59726 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
59727 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
59728 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
59729 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
59730 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
59731 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
59732 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
59733 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59734 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
59735 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
59736 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
59737 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
59738 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59739 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
59740 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
59741 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
59742 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
59743 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
59744 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
59745 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
59746 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
59750 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
59747 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
59748 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
59749 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
59751 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
59752 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59753 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59754 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
59755 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
59756 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
59757 
59758 l_array_source_32              t_array_source_32;
59759 l_array_source_88              t_array_source_88;
59760 
59761 l_array_source_2      t_array_source_2;
59762 l_array_source_3      t_array_source_3;
59763 l_array_source_4      t_array_source_4;
59764 l_array_source_5      t_array_source_5;
59765 l_array_source_6      t_array_source_6;
59766 l_array_source_7      t_array_source_7;
59767 l_array_source_22      t_array_source_22;
59768 l_array_source_23      t_array_source_23;
59769 l_array_source_25      t_array_source_25;
59770 l_array_source_27      t_array_source_27;
59771 l_array_source_28      t_array_source_28;
59772 l_array_source_29      t_array_source_29;
59773 l_array_source_30      t_array_source_30;
59774 l_array_source_31      t_array_source_31;
59775 l_array_source_33      t_array_source_33;
59776 l_array_source_34      t_array_source_34;
59777 l_array_source_34_meaning      t_array_lookup_meaning;
59778 l_array_source_35      t_array_source_35;
59779 l_array_source_44      t_array_source_44;
59780 l_array_source_45      t_array_source_45;
59781 l_array_source_46      t_array_source_46;
59782 l_array_source_47      t_array_source_47;
59783 l_array_source_48      t_array_source_48;
59784 l_array_source_49      t_array_source_49;
59785 l_array_source_50      t_array_source_50;
59786 l_array_source_51      t_array_source_51;
59787 l_array_source_52      t_array_source_52;
59788 l_array_source_53      t_array_source_53;
59789 l_array_source_54      t_array_source_54;
59790 l_array_source_55      t_array_source_55;
59791 l_array_source_56      t_array_source_56;
59792 l_array_source_57      t_array_source_57;
59793 
59794 --
59795 CURSOR header_cur
59796 IS
59797 SELECT /*+ leading(xet) cardinality(xet,1) */
59798 -- Event Class Code: BURDEN_COST_ADJ
59799     xet.entity_id
59800    ,xet.legal_entity_id
59801    ,xet.entity_code
59802    ,xet.transaction_number
59803    ,xet.event_id
59804    ,xet.event_class_code
59805    ,xet.event_type_code
59806    ,xet.event_number
59807    ,xet.event_date
59808    ,xet.transaction_date
59809    ,xet.reference_num_1
59810    ,xet.reference_num_2
59811    ,xet.reference_num_3
59812    ,xet.reference_num_4
59813    ,xet.reference_char_1
59814    ,xet.reference_char_2
59815    ,xet.reference_char_3
59816    ,xet.reference_char_4
59817    ,xet.reference_date_1
59818    ,xet.reference_date_2
59819    ,xet.reference_date_3
59820    ,xet.reference_date_4
59821    ,xet.event_created_by
59822    ,xet.budgetary_control_flag 
59823   , h2.EXPENDITURE_ITEM_ID    source_32
59824   , h2.GL_DATE    source_88
59825   FROM xla_events_gt     xet 
59826   , PA_XLA_EXP_HEADER_V  h2
59827  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
59828    and xet.event_class_code = C_EVENT_CLASS_CODE
59829    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
59830 
59831  ORDER BY event_id
59832 ;
59833 
59834 
59835 --
59836 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
59837 IS
59838 SELECT  /*+ leading(xet) cardinality(xet,1) */
59839 -- Event Class Code: BURDEN_COST_ADJ
59840     xet.entity_id
59841    ,xet.legal_entity_id
59842    ,xet.entity_code
59843    ,xet.transaction_number
59844    ,xet.event_id
59845    ,xet.event_class_code
59846    ,xet.event_type_code
59847    ,xet.event_number
59848    ,xet.event_date
59849    ,xet.transaction_date
59850    ,xet.reference_num_1
59851    ,xet.reference_num_2
59852    ,xet.reference_num_3
59853    ,xet.reference_num_4
59854    ,xet.reference_char_1
59855    ,xet.reference_char_2
59856    ,xet.reference_char_3
59857    ,xet.reference_char_4
59858    ,xet.reference_date_1
59859    ,xet.reference_date_2
59860    ,xet.reference_date_3
59861    ,xet.reference_date_4
59862    ,xet.event_created_by
59863    ,xet.budgetary_control_flag
59864  , l1.LINE_NUMBER  
59865   , l1.BUDGET_CCID    source_2
59866   , l1.COST_CCID    source_3
59867   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
59868   , l1.ADJ_COST_CCID    source_5
59869   , l1.COST_CLEARING_CCID    source_6
59870   , l1.ADJ_COST_CLEARING_CCID    source_7
59871   , l1.REVERSING_LINE_FLAG    source_22
59872   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
59873   , l1.ENTERED_CURRENCY_CODE    source_25
59874   , l1.EXCHANGE_RATE_DATE    source_27
59875   , l1.EXCHANGE_RATE    source_28
59876   , l1.EXCHANGE_RATE_TYPE    source_29
59877   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
59878   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
59879   , l1.LINE_NUMBER    source_33
59880   , l1.LINE_TYPE    source_34
59881   , fvl34.meaning   source_34_meaning
59882   , l1.LINE_NUM_REVERSED    source_35
59883   , l1.ENTERED_BURDENED_COST    source_44
59884   , l1.ACCT_BURDENED_COST    source_45
59888   , l1.PA_ENTITY_CODE    source_49
59885   , l1.ENCUMBRANCE_AMOUNT    source_46
59886   , l1.PA_APPLICATION_ID    source_47
59887   , l1.PA_DISTRIBUTION_TYPE    source_48
59889   , l1.PA_FIRST_DIST_ID    source_50
59890   , l1.PA_FIRST_SYS_TRANS_ID    source_51
59891   , l1.PA_SECOND_DIST_ID    source_52
59892   , l1.ENC_UPG_DR_ACCT_CLASS    source_53
59893   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
59894   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
59895   , l1.ENCUMBRANCE_TYPE_ID    source_56
59896   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
59897   FROM xla_events_gt     xet 
59898   , PA_XLA_CDL_LINES_V  l1
59899   , fnd_lookup_values    fvl34
59900  WHERE xet.event_id between x_first_event_id and x_last_event_id
59901    and xet.event_date between p_pad_start_date and p_pad_end_date
59902    and xet.event_class_code = C_EVENT_CLASS_CODE
59903    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
59904    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
59905   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
59906   AND fvl34.view_application_id(+) = 275
59907   AND fvl34.language(+)            = USERENV('LANG')
59908   ;
59909 
59910 --
59911 BEGIN
59912 IF g_log_enabled THEN
59913    l_log_module := C_DEFAULT_MODULE||'.EventClass_113';
59914 END IF;
59915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59916    trace
59917       (p_msg      => 'BEGIN of EventClass_113'
59918       ,p_level    => C_LEVEL_PROCEDURE
59919       ,p_module   => l_log_module);
59920 END IF;
59921 
59922 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59923    trace
59924       (p_msg      => 'p_application_id = '||p_application_id||
59925                      ' - p_base_ledger_id = '||p_base_ledger_id||
59926                      ' - p_target_ledger_id  = '||p_target_ledger_id||
59927                      ' - p_language = '||p_language||
59928                      ' - p_currency_code = '||p_currency_code||
59929                      ' - p_sla_ledger_id = '||p_sla_ledger_id
59930       ,p_level    => C_LEVEL_STATEMENT
59931       ,p_module   => l_log_module);
59932 END IF;
59933 --
59934 -- initialze arrays
59935 --
59936 g_array_event.DELETE;
59937 l_rec_array_event := l_null_rec_array_event;
59938 --
59939 --------------------------------------
59940 -- 4262811 Initialze MPA Line Number
59941 --------------------------------------
59942 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
59943 
59944 --
59945 
59946 --
59947 OPEN header_cur;
59948 --
59949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59950    trace
59951    (p_msg      => 'SQL - FETCH header_cur'
59952    ,p_level    => C_LEVEL_STATEMENT
59953    ,p_module   => l_log_module);
59954 END IF;
59955 --
59956 LOOP
59957 FETCH header_cur BULK COLLECT INTO
59958         l_array_entity_id
59959       , l_array_legal_entity_id
59960       , l_array_entity_code
59961       , l_array_transaction_num
59962       , l_array_event_id
59963       , l_array_class_code
59964       , l_array_event_type
59965       , l_array_event_number
59966       , l_array_event_date
59967       , l_array_transaction_date
59968       , l_array_reference_num_1
59969       , l_array_reference_num_2
59970       , l_array_reference_num_3
59971       , l_array_reference_num_4
59972       , l_array_reference_char_1
59973       , l_array_reference_char_2
59974       , l_array_reference_char_3
59975       , l_array_reference_char_4
59976       , l_array_reference_date_1
59977       , l_array_reference_date_2
59978       , l_array_reference_date_3
59979       , l_array_reference_date_4
59980       , l_array_event_created_by
59981       , l_array_budgetary_control_flag 
59982       , l_array_source_32
59983       , l_array_source_88
59984       LIMIT l_rows;
59985 --
59986 IF (C_LEVEL_EVENT >= g_log_level) THEN
59987    trace
59988    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
59989    ,p_level    => C_LEVEL_EVENT
59990    ,p_module   => l_log_module);
59991 END IF;
59992 --
59993 EXIT WHEN l_array_entity_id.COUNT = 0;
59994 
59995 -- initialize arrays
59996 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
59997 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
59998 
59999 --
60000 -- Bug 4458708
60001 --
60002 XLA_AE_LINES_PKG.g_LineNumber := 0;
60003 
60004 
60005 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
60006 g_last_hdr_idx := l_array_event_id.LAST;
60007 --
60008 -- loop for the headers. Each iteration is for each header extract row
60009 -- fetched in header cursor
60010 --
60011 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
60012 
60013 --
60014 -- set event info as cache for other routines to refer event attributes
60015 --
60016 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
60017    (p_application_id           => p_application_id
60018    ,p_primary_ledger_id        => p_primary_ledger_id
60019    ,p_base_ledger_id           => p_base_ledger_id
60020    ,p_target_ledger_id         => p_target_ledger_id
60021    ,p_entity_id                => l_array_entity_id(hdr_idx)
60022    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
60023    ,p_entity_code              => l_array_entity_code(hdr_idx)
60024    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
60025    ,p_event_id                 => l_array_event_id(hdr_idx)
60026    ,p_event_class_code         => l_array_class_code(hdr_idx)
60027    ,p_event_type_code          => l_array_event_type(hdr_idx)
60028    ,p_event_number             => l_array_event_number(hdr_idx)
60029    ,p_event_date               => l_array_event_date(hdr_idx)
60030    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
60034    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
60031    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
60032    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
60033    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
60035    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
60036    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
60037    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
60038    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
60039    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
60040    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
60041    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
60042    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
60043    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
60044    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
60045 
60046 --
60047 -- set the status of entry to C_VALID (0)
60048 --
60049 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
60050 
60051 --
60052 -- initialize a row for ae header
60053 --
60054 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
60055 
60056 l_event_id := l_array_event_id(hdr_idx);
60057 
60058 --
60059 -- storing the hdr_idx for event. May be used by line cursor.
60060 --
60061 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
60062 
60063 --
60064 -- store sources from header extract. This can be improved to
60065 -- store only those sources from header extract that may be used in lines
60066 --
60067 
60068 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
60069 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
60070 
60071 --
60072 -- initilaize the status of ae headers for diffrent balance types
60073 -- the status is initialised to C_NOT_CREATED (2)
60074 --
60075 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
60076 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
60077 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
60078 
60079 --
60080 -- call api to validate and store accounting attributes for header
60081 --
60082 
60083 ------------------------------------------------------------
60084 -- Accrual Reversal : to get date for Standard Source (NONE)
60085 ------------------------------------------------------------
60086 l_acc_rev_gl_date_source := NULL;
60087 
60088      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
60089       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
60090 
60091 
60092 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
60093 
60094 XLA_AE_HEADER_PKG.SetJeCategoryName;
60095 
60096 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
60097 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
60098 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
60099 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
60100 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
60101 
60102 
60103 -- No header level analytical criteria
60104 
60105 --
60106 --accounting attribute enhancement, bug 3612931
60107 --
60108 l_trx_reversal_source := SUBSTR(NULL, 1,30);
60109 
60110 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
60111    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
60112 
60113    xla_accounting_err_pkg.build_message
60114       (p_appli_s_name            => 'XLA'
60115       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
60116       ,p_token_1                 => 'ACCT_ATTR_NAME'
60117       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
60118       ,p_token_2                 => 'PRODUCT_NAME'
60119       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
60120       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
60121       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
60122       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
60123 
60124 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
60125    --
60126    -- following sets the accounting attributes needed to reverse
60127    -- accounting for a distributeion
60128    --
60129    xla_ae_lines_pkg.SetTrxReversalAttrs
60130       (p_event_id              => l_event_id
60131       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
60132       ,p_trx_reversal_source   => l_trx_reversal_source);
60133 
60134 END IF;
60135 
60136 
60137 ----------------------------------------------------------------
60138 -- 4262811 -  update the header statuses to invalid in need be
60139 ----------------------------------------------------------------
60140 --
60141 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
60142 
60143 
60144   -----------------------------------------------
60145   -- No accrual reversal for the event class/type
60146   -----------------------------------------------
60147 ----------------------------------------------------------------
60148 
60149 --
60150 -- this ends the header loop iteration for one bulk fetch
60151 --
60152 END LOOP;
60153 
60154 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
60155 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
60156 
60157 --
60161 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
60158 -- insert dummy rows into lines gt table that were created due to
60159 -- transaction reversals
60160 --
60162    l_result := XLA_AE_LINES_PKG.InsertLines;
60163 END IF;
60164 
60165 --
60166 -- reset the temp_line_num for each set of events fetched from header
60167 -- cursor rather than doing it for each new event in line cursor
60168 -- Bug 3939231
60169 --
60170 xla_ae_lines_pkg.g_temp_line_num := 0;
60171 
60172 
60173 
60174 --
60175 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
60176 --
60177 --
60178 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60179 
60180       trace
60181          (p_msg      => 'SQL - FETCH line_cur'
60182          ,p_level    => C_LEVEL_STATEMENT
60183          ,p_module   => l_log_module);
60184 
60185 END IF;
60186 --
60187 --
60188 LOOP
60189   --
60190   FETCH line_cur BULK COLLECT INTO
60191         l_array_entity_id
60192       , l_array_legal_entity_id
60193       , l_array_entity_code
60194       , l_array_transaction_num
60195       , l_array_event_id
60196       , l_array_class_code
60197       , l_array_event_type
60198       , l_array_event_number
60199       , l_array_event_date
60200       , l_array_transaction_date
60201       , l_array_reference_num_1
60202       , l_array_reference_num_2
60203       , l_array_reference_num_3
60204       , l_array_reference_num_4
60205       , l_array_reference_char_1
60206       , l_array_reference_char_2
60207       , l_array_reference_char_3
60208       , l_array_reference_char_4
60209       , l_array_reference_date_1
60210       , l_array_reference_date_2
60211       , l_array_reference_date_3
60212       , l_array_reference_date_4
60213       , l_array_event_created_by
60214       , l_array_budgetary_control_flag
60215       , l_array_extract_line_num 
60216       , l_array_source_2
60217       , l_array_source_3
60218       , l_array_source_4
60219       , l_array_source_5
60220       , l_array_source_6
60221       , l_array_source_7
60222       , l_array_source_22
60223       , l_array_source_23
60224       , l_array_source_25
60225       , l_array_source_27
60226       , l_array_source_28
60227       , l_array_source_29
60228       , l_array_source_30
60229       , l_array_source_31
60230       , l_array_source_33
60231       , l_array_source_34
60232       , l_array_source_34_meaning
60233       , l_array_source_35
60234       , l_array_source_44
60235       , l_array_source_45
60236       , l_array_source_46
60237       , l_array_source_47
60238       , l_array_source_48
60239       , l_array_source_49
60240       , l_array_source_50
60241       , l_array_source_51
60242       , l_array_source_52
60243       , l_array_source_53
60244       , l_array_source_54
60245       , l_array_source_55
60246       , l_array_source_56
60247       , l_array_source_57
60248       LIMIT l_rows;
60249 
60250   --
60251   IF (C_LEVEL_EVENT >= g_log_level) THEN
60252             trace
60253                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
60254                ,p_level    => C_LEVEL_EVENT
60255                ,p_module   => l_log_module);
60256   END IF;
60257   --
60258   EXIT WHEN l_array_entity_id.count = 0;
60259 
60260   XLA_AE_LINES_PKG.g_rec_lines := null;
60261 
60262 --
60263 -- Bug 4458708
60264 --
60265 XLA_AE_LINES_PKG.g_LineNumber := 0;
60266 --
60267 --
60268 
60269 FOR Idx IN 1..l_array_event_id.count LOOP
60270    --
60271    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
60272    --
60273    l_event_id := l_array_event_id(idx);  -- 5648433
60274 
60275    --
60276    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
60277    --
60278 
60279    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
60280              (g_array_event(l_event_id).array_value_num('header_index'))
60281          ,'N'
60282          ) <> 'Y'
60283    THEN
60284       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60285          trace
60286             (p_msg      => 'Trancaction revesal option is not Y '
60287             ,p_level    => C_LEVEL_STATEMENT
60288             ,p_module   => l_log_module);
60289       END IF;
60290 
60291 --
60292 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
60293 --
60294 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
60295 --
60296 -- set event info as cache for other routines to refer event attributes
60297 --
60298 
60299 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
60300    l_previous_event_id := l_event_id;
60301 
60302    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
60303       (p_application_id           => p_application_id
60304       ,p_primary_ledger_id        => p_primary_ledger_id
60305       ,p_base_ledger_id           => p_base_ledger_id
60306       ,p_target_ledger_id         => p_target_ledger_id
60307       ,p_entity_id                => l_array_entity_id(Idx)
60308       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
60309       ,p_entity_code              => l_array_entity_code(Idx)
60310       ,p_transaction_num          => l_array_transaction_num(Idx)
60311       ,p_event_id                 => l_array_event_id(Idx)
60312       ,p_event_class_code         => l_array_class_code(Idx)
60313       ,p_event_type_code          => l_array_event_type(Idx)
60314       ,p_event_number             => l_array_event_number(Idx)
60315       ,p_event_date               => l_array_event_date(Idx)
60316       ,p_transaction_date         => l_array_transaction_date(Idx)
60320       ,p_reference_num_4          => l_array_reference_num_4(Idx)
60317       ,p_reference_num_1          => l_array_reference_num_1(Idx)
60318       ,p_reference_num_2          => l_array_reference_num_2(Idx)
60319       ,p_reference_num_3          => l_array_reference_num_3(Idx)
60321       ,p_reference_char_1         => l_array_reference_char_1(Idx)
60322       ,p_reference_char_2         => l_array_reference_char_2(Idx)
60323       ,p_reference_char_3         => l_array_reference_char_3(Idx)
60324       ,p_reference_char_4         => l_array_reference_char_4(Idx)
60325       ,p_reference_date_1         => l_array_reference_date_1(Idx)
60326       ,p_reference_date_2         => l_array_reference_date_2(Idx)
60327       ,p_reference_date_3         => l_array_reference_date_3(Idx)
60328       ,p_reference_date_4         => l_array_reference_date_4(Idx)
60329       ,p_event_created_by         => l_array_event_created_by(Idx)
60330       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
60331        --
60332 END IF;
60333 
60334 
60335 
60336 --
60337 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
60338 
60339 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
60340 
60341 IF l_continue_with_lines THEN
60342    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
60343       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
60344 
60345       xla_accounting_err_pkg.build_message
60346          (p_appli_s_name            => 'XLA'
60347          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
60348          ,p_token_1                 => 'LINE_NUMBER'
60349          ,p_value_1                 => l_array_extract_line_num(Idx)
60350          ,p_token_2                 => 'PRODUCT_NAME'
60351          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
60352          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
60353          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
60354          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
60355 
60356    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
60357       --
60358       -- following sets the accounting attributes needed to reverse
60359       -- accounting for a distributeion
60360       --
60361 
60362       --
60363       -- 5217187
60364       --
60365       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
60366       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
60367                                        g_array_event(l_event_id).array_value_num('header_index'));
60368       --
60369       --
60370 
60371       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
60372       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
60373       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
60374       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
60375       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
60376       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
60377       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
60378       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
60379       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
60380       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
60381       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
60382       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
60383       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
60384       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
60385       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
60386       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
60387       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
60388       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
60389       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
60390       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
60391       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
60392       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
60393       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
60394       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
60395       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
60396       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
60397       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
60398       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
60399       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
60400       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
60401       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
60402       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
60403       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
60404       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
60405       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
60406       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
60407       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
60408       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
60409       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
60410       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
60411       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
60415       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
60412       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
60413       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
60414       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_53(Idx);
60416       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
60417       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
60418       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
60419       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
60420       l_rec_rev_acct_attrs.array_char_value(26)  := l_array_source_25(Idx);
60421       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
60422       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
60423       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
60424       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_54(Idx);
60425       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
60426       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_2(Idx);
60427       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
60428       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_46(Idx);
60429       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
60430       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_25(Idx);
60431       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
60432       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_46(Idx);
60433       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
60434       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_55(Idx);
60435       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'REVERSED_DISTRIBUTION_ID1';
60436       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_32');
60437       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID2';
60438       l_rec_rev_acct_attrs.array_num_value(35)  := l_array_source_35(Idx);
60439       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_TYPE';
60440       l_rec_rev_acct_attrs.array_char_value(36)  := l_array_source_34(Idx);
60441       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
60442       l_rec_rev_acct_attrs.array_num_value(37)  := l_array_source_56(Idx);
60443       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
60444       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_57(Idx);
60445 
60446 
60447       xla_ae_lines_pkg.SetAcctReversalAttrs
60448          (p_event_id             => l_event_id
60449          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
60450          ,p_calculate_acctd_flag => l_calculate_acctd_flag
60451          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
60452    END IF;
60453 
60454    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
60455        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
60456 
60457 --
60458 AcctLineType_26 (
60459  p_application_id  => p_application_id
60460  ,p_event_id     => l_event_id
60461  ,p_calculate_acctd_flag => l_calculate_acctd_flag
60462  ,p_calculate_g_l_flag => l_calculate_g_l_flag
60463  ,p_actual_flag => l_actual_flag
60464  ,p_balance_type_code => l_balance_type_code
60465  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
60466  
60467  , p_source_2 => l_array_source_2(Idx)
60468  , p_source_3 => l_array_source_3(Idx)
60469  , p_source_4 => l_array_source_4(Idx)
60470  , p_source_5 => l_array_source_5(Idx)
60471  , p_source_6 => l_array_source_6(Idx)
60472  , p_source_22 => l_array_source_22(Idx)
60473  , p_source_23 => l_array_source_23(Idx)
60474  , p_source_25 => l_array_source_25(Idx)
60475  , p_source_27 => l_array_source_27(Idx)
60476  , p_source_28 => l_array_source_28(Idx)
60477  , p_source_29 => l_array_source_29(Idx)
60478  , p_source_30 => l_array_source_30(Idx)
60479  , p_source_31 => l_array_source_31(Idx)
60480  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
60481  , p_source_33 => l_array_source_33(Idx)
60482  , p_source_34 => l_array_source_34(Idx)
60483  , p_source_34_meaning => l_array_source_34_meaning(Idx)
60484  , p_source_35 => l_array_source_35(Idx)
60485  , p_source_44 => l_array_source_44(Idx)
60486  , p_source_45 => l_array_source_45(Idx)
60487  , p_source_46 => l_array_source_46(Idx)
60488  , p_source_47 => l_array_source_47(Idx)
60489  , p_source_48 => l_array_source_48(Idx)
60490  , p_source_49 => l_array_source_49(Idx)
60491  , p_source_50 => l_array_source_50(Idx)
60492  , p_source_51 => l_array_source_51(Idx)
60493  , p_source_52 => l_array_source_52(Idx)
60494  , p_source_53 => l_array_source_53(Idx)
60495  , p_source_54 => l_array_source_54(Idx)
60496  , p_source_55 => l_array_source_55(Idx)
60497  , p_source_56 => l_array_source_56(Idx)
60498  , p_source_57 => l_array_source_57(Idx)
60499  );
60500 If(l_balance_type_code = 'A') THEN
60501   l_actual_gain_loss_ref := l_gain_or_loss_ref;
60502 END IF;
60503 
60504 --
60505 
60506 
60507 --
60508 AcctLineType_27 (
60509  p_application_id  => p_application_id
60510  ,p_event_id     => l_event_id
60511  ,p_calculate_acctd_flag => l_calculate_acctd_flag
60512  ,p_calculate_g_l_flag => l_calculate_g_l_flag
60513  ,p_actual_flag => l_actual_flag
60514  ,p_balance_type_code => l_balance_type_code
60515  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
60516  
60517  , p_source_2 => l_array_source_2(Idx)
60518  , p_source_3 => l_array_source_3(Idx)
60519  , p_source_4 => l_array_source_4(Idx)
60520  , p_source_6 => l_array_source_6(Idx)
60521  , p_source_7 => l_array_source_7(Idx)
60522  , p_source_22 => l_array_source_22(Idx)
60523  , p_source_23 => l_array_source_23(Idx)
60524  , p_source_25 => l_array_source_25(Idx)
60525  , p_source_27 => l_array_source_27(Idx)
60529  , p_source_31 => l_array_source_31(Idx)
60526  , p_source_28 => l_array_source_28(Idx)
60527  , p_source_29 => l_array_source_29(Idx)
60528  , p_source_30 => l_array_source_30(Idx)
60530  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
60531  , p_source_33 => l_array_source_33(Idx)
60532  , p_source_34 => l_array_source_34(Idx)
60533  , p_source_34_meaning => l_array_source_34_meaning(Idx)
60534  , p_source_35 => l_array_source_35(Idx)
60535  , p_source_44 => l_array_source_44(Idx)
60536  , p_source_45 => l_array_source_45(Idx)
60537  , p_source_46 => l_array_source_46(Idx)
60538  , p_source_47 => l_array_source_47(Idx)
60539  , p_source_48 => l_array_source_48(Idx)
60540  , p_source_49 => l_array_source_49(Idx)
60541  , p_source_50 => l_array_source_50(Idx)
60542  , p_source_51 => l_array_source_51(Idx)
60543  , p_source_52 => l_array_source_52(Idx)
60544  , p_source_53 => l_array_source_53(Idx)
60545  , p_source_54 => l_array_source_54(Idx)
60546  , p_source_55 => l_array_source_55(Idx)
60547  , p_source_56 => l_array_source_56(Idx)
60548  , p_source_57 => l_array_source_57(Idx)
60549  );
60550 If(l_balance_type_code = 'A') THEN
60551   l_actual_gain_loss_ref := l_gain_or_loss_ref;
60552 END IF;
60553 
60554 --
60555 
60556       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
60557       -- or secondary ledger that has different currency with primary
60558       -- or alc that is calculated by sla
60559       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
60560             (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'))
60561 
60562 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
60563 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
60564           AND (l_actual_flag = 'A')) THEN
60565         XLA_AE_LINES_PKG.CreateGainOrLossLines(
60566           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
60567          ,p_application_id   => p_application_id
60568          ,p_amb_context_code => 'DEFAULT'
60569          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
60570          ,p_event_class_code => C_EVENT_CLASS_CODE
60571          ,p_event_type_code  => C_EVENT_TYPE_CODE
60572          
60573          ,p_gain_ccid        => -1
60574          ,p_loss_ccid        => -1
60575 
60576          ,p_actual_flag      => l_actual_flag
60577          ,p_enc_flag         => null
60578          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
60579          ,p_enc_g_l_ref      => null
60580          );
60581       END IF;
60582    END IF;
60583 END IF;
60584 
60585    ELSE
60586       --
60587       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
60588       --
60589       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60590          trace
60591             (p_msg      => 'Trancaction revesal option is Y'
60592             ,p_level    => C_LEVEL_STATEMENT
60593             ,p_module   => l_log_module);
60594       END IF;
60595    END IF;
60596 
60597 END LOOP;
60598 l_result := XLA_AE_LINES_PKG.InsertLines ;
60599 end loop;
60600 close line_cur;
60601 
60602 
60603 --
60604 -- insert headers into xla_ae_headers_gt table
60605 --
60606 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
60607 
60608 -- insert into errors table here.
60609 
60610 END LOOP;
60611 
60612 --
60613 -- 4865292
60614 --
60615 -- Compare g_hdr_extract_count with event count in
60616 -- CreateHeadersAndLines.
60617 --
60618 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
60619 
60620 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60621    trace (p_msg     => '# rows extracted from header extract objects '
60622                     || ' (running total): '
60623                     || g_hdr_extract_count
60624          ,p_level   => C_LEVEL_STATEMENT
60625          ,p_module  => l_log_module);
60626 END IF;
60627 
60628 CLOSE header_cur;
60629 --
60630 
60631 --
60632 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60633    trace
60634       (p_msg      => 'END of EventClass_113'
60635       ,p_level    => C_LEVEL_PROCEDURE
60636       ,p_module   => l_log_module);
60637 END IF;
60638 --
60639 RETURN l_result;
60640 EXCEPTION
60641 WHEN xla_exceptions_pkg.application_exception THEN
60642    
60643 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
60644 
60645    
60646 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
60647 
60648    RAISE;
60649 WHEN OTHERS THEN
60650    xla_exceptions_pkg.raise_message
60651       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_113');
60652 END EventClass_113;
60653 --
60654 
60655 ---------------------------------------
60656 --
60657 -- PRIVATE PROCEDURE
60658 --         insert_sources_114
60659 --
60660 ----------------------------------------
60661 --
60662 PROCEDURE insert_sources_114(
60663                                 p_target_ledger_id       IN NUMBER
60664                               , p_language               IN VARCHAR2
60665                               , p_sla_ledger_id          IN NUMBER
60666                               , p_pad_start_date         IN DATE
60667                               , p_pad_end_date           IN DATE
60668                          )
60669 IS
60670 
60671 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ALL';
60672 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BURDEN_COST';
60673 p_apps_owner                   VARCHAR2(30);
60674 l_log_module                   VARCHAR2(240);
60675 BEGIN
60676 IF g_log_enabled THEN
60680 
60677       l_log_module := C_DEFAULT_MODULE||'.insert_sources_114';
60678 END IF;
60679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60681       trace
60682          (p_msg      => 'BEGIN of insert_sources_114'
60683          ,p_level    => C_LEVEL_PROCEDURE
60684          ,p_module   => l_log_module);
60685 
60686 END IF;
60687 
60688 -- select APPS owner
60689 SELECT oracle_username
60690   INTO p_apps_owner
60691   FROM fnd_oracle_userid
60692  WHERE read_only_flag = 'U'
60693 ;
60694 
60695 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60696       trace
60697          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
60698                         ' - p_language = '||p_language||
60699                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
60700                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
60701                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
60702                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
60703          ,p_level    => C_LEVEL_STATEMENT
60704          ,p_module   => l_log_module);
60705 END IF;
60706 
60707 
60708 --
60709 INSERT INTO xla_diag_sources --hdr2
60710 (
60711         event_id
60712       , ledger_id
60713       , sla_ledger_id
60714       , description_language
60715       , object_name
60716       , object_type_code
60717       , line_number
60718       , source_application_id
60719       , source_type_code
60720       , source_code
60721       , source_value
60722       , source_meaning
60723       , created_by
60724       , creation_date
60725       , last_update_date
60726       , last_updated_by
60727       , last_update_login
60728       , program_update_date
60729       , program_application_id
60730       , program_id
60731       , request_id
60732 )
60733 SELECT
60734         event_id
60735       , p_target_ledger_id
60736       , p_sla_ledger_id
60737       , p_language
60738       , object_name
60739       , object_type_code
60740       , line_number
60741       , source_application_id
60742       , source_type_code
60743       , source_code
60744       , SUBSTR(source_value ,1,1996)
60745       , SUBSTR(source_meaning ,1,200)
60746       , xla_environment_pkg.g_Usr_Id
60747       , TRUNC(SYSDATE)
60748       , TRUNC(SYSDATE)
60749       , xla_environment_pkg.g_Usr_Id
60750       , xla_environment_pkg.g_Login_Id
60751       , TRUNC(SYSDATE)
60752       , xla_environment_pkg.g_Prog_Appl_Id
60753       , xla_environment_pkg.g_Prog_Id
60754       , xla_environment_pkg.g_Req_Id
60755   FROM (
60756        SELECT xet.event_id                  event_id
60757             , 0                          line_number
60758             , CASE r
60759                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
60760                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
60761                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
60762                 
60763                ELSE null
60764               END                           object_name
60765             , CASE r
60766                 WHEN 1 THEN 'HEADER' 
60767                 WHEN 2 THEN 'HEADER' 
60768                 WHEN 3 THEN 'HEADER' 
60769                 
60770                 ELSE null
60771               END                           object_type_code
60772             , CASE r
60773                 WHEN 1 THEN '275' 
60774                 WHEN 2 THEN '275' 
60775                 WHEN 3 THEN '275' 
60776                 
60777                 ELSE null
60778               END                           source_application_id
60779             , 'S'             source_type_code
60780             , CASE r
60781                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
60782                 WHEN 2 THEN 'SYSTEM_LINKAGE_FUNCTION' 
60783                 WHEN 3 THEN 'GL_DATE' 
60784                 
60785                 ELSE null
60786               END                           source_code
60787             , CASE r
60788                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
60789                 WHEN 2 THEN TO_CHAR(h2.SYSTEM_LINKAGE_FUNCTION)
60790                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
60791                 
60792                 ELSE null
60793               END                           source_value
60794             , null              source_meaning
60795          FROM xla_events_gt     xet  
60796       , PA_XLA_EXP_HEADER_V  h2
60797              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
60798          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
60799            AND xet.event_class_code = C_EVENT_CLASS_CODE
60800               AND h2.event_id = xet.event_id
60801 
60802 )
60803 ;
60804 --
60805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60806 
60807       trace
60808          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
60809          ,p_level    => C_LEVEL_STATEMENT
60810          ,p_module   => l_log_module);
60811 
60812 END IF;
60813 --
60814 
60815 
60816 
60817 --
60818 INSERT INTO xla_diag_sources  --line2
60819 (
60820         event_id
60821       , ledger_id
60822       , sla_ledger_id
60823       , description_language
60824       , object_name
60825       , object_type_code
60826       , line_number
60827       , source_application_id
60828       , source_type_code
60829       , source_code
60830       , source_value
60831       , source_meaning
60832       , created_by
60833       , creation_date
60834       , last_update_date
60835       , last_updated_by
60836       , last_update_login
60837       , program_update_date
60838       , program_application_id
60839       , program_id
60843       , p_target_ledger_id
60840       , request_id
60841 )
60842 SELECT  event_id
60844       , p_sla_ledger_id
60845       , p_language
60846       , object_name
60847       , object_type_code
60848       , line_number
60849       , source_application_id
60850       , source_type_code
60851       , source_code
60852       , SUBSTR(source_value,1,1996)
60853       , SUBSTR(source_meaning ,1,200)
60854       , xla_environment_pkg.g_Usr_Id
60855       , TRUNC(SYSDATE)
60856       , TRUNC(SYSDATE)
60857       , xla_environment_pkg.g_Usr_Id
60858       , xla_environment_pkg.g_Login_Id
60859       , TRUNC(SYSDATE)
60860       , xla_environment_pkg.g_Prog_Appl_Id
60861       , xla_environment_pkg.g_Prog_Id
60862       , xla_environment_pkg.g_Req_Id
60863   FROM (
60864        SELECT xet.event_id                  event_id
60865             , l1.line_number                 line_number
60866             , CASE r
60867                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
60868                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
60869                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
60870                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
60871                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
60872                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
60873                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
60874                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
60875                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
60876                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
60877                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
60878                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
60879                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
60880                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
60881                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
60882                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
60883                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
60884                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
60885                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
60886                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
60887                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
60888                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
60889                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
60890                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
60891                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
60892                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
60893                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
60894                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
60895                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
60896                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
60897                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
60898                 WHEN 32 THEN 'PA_XLA_CDL_LINES_V' 
60899                 WHEN 33 THEN 'PA_XLA_CDL_LINES_V' 
60900                 WHEN 34 THEN 'PA_XLA_CDL_LINES_V' 
60901                 WHEN 35 THEN 'PA_XLA_CDL_LINES_V' 
60902                 WHEN 36 THEN 'PA_XLA_CDL_LINES_V' 
60903                 WHEN 37 THEN 'PA_XLA_CDL_LINES_V' 
60904                 WHEN 38 THEN 'PA_XLA_CDL_LINES_V' 
60905                 WHEN 39 THEN 'PA_XLA_CDL_LINES_V' 
60906                 WHEN 40 THEN 'PA_XLA_CDL_LINES_V' 
60907                 WHEN 41 THEN 'PA_XLA_CDL_LINES_V' 
60908                 WHEN 42 THEN 'PA_XLA_CDL_LINES_V' 
60909                 WHEN 43 THEN 'PA_XLA_CDL_LINES_V' 
60910                 WHEN 44 THEN 'PA_XLA_CDL_LINES_V' 
60911                 WHEN 45 THEN 'PA_XLA_CDL_LINES_V' 
60912                 WHEN 46 THEN 'PA_XLA_CDL_LINES_V' 
60913                 WHEN 47 THEN 'PA_XLA_CDL_LINES_V' 
60914                 WHEN 48 THEN 'PA_XLA_CDL_LINES_V' 
60915                 WHEN 49 THEN 'PA_XLA_CDL_LINES_V' 
60916                 
60917                ELSE null
60918               END                           object_name
60919             , CASE r
60920                 WHEN 1 THEN 'LINE' 
60921                 WHEN 2 THEN 'LINE' 
60922                 WHEN 3 THEN 'LINE' 
60923                 WHEN 4 THEN 'LINE' 
60924                 WHEN 5 THEN 'LINE' 
60925                 WHEN 6 THEN 'LINE' 
60926                 WHEN 7 THEN 'LINE' 
60927                 WHEN 8 THEN 'LINE' 
60928                 WHEN 9 THEN 'LINE' 
60929                 WHEN 10 THEN 'LINE' 
60930                 WHEN 11 THEN 'LINE' 
60931                 WHEN 12 THEN 'LINE' 
60932                 WHEN 13 THEN 'LINE' 
60933                 WHEN 14 THEN 'LINE' 
60934                 WHEN 15 THEN 'LINE' 
60935                 WHEN 16 THEN 'LINE' 
60936                 WHEN 17 THEN 'LINE' 
60937                 WHEN 18 THEN 'LINE' 
60938                 WHEN 19 THEN 'LINE' 
60939                 WHEN 20 THEN 'LINE' 
60940                 WHEN 21 THEN 'LINE' 
60941                 WHEN 22 THEN 'LINE' 
60942                 WHEN 23 THEN 'LINE' 
60943                 WHEN 24 THEN 'LINE' 
60944                 WHEN 25 THEN 'LINE' 
60945                 WHEN 26 THEN 'LINE' 
60946                 WHEN 27 THEN 'LINE' 
60947                 WHEN 28 THEN 'LINE' 
60948                 WHEN 29 THEN 'LINE' 
60949                 WHEN 30 THEN 'LINE' 
60950                 WHEN 31 THEN 'LINE' 
60951                 WHEN 32 THEN 'LINE' 
60952                 WHEN 33 THEN 'LINE' 
60953                 WHEN 34 THEN 'LINE' 
60954                 WHEN 35 THEN 'LINE' 
60955                 WHEN 36 THEN 'LINE' 
60956                 WHEN 37 THEN 'LINE' 
60957                 WHEN 38 THEN 'LINE' 
60958                 WHEN 39 THEN 'LINE' 
60959                 WHEN 40 THEN 'LINE' 
60960                 WHEN 41 THEN 'LINE' 
60961                 WHEN 42 THEN 'LINE' 
60962                 WHEN 43 THEN 'LINE' 
60963                 WHEN 44 THEN 'LINE' 
60964                 WHEN 45 THEN 'LINE' 
60965                 WHEN 46 THEN 'LINE' 
60966                 WHEN 47 THEN 'LINE' 
60967                 WHEN 48 THEN 'LINE' 
60968                 WHEN 49 THEN 'LINE' 
60969                 
60973                 WHEN 1 THEN '275' 
60970                 ELSE null
60971               END                           object_type_code
60972             , CASE r
60974                 WHEN 2 THEN '275' 
60975                 WHEN 3 THEN '275' 
60976                 WHEN 4 THEN '275' 
60977                 WHEN 5 THEN '275' 
60978                 WHEN 6 THEN '275' 
60979                 WHEN 7 THEN '275' 
60980                 WHEN 8 THEN '275' 
60981                 WHEN 9 THEN '275' 
60982                 WHEN 10 THEN '275' 
60983                 WHEN 11 THEN '275' 
60984                 WHEN 12 THEN '275' 
60985                 WHEN 13 THEN '275' 
60986                 WHEN 14 THEN '275' 
60987                 WHEN 15 THEN '275' 
60988                 WHEN 16 THEN '275' 
60989                 WHEN 17 THEN '275' 
60990                 WHEN 18 THEN '275' 
60991                 WHEN 19 THEN '275' 
60992                 WHEN 20 THEN '275' 
60993                 WHEN 21 THEN '275' 
60994                 WHEN 22 THEN '275' 
60995                 WHEN 23 THEN '275' 
60996                 WHEN 24 THEN '275' 
60997                 WHEN 25 THEN '275' 
60998                 WHEN 26 THEN '275' 
60999                 WHEN 27 THEN '275' 
61000                 WHEN 28 THEN '275' 
61001                 WHEN 29 THEN '275' 
61002                 WHEN 30 THEN '275' 
61003                 WHEN 31 THEN '275' 
61004                 WHEN 32 THEN '275' 
61005                 WHEN 33 THEN '275' 
61006                 WHEN 34 THEN '275' 
61007                 WHEN 35 THEN '275' 
61008                 WHEN 36 THEN '275' 
61009                 WHEN 37 THEN '275' 
61010                 WHEN 38 THEN '275' 
61011                 WHEN 39 THEN '275' 
61012                 WHEN 40 THEN '275' 
61013                 WHEN 41 THEN '275' 
61014                 WHEN 42 THEN '275' 
61015                 WHEN 43 THEN '275' 
61016                 WHEN 44 THEN '275' 
61017                 WHEN 45 THEN '275' 
61018                 WHEN 46 THEN '275' 
61019                 WHEN 47 THEN '275' 
61020                 WHEN 48 THEN '275' 
61021                 WHEN 49 THEN '275' 
61022                 
61023                 ELSE null
61024               END                           source_application_id
61025             , 'S'             source_type_code
61026             , CASE r
61027                 WHEN 1 THEN 'BUDGET_CCID' 
61028                 WHEN 2 THEN 'COST_CCID' 
61029                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
61030                 WHEN 4 THEN 'ADJ_COST_CCID' 
61031                 WHEN 5 THEN 'COST_CLEARING_CCID' 
61032                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
61033                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
61034                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
61035                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
61036                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
61037                 WHEN 11 THEN 'EXCHANGE_RATE' 
61038                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
61039                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
61040                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
61041                 WHEN 15 THEN 'LINE_NUMBER' 
61042                 WHEN 16 THEN 'LINE_TYPE' 
61043                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
61044                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
61045                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
61046                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
61047                 WHEN 21 THEN 'PA_APPLICATION_ID' 
61048                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
61049                 WHEN 23 THEN 'PA_ENTITY_CODE' 
61050                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
61051                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
61052                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
61053                 WHEN 27 THEN 'ENC_UPG_DR_ACCT_CLASS' 
61054                 WHEN 28 THEN 'ENC_UPG_CR_ACCT_CLASS' 
61055                 WHEN 29 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
61056                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
61057                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
61058                 WHEN 32 THEN 'DOCUMENT_TYPE' 
61059                 WHEN 33 THEN 'ENC_JE_LINES_REVERSED_FLAG' 
61060                 WHEN 34 THEN 'PO_RELEASE_ID' 
61061                 WHEN 35 THEN 'CWK_RATE_BASED_TC_FLAG' 
61062                 WHEN 36 THEN 'INVOICE_APPLICATION_ID' 
61063                 WHEN 37 THEN 'INVOICE_DISTRIBUTION_TYPE' 
61064                 WHEN 38 THEN 'INVOICE_ENTITY_CODE' 
61065                 WHEN 39 THEN 'INVOICE_FIRST_DIST_ID' 
61066                 WHEN 40 THEN 'INVOICE_FIRST_SYS_TRANS_ID' 
61067                 WHEN 41 THEN 'INVOICE_SECOND_DIST_ID' 
61068                 WHEN 42 THEN 'PO_APPLICATION_ID' 
61069                 WHEN 43 THEN 'PO_DISTRIBUTION_TYPE' 
61070                 WHEN 44 THEN 'PO_ENTITY_CODE' 
61071                 WHEN 45 THEN 'PO_FIRST_DIST_ID' 
61072                 WHEN 46 THEN 'PO_FIRST_SYS_TRANS_ID' 
61073                 WHEN 47 THEN 'PO_SECOND_DIST_ID' 
61074                 WHEN 48 THEN 'ENC_ACCT_ENABLED' 
61075                 WHEN 49 THEN 'LIQUIDATE_ENCUM_FLAG' 
61076                 
61077                 ELSE null
61078               END                           source_code
61079             , CASE r
61080                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
61081                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
61082                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
61083                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
61084                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
61085                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
61086                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
61087                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
61088                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
61089                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
61090                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
61094                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
61091                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
61092                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
61093                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
61095                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
61096                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
61097                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
61098                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
61099                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
61100                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
61101                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
61102                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
61103                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
61104                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
61105                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
61106                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
61107                 WHEN 28 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
61108                 WHEN 29 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
61109                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
61110                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
61111                 WHEN 32 THEN TO_CHAR(l1.DOCUMENT_TYPE)
61112                 WHEN 33 THEN TO_CHAR(l1.ENC_JE_LINES_REVERSED_FLAG)
61113                 WHEN 34 THEN TO_CHAR(l1.PO_RELEASE_ID)
61114                 WHEN 35 THEN TO_CHAR(l1.CWK_RATE_BASED_TC_FLAG)
61115                 WHEN 36 THEN TO_CHAR(l1.INVOICE_APPLICATION_ID)
61116                 WHEN 37 THEN TO_CHAR(l1.INVOICE_DISTRIBUTION_TYPE)
61117                 WHEN 38 THEN TO_CHAR(l1.INVOICE_ENTITY_CODE)
61118                 WHEN 39 THEN TO_CHAR(l1.INVOICE_FIRST_DIST_ID)
61119                 WHEN 40 THEN TO_CHAR(l1.INVOICE_FIRST_SYS_TRANS_ID)
61120                 WHEN 41 THEN TO_CHAR(l1.INVOICE_SECOND_DIST_ID)
61121                 WHEN 42 THEN TO_CHAR(l1.PO_APPLICATION_ID)
61122                 WHEN 43 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
61123                 WHEN 44 THEN TO_CHAR(l1.PO_ENTITY_CODE)
61124                 WHEN 45 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
61125                 WHEN 46 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
61126                 WHEN 47 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
61127                 WHEN 48 THEN TO_CHAR(l1.ENC_ACCT_ENABLED)
61128                 WHEN 49 THEN TO_CHAR(l1.LIQUIDATE_ENCUM_FLAG)
61129                 
61130                 ELSE null
61131               END                           source_value
61132             , CASE r
61133                 WHEN 3 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
61134                           103371
61135                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
61136                          ,'ALLOW_OVERRIDE_CCID_FLAG'
61137                          ,'S'
61138                          ,275)
61139                 WHEN 16 THEN fvl34.meaning
61140                 WHEN 32 THEN fvl70.meaning
61141                 
61142                 ELSE null
61143               END               source_meaning
61144          FROM  xla_events_gt     xet  
61145         , PA_XLA_CDL_LINES_V  l1
61146   , fnd_lookup_values    fvl34
61147   , fnd_lookup_values    fvl70
61148             , (select rownum r from all_objects where rownum <= 49 and owner = p_apps_owner)
61149         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
61150           AND xet.event_class_code = C_EVENT_CLASS_CODE
61151             AND l1.event_id          = xet.event_id
61152    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
61153   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
61154   AND fvl34.view_application_id(+) = 275
61155   AND fvl34.language(+)            = USERENV('LANG')
61156      AND fvl70.lookup_type(+)         = 'FC_DOC_TYPE'
61157   AND fvl70.lookup_code(+)         = l1.DOCUMENT_TYPE
61158   AND fvl70.view_application_id(+) = 275
61159   AND fvl70.language(+)            = USERENV('LANG')
61160   
61161 )
61162 ;
61163 --
61164 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61165 
61166       trace
61167          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
61168          ,p_level    => C_LEVEL_STATEMENT
61169          ,p_module   => l_log_module);
61170 
61171 END IF;
61172 
61173 
61174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61175       trace
61176          (p_msg      => 'END of insert_sources_114'
61177          ,p_level    => C_LEVEL_PROCEDURE
61178          ,p_module   => l_log_module);
61179 END IF;
61180 EXCEPTION
61181   WHEN xla_exceptions_pkg.application_exception THEN
61182       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
61183             trace
61184                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
61185                ,p_level    => C_LEVEL_EXCEPTION
61186                ,p_module   => l_log_module);
61187       END IF;
61188       RAISE;
61189   WHEN OTHERS THEN
61190       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
61191             trace
61192                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
61193                ,p_level    => C_LEVEL_EXCEPTION
61194                ,p_module   => l_log_module);
61195        END IF;
61196        xla_exceptions_pkg.raise_message
61197            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_114');
61198 END insert_sources_114;
61199 --
61200 
61201 ---------------------------------------
61202 --
61203 -- PRIVATE FUNCTION
61204 --         EventClass_114
61205 --
61206 ----------------------------------------
61207 --
61208 FUNCTION EventClass_114
61209        (p_application_id         IN NUMBER
61210        ,p_base_ledger_id         IN NUMBER
61211        ,p_target_ledger_id       IN NUMBER
61212        ,p_language               IN VARCHAR2
61213        ,p_currency_code          IN VARCHAR2
61214        ,p_sla_ledger_id          IN NUMBER
61218 RETURN BOOLEAN IS
61215        ,p_pad_start_date         IN DATE
61216        ,p_pad_end_date           IN DATE
61217        ,p_primary_ledger_id      IN NUMBER)
61219 --
61220 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ALL';
61221 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BURDEN_COST';
61222 
61223 l_calculate_acctd_flag   VARCHAR2(1) :='N';
61224 l_calculate_g_l_flag     VARCHAR2(1) :='N';
61225 --
61226 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61227 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61228 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61229 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61230 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61231 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61232 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61233 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61234 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61235 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61236 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61237 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61238 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61239 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61240 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61241 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61242 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61243 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61244 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61245 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61246 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61247 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61248 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
61249 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61250 
61251 l_event_id                             NUMBER;
61252 l_previous_event_id                    NUMBER;
61253 l_first_event_id                       NUMBER;
61254 l_last_event_id                        NUMBER;
61255 
61256 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
61257 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
61258 --
61259 --
61260 l_result                    BOOLEAN := TRUE;
61261 l_rows                      NUMBER  := 1000;
61262 l_event_type_name           VARCHAR2(80) := 'All';
61263 l_event_class_name          VARCHAR2(80) := 'Burden Cost';
61264 l_description               VARCHAR2(4000);
61265 l_transaction_reversal      NUMBER;
61266 l_ae_header_id              NUMBER;
61267 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
61268 l_log_module                VARCHAR2(240);
61269 --
61270 l_acct_reversal_source      VARCHAR2(30);
61271 l_trx_reversal_source       VARCHAR2(30);
61272 
61273 l_continue_with_lines       BOOLEAN := TRUE;
61274 --
61275 l_acc_rev_gl_date_source    DATE;                      -- 4262811
61276 --
61277 type t_array_event_id is table of number index by binary_integer;
61278 
61279 l_rec_array_event                    t_rec_array_event;
61280 l_null_rec_array_event               t_rec_array_event;
61281 l_array_ae_header_id                 xla_number_array_type;
61282 l_actual_flag                        VARCHAR2(1) := NULL;
61283 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
61284 l_balance_type_code                  VARCHAR2(1) :=NULL;
61285 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
61286 
61287 --
61288 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
61289 --
61290 
61291 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
61292 TYPE t_array_source_37 IS TABLE OF PA_XLA_EXP_HEADER_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
61293 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
61294 
61295 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
61296 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
61297 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
61298 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
61299 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
61300 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
61301 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
61302 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61303 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
61304 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
61305 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
61306 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
61307 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61308 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
61309 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
61310 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
61314 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
61311 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
61312 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
61313 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
61315 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
61316 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
61317 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
61318 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61319 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
61320 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61321 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61322 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61323 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
61324 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
61325 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
61326 TYPE t_array_source_70 IS TABLE OF PA_XLA_CDL_LINES_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
61327 TYPE t_array_source_71 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_JE_LINES_REVERSED_FLAG%TYPE INDEX BY BINARY_INTEGER;
61328 TYPE t_array_source_72 IS TABLE OF PA_XLA_CDL_LINES_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
61329 TYPE t_array_source_73 IS TABLE OF PA_XLA_CDL_LINES_V.CWK_RATE_BASED_TC_FLAG%TYPE INDEX BY BINARY_INTEGER;
61330 TYPE t_array_source_74 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
61331 TYPE t_array_source_75 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
61332 TYPE t_array_source_76 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
61333 TYPE t_array_source_77 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61334 TYPE t_array_source_78 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
61335 TYPE t_array_source_79 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61336 TYPE t_array_source_80 IS TABLE OF PA_XLA_CDL_LINES_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
61337 TYPE t_array_source_81 IS TABLE OF PA_XLA_CDL_LINES_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
61338 TYPE t_array_source_82 IS TABLE OF PA_XLA_CDL_LINES_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
61339 TYPE t_array_source_83 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61340 TYPE t_array_source_84 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
61341 TYPE t_array_source_85 IS TABLE OF PA_XLA_CDL_LINES_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61342 TYPE t_array_source_86 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_ACCT_ENABLED%TYPE INDEX BY BINARY_INTEGER;
61343 TYPE t_array_source_87 IS TABLE OF PA_XLA_CDL_LINES_V.LIQUIDATE_ENCUM_FLAG%TYPE INDEX BY BINARY_INTEGER;
61344 
61345 l_array_source_32              t_array_source_32;
61346 l_array_source_37              t_array_source_37;
61347 l_array_source_88              t_array_source_88;
61348 
61349 l_array_source_2      t_array_source_2;
61350 l_array_source_3      t_array_source_3;
61351 l_array_source_4      t_array_source_4;
61352 l_array_source_5      t_array_source_5;
61353 l_array_source_6      t_array_source_6;
61354 l_array_source_7      t_array_source_7;
61355 l_array_source_22      t_array_source_22;
61356 l_array_source_23      t_array_source_23;
61357 l_array_source_25      t_array_source_25;
61358 l_array_source_27      t_array_source_27;
61359 l_array_source_28      t_array_source_28;
61360 l_array_source_29      t_array_source_29;
61361 l_array_source_30      t_array_source_30;
61362 l_array_source_31      t_array_source_31;
61363 l_array_source_33      t_array_source_33;
61364 l_array_source_34      t_array_source_34;
61365 l_array_source_34_meaning      t_array_lookup_meaning;
61366 l_array_source_35      t_array_source_35;
61367 l_array_source_44      t_array_source_44;
61368 l_array_source_45      t_array_source_45;
61369 l_array_source_46      t_array_source_46;
61370 l_array_source_47      t_array_source_47;
61371 l_array_source_48      t_array_source_48;
61372 l_array_source_49      t_array_source_49;
61373 l_array_source_50      t_array_source_50;
61374 l_array_source_51      t_array_source_51;
61375 l_array_source_52      t_array_source_52;
61376 l_array_source_53      t_array_source_53;
61377 l_array_source_54      t_array_source_54;
61378 l_array_source_55      t_array_source_55;
61379 l_array_source_56      t_array_source_56;
61380 l_array_source_57      t_array_source_57;
61381 l_array_source_70      t_array_source_70;
61382 l_array_source_70_meaning      t_array_lookup_meaning;
61383 l_array_source_71      t_array_source_71;
61384 l_array_source_72      t_array_source_72;
61385 l_array_source_73      t_array_source_73;
61386 l_array_source_74      t_array_source_74;
61387 l_array_source_75      t_array_source_75;
61388 l_array_source_76      t_array_source_76;
61389 l_array_source_77      t_array_source_77;
61390 l_array_source_78      t_array_source_78;
61391 l_array_source_79      t_array_source_79;
61392 l_array_source_80      t_array_source_80;
61393 l_array_source_81      t_array_source_81;
61394 l_array_source_82      t_array_source_82;
61395 l_array_source_83      t_array_source_83;
61396 l_array_source_84      t_array_source_84;
61397 l_array_source_85      t_array_source_85;
61398 l_array_source_86      t_array_source_86;
61399 l_array_source_87      t_array_source_87;
61400 
61401 --
61402 CURSOR header_cur
61403 IS
61407    ,xet.legal_entity_id
61404 SELECT /*+ leading(xet) cardinality(xet,1) */
61405 -- Event Class Code: BURDEN_COST
61406     xet.entity_id
61408    ,xet.entity_code
61409    ,xet.transaction_number
61410    ,xet.event_id
61411    ,xet.event_class_code
61412    ,xet.event_type_code
61413    ,xet.event_number
61414    ,xet.event_date
61415    ,xet.transaction_date
61416    ,xet.reference_num_1
61417    ,xet.reference_num_2
61418    ,xet.reference_num_3
61419    ,xet.reference_num_4
61420    ,xet.reference_char_1
61421    ,xet.reference_char_2
61422    ,xet.reference_char_3
61423    ,xet.reference_char_4
61424    ,xet.reference_date_1
61425    ,xet.reference_date_2
61426    ,xet.reference_date_3
61427    ,xet.reference_date_4
61428    ,xet.event_created_by
61429    ,xet.budgetary_control_flag 
61430   , h2.EXPENDITURE_ITEM_ID    source_32
61431   , h2.SYSTEM_LINKAGE_FUNCTION    source_37
61432   , h2.GL_DATE    source_88
61433   FROM xla_events_gt     xet 
61434   , PA_XLA_EXP_HEADER_V  h2
61435  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
61436    and xet.event_class_code = C_EVENT_CLASS_CODE
61437    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
61438 
61439  ORDER BY event_id
61440 ;
61441 
61442 
61443 --
61444 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
61445 IS
61446 SELECT  /*+ leading(xet) cardinality(xet,1) */
61447 -- Event Class Code: BURDEN_COST
61448     xet.entity_id
61449    ,xet.legal_entity_id
61450    ,xet.entity_code
61451    ,xet.transaction_number
61452    ,xet.event_id
61453    ,xet.event_class_code
61454    ,xet.event_type_code
61455    ,xet.event_number
61456    ,xet.event_date
61457    ,xet.transaction_date
61458    ,xet.reference_num_1
61459    ,xet.reference_num_2
61460    ,xet.reference_num_3
61461    ,xet.reference_num_4
61462    ,xet.reference_char_1
61463    ,xet.reference_char_2
61464    ,xet.reference_char_3
61465    ,xet.reference_char_4
61466    ,xet.reference_date_1
61467    ,xet.reference_date_2
61468    ,xet.reference_date_3
61469    ,xet.reference_date_4
61470    ,xet.event_created_by
61471    ,xet.budgetary_control_flag
61472  , l1.LINE_NUMBER  
61473   , l1.BUDGET_CCID    source_2
61474   , l1.COST_CCID    source_3
61475   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
61476   , l1.ADJ_COST_CCID    source_5
61477   , l1.COST_CLEARING_CCID    source_6
61478   , l1.ADJ_COST_CLEARING_CCID    source_7
61479   , l1.REVERSING_LINE_FLAG    source_22
61480   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
61481   , l1.ENTERED_CURRENCY_CODE    source_25
61482   , l1.EXCHANGE_RATE_DATE    source_27
61483   , l1.EXCHANGE_RATE    source_28
61484   , l1.EXCHANGE_RATE_TYPE    source_29
61485   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
61486   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
61487   , l1.LINE_NUMBER    source_33
61488   , l1.LINE_TYPE    source_34
61489   , fvl34.meaning   source_34_meaning
61490   , l1.LINE_NUM_REVERSED    source_35
61491   , l1.ENTERED_BURDENED_COST    source_44
61492   , l1.ACCT_BURDENED_COST    source_45
61493   , l1.ENCUMBRANCE_AMOUNT    source_46
61494   , l1.PA_APPLICATION_ID    source_47
61495   , l1.PA_DISTRIBUTION_TYPE    source_48
61496   , l1.PA_ENTITY_CODE    source_49
61497   , l1.PA_FIRST_DIST_ID    source_50
61498   , l1.PA_FIRST_SYS_TRANS_ID    source_51
61499   , l1.PA_SECOND_DIST_ID    source_52
61500   , l1.ENC_UPG_DR_ACCT_CLASS    source_53
61501   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
61502   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
61503   , l1.ENCUMBRANCE_TYPE_ID    source_56
61504   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
61505   , l1.DOCUMENT_TYPE    source_70
61506   , fvl70.meaning   source_70_meaning
61507   , l1.ENC_JE_LINES_REVERSED_FLAG    source_71
61508   , l1.PO_RELEASE_ID    source_72
61509   , l1.CWK_RATE_BASED_TC_FLAG    source_73
61510   , l1.INVOICE_APPLICATION_ID    source_74
61511   , l1.INVOICE_DISTRIBUTION_TYPE    source_75
61512   , l1.INVOICE_ENTITY_CODE    source_76
61513   , l1.INVOICE_FIRST_DIST_ID    source_77
61514   , l1.INVOICE_FIRST_SYS_TRANS_ID    source_78
61515   , l1.INVOICE_SECOND_DIST_ID    source_79
61516   , l1.PO_APPLICATION_ID    source_80
61517   , l1.PO_DISTRIBUTION_TYPE    source_81
61518   , l1.PO_ENTITY_CODE    source_82
61519   , l1.PO_FIRST_DIST_ID    source_83
61520   , l1.PO_FIRST_SYS_TRANS_ID    source_84
61521   , l1.PO_SECOND_DIST_ID    source_85
61522   , l1.ENC_ACCT_ENABLED    source_86
61523   , l1.LIQUIDATE_ENCUM_FLAG    source_87
61524   FROM xla_events_gt     xet 
61525   , PA_XLA_CDL_LINES_V  l1
61526   , fnd_lookup_values    fvl34
61527   , fnd_lookup_values    fvl70
61528  WHERE xet.event_id between x_first_event_id and x_last_event_id
61529    and xet.event_date between p_pad_start_date and p_pad_end_date
61530    and xet.event_class_code = C_EVENT_CLASS_CODE
61531    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
61532    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
61533   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
61534   AND fvl34.view_application_id(+) = 275
61535   AND fvl34.language(+)            = USERENV('LANG')
61536      AND fvl70.lookup_type(+)         = 'FC_DOC_TYPE'
61537   AND fvl70.lookup_code(+)         = l1.DOCUMENT_TYPE
61538   AND fvl70.view_application_id(+) = 275
61539   AND fvl70.language(+)            = USERENV('LANG')
61540   ;
61541 
61542 --
61543 BEGIN
61544 IF g_log_enabled THEN
61545    l_log_module := C_DEFAULT_MODULE||'.EventClass_114';
61546 END IF;
61547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61548    trace
61549       (p_msg      => 'BEGIN of EventClass_114'
61550       ,p_level    => C_LEVEL_PROCEDURE
61551       ,p_module   => l_log_module);
61552 END IF;
61553 
61557                      ' - p_base_ledger_id = '||p_base_ledger_id||
61554 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61555    trace
61556       (p_msg      => 'p_application_id = '||p_application_id||
61558                      ' - p_target_ledger_id  = '||p_target_ledger_id||
61559                      ' - p_language = '||p_language||
61560                      ' - p_currency_code = '||p_currency_code||
61561                      ' - p_sla_ledger_id = '||p_sla_ledger_id
61562       ,p_level    => C_LEVEL_STATEMENT
61563       ,p_module   => l_log_module);
61564 END IF;
61565 --
61566 -- initialze arrays
61567 --
61568 g_array_event.DELETE;
61569 l_rec_array_event := l_null_rec_array_event;
61570 --
61571 --------------------------------------
61572 -- 4262811 Initialze MPA Line Number
61573 --------------------------------------
61574 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
61575 
61576 --
61577 
61578 --
61579 OPEN header_cur;
61580 --
61581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61582    trace
61583    (p_msg      => 'SQL - FETCH header_cur'
61584    ,p_level    => C_LEVEL_STATEMENT
61585    ,p_module   => l_log_module);
61586 END IF;
61587 --
61588 LOOP
61589 FETCH header_cur BULK COLLECT INTO
61590         l_array_entity_id
61591       , l_array_legal_entity_id
61592       , l_array_entity_code
61593       , l_array_transaction_num
61594       , l_array_event_id
61595       , l_array_class_code
61596       , l_array_event_type
61597       , l_array_event_number
61598       , l_array_event_date
61599       , l_array_transaction_date
61600       , l_array_reference_num_1
61601       , l_array_reference_num_2
61602       , l_array_reference_num_3
61603       , l_array_reference_num_4
61604       , l_array_reference_char_1
61605       , l_array_reference_char_2
61606       , l_array_reference_char_3
61607       , l_array_reference_char_4
61608       , l_array_reference_date_1
61609       , l_array_reference_date_2
61610       , l_array_reference_date_3
61611       , l_array_reference_date_4
61612       , l_array_event_created_by
61613       , l_array_budgetary_control_flag 
61614       , l_array_source_32
61615       , l_array_source_37
61616       , l_array_source_88
61617       LIMIT l_rows;
61618 --
61619 IF (C_LEVEL_EVENT >= g_log_level) THEN
61620    trace
61621    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
61622    ,p_level    => C_LEVEL_EVENT
61623    ,p_module   => l_log_module);
61624 END IF;
61625 --
61626 EXIT WHEN l_array_entity_id.COUNT = 0;
61627 
61628 -- initialize arrays
61629 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
61630 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
61631 
61632 --
61633 -- Bug 4458708
61634 --
61635 XLA_AE_LINES_PKG.g_LineNumber := 0;
61636 
61637 
61638 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
61639 g_last_hdr_idx := l_array_event_id.LAST;
61640 --
61641 -- loop for the headers. Each iteration is for each header extract row
61642 -- fetched in header cursor
61643 --
61644 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
61645 
61646 --
61647 -- set event info as cache for other routines to refer event attributes
61648 --
61649 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
61650    (p_application_id           => p_application_id
61651    ,p_primary_ledger_id        => p_primary_ledger_id
61652    ,p_base_ledger_id           => p_base_ledger_id
61653    ,p_target_ledger_id         => p_target_ledger_id
61654    ,p_entity_id                => l_array_entity_id(hdr_idx)
61655    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
61656    ,p_entity_code              => l_array_entity_code(hdr_idx)
61657    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
61658    ,p_event_id                 => l_array_event_id(hdr_idx)
61659    ,p_event_class_code         => l_array_class_code(hdr_idx)
61660    ,p_event_type_code          => l_array_event_type(hdr_idx)
61661    ,p_event_number             => l_array_event_number(hdr_idx)
61662    ,p_event_date               => l_array_event_date(hdr_idx)
61663    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
61664    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
61665    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
61666    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
61667    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
61668    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
61669    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
61670    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
61671    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
61672    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
61673    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
61674    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
61675    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
61676    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
61677    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
61678 
61679 --
61680 -- set the status of entry to C_VALID (0)
61681 --
61682 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
61683 
61684 --
61685 -- initialize a row for ae header
61686 --
61687 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
61688 
61689 l_event_id := l_array_event_id(hdr_idx);
61690 
61691 --
61692 -- storing the hdr_idx for event. May be used by line cursor.
61693 --
61694 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
61695 
61696 --
61700 
61697 -- store sources from header extract. This can be improved to
61698 -- store only those sources from header extract that may be used in lines
61699 --
61701 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
61702 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
61703 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
61704 
61705 --
61706 -- initilaize the status of ae headers for diffrent balance types
61707 -- the status is initialised to C_NOT_CREATED (2)
61708 --
61709 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
61710 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
61711 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
61712 
61713 --
61714 -- call api to validate and store accounting attributes for header
61715 --
61716 
61717 ------------------------------------------------------------
61718 -- Accrual Reversal : to get date for Standard Source (NONE)
61719 ------------------------------------------------------------
61720 l_acc_rev_gl_date_source := NULL;
61721 
61722      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
61723       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
61724 
61725 
61726 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
61727 
61728 XLA_AE_HEADER_PKG.SetJeCategoryName;
61729 
61730 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
61731 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
61732 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
61733 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
61734 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
61735 
61736 
61737 -- No header level analytical criteria
61738 
61739 --
61740 --accounting attribute enhancement, bug 3612931
61741 --
61742 l_trx_reversal_source := SUBSTR(NULL, 1,30);
61743 
61744 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
61745    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
61746 
61747    xla_accounting_err_pkg.build_message
61748       (p_appli_s_name            => 'XLA'
61749       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
61750       ,p_token_1                 => 'ACCT_ATTR_NAME'
61751       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
61752       ,p_token_2                 => 'PRODUCT_NAME'
61753       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
61754       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
61755       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
61756       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
61757 
61758 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
61759    --
61760    -- following sets the accounting attributes needed to reverse
61761    -- accounting for a distributeion
61762    --
61763    xla_ae_lines_pkg.SetTrxReversalAttrs
61764       (p_event_id              => l_event_id
61765       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
61766       ,p_trx_reversal_source   => l_trx_reversal_source);
61767 
61768 END IF;
61769 
61770 
61771 ----------------------------------------------------------------
61772 -- 4262811 -  update the header statuses to invalid in need be
61773 ----------------------------------------------------------------
61774 --
61775 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
61776 
61777 
61778   -----------------------------------------------
61779   -- No accrual reversal for the event class/type
61780   -----------------------------------------------
61781 ----------------------------------------------------------------
61782 
61783 --
61784 -- this ends the header loop iteration for one bulk fetch
61785 --
61786 END LOOP;
61787 
61788 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
61789 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
61790 
61791 --
61792 -- insert dummy rows into lines gt table that were created due to
61793 -- transaction reversals
61794 --
61795 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
61796    l_result := XLA_AE_LINES_PKG.InsertLines;
61797 END IF;
61798 
61799 --
61800 -- reset the temp_line_num for each set of events fetched from header
61801 -- cursor rather than doing it for each new event in line cursor
61802 -- Bug 3939231
61803 --
61804 xla_ae_lines_pkg.g_temp_line_num := 0;
61805 
61806 
61807 
61808 --
61809 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
61810 --
61811 --
61812 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61813 
61814       trace
61815          (p_msg      => 'SQL - FETCH line_cur'
61816          ,p_level    => C_LEVEL_STATEMENT
61817          ,p_module   => l_log_module);
61818 
61819 END IF;
61820 --
61821 --
61822 LOOP
61823   --
61824   FETCH line_cur BULK COLLECT INTO
61825         l_array_entity_id
61826       , l_array_legal_entity_id
61827       , l_array_entity_code
61828       , l_array_transaction_num
61829       , l_array_event_id
61830       , l_array_class_code
61831       , l_array_event_type
61832       , l_array_event_number
61833       , l_array_event_date
61834       , l_array_transaction_date
61835       , l_array_reference_num_1
61839       , l_array_reference_char_1
61836       , l_array_reference_num_2
61837       , l_array_reference_num_3
61838       , l_array_reference_num_4
61840       , l_array_reference_char_2
61841       , l_array_reference_char_3
61842       , l_array_reference_char_4
61843       , l_array_reference_date_1
61844       , l_array_reference_date_2
61845       , l_array_reference_date_3
61846       , l_array_reference_date_4
61847       , l_array_event_created_by
61848       , l_array_budgetary_control_flag
61849       , l_array_extract_line_num 
61850       , l_array_source_2
61851       , l_array_source_3
61852       , l_array_source_4
61853       , l_array_source_5
61854       , l_array_source_6
61855       , l_array_source_7
61856       , l_array_source_22
61857       , l_array_source_23
61858       , l_array_source_25
61859       , l_array_source_27
61860       , l_array_source_28
61861       , l_array_source_29
61862       , l_array_source_30
61863       , l_array_source_31
61864       , l_array_source_33
61865       , l_array_source_34
61866       , l_array_source_34_meaning
61867       , l_array_source_35
61868       , l_array_source_44
61869       , l_array_source_45
61870       , l_array_source_46
61871       , l_array_source_47
61872       , l_array_source_48
61873       , l_array_source_49
61874       , l_array_source_50
61875       , l_array_source_51
61876       , l_array_source_52
61877       , l_array_source_53
61878       , l_array_source_54
61879       , l_array_source_55
61880       , l_array_source_56
61881       , l_array_source_57
61882       , l_array_source_70
61883       , l_array_source_70_meaning
61884       , l_array_source_71
61885       , l_array_source_72
61886       , l_array_source_73
61887       , l_array_source_74
61888       , l_array_source_75
61889       , l_array_source_76
61890       , l_array_source_77
61891       , l_array_source_78
61892       , l_array_source_79
61893       , l_array_source_80
61894       , l_array_source_81
61895       , l_array_source_82
61896       , l_array_source_83
61897       , l_array_source_84
61898       , l_array_source_85
61899       , l_array_source_86
61900       , l_array_source_87
61901       LIMIT l_rows;
61902 
61903   --
61904   IF (C_LEVEL_EVENT >= g_log_level) THEN
61905             trace
61906                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
61907                ,p_level    => C_LEVEL_EVENT
61908                ,p_module   => l_log_module);
61909   END IF;
61910   --
61911   EXIT WHEN l_array_entity_id.count = 0;
61912 
61913   XLA_AE_LINES_PKG.g_rec_lines := null;
61914 
61915 --
61916 -- Bug 4458708
61917 --
61918 XLA_AE_LINES_PKG.g_LineNumber := 0;
61919 --
61920 --
61921 
61922 FOR Idx IN 1..l_array_event_id.count LOOP
61923    --
61924    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
61925    --
61926    l_event_id := l_array_event_id(idx);  -- 5648433
61927 
61928    --
61929    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
61930    --
61931 
61932    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
61933              (g_array_event(l_event_id).array_value_num('header_index'))
61934          ,'N'
61935          ) <> 'Y'
61936    THEN
61937       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61938          trace
61939             (p_msg      => 'Trancaction revesal option is not Y '
61940             ,p_level    => C_LEVEL_STATEMENT
61941             ,p_module   => l_log_module);
61942       END IF;
61943 
61944 --
61945 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
61946 --
61947 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
61948 --
61949 -- set event info as cache for other routines to refer event attributes
61950 --
61951 
61952 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
61953    l_previous_event_id := l_event_id;
61954 
61955    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
61956       (p_application_id           => p_application_id
61957       ,p_primary_ledger_id        => p_primary_ledger_id
61958       ,p_base_ledger_id           => p_base_ledger_id
61959       ,p_target_ledger_id         => p_target_ledger_id
61960       ,p_entity_id                => l_array_entity_id(Idx)
61961       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
61962       ,p_entity_code              => l_array_entity_code(Idx)
61963       ,p_transaction_num          => l_array_transaction_num(Idx)
61964       ,p_event_id                 => l_array_event_id(Idx)
61965       ,p_event_class_code         => l_array_class_code(Idx)
61966       ,p_event_type_code          => l_array_event_type(Idx)
61967       ,p_event_number             => l_array_event_number(Idx)
61968       ,p_event_date               => l_array_event_date(Idx)
61969       ,p_transaction_date         => l_array_transaction_date(Idx)
61970       ,p_reference_num_1          => l_array_reference_num_1(Idx)
61971       ,p_reference_num_2          => l_array_reference_num_2(Idx)
61972       ,p_reference_num_3          => l_array_reference_num_3(Idx)
61973       ,p_reference_num_4          => l_array_reference_num_4(Idx)
61974       ,p_reference_char_1         => l_array_reference_char_1(Idx)
61975       ,p_reference_char_2         => l_array_reference_char_2(Idx)
61976       ,p_reference_char_3         => l_array_reference_char_3(Idx)
61977       ,p_reference_char_4         => l_array_reference_char_4(Idx)
61978       ,p_reference_date_1         => l_array_reference_date_1(Idx)
61979       ,p_reference_date_2         => l_array_reference_date_2(Idx)
61980       ,p_reference_date_3         => l_array_reference_date_3(Idx)
61984        --
61981       ,p_reference_date_4         => l_array_reference_date_4(Idx)
61982       ,p_event_created_by         => l_array_event_created_by(Idx)
61983       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
61985 END IF;
61986 
61987 
61988 
61989 --
61990 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
61991 
61992 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
61993 
61994 IF l_continue_with_lines THEN
61995    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
61996       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
61997 
61998       xla_accounting_err_pkg.build_message
61999          (p_appli_s_name            => 'XLA'
62000          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
62001          ,p_token_1                 => 'LINE_NUMBER'
62002          ,p_value_1                 => l_array_extract_line_num(Idx)
62003          ,p_token_2                 => 'PRODUCT_NAME'
62004          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
62005          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
62006          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
62007          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
62008 
62009    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
62010       --
62011       -- following sets the accounting attributes needed to reverse
62012       -- accounting for a distributeion
62013       --
62014 
62015       --
62016       -- 5217187
62017       --
62018       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
62019       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
62020                                        g_array_event(l_event_id).array_value_num('header_index'));
62021       --
62022       --
62023 
62024       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
62025       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
62026       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
62027       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
62028       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
62029       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
62030       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
62031       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
62032       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
62033       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
62034       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
62035       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
62036       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
62037       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
62038       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
62039       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
62040       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
62041       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
62042       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
62043       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
62044       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
62045       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
62046       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
62047       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
62048       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
62049       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
62050       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
62051       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
62052       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
62053       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
62054       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
62055       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
62056       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
62057       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
62058       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
62059       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
62060       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
62061       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
62062       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
62063       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
62064       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
62065       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
62066       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
62067       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_53(Idx);
62068       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
62069       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
62070       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
62071       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
62072       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
62073       l_rec_rev_acct_attrs.array_char_value(26)  := l_array_source_25(Idx);
62074       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
62075       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
62076       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
62077       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_54(Idx);
62078       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
62079       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_2(Idx);
62080       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
62081       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_46(Idx);
62082       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
62083       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_25(Idx);
62084       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
62085       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_46(Idx);
62086       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
62087       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_55(Idx);
62088       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'REVERSED_DISTRIBUTION_ID1';
62089       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_32');
62090       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID2';
62091       l_rec_rev_acct_attrs.array_num_value(35)  := l_array_source_35(Idx);
62092       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_TYPE';
62093       l_rec_rev_acct_attrs.array_char_value(36)  := l_array_source_34(Idx);
62094       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
62095       l_rec_rev_acct_attrs.array_num_value(37)  := l_array_source_56(Idx);
62096       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
62097       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_57(Idx);
62098 
62099 
62100       xla_ae_lines_pkg.SetAcctReversalAttrs
62101          (p_event_id             => l_event_id
62102          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
62106 
62103          ,p_calculate_acctd_flag => l_calculate_acctd_flag
62104          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
62105    END IF;
62107    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
62108        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
62109 
62110 --
62111 AcctLineType_25 (
62112  p_application_id  => p_application_id
62113  ,p_event_id     => l_event_id
62114  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62115  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62116  ,p_actual_flag => l_actual_flag
62117  ,p_balance_type_code => l_balance_type_code
62118  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62119  
62120  , p_source_2 => l_array_source_2(Idx)
62121  , p_source_3 => l_array_source_3(Idx)
62122  , p_source_4 => l_array_source_4(Idx)
62123  , p_source_5 => l_array_source_5(Idx)
62124  , p_source_6 => l_array_source_6(Idx)
62125  , p_source_22 => l_array_source_22(Idx)
62126  , p_source_23 => l_array_source_23(Idx)
62127  , p_source_25 => l_array_source_25(Idx)
62128  , p_source_27 => l_array_source_27(Idx)
62129  , p_source_28 => l_array_source_28(Idx)
62130  , p_source_29 => l_array_source_29(Idx)
62131  , p_source_30 => l_array_source_30(Idx)
62132  , p_source_31 => l_array_source_31(Idx)
62133  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62134  , p_source_33 => l_array_source_33(Idx)
62135  , p_source_34 => l_array_source_34(Idx)
62136  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62137  , p_source_35 => l_array_source_35(Idx)
62138  , p_source_44 => l_array_source_44(Idx)
62139  , p_source_45 => l_array_source_45(Idx)
62140  , p_source_46 => l_array_source_46(Idx)
62141  , p_source_47 => l_array_source_47(Idx)
62142  , p_source_48 => l_array_source_48(Idx)
62143  , p_source_49 => l_array_source_49(Idx)
62144  , p_source_50 => l_array_source_50(Idx)
62145  , p_source_51 => l_array_source_51(Idx)
62146  , p_source_52 => l_array_source_52(Idx)
62147  , p_source_53 => l_array_source_53(Idx)
62148  , p_source_54 => l_array_source_54(Idx)
62149  , p_source_55 => l_array_source_55(Idx)
62150  , p_source_56 => l_array_source_56(Idx)
62151  , p_source_57 => l_array_source_57(Idx)
62152  );
62153 If(l_balance_type_code = 'A') THEN
62154   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62155 END IF;
62156 
62157 --
62158 
62159 
62160 --
62161 AcctLineType_28 (
62162  p_application_id  => p_application_id
62163  ,p_event_id     => l_event_id
62164  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62165  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62166  ,p_actual_flag => l_actual_flag
62167  ,p_balance_type_code => l_balance_type_code
62168  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62169  
62170  , p_source_2 => l_array_source_2(Idx)
62171  , p_source_3 => l_array_source_3(Idx)
62172  , p_source_4 => l_array_source_4(Idx)
62173  , p_source_6 => l_array_source_6(Idx)
62174  , p_source_7 => l_array_source_7(Idx)
62175  , p_source_22 => l_array_source_22(Idx)
62176  , p_source_23 => l_array_source_23(Idx)
62177  , p_source_25 => l_array_source_25(Idx)
62178  , p_source_27 => l_array_source_27(Idx)
62179  , p_source_28 => l_array_source_28(Idx)
62180  , p_source_29 => l_array_source_29(Idx)
62181  , p_source_30 => l_array_source_30(Idx)
62182  , p_source_31 => l_array_source_31(Idx)
62183  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62184  , p_source_33 => l_array_source_33(Idx)
62185  , p_source_34 => l_array_source_34(Idx)
62186  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62187  , p_source_35 => l_array_source_35(Idx)
62188  , p_source_44 => l_array_source_44(Idx)
62189  , p_source_45 => l_array_source_45(Idx)
62190  , p_source_46 => l_array_source_46(Idx)
62191  , p_source_47 => l_array_source_47(Idx)
62192  , p_source_48 => l_array_source_48(Idx)
62193  , p_source_49 => l_array_source_49(Idx)
62194  , p_source_50 => l_array_source_50(Idx)
62195  , p_source_51 => l_array_source_51(Idx)
62196  , p_source_52 => l_array_source_52(Idx)
62197  , p_source_53 => l_array_source_53(Idx)
62198  , p_source_54 => l_array_source_54(Idx)
62199  , p_source_55 => l_array_source_55(Idx)
62200  , p_source_56 => l_array_source_56(Idx)
62201  , p_source_57 => l_array_source_57(Idx)
62202  );
62203 If(l_balance_type_code = 'A') THEN
62204   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62205 END IF;
62206 
62207 --
62208 
62209 
62210 --
62211 AcctLineType_90 (
62212  p_application_id  => p_application_id
62213  ,p_event_id     => l_event_id
62214  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62215  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62216  ,p_actual_flag => l_actual_flag
62217  ,p_balance_type_code => l_balance_type_code
62218  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62219  
62220  , p_source_2 => l_array_source_2(Idx)
62221  , p_source_3 => l_array_source_3(Idx)
62222  , p_source_6 => l_array_source_6(Idx)
62223  , p_source_22 => l_array_source_22(Idx)
62224  , p_source_23 => l_array_source_23(Idx)
62225  , p_source_25 => l_array_source_25(Idx)
62226  , p_source_27 => l_array_source_27(Idx)
62227  , p_source_28 => l_array_source_28(Idx)
62228  , p_source_29 => l_array_source_29(Idx)
62229  , p_source_30 => l_array_source_30(Idx)
62230  , p_source_31 => l_array_source_31(Idx)
62231  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62232  , p_source_33 => l_array_source_33(Idx)
62233  , p_source_34 => l_array_source_34(Idx)
62234  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62235  , p_source_35 => l_array_source_35(Idx)
62236  , p_source_44 => l_array_source_44(Idx)
62237  , p_source_45 => l_array_source_45(Idx)
62238  , p_source_46 => l_array_source_46(Idx)
62239  , p_source_47 => l_array_source_47(Idx)
62240  , p_source_48 => l_array_source_48(Idx)
62241  , p_source_49 => l_array_source_49(Idx)
62245  , p_source_53 => l_array_source_53(Idx)
62242  , p_source_50 => l_array_source_50(Idx)
62243  , p_source_51 => l_array_source_51(Idx)
62244  , p_source_52 => l_array_source_52(Idx)
62246  , p_source_54 => l_array_source_54(Idx)
62247  , p_source_55 => l_array_source_55(Idx)
62248  , p_source_56 => l_array_source_56(Idx)
62249  , p_source_57 => l_array_source_57(Idx)
62250  );
62251 If(l_balance_type_code = 'A') THEN
62252   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62253 END IF;
62254 
62255 --
62256 
62257 
62258 --
62259 AcctLineType_94 (
62260  p_application_id  => p_application_id
62261  ,p_event_id     => l_event_id
62262  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62263  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62264  ,p_actual_flag => l_actual_flag
62265  ,p_balance_type_code => l_balance_type_code
62266  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62267  
62268  , p_source_2 => l_array_source_2(Idx)
62269  , p_source_3 => l_array_source_3(Idx)
62270  , p_source_6 => l_array_source_6(Idx)
62271  , p_source_22 => l_array_source_22(Idx)
62272  , p_source_23 => l_array_source_23(Idx)
62273  , p_source_25 => l_array_source_25(Idx)
62274  , p_source_27 => l_array_source_27(Idx)
62275  , p_source_28 => l_array_source_28(Idx)
62276  , p_source_29 => l_array_source_29(Idx)
62277  , p_source_30 => l_array_source_30(Idx)
62278  , p_source_31 => l_array_source_31(Idx)
62279  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62280  , p_source_33 => l_array_source_33(Idx)
62281  , p_source_34 => l_array_source_34(Idx)
62282  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62283  , p_source_35 => l_array_source_35(Idx)
62284  , p_source_44 => l_array_source_44(Idx)
62285  , p_source_45 => l_array_source_45(Idx)
62286  , p_source_46 => l_array_source_46(Idx)
62287  , p_source_47 => l_array_source_47(Idx)
62288  , p_source_48 => l_array_source_48(Idx)
62289  , p_source_49 => l_array_source_49(Idx)
62290  , p_source_50 => l_array_source_50(Idx)
62291  , p_source_51 => l_array_source_51(Idx)
62292  , p_source_52 => l_array_source_52(Idx)
62293  , p_source_53 => l_array_source_53(Idx)
62294  , p_source_54 => l_array_source_54(Idx)
62295  , p_source_55 => l_array_source_55(Idx)
62296  , p_source_56 => l_array_source_56(Idx)
62297  , p_source_57 => l_array_source_57(Idx)
62298  , p_source_70 => l_array_source_70(Idx)
62299  , p_source_70_meaning => l_array_source_70_meaning(Idx)
62300  , p_source_71 => l_array_source_71(Idx)
62301  );
62302 If(l_balance_type_code = 'A') THEN
62303   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62304 END IF;
62305 
62306 --
62307 
62308 
62309 --
62310 AcctLineType_97 (
62311  p_application_id  => p_application_id
62312  ,p_event_id     => l_event_id
62313  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62314  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62315  ,p_actual_flag => l_actual_flag
62316  ,p_balance_type_code => l_balance_type_code
62317  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62318  
62319  , p_source_2 => l_array_source_2(Idx)
62320  , p_source_3 => l_array_source_3(Idx)
62321  , p_source_6 => l_array_source_6(Idx)
62322  , p_source_22 => l_array_source_22(Idx)
62323  , p_source_23 => l_array_source_23(Idx)
62324  , p_source_25 => l_array_source_25(Idx)
62325  , p_source_27 => l_array_source_27(Idx)
62326  , p_source_28 => l_array_source_28(Idx)
62327  , p_source_29 => l_array_source_29(Idx)
62328  , p_source_30 => l_array_source_30(Idx)
62329  , p_source_31 => l_array_source_31(Idx)
62330  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62331  , p_source_33 => l_array_source_33(Idx)
62332  , p_source_34 => l_array_source_34(Idx)
62333  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62334  , p_source_35 => l_array_source_35(Idx)
62335  , p_source_44 => l_array_source_44(Idx)
62336  , p_source_45 => l_array_source_45(Idx)
62337  , p_source_46 => l_array_source_46(Idx)
62338  , p_source_47 => l_array_source_47(Idx)
62339  , p_source_48 => l_array_source_48(Idx)
62340  , p_source_49 => l_array_source_49(Idx)
62341  , p_source_50 => l_array_source_50(Idx)
62342  , p_source_51 => l_array_source_51(Idx)
62343  , p_source_52 => l_array_source_52(Idx)
62344  , p_source_53 => l_array_source_53(Idx)
62345  , p_source_54 => l_array_source_54(Idx)
62346  , p_source_55 => l_array_source_55(Idx)
62347  , p_source_56 => l_array_source_56(Idx)
62348  , p_source_57 => l_array_source_57(Idx)
62349  , p_source_70 => l_array_source_70(Idx)
62350  , p_source_70_meaning => l_array_source_70_meaning(Idx)
62351  , p_source_72 => l_array_source_72(Idx)
62352  , p_source_73 => l_array_source_73(Idx)
62353  );
62354 If(l_balance_type_code = 'A') THEN
62355   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62356 END IF;
62357 
62358 --
62359 
62360 
62361 --
62362 AcctLineType_100 (
62363  p_application_id  => p_application_id
62364  ,p_event_id     => l_event_id
62365  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62366  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62367  ,p_actual_flag => l_actual_flag
62368  ,p_balance_type_code => l_balance_type_code
62369  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62370  
62371  , p_source_2 => l_array_source_2(Idx)
62372  , p_source_3 => l_array_source_3(Idx)
62373  , p_source_6 => l_array_source_6(Idx)
62374  , p_source_22 => l_array_source_22(Idx)
62375  , p_source_23 => l_array_source_23(Idx)
62376  , p_source_25 => l_array_source_25(Idx)
62377  , p_source_27 => l_array_source_27(Idx)
62378  , p_source_28 => l_array_source_28(Idx)
62379  , p_source_29 => l_array_source_29(Idx)
62380  , p_source_30 => l_array_source_30(Idx)
62381  , p_source_31 => l_array_source_31(Idx)
62382  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62383  , p_source_33 => l_array_source_33(Idx)
62387  , p_source_44 => l_array_source_44(Idx)
62384  , p_source_34 => l_array_source_34(Idx)
62385  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62386  , p_source_35 => l_array_source_35(Idx)
62388  , p_source_45 => l_array_source_45(Idx)
62389  , p_source_46 => l_array_source_46(Idx)
62390  , p_source_53 => l_array_source_53(Idx)
62391  , p_source_54 => l_array_source_54(Idx)
62392  , p_source_55 => l_array_source_55(Idx)
62393  , p_source_56 => l_array_source_56(Idx)
62394  , p_source_57 => l_array_source_57(Idx)
62395  , p_source_70 => l_array_source_70(Idx)
62396  , p_source_70_meaning => l_array_source_70_meaning(Idx)
62397  , p_source_71 => l_array_source_71(Idx)
62398  , p_source_74 => l_array_source_74(Idx)
62399  , p_source_75 => l_array_source_75(Idx)
62400  , p_source_76 => l_array_source_76(Idx)
62401  , p_source_77 => l_array_source_77(Idx)
62402  , p_source_78 => l_array_source_78(Idx)
62403  , p_source_79 => l_array_source_79(Idx)
62404  );
62405 If(l_balance_type_code = 'A') THEN
62406   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62407 END IF;
62408 
62409 --
62410 
62411 
62412 --
62413 AcctLineType_103 (
62414  p_application_id  => p_application_id
62415  ,p_event_id     => l_event_id
62416  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62417  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62418  ,p_actual_flag => l_actual_flag
62419  ,p_balance_type_code => l_balance_type_code
62420  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62421  
62422  , p_source_2 => l_array_source_2(Idx)
62423  , p_source_3 => l_array_source_3(Idx)
62424  , p_source_6 => l_array_source_6(Idx)
62425  , p_source_22 => l_array_source_22(Idx)
62426  , p_source_23 => l_array_source_23(Idx)
62427  , p_source_25 => l_array_source_25(Idx)
62428  , p_source_27 => l_array_source_27(Idx)
62429  , p_source_28 => l_array_source_28(Idx)
62430  , p_source_29 => l_array_source_29(Idx)
62431  , p_source_30 => l_array_source_30(Idx)
62432  , p_source_31 => l_array_source_31(Idx)
62433  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62434  , p_source_33 => l_array_source_33(Idx)
62435  , p_source_34 => l_array_source_34(Idx)
62436  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62437  , p_source_35 => l_array_source_35(Idx)
62438  , p_source_44 => l_array_source_44(Idx)
62439  , p_source_45 => l_array_source_45(Idx)
62440  , p_source_46 => l_array_source_46(Idx)
62441  , p_source_53 => l_array_source_53(Idx)
62442  , p_source_54 => l_array_source_54(Idx)
62443  , p_source_55 => l_array_source_55(Idx)
62444  , p_source_56 => l_array_source_56(Idx)
62445  , p_source_57 => l_array_source_57(Idx)
62446  , p_source_70 => l_array_source_70(Idx)
62447  , p_source_70_meaning => l_array_source_70_meaning(Idx)
62448  , p_source_72 => l_array_source_72(Idx)
62449  , p_source_73 => l_array_source_73(Idx)
62450  , p_source_80 => l_array_source_80(Idx)
62451  , p_source_81 => l_array_source_81(Idx)
62452  , p_source_82 => l_array_source_82(Idx)
62453  , p_source_83 => l_array_source_83(Idx)
62454  , p_source_84 => l_array_source_84(Idx)
62455  , p_source_85 => l_array_source_85(Idx)
62456  );
62457 If(l_balance_type_code = 'A') THEN
62458   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62459 END IF;
62460 
62461 --
62462 
62463 
62464 --
62465 AcctLineType_105 (
62466  p_application_id  => p_application_id
62467  ,p_event_id     => l_event_id
62468  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62469  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62470  ,p_actual_flag => l_actual_flag
62471  ,p_balance_type_code => l_balance_type_code
62472  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62473  
62474  , p_source_2 => l_array_source_2(Idx)
62475  , p_source_3 => l_array_source_3(Idx)
62476  , p_source_6 => l_array_source_6(Idx)
62477  , p_source_22 => l_array_source_22(Idx)
62478  , p_source_23 => l_array_source_23(Idx)
62479  , p_source_25 => l_array_source_25(Idx)
62480  , p_source_27 => l_array_source_27(Idx)
62481  , p_source_28 => l_array_source_28(Idx)
62482  , p_source_29 => l_array_source_29(Idx)
62483  , p_source_30 => l_array_source_30(Idx)
62484  , p_source_31 => l_array_source_31(Idx)
62485  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62486  , p_source_33 => l_array_source_33(Idx)
62487  , p_source_34 => l_array_source_34(Idx)
62488  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62489  , p_source_35 => l_array_source_35(Idx)
62490  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
62491  , p_source_44 => l_array_source_44(Idx)
62492  , p_source_45 => l_array_source_45(Idx)
62493  , p_source_46 => l_array_source_46(Idx)
62494  , p_source_47 => l_array_source_47(Idx)
62495  , p_source_48 => l_array_source_48(Idx)
62496  , p_source_49 => l_array_source_49(Idx)
62497  , p_source_50 => l_array_source_50(Idx)
62498  , p_source_51 => l_array_source_51(Idx)
62499  , p_source_52 => l_array_source_52(Idx)
62500  , p_source_53 => l_array_source_53(Idx)
62501  , p_source_54 => l_array_source_54(Idx)
62502  , p_source_55 => l_array_source_55(Idx)
62503  , p_source_56 => l_array_source_56(Idx)
62504  , p_source_57 => l_array_source_57(Idx)
62505  , p_source_86 => l_array_source_86(Idx)
62506  , p_source_87 => l_array_source_87(Idx)
62507  );
62508 If(l_balance_type_code = 'A') THEN
62509   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62510 END IF;
62511 
62512 --
62513 
62514 
62515 --
62516 AcctLineType_109 (
62517  p_application_id  => p_application_id
62518  ,p_event_id     => l_event_id
62519  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62520  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62521  ,p_actual_flag => l_actual_flag
62522  ,p_balance_type_code => l_balance_type_code
62523  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62524  
62525  , p_source_2 => l_array_source_2(Idx)
62529  , p_source_23 => l_array_source_23(Idx)
62526  , p_source_3 => l_array_source_3(Idx)
62527  , p_source_6 => l_array_source_6(Idx)
62528  , p_source_22 => l_array_source_22(Idx)
62530  , p_source_25 => l_array_source_25(Idx)
62531  , p_source_27 => l_array_source_27(Idx)
62532  , p_source_28 => l_array_source_28(Idx)
62533  , p_source_29 => l_array_source_29(Idx)
62534  , p_source_30 => l_array_source_30(Idx)
62535  , p_source_31 => l_array_source_31(Idx)
62536  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62537  , p_source_33 => l_array_source_33(Idx)
62538  , p_source_34 => l_array_source_34(Idx)
62539  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62540  , p_source_35 => l_array_source_35(Idx)
62541  , p_source_44 => l_array_source_44(Idx)
62542  , p_source_45 => l_array_source_45(Idx)
62543  , p_source_46 => l_array_source_46(Idx)
62544  , p_source_53 => l_array_source_53(Idx)
62545  , p_source_54 => l_array_source_54(Idx)
62546  , p_source_55 => l_array_source_55(Idx)
62547  , p_source_56 => l_array_source_56(Idx)
62548  , p_source_57 => l_array_source_57(Idx)
62549  , p_source_70 => l_array_source_70(Idx)
62550  , p_source_70_meaning => l_array_source_70_meaning(Idx)
62551  , p_source_72 => l_array_source_72(Idx)
62552  , p_source_73 => l_array_source_73(Idx)
62553  , p_source_80 => l_array_source_80(Idx)
62554  , p_source_81 => l_array_source_81(Idx)
62555  , p_source_82 => l_array_source_82(Idx)
62556  , p_source_83 => l_array_source_83(Idx)
62557  , p_source_84 => l_array_source_84(Idx)
62558  , p_source_85 => l_array_source_85(Idx)
62559  );
62560 If(l_balance_type_code = 'A') THEN
62561   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62562 END IF;
62563 
62564 --
62565 
62566       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
62567       -- or secondary ledger that has different currency with primary
62568       -- or alc that is calculated by sla
62569       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
62570             (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'))
62571 
62572 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
62573 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
62574           AND (l_actual_flag = 'A')) THEN
62575         XLA_AE_LINES_PKG.CreateGainOrLossLines(
62576           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
62577          ,p_application_id   => p_application_id
62578          ,p_amb_context_code => 'DEFAULT'
62579          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
62580          ,p_event_class_code => C_EVENT_CLASS_CODE
62581          ,p_event_type_code  => C_EVENT_TYPE_CODE
62582          
62583          ,p_gain_ccid        => -1
62584          ,p_loss_ccid        => -1
62585 
62586          ,p_actual_flag      => l_actual_flag
62587          ,p_enc_flag         => null
62588          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
62589          ,p_enc_g_l_ref      => null
62590          );
62591       END IF;
62592    END IF;
62593 END IF;
62594 
62595    ELSE
62596       --
62597       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
62598       --
62599       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62600          trace
62601             (p_msg      => 'Trancaction revesal option is Y'
62602             ,p_level    => C_LEVEL_STATEMENT
62603             ,p_module   => l_log_module);
62604       END IF;
62605    END IF;
62606 
62607 END LOOP;
62608 l_result := XLA_AE_LINES_PKG.InsertLines ;
62609 end loop;
62610 close line_cur;
62611 
62612 
62613 --
62614 -- insert headers into xla_ae_headers_gt table
62615 --
62616 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
62617 
62618 -- insert into errors table here.
62619 
62620 END LOOP;
62621 
62622 --
62623 -- 4865292
62624 --
62625 -- Compare g_hdr_extract_count with event count in
62626 -- CreateHeadersAndLines.
62627 --
62628 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
62629 
62630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62631    trace (p_msg     => '# rows extracted from header extract objects '
62632                     || ' (running total): '
62633                     || g_hdr_extract_count
62634          ,p_level   => C_LEVEL_STATEMENT
62635          ,p_module  => l_log_module);
62636 END IF;
62637 
62638 CLOSE header_cur;
62639 --
62640 
62641 --
62642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62643    trace
62644       (p_msg      => 'END of EventClass_114'
62645       ,p_level    => C_LEVEL_PROCEDURE
62646       ,p_module   => l_log_module);
62647 END IF;
62648 --
62649 RETURN l_result;
62650 EXCEPTION
62651 WHEN xla_exceptions_pkg.application_exception THEN
62652    
62653 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
62654 
62655    
62656 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
62657 
62658    RAISE;
62659 WHEN OTHERS THEN
62660    xla_exceptions_pkg.raise_message
62661       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_114');
62662 END EventClass_114;
62663 --
62664 
62665 ---------------------------------------
62666 --
62667 -- PRIVATE PROCEDURE
62668 --         insert_sources_115
62669 --
62670 ----------------------------------------
62671 --
62672 PROCEDURE insert_sources_115(
62673                                 p_target_ledger_id       IN NUMBER
62674                               , p_language               IN VARCHAR2
62675                               , p_sla_ledger_id          IN NUMBER
62679 IS
62676                               , p_pad_start_date         IN DATE
62677                               , p_pad_end_date           IN DATE
62678                          )
62680 
62681 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ADJ_ALL';
62682 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVENTORY_COST_ADJ';
62683 p_apps_owner                   VARCHAR2(30);
62684 l_log_module                   VARCHAR2(240);
62685 BEGIN
62686 IF g_log_enabled THEN
62687       l_log_module := C_DEFAULT_MODULE||'.insert_sources_115';
62688 END IF;
62689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62690 
62691       trace
62692          (p_msg      => 'BEGIN of insert_sources_115'
62693          ,p_level    => C_LEVEL_PROCEDURE
62694          ,p_module   => l_log_module);
62695 
62696 END IF;
62697 
62698 -- select APPS owner
62699 SELECT oracle_username
62700   INTO p_apps_owner
62701   FROM fnd_oracle_userid
62702  WHERE read_only_flag = 'U'
62703 ;
62704 
62705 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62706       trace
62707          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
62708                         ' - p_language = '||p_language||
62709                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
62710                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
62711                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
62712                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
62713          ,p_level    => C_LEVEL_STATEMENT
62714          ,p_module   => l_log_module);
62715 END IF;
62716 
62717 
62718 --
62719 INSERT INTO xla_diag_sources --hdr2
62720 (
62721         event_id
62722       , ledger_id
62723       , sla_ledger_id
62724       , description_language
62725       , object_name
62726       , object_type_code
62727       , line_number
62728       , source_application_id
62729       , source_type_code
62730       , source_code
62731       , source_value
62732       , source_meaning
62733       , created_by
62734       , creation_date
62735       , last_update_date
62736       , last_updated_by
62737       , last_update_login
62738       , program_update_date
62739       , program_application_id
62740       , program_id
62741       , request_id
62742 )
62743 SELECT
62744         event_id
62745       , p_target_ledger_id
62746       , p_sla_ledger_id
62747       , p_language
62748       , object_name
62749       , object_type_code
62750       , line_number
62751       , source_application_id
62752       , source_type_code
62753       , source_code
62754       , SUBSTR(source_value ,1,1996)
62755       , SUBSTR(source_meaning ,1,200)
62756       , xla_environment_pkg.g_Usr_Id
62757       , TRUNC(SYSDATE)
62758       , TRUNC(SYSDATE)
62759       , xla_environment_pkg.g_Usr_Id
62760       , xla_environment_pkg.g_Login_Id
62761       , TRUNC(SYSDATE)
62762       , xla_environment_pkg.g_Prog_Appl_Id
62763       , xla_environment_pkg.g_Prog_Id
62764       , xla_environment_pkg.g_Req_Id
62765   FROM (
62766        SELECT xet.event_id                  event_id
62767             , 0                          line_number
62768             , CASE r
62769                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
62770                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
62771                 
62772                ELSE null
62773               END                           object_name
62774             , CASE r
62775                 WHEN 1 THEN 'HEADER' 
62776                 WHEN 2 THEN 'HEADER' 
62777                 
62778                 ELSE null
62779               END                           object_type_code
62780             , CASE r
62781                 WHEN 1 THEN '275' 
62782                 WHEN 2 THEN '275' 
62783                 
62784                 ELSE null
62785               END                           source_application_id
62786             , 'S'             source_type_code
62787             , CASE r
62788                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
62789                 WHEN 2 THEN 'GL_DATE' 
62790                 
62791                 ELSE null
62792               END                           source_code
62793             , CASE r
62794                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
62795                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
62796                 
62797                 ELSE null
62798               END                           source_value
62799             , null              source_meaning
62800          FROM xla_events_gt     xet  
62801       , PA_XLA_EXP_HEADER_V  h2
62802              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
62803          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
62804            AND xet.event_class_code = C_EVENT_CLASS_CODE
62805               AND h2.event_id = xet.event_id
62806 
62807 )
62808 ;
62809 --
62810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62811 
62812       trace
62813          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
62814          ,p_level    => C_LEVEL_STATEMENT
62815          ,p_module   => l_log_module);
62816 
62817 END IF;
62818 --
62819 
62820 
62821 
62822 --
62823 INSERT INTO xla_diag_sources  --line2
62824 (
62825         event_id
62826       , ledger_id
62827       , sla_ledger_id
62828       , description_language
62829       , object_name
62830       , object_type_code
62831       , line_number
62832       , source_application_id
62833       , source_type_code
62834       , source_code
62835       , source_value
62836       , source_meaning
62837       , created_by
62841       , last_update_login
62838       , creation_date
62839       , last_update_date
62840       , last_updated_by
62842       , program_update_date
62843       , program_application_id
62844       , program_id
62845       , request_id
62846 )
62847 SELECT  event_id
62848       , p_target_ledger_id
62849       , p_sla_ledger_id
62850       , p_language
62851       , object_name
62852       , object_type_code
62853       , line_number
62854       , source_application_id
62855       , source_type_code
62856       , source_code
62857       , SUBSTR(source_value,1,1996)
62858       , SUBSTR(source_meaning ,1,200)
62859       , xla_environment_pkg.g_Usr_Id
62860       , TRUNC(SYSDATE)
62861       , TRUNC(SYSDATE)
62862       , xla_environment_pkg.g_Usr_Id
62863       , xla_environment_pkg.g_Login_Id
62864       , TRUNC(SYSDATE)
62865       , xla_environment_pkg.g_Prog_Appl_Id
62866       , xla_environment_pkg.g_Prog_Id
62867       , xla_environment_pkg.g_Req_Id
62868   FROM (
62869        SELECT xet.event_id                  event_id
62870             , l1.line_number                 line_number
62871             , CASE r
62872                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
62873                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
62874                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
62875                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
62876                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
62877                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
62878                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
62879                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
62880                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
62881                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
62882                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
62883                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
62884                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
62885                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
62886                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
62887                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
62888                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
62889                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
62890                 
62891                ELSE null
62892               END                           object_name
62893             , CASE r
62894                 WHEN 1 THEN 'LINE' 
62895                 WHEN 2 THEN 'LINE' 
62896                 WHEN 3 THEN 'LINE' 
62897                 WHEN 4 THEN 'LINE' 
62898                 WHEN 5 THEN 'LINE' 
62899                 WHEN 6 THEN 'LINE' 
62900                 WHEN 7 THEN 'LINE' 
62901                 WHEN 8 THEN 'LINE' 
62902                 WHEN 9 THEN 'LINE' 
62903                 WHEN 10 THEN 'LINE' 
62904                 WHEN 11 THEN 'LINE' 
62905                 WHEN 12 THEN 'LINE' 
62906                 WHEN 13 THEN 'LINE' 
62907                 WHEN 14 THEN 'LINE' 
62908                 WHEN 15 THEN 'LINE' 
62909                 WHEN 16 THEN 'LINE' 
62910                 WHEN 17 THEN 'LINE' 
62911                 WHEN 18 THEN 'LINE' 
62912                 
62913                 ELSE null
62914               END                           object_type_code
62915             , CASE r
62916                 WHEN 1 THEN '275' 
62917                 WHEN 2 THEN '275' 
62918                 WHEN 3 THEN '275' 
62919                 WHEN 4 THEN '275' 
62920                 WHEN 5 THEN '275' 
62921                 WHEN 6 THEN '275' 
62922                 WHEN 7 THEN '275' 
62923                 WHEN 8 THEN '275' 
62924                 WHEN 9 THEN '275' 
62925                 WHEN 10 THEN '275' 
62926                 WHEN 11 THEN '275' 
62927                 WHEN 12 THEN '275' 
62928                 WHEN 13 THEN '275' 
62929                 WHEN 14 THEN '275' 
62930                 WHEN 15 THEN '275' 
62931                 WHEN 16 THEN '275' 
62932                 WHEN 17 THEN '275' 
62933                 WHEN 18 THEN '275' 
62934                 
62935                 ELSE null
62936               END                           source_application_id
62937             , 'S'             source_type_code
62938             , CASE r
62939                 WHEN 1 THEN 'COST_CCID' 
62940                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
62941                 WHEN 3 THEN 'ADJ_COST_CCID' 
62942                 WHEN 4 THEN 'COST_CLEARING_CCID' 
62943                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
62944                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
62945                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
62946                 WHEN 8 THEN 'ENTERED_RAW_COST' 
62947                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
62948                 WHEN 10 THEN 'ACCT_RAW_COST' 
62949                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
62950                 WHEN 12 THEN 'EXCHANGE_RATE' 
62951                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
62952                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
62953                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
62954                 WHEN 16 THEN 'LINE_NUMBER' 
62955                 WHEN 17 THEN 'LINE_TYPE' 
62956                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
62957                 
62958                 ELSE null
62959               END                           source_code
62960             , CASE r
62961                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
62962                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
62963                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
62964                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
62965                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
62966                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
62967                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
62968                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
62969                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
62973                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
62970                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
62971                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
62972                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
62974                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
62975                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
62976                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
62977                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
62978                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
62979                 
62980                 ELSE null
62981               END                           source_value
62982             , CASE r
62983                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
62984                           103371
62985                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
62986                          ,'ALLOW_OVERRIDE_CCID_FLAG'
62987                          ,'S'
62988                          ,275)
62989                 WHEN 17 THEN fvl34.meaning
62990                 
62991                 ELSE null
62992               END               source_meaning
62993          FROM  xla_events_gt     xet  
62994         , PA_XLA_CDL_LINES_V  l1
62995   , fnd_lookup_values    fvl34
62996             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
62997         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
62998           AND xet.event_class_code = C_EVENT_CLASS_CODE
62999             AND l1.event_id          = xet.event_id
63000    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
63001   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
63002   AND fvl34.view_application_id(+) = 275
63003   AND fvl34.language(+)            = USERENV('LANG')
63004   
63005 )
63006 ;
63007 --
63008 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63009 
63010       trace
63011          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
63012          ,p_level    => C_LEVEL_STATEMENT
63013          ,p_module   => l_log_module);
63014 
63015 END IF;
63016 
63017 
63018 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63019       trace
63020          (p_msg      => 'END of insert_sources_115'
63021          ,p_level    => C_LEVEL_PROCEDURE
63022          ,p_module   => l_log_module);
63023 END IF;
63024 EXCEPTION
63025   WHEN xla_exceptions_pkg.application_exception THEN
63026       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
63027             trace
63028                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
63029                ,p_level    => C_LEVEL_EXCEPTION
63030                ,p_module   => l_log_module);
63031       END IF;
63032       RAISE;
63033   WHEN OTHERS THEN
63034       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
63035             trace
63036                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
63037                ,p_level    => C_LEVEL_EXCEPTION
63038                ,p_module   => l_log_module);
63039        END IF;
63040        xla_exceptions_pkg.raise_message
63041            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_115');
63042 END insert_sources_115;
63043 --
63044 
63045 ---------------------------------------
63046 --
63047 -- PRIVATE FUNCTION
63048 --         EventClass_115
63049 --
63050 ----------------------------------------
63051 --
63052 FUNCTION EventClass_115
63053        (p_application_id         IN NUMBER
63054        ,p_base_ledger_id         IN NUMBER
63055        ,p_target_ledger_id       IN NUMBER
63056        ,p_language               IN VARCHAR2
63057        ,p_currency_code          IN VARCHAR2
63058        ,p_sla_ledger_id          IN NUMBER
63059        ,p_pad_start_date         IN DATE
63060        ,p_pad_end_date           IN DATE
63061        ,p_primary_ledger_id      IN NUMBER)
63062 RETURN BOOLEAN IS
63063 --
63064 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ADJ_ALL';
63065 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVENTORY_COST_ADJ';
63066 
63067 l_calculate_acctd_flag   VARCHAR2(1) :='N';
63068 l_calculate_g_l_flag     VARCHAR2(1) :='N';
63069 --
63070 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63071 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63072 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63073 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63074 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63075 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63076 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63077 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63078 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63079 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63080 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63081 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63085 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63082 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63083 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63084 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63086 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63087 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63088 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63089 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63090 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63091 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63092 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
63093 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63094 
63095 l_event_id                             NUMBER;
63096 l_previous_event_id                    NUMBER;
63097 l_first_event_id                       NUMBER;
63098 l_last_event_id                        NUMBER;
63099 
63100 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
63101 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
63102 --
63103 --
63104 l_result                    BOOLEAN := TRUE;
63105 l_rows                      NUMBER  := 1000;
63106 l_event_type_name           VARCHAR2(80) := 'All';
63107 l_event_class_name          VARCHAR2(80) := 'Inventory Cost Adjustment';
63108 l_description               VARCHAR2(4000);
63109 l_transaction_reversal      NUMBER;
63110 l_ae_header_id              NUMBER;
63111 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
63112 l_log_module                VARCHAR2(240);
63113 --
63114 l_acct_reversal_source      VARCHAR2(30);
63115 l_trx_reversal_source       VARCHAR2(30);
63116 
63117 l_continue_with_lines       BOOLEAN := TRUE;
63118 --
63119 l_acc_rev_gl_date_source    DATE;                      -- 4262811
63120 --
63121 type t_array_event_id is table of number index by binary_integer;
63122 
63123 l_rec_array_event                    t_rec_array_event;
63124 l_null_rec_array_event               t_rec_array_event;
63125 l_array_ae_header_id                 xla_number_array_type;
63126 l_actual_flag                        VARCHAR2(1) := NULL;
63127 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
63128 l_balance_type_code                  VARCHAR2(1) :=NULL;
63129 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
63130 
63131 --
63132 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
63133 --
63134 
63135 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
63136 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
63137 
63138 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
63139 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
63140 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
63141 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
63142 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
63143 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
63144 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
63145 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
63146 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
63147 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
63148 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
63149 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
63150 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
63151 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
63152 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
63153 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
63154 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
63155 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
63159 
63156 
63157 l_array_source_32              t_array_source_32;
63158 l_array_source_88              t_array_source_88;
63160 l_array_source_3      t_array_source_3;
63161 l_array_source_4      t_array_source_4;
63162 l_array_source_5      t_array_source_5;
63163 l_array_source_6      t_array_source_6;
63164 l_array_source_7      t_array_source_7;
63165 l_array_source_22      t_array_source_22;
63166 l_array_source_23      t_array_source_23;
63167 l_array_source_24      t_array_source_24;
63168 l_array_source_25      t_array_source_25;
63169 l_array_source_26      t_array_source_26;
63170 l_array_source_27      t_array_source_27;
63171 l_array_source_28      t_array_source_28;
63172 l_array_source_29      t_array_source_29;
63173 l_array_source_30      t_array_source_30;
63174 l_array_source_31      t_array_source_31;
63175 l_array_source_33      t_array_source_33;
63176 l_array_source_34      t_array_source_34;
63177 l_array_source_34_meaning      t_array_lookup_meaning;
63178 l_array_source_35      t_array_source_35;
63179 
63180 --
63181 CURSOR header_cur
63182 IS
63183 SELECT /*+ leading(xet) cardinality(xet,1) */
63184 -- Event Class Code: INVENTORY_COST_ADJ
63185     xet.entity_id
63186    ,xet.legal_entity_id
63187    ,xet.entity_code
63188    ,xet.transaction_number
63189    ,xet.event_id
63190    ,xet.event_class_code
63191    ,xet.event_type_code
63192    ,xet.event_number
63193    ,xet.event_date
63194    ,xet.transaction_date
63195    ,xet.reference_num_1
63196    ,xet.reference_num_2
63197    ,xet.reference_num_3
63198    ,xet.reference_num_4
63199    ,xet.reference_char_1
63200    ,xet.reference_char_2
63201    ,xet.reference_char_3
63202    ,xet.reference_char_4
63203    ,xet.reference_date_1
63204    ,xet.reference_date_2
63205    ,xet.reference_date_3
63206    ,xet.reference_date_4
63207    ,xet.event_created_by
63208    ,xet.budgetary_control_flag 
63209   , h2.EXPENDITURE_ITEM_ID    source_32
63210   , h2.GL_DATE    source_88
63211   FROM xla_events_gt     xet 
63212   , PA_XLA_EXP_HEADER_V  h2
63213  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
63214    and xet.event_class_code = C_EVENT_CLASS_CODE
63215    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
63216 
63217  ORDER BY event_id
63218 ;
63219 
63220 
63221 --
63222 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
63223 IS
63224 SELECT  /*+ leading(xet) cardinality(xet,1) */
63225 -- Event Class Code: INVENTORY_COST_ADJ
63226     xet.entity_id
63227    ,xet.legal_entity_id
63228    ,xet.entity_code
63229    ,xet.transaction_number
63230    ,xet.event_id
63231    ,xet.event_class_code
63232    ,xet.event_type_code
63233    ,xet.event_number
63234    ,xet.event_date
63235    ,xet.transaction_date
63236    ,xet.reference_num_1
63237    ,xet.reference_num_2
63238    ,xet.reference_num_3
63239    ,xet.reference_num_4
63240    ,xet.reference_char_1
63241    ,xet.reference_char_2
63242    ,xet.reference_char_3
63243    ,xet.reference_char_4
63244    ,xet.reference_date_1
63245    ,xet.reference_date_2
63246    ,xet.reference_date_3
63247    ,xet.reference_date_4
63248    ,xet.event_created_by
63249    ,xet.budgetary_control_flag
63250  , l1.LINE_NUMBER  
63251   , l1.COST_CCID    source_3
63252   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
63253   , l1.ADJ_COST_CCID    source_5
63254   , l1.COST_CLEARING_CCID    source_6
63255   , l1.ADJ_COST_CLEARING_CCID    source_7
63256   , l1.REVERSING_LINE_FLAG    source_22
63257   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
63258   , l1.ENTERED_RAW_COST    source_24
63259   , l1.ENTERED_CURRENCY_CODE    source_25
63260   , l1.ACCT_RAW_COST    source_26
63261   , l1.EXCHANGE_RATE_DATE    source_27
63262   , l1.EXCHANGE_RATE    source_28
63263   , l1.EXCHANGE_RATE_TYPE    source_29
63264   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
63265   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
63266   , l1.LINE_NUMBER    source_33
63267   , l1.LINE_TYPE    source_34
63268   , fvl34.meaning   source_34_meaning
63269   , l1.LINE_NUM_REVERSED    source_35
63270   FROM xla_events_gt     xet 
63271   , PA_XLA_CDL_LINES_V  l1
63272   , fnd_lookup_values    fvl34
63273  WHERE xet.event_id between x_first_event_id and x_last_event_id
63274    and xet.event_date between p_pad_start_date and p_pad_end_date
63275    and xet.event_class_code = C_EVENT_CLASS_CODE
63276    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
63277    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
63278   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
63279   AND fvl34.view_application_id(+) = 275
63280   AND fvl34.language(+)            = USERENV('LANG')
63281   ;
63282 
63283 --
63284 BEGIN
63285 IF g_log_enabled THEN
63286    l_log_module := C_DEFAULT_MODULE||'.EventClass_115';
63287 END IF;
63288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63289    trace
63290       (p_msg      => 'BEGIN of EventClass_115'
63291       ,p_level    => C_LEVEL_PROCEDURE
63292       ,p_module   => l_log_module);
63293 END IF;
63294 
63295 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63296    trace
63297       (p_msg      => 'p_application_id = '||p_application_id||
63298                      ' - p_base_ledger_id = '||p_base_ledger_id||
63299                      ' - p_target_ledger_id  = '||p_target_ledger_id||
63300                      ' - p_language = '||p_language||
63301                      ' - p_currency_code = '||p_currency_code||
63302                      ' - p_sla_ledger_id = '||p_sla_ledger_id
63303       ,p_level    => C_LEVEL_STATEMENT
63304       ,p_module   => l_log_module);
63305 END IF;
63306 --
63307 -- initialze arrays
63308 --
63309 g_array_event.DELETE;
63313 -- 4262811 Initialze MPA Line Number
63310 l_rec_array_event := l_null_rec_array_event;
63311 --
63312 --------------------------------------
63314 --------------------------------------
63315 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
63316 
63317 --
63318 
63319 --
63320 OPEN header_cur;
63321 --
63322 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63323    trace
63324    (p_msg      => 'SQL - FETCH header_cur'
63325    ,p_level    => C_LEVEL_STATEMENT
63326    ,p_module   => l_log_module);
63327 END IF;
63328 --
63329 LOOP
63330 FETCH header_cur BULK COLLECT INTO
63331         l_array_entity_id
63332       , l_array_legal_entity_id
63333       , l_array_entity_code
63334       , l_array_transaction_num
63335       , l_array_event_id
63336       , l_array_class_code
63337       , l_array_event_type
63338       , l_array_event_number
63339       , l_array_event_date
63340       , l_array_transaction_date
63341       , l_array_reference_num_1
63342       , l_array_reference_num_2
63343       , l_array_reference_num_3
63344       , l_array_reference_num_4
63345       , l_array_reference_char_1
63346       , l_array_reference_char_2
63347       , l_array_reference_char_3
63348       , l_array_reference_char_4
63349       , l_array_reference_date_1
63350       , l_array_reference_date_2
63351       , l_array_reference_date_3
63352       , l_array_reference_date_4
63353       , l_array_event_created_by
63354       , l_array_budgetary_control_flag 
63355       , l_array_source_32
63356       , l_array_source_88
63357       LIMIT l_rows;
63358 --
63359 IF (C_LEVEL_EVENT >= g_log_level) THEN
63360    trace
63361    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
63362    ,p_level    => C_LEVEL_EVENT
63363    ,p_module   => l_log_module);
63364 END IF;
63365 --
63366 EXIT WHEN l_array_entity_id.COUNT = 0;
63367 
63368 -- initialize arrays
63369 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
63370 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
63371 
63372 --
63373 -- Bug 4458708
63374 --
63375 XLA_AE_LINES_PKG.g_LineNumber := 0;
63376 
63377 
63378 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
63379 g_last_hdr_idx := l_array_event_id.LAST;
63380 --
63381 -- loop for the headers. Each iteration is for each header extract row
63382 -- fetched in header cursor
63383 --
63384 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
63385 
63386 --
63387 -- set event info as cache for other routines to refer event attributes
63388 --
63389 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
63390    (p_application_id           => p_application_id
63391    ,p_primary_ledger_id        => p_primary_ledger_id
63392    ,p_base_ledger_id           => p_base_ledger_id
63393    ,p_target_ledger_id         => p_target_ledger_id
63394    ,p_entity_id                => l_array_entity_id(hdr_idx)
63395    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
63396    ,p_entity_code              => l_array_entity_code(hdr_idx)
63397    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
63398    ,p_event_id                 => l_array_event_id(hdr_idx)
63399    ,p_event_class_code         => l_array_class_code(hdr_idx)
63400    ,p_event_type_code          => l_array_event_type(hdr_idx)
63401    ,p_event_number             => l_array_event_number(hdr_idx)
63402    ,p_event_date               => l_array_event_date(hdr_idx)
63403    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
63404    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
63405    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
63406    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
63407    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
63408    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
63409    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
63410    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
63411    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
63412    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
63413    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
63414    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
63415    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
63416    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
63417    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
63418 
63419 --
63420 -- set the status of entry to C_VALID (0)
63421 --
63422 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
63423 
63424 --
63425 -- initialize a row for ae header
63426 --
63427 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
63428 
63429 l_event_id := l_array_event_id(hdr_idx);
63430 
63431 --
63432 -- storing the hdr_idx for event. May be used by line cursor.
63433 --
63434 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
63435 
63436 --
63437 -- store sources from header extract. This can be improved to
63438 -- store only those sources from header extract that may be used in lines
63439 --
63440 
63441 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
63442 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
63443 
63444 --
63445 -- initilaize the status of ae headers for diffrent balance types
63446 -- the status is initialised to C_NOT_CREATED (2)
63447 --
63448 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63449 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63453 -- call api to validate and store accounting attributes for header
63450 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63451 
63452 --
63454 --
63455 
63456 ------------------------------------------------------------
63457 -- Accrual Reversal : to get date for Standard Source (NONE)
63458 ------------------------------------------------------------
63459 l_acc_rev_gl_date_source := NULL;
63460 
63461      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
63462       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
63463 
63464 
63465 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
63466 
63467 XLA_AE_HEADER_PKG.SetJeCategoryName;
63468 
63469 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
63470 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
63471 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
63472 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
63473 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
63474 
63475 
63476 -- No header level analytical criteria
63477 
63478 --
63479 --accounting attribute enhancement, bug 3612931
63480 --
63481 l_trx_reversal_source := SUBSTR(NULL, 1,30);
63482 
63483 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
63484    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
63485 
63486    xla_accounting_err_pkg.build_message
63487       (p_appli_s_name            => 'XLA'
63488       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
63489       ,p_token_1                 => 'ACCT_ATTR_NAME'
63490       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
63491       ,p_token_2                 => 'PRODUCT_NAME'
63492       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
63493       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
63494       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
63495       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
63496 
63497 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
63498    --
63499    -- following sets the accounting attributes needed to reverse
63500    -- accounting for a distributeion
63501    --
63502    xla_ae_lines_pkg.SetTrxReversalAttrs
63503       (p_event_id              => l_event_id
63504       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
63505       ,p_trx_reversal_source   => l_trx_reversal_source);
63506 
63507 END IF;
63508 
63509 
63510 ----------------------------------------------------------------
63511 -- 4262811 -  update the header statuses to invalid in need be
63512 ----------------------------------------------------------------
63513 --
63514 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
63515 
63516 
63517   -----------------------------------------------
63518   -- No accrual reversal for the event class/type
63519   -----------------------------------------------
63520 ----------------------------------------------------------------
63521 
63522 --
63523 -- this ends the header loop iteration for one bulk fetch
63524 --
63525 END LOOP;
63526 
63527 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
63528 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
63529 
63530 --
63531 -- insert dummy rows into lines gt table that were created due to
63532 -- transaction reversals
63533 --
63534 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
63535    l_result := XLA_AE_LINES_PKG.InsertLines;
63536 END IF;
63537 
63538 --
63539 -- reset the temp_line_num for each set of events fetched from header
63540 -- cursor rather than doing it for each new event in line cursor
63541 -- Bug 3939231
63542 --
63543 xla_ae_lines_pkg.g_temp_line_num := 0;
63544 
63545 
63546 
63547 --
63548 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
63549 --
63550 --
63551 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63552 
63553       trace
63554          (p_msg      => 'SQL - FETCH line_cur'
63555          ,p_level    => C_LEVEL_STATEMENT
63556          ,p_module   => l_log_module);
63557 
63558 END IF;
63559 --
63560 --
63561 LOOP
63562   --
63563   FETCH line_cur BULK COLLECT INTO
63564         l_array_entity_id
63565       , l_array_legal_entity_id
63566       , l_array_entity_code
63567       , l_array_transaction_num
63568       , l_array_event_id
63569       , l_array_class_code
63570       , l_array_event_type
63571       , l_array_event_number
63572       , l_array_event_date
63573       , l_array_transaction_date
63574       , l_array_reference_num_1
63575       , l_array_reference_num_2
63576       , l_array_reference_num_3
63577       , l_array_reference_num_4
63578       , l_array_reference_char_1
63579       , l_array_reference_char_2
63580       , l_array_reference_char_3
63581       , l_array_reference_char_4
63582       , l_array_reference_date_1
63583       , l_array_reference_date_2
63584       , l_array_reference_date_3
63585       , l_array_reference_date_4
63586       , l_array_event_created_by
63587       , l_array_budgetary_control_flag
63588       , l_array_extract_line_num 
63589       , l_array_source_3
63590       , l_array_source_4
63591       , l_array_source_5
63592       , l_array_source_6
63593       , l_array_source_7
63594       , l_array_source_22
63598       , l_array_source_26
63595       , l_array_source_23
63596       , l_array_source_24
63597       , l_array_source_25
63599       , l_array_source_27
63600       , l_array_source_28
63601       , l_array_source_29
63602       , l_array_source_30
63603       , l_array_source_31
63604       , l_array_source_33
63605       , l_array_source_34
63606       , l_array_source_34_meaning
63607       , l_array_source_35
63608       LIMIT l_rows;
63609 
63610   --
63611   IF (C_LEVEL_EVENT >= g_log_level) THEN
63612             trace
63613                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
63614                ,p_level    => C_LEVEL_EVENT
63615                ,p_module   => l_log_module);
63616   END IF;
63617   --
63618   EXIT WHEN l_array_entity_id.count = 0;
63619 
63620   XLA_AE_LINES_PKG.g_rec_lines := null;
63621 
63622 --
63623 -- Bug 4458708
63624 --
63625 XLA_AE_LINES_PKG.g_LineNumber := 0;
63626 --
63627 --
63628 
63629 FOR Idx IN 1..l_array_event_id.count LOOP
63630    --
63631    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
63632    --
63633    l_event_id := l_array_event_id(idx);  -- 5648433
63634 
63635    --
63636    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
63637    --
63638 
63639    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
63640              (g_array_event(l_event_id).array_value_num('header_index'))
63641          ,'N'
63642          ) <> 'Y'
63643    THEN
63644       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63645          trace
63646             (p_msg      => 'Trancaction revesal option is not Y '
63647             ,p_level    => C_LEVEL_STATEMENT
63648             ,p_module   => l_log_module);
63649       END IF;
63650 
63651 --
63652 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
63653 --
63654 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
63655 --
63656 -- set event info as cache for other routines to refer event attributes
63657 --
63658 
63659 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
63660    l_previous_event_id := l_event_id;
63661 
63662    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
63663       (p_application_id           => p_application_id
63664       ,p_primary_ledger_id        => p_primary_ledger_id
63665       ,p_base_ledger_id           => p_base_ledger_id
63666       ,p_target_ledger_id         => p_target_ledger_id
63667       ,p_entity_id                => l_array_entity_id(Idx)
63668       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
63669       ,p_entity_code              => l_array_entity_code(Idx)
63670       ,p_transaction_num          => l_array_transaction_num(Idx)
63671       ,p_event_id                 => l_array_event_id(Idx)
63672       ,p_event_class_code         => l_array_class_code(Idx)
63673       ,p_event_type_code          => l_array_event_type(Idx)
63674       ,p_event_number             => l_array_event_number(Idx)
63675       ,p_event_date               => l_array_event_date(Idx)
63676       ,p_transaction_date         => l_array_transaction_date(Idx)
63677       ,p_reference_num_1          => l_array_reference_num_1(Idx)
63678       ,p_reference_num_2          => l_array_reference_num_2(Idx)
63679       ,p_reference_num_3          => l_array_reference_num_3(Idx)
63680       ,p_reference_num_4          => l_array_reference_num_4(Idx)
63681       ,p_reference_char_1         => l_array_reference_char_1(Idx)
63682       ,p_reference_char_2         => l_array_reference_char_2(Idx)
63683       ,p_reference_char_3         => l_array_reference_char_3(Idx)
63684       ,p_reference_char_4         => l_array_reference_char_4(Idx)
63685       ,p_reference_date_1         => l_array_reference_date_1(Idx)
63686       ,p_reference_date_2         => l_array_reference_date_2(Idx)
63687       ,p_reference_date_3         => l_array_reference_date_3(Idx)
63688       ,p_reference_date_4         => l_array_reference_date_4(Idx)
63689       ,p_event_created_by         => l_array_event_created_by(Idx)
63690       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
63691        --
63692 END IF;
63693 
63694 
63695 
63696 --
63697 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
63698 
63699 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
63700 
63701 IF l_continue_with_lines THEN
63702    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
63703       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
63704 
63705       xla_accounting_err_pkg.build_message
63706          (p_appli_s_name            => 'XLA'
63707          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
63708          ,p_token_1                 => 'LINE_NUMBER'
63709          ,p_value_1                 => l_array_extract_line_num(Idx)
63710          ,p_token_2                 => 'PRODUCT_NAME'
63711          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
63712          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
63713          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
63714          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
63715 
63716    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
63717       --
63718       -- following sets the accounting attributes needed to reverse
63719       -- accounting for a distributeion
63720       --
63721 
63722       --
63723       -- 5217187
63724       --
63725       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
63726       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
63730 
63727                                        g_array_event(l_event_id).array_value_num('header_index'));
63728       --
63729       --
63731       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
63732       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
63733       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
63734       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
63735       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
63736       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
63737       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
63738       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
63739       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
63740       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
63741       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
63742       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
63743       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
63744       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
63745       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
63746       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
63747       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
63748       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
63749       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
63750       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
63751       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
63752       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
63753       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
63754       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
63755       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
63756       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
63757       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
63758       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
63759       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
63760       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
63761       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
63762       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
63763       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
63764       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
63765       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
63766       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
63767       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
63768       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
63769       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
63770       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
63771       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
63772       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
63773       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
63774       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
63775       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
63776       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
63777       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
63778       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
63779 
63780 
63781       xla_ae_lines_pkg.SetAcctReversalAttrs
63782          (p_event_id             => l_event_id
63783          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
63784          ,p_calculate_acctd_flag => l_calculate_acctd_flag
63785          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
63786    END IF;
63787 
63788    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
63789        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
63790 
63791 --
63792 AcctLineType_50 (
63793  p_application_id  => p_application_id
63794  ,p_event_id     => l_event_id
63795  ,p_calculate_acctd_flag => l_calculate_acctd_flag
63796  ,p_calculate_g_l_flag => l_calculate_g_l_flag
63797  ,p_actual_flag => l_actual_flag
63798  ,p_balance_type_code => l_balance_type_code
63799  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
63800  
63801  , p_source_3 => l_array_source_3(Idx)
63802  , p_source_4 => l_array_source_4(Idx)
63803  , p_source_5 => l_array_source_5(Idx)
63804  , p_source_6 => l_array_source_6(Idx)
63805  , p_source_22 => l_array_source_22(Idx)
63806  , p_source_23 => l_array_source_23(Idx)
63807  , p_source_24 => l_array_source_24(Idx)
63808  , p_source_25 => l_array_source_25(Idx)
63809  , p_source_26 => l_array_source_26(Idx)
63810  , p_source_27 => l_array_source_27(Idx)
63811  , p_source_28 => l_array_source_28(Idx)
63812  , p_source_29 => l_array_source_29(Idx)
63813  , p_source_30 => l_array_source_30(Idx)
63814  , p_source_31 => l_array_source_31(Idx)
63815  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
63816  , p_source_33 => l_array_source_33(Idx)
63817  , p_source_34 => l_array_source_34(Idx)
63818  , p_source_34_meaning => l_array_source_34_meaning(Idx)
63819  , p_source_35 => l_array_source_35(Idx)
63820  );
63821 If(l_balance_type_code = 'A') THEN
63822   l_actual_gain_loss_ref := l_gain_or_loss_ref;
63823 END IF;
63824 
63825 --
63826 
63827 
63828 --
63829 AcctLineType_64 (
63830  p_application_id  => p_application_id
63831  ,p_event_id     => l_event_id
63832  ,p_calculate_acctd_flag => l_calculate_acctd_flag
63833  ,p_calculate_g_l_flag => l_calculate_g_l_flag
63837  
63834  ,p_actual_flag => l_actual_flag
63835  ,p_balance_type_code => l_balance_type_code
63836  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
63838  , p_source_3 => l_array_source_3(Idx)
63839  , p_source_4 => l_array_source_4(Idx)
63840  , p_source_6 => l_array_source_6(Idx)
63841  , p_source_7 => l_array_source_7(Idx)
63842  , p_source_22 => l_array_source_22(Idx)
63843  , p_source_23 => l_array_source_23(Idx)
63844  , p_source_24 => l_array_source_24(Idx)
63845  , p_source_25 => l_array_source_25(Idx)
63846  , p_source_26 => l_array_source_26(Idx)
63847  , p_source_27 => l_array_source_27(Idx)
63848  , p_source_28 => l_array_source_28(Idx)
63849  , p_source_29 => l_array_source_29(Idx)
63850  , p_source_30 => l_array_source_30(Idx)
63851  , p_source_31 => l_array_source_31(Idx)
63852  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
63853  , p_source_33 => l_array_source_33(Idx)
63854  , p_source_34 => l_array_source_34(Idx)
63855  , p_source_34_meaning => l_array_source_34_meaning(Idx)
63856  , p_source_35 => l_array_source_35(Idx)
63857  );
63858 If(l_balance_type_code = 'A') THEN
63859   l_actual_gain_loss_ref := l_gain_or_loss_ref;
63860 END IF;
63861 
63862 --
63863 
63864       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
63865       -- or secondary ledger that has different currency with primary
63866       -- or alc that is calculated by sla
63867       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
63868             (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'))
63869 
63870 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
63871 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
63872           AND (l_actual_flag = 'A')) THEN
63873         XLA_AE_LINES_PKG.CreateGainOrLossLines(
63874           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
63875          ,p_application_id   => p_application_id
63876          ,p_amb_context_code => 'DEFAULT'
63877          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
63878          ,p_event_class_code => C_EVENT_CLASS_CODE
63879          ,p_event_type_code  => C_EVENT_TYPE_CODE
63880          
63881          ,p_gain_ccid        => -1
63882          ,p_loss_ccid        => -1
63883 
63884          ,p_actual_flag      => l_actual_flag
63885          ,p_enc_flag         => null
63886          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
63887          ,p_enc_g_l_ref      => null
63888          );
63889       END IF;
63890    END IF;
63891 END IF;
63892 
63893    ELSE
63894       --
63895       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
63896       --
63897       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63898          trace
63899             (p_msg      => 'Trancaction revesal option is Y'
63900             ,p_level    => C_LEVEL_STATEMENT
63901             ,p_module   => l_log_module);
63902       END IF;
63903    END IF;
63904 
63905 END LOOP;
63906 l_result := XLA_AE_LINES_PKG.InsertLines ;
63907 end loop;
63908 close line_cur;
63909 
63910 
63911 --
63912 -- insert headers into xla_ae_headers_gt table
63913 --
63914 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
63915 
63916 -- insert into errors table here.
63917 
63918 END LOOP;
63919 
63920 --
63921 -- 4865292
63922 --
63923 -- Compare g_hdr_extract_count with event count in
63924 -- CreateHeadersAndLines.
63925 --
63926 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
63927 
63928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63929    trace (p_msg     => '# rows extracted from header extract objects '
63930                     || ' (running total): '
63931                     || g_hdr_extract_count
63932          ,p_level   => C_LEVEL_STATEMENT
63933          ,p_module  => l_log_module);
63934 END IF;
63935 
63936 CLOSE header_cur;
63937 --
63938 
63939 --
63940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63941    trace
63942       (p_msg      => 'END of EventClass_115'
63943       ,p_level    => C_LEVEL_PROCEDURE
63944       ,p_module   => l_log_module);
63945 END IF;
63946 --
63947 RETURN l_result;
63948 EXCEPTION
63949 WHEN xla_exceptions_pkg.application_exception THEN
63950    
63951 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
63952 
63953    
63957 WHEN OTHERS THEN
63954 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
63955 
63956    RAISE;
63958    xla_exceptions_pkg.raise_message
63959       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_115');
63960 END EventClass_115;
63961 --
63962 
63963 ---------------------------------------
63964 --
63965 -- PRIVATE PROCEDURE
63966 --         insert_sources_116
63967 --
63968 ----------------------------------------
63969 --
63970 PROCEDURE insert_sources_116(
63971                                 p_target_ledger_id       IN NUMBER
63972                               , p_language               IN VARCHAR2
63973                               , p_sla_ledger_id          IN NUMBER
63974                               , p_pad_start_date         IN DATE
63975                               , p_pad_end_date           IN DATE
63976                          )
63977 IS
63978 
63979 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ALL';
63980 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVENTORY_COST';
63981 p_apps_owner                   VARCHAR2(30);
63982 l_log_module                   VARCHAR2(240);
63983 BEGIN
63984 IF g_log_enabled THEN
63985       l_log_module := C_DEFAULT_MODULE||'.insert_sources_116';
63986 END IF;
63987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63988 
63989       trace
63990          (p_msg      => 'BEGIN of insert_sources_116'
63991          ,p_level    => C_LEVEL_PROCEDURE
63992          ,p_module   => l_log_module);
63993 
63994 END IF;
63995 
63996 -- select APPS owner
63997 SELECT oracle_username
63998   INTO p_apps_owner
63999   FROM fnd_oracle_userid
64000  WHERE read_only_flag = 'U'
64001 ;
64002 
64003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64004       trace
64005          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
64006                         ' - p_language = '||p_language||
64007                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
64008                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
64009                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
64010                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
64011          ,p_level    => C_LEVEL_STATEMENT
64012          ,p_module   => l_log_module);
64013 END IF;
64014 
64015 
64016 --
64017 INSERT INTO xla_diag_sources --hdr2
64018 (
64019         event_id
64020       , ledger_id
64021       , sla_ledger_id
64022       , description_language
64023       , object_name
64024       , object_type_code
64025       , line_number
64026       , source_application_id
64027       , source_type_code
64028       , source_code
64029       , source_value
64030       , source_meaning
64031       , created_by
64032       , creation_date
64033       , last_update_date
64034       , last_updated_by
64035       , last_update_login
64036       , program_update_date
64037       , program_application_id
64038       , program_id
64039       , request_id
64040 )
64041 SELECT
64042         event_id
64043       , p_target_ledger_id
64044       , p_sla_ledger_id
64045       , p_language
64046       , object_name
64047       , object_type_code
64048       , line_number
64049       , source_application_id
64050       , source_type_code
64051       , source_code
64052       , SUBSTR(source_value ,1,1996)
64053       , SUBSTR(source_meaning ,1,200)
64054       , xla_environment_pkg.g_Usr_Id
64055       , TRUNC(SYSDATE)
64056       , TRUNC(SYSDATE)
64057       , xla_environment_pkg.g_Usr_Id
64058       , xla_environment_pkg.g_Login_Id
64059       , TRUNC(SYSDATE)
64060       , xla_environment_pkg.g_Prog_Appl_Id
64061       , xla_environment_pkg.g_Prog_Id
64062       , xla_environment_pkg.g_Req_Id
64063   FROM (
64064        SELECT xet.event_id                  event_id
64065             , 0                          line_number
64066             , CASE r
64067                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
64068                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
64069                 
64070                ELSE null
64071               END                           object_name
64072             , CASE r
64073                 WHEN 1 THEN 'HEADER' 
64074                 WHEN 2 THEN 'HEADER' 
64075                 
64076                 ELSE null
64077               END                           object_type_code
64078             , CASE r
64079                 WHEN 1 THEN '275' 
64080                 WHEN 2 THEN '275' 
64081                 
64082                 ELSE null
64083               END                           source_application_id
64084             , 'S'             source_type_code
64085             , CASE r
64086                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
64087                 WHEN 2 THEN 'GL_DATE' 
64088                 
64089                 ELSE null
64090               END                           source_code
64091             , CASE r
64092                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
64093                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
64094                 
64095                 ELSE null
64096               END                           source_value
64097             , null              source_meaning
64098          FROM xla_events_gt     xet  
64099       , PA_XLA_EXP_HEADER_V  h2
64100              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
64101          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
64102            AND xet.event_class_code = C_EVENT_CLASS_CODE
64103               AND h2.event_id = xet.event_id
64104 
64105 )
64106 ;
64107 --
64108 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64109 
64110       trace
64114 
64111          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
64112          ,p_level    => C_LEVEL_STATEMENT
64113          ,p_module   => l_log_module);
64115 END IF;
64116 --
64117 
64118 
64119 
64120 --
64121 INSERT INTO xla_diag_sources  --line2
64122 (
64123         event_id
64124       , ledger_id
64125       , sla_ledger_id
64126       , description_language
64127       , object_name
64128       , object_type_code
64129       , line_number
64130       , source_application_id
64131       , source_type_code
64132       , source_code
64133       , source_value
64134       , source_meaning
64135       , created_by
64136       , creation_date
64137       , last_update_date
64138       , last_updated_by
64139       , last_update_login
64140       , program_update_date
64141       , program_application_id
64142       , program_id
64143       , request_id
64144 )
64145 SELECT  event_id
64146       , p_target_ledger_id
64147       , p_sla_ledger_id
64148       , p_language
64149       , object_name
64150       , object_type_code
64151       , line_number
64152       , source_application_id
64153       , source_type_code
64154       , source_code
64155       , SUBSTR(source_value,1,1996)
64156       , SUBSTR(source_meaning ,1,200)
64157       , xla_environment_pkg.g_Usr_Id
64158       , TRUNC(SYSDATE)
64159       , TRUNC(SYSDATE)
64160       , xla_environment_pkg.g_Usr_Id
64161       , xla_environment_pkg.g_Login_Id
64162       , TRUNC(SYSDATE)
64163       , xla_environment_pkg.g_Prog_Appl_Id
64164       , xla_environment_pkg.g_Prog_Id
64165       , xla_environment_pkg.g_Req_Id
64166   FROM (
64167        SELECT xet.event_id                  event_id
64168             , l1.line_number                 line_number
64169             , CASE r
64170                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
64171                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
64172                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
64173                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
64174                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
64175                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
64176                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
64177                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
64178                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
64179                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
64180                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
64181                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
64182                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
64183                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
64184                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
64185                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
64186                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
64187                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
64188                 
64189                ELSE null
64190               END                           object_name
64191             , CASE r
64192                 WHEN 1 THEN 'LINE' 
64193                 WHEN 2 THEN 'LINE' 
64194                 WHEN 3 THEN 'LINE' 
64195                 WHEN 4 THEN 'LINE' 
64196                 WHEN 5 THEN 'LINE' 
64197                 WHEN 6 THEN 'LINE' 
64198                 WHEN 7 THEN 'LINE' 
64199                 WHEN 8 THEN 'LINE' 
64200                 WHEN 9 THEN 'LINE' 
64201                 WHEN 10 THEN 'LINE' 
64202                 WHEN 11 THEN 'LINE' 
64203                 WHEN 12 THEN 'LINE' 
64204                 WHEN 13 THEN 'LINE' 
64205                 WHEN 14 THEN 'LINE' 
64206                 WHEN 15 THEN 'LINE' 
64207                 WHEN 16 THEN 'LINE' 
64208                 WHEN 17 THEN 'LINE' 
64209                 WHEN 18 THEN 'LINE' 
64210                 
64211                 ELSE null
64212               END                           object_type_code
64213             , CASE r
64214                 WHEN 1 THEN '275' 
64215                 WHEN 2 THEN '275' 
64216                 WHEN 3 THEN '275' 
64217                 WHEN 4 THEN '275' 
64218                 WHEN 5 THEN '275' 
64219                 WHEN 6 THEN '275' 
64220                 WHEN 7 THEN '275' 
64221                 WHEN 8 THEN '275' 
64222                 WHEN 9 THEN '275' 
64223                 WHEN 10 THEN '275' 
64224                 WHEN 11 THEN '275' 
64225                 WHEN 12 THEN '275' 
64226                 WHEN 13 THEN '275' 
64227                 WHEN 14 THEN '275' 
64228                 WHEN 15 THEN '275' 
64229                 WHEN 16 THEN '275' 
64230                 WHEN 17 THEN '275' 
64231                 WHEN 18 THEN '275' 
64232                 
64233                 ELSE null
64234               END                           source_application_id
64235             , 'S'             source_type_code
64236             , CASE r
64237                 WHEN 1 THEN 'COST_CCID' 
64238                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
64239                 WHEN 3 THEN 'ADJ_COST_CCID' 
64240                 WHEN 4 THEN 'COST_CLEARING_CCID' 
64241                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
64242                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
64243                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
64244                 WHEN 8 THEN 'ENTERED_RAW_COST' 
64245                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
64246                 WHEN 10 THEN 'ACCT_RAW_COST' 
64247                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
64248                 WHEN 12 THEN 'EXCHANGE_RATE' 
64249                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
64250                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
64251                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
64252                 WHEN 16 THEN 'LINE_NUMBER' 
64253                 WHEN 17 THEN 'LINE_TYPE' 
64254                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
64258             , CASE r
64255                 
64256                 ELSE null
64257               END                           source_code
64259                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
64260                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
64261                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
64262                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
64263                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
64264                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
64265                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
64266                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
64267                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
64268                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
64269                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
64270                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
64271                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
64272                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
64273                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
64274                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
64275                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
64276                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
64277                 
64278                 ELSE null
64279               END                           source_value
64280             , CASE r
64281                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
64282                           103371
64283                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
64284                          ,'ALLOW_OVERRIDE_CCID_FLAG'
64285                          ,'S'
64286                          ,275)
64287                 WHEN 17 THEN fvl34.meaning
64288                 
64289                 ELSE null
64290               END               source_meaning
64291          FROM  xla_events_gt     xet  
64292         , PA_XLA_CDL_LINES_V  l1
64293   , fnd_lookup_values    fvl34
64294             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
64295         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
64296           AND xet.event_class_code = C_EVENT_CLASS_CODE
64297             AND l1.event_id          = xet.event_id
64298    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
64299   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
64300   AND fvl34.view_application_id(+) = 275
64301   AND fvl34.language(+)            = USERENV('LANG')
64302   
64303 )
64304 ;
64305 --
64306 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64307 
64308       trace
64309          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
64310          ,p_level    => C_LEVEL_STATEMENT
64311          ,p_module   => l_log_module);
64312 
64313 END IF;
64314 
64315 
64316 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64317       trace
64318          (p_msg      => 'END of insert_sources_116'
64319          ,p_level    => C_LEVEL_PROCEDURE
64320          ,p_module   => l_log_module);
64321 END IF;
64322 EXCEPTION
64323   WHEN xla_exceptions_pkg.application_exception THEN
64324       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
64325             trace
64326                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
64327                ,p_level    => C_LEVEL_EXCEPTION
64328                ,p_module   => l_log_module);
64329       END IF;
64330       RAISE;
64331   WHEN OTHERS THEN
64332       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
64333             trace
64334                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
64335                ,p_level    => C_LEVEL_EXCEPTION
64336                ,p_module   => l_log_module);
64337        END IF;
64338        xla_exceptions_pkg.raise_message
64339            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_116');
64340 END insert_sources_116;
64341 --
64342 
64343 ---------------------------------------
64344 --
64345 -- PRIVATE FUNCTION
64346 --         EventClass_116
64347 --
64348 ----------------------------------------
64349 --
64350 FUNCTION EventClass_116
64351        (p_application_id         IN NUMBER
64352        ,p_base_ledger_id         IN NUMBER
64353        ,p_target_ledger_id       IN NUMBER
64354        ,p_language               IN VARCHAR2
64355        ,p_currency_code          IN VARCHAR2
64356        ,p_sla_ledger_id          IN NUMBER
64357        ,p_pad_start_date         IN DATE
64358        ,p_pad_end_date           IN DATE
64359        ,p_primary_ledger_id      IN NUMBER)
64360 RETURN BOOLEAN IS
64361 --
64362 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ALL';
64363 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVENTORY_COST';
64364 
64365 l_calculate_acctd_flag   VARCHAR2(1) :='N';
64366 l_calculate_g_l_flag     VARCHAR2(1) :='N';
64367 --
64368 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64369 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64370 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64371 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64372 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64373 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64374 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64375 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64376 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64377 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64378 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64379 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64380 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64384 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64381 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64382 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64383 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64385 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64386 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64387 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64388 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64389 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64390 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
64391 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64392 
64393 l_event_id                             NUMBER;
64394 l_previous_event_id                    NUMBER;
64395 l_first_event_id                       NUMBER;
64396 l_last_event_id                        NUMBER;
64397 
64398 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
64399 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
64400 --
64401 --
64402 l_result                    BOOLEAN := TRUE;
64403 l_rows                      NUMBER  := 1000;
64404 l_event_type_name           VARCHAR2(80) := 'All';
64405 l_event_class_name          VARCHAR2(80) := 'Inventory Cost';
64406 l_description               VARCHAR2(4000);
64407 l_transaction_reversal      NUMBER;
64408 l_ae_header_id              NUMBER;
64409 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
64410 l_log_module                VARCHAR2(240);
64411 --
64412 l_acct_reversal_source      VARCHAR2(30);
64413 l_trx_reversal_source       VARCHAR2(30);
64414 
64415 l_continue_with_lines       BOOLEAN := TRUE;
64416 --
64417 l_acc_rev_gl_date_source    DATE;                      -- 4262811
64418 --
64419 type t_array_event_id is table of number index by binary_integer;
64420 
64421 l_rec_array_event                    t_rec_array_event;
64422 l_null_rec_array_event               t_rec_array_event;
64423 l_array_ae_header_id                 xla_number_array_type;
64424 l_actual_flag                        VARCHAR2(1) := NULL;
64425 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
64426 l_balance_type_code                  VARCHAR2(1) :=NULL;
64427 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
64428 
64429 --
64430 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
64431 --
64432 
64433 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
64434 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
64435 
64436 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
64437 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
64438 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
64439 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
64440 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
64441 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
64442 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
64443 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
64444 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
64445 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
64446 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
64447 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
64448 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
64449 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
64450 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
64451 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
64452 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
64453 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
64454 
64455 l_array_source_32              t_array_source_32;
64456 l_array_source_88              t_array_source_88;
64457 
64458 l_array_source_3      t_array_source_3;
64459 l_array_source_4      t_array_source_4;
64460 l_array_source_5      t_array_source_5;
64461 l_array_source_6      t_array_source_6;
64462 l_array_source_7      t_array_source_7;
64463 l_array_source_22      t_array_source_22;
64464 l_array_source_23      t_array_source_23;
64465 l_array_source_24      t_array_source_24;
64466 l_array_source_25      t_array_source_25;
64467 l_array_source_26      t_array_source_26;
64468 l_array_source_27      t_array_source_27;
64469 l_array_source_28      t_array_source_28;
64470 l_array_source_29      t_array_source_29;
64471 l_array_source_30      t_array_source_30;
64472 l_array_source_31      t_array_source_31;
64473 l_array_source_33      t_array_source_33;
64474 l_array_source_34      t_array_source_34;
64475 l_array_source_34_meaning      t_array_lookup_meaning;
64476 l_array_source_35      t_array_source_35;
64477 
64478 --
64479 CURSOR header_cur
64480 IS
64481 SELECT /*+ leading(xet) cardinality(xet,1) */
64482 -- Event Class Code: INVENTORY_COST
64483     xet.entity_id
64484    ,xet.legal_entity_id
64485    ,xet.entity_code
64486    ,xet.transaction_number
64487    ,xet.event_id
64491    ,xet.event_date
64488    ,xet.event_class_code
64489    ,xet.event_type_code
64490    ,xet.event_number
64492    ,xet.transaction_date
64493    ,xet.reference_num_1
64494    ,xet.reference_num_2
64495    ,xet.reference_num_3
64496    ,xet.reference_num_4
64497    ,xet.reference_char_1
64498    ,xet.reference_char_2
64499    ,xet.reference_char_3
64500    ,xet.reference_char_4
64501    ,xet.reference_date_1
64502    ,xet.reference_date_2
64503    ,xet.reference_date_3
64504    ,xet.reference_date_4
64505    ,xet.event_created_by
64506    ,xet.budgetary_control_flag 
64507   , h2.EXPENDITURE_ITEM_ID    source_32
64508   , h2.GL_DATE    source_88
64509   FROM xla_events_gt     xet 
64510   , PA_XLA_EXP_HEADER_V  h2
64511  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
64512    and xet.event_class_code = C_EVENT_CLASS_CODE
64513    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
64514 
64515  ORDER BY event_id
64516 ;
64517 
64518 
64519 --
64520 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
64521 IS
64522 SELECT  /*+ leading(xet) cardinality(xet,1) */
64523 -- Event Class Code: INVENTORY_COST
64524     xet.entity_id
64525    ,xet.legal_entity_id
64526    ,xet.entity_code
64527    ,xet.transaction_number
64528    ,xet.event_id
64529    ,xet.event_class_code
64530    ,xet.event_type_code
64531    ,xet.event_number
64532    ,xet.event_date
64533    ,xet.transaction_date
64534    ,xet.reference_num_1
64535    ,xet.reference_num_2
64536    ,xet.reference_num_3
64537    ,xet.reference_num_4
64538    ,xet.reference_char_1
64539    ,xet.reference_char_2
64540    ,xet.reference_char_3
64541    ,xet.reference_char_4
64542    ,xet.reference_date_1
64543    ,xet.reference_date_2
64544    ,xet.reference_date_3
64545    ,xet.reference_date_4
64546    ,xet.event_created_by
64547    ,xet.budgetary_control_flag
64548  , l1.LINE_NUMBER  
64549   , l1.COST_CCID    source_3
64550   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
64551   , l1.ADJ_COST_CCID    source_5
64552   , l1.COST_CLEARING_CCID    source_6
64553   , l1.ADJ_COST_CLEARING_CCID    source_7
64554   , l1.REVERSING_LINE_FLAG    source_22
64555   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
64556   , l1.ENTERED_RAW_COST    source_24
64557   , l1.ENTERED_CURRENCY_CODE    source_25
64558   , l1.ACCT_RAW_COST    source_26
64559   , l1.EXCHANGE_RATE_DATE    source_27
64560   , l1.EXCHANGE_RATE    source_28
64561   , l1.EXCHANGE_RATE_TYPE    source_29
64562   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
64563   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
64564   , l1.LINE_NUMBER    source_33
64565   , l1.LINE_TYPE    source_34
64566   , fvl34.meaning   source_34_meaning
64567   , l1.LINE_NUM_REVERSED    source_35
64568   FROM xla_events_gt     xet 
64569   , PA_XLA_CDL_LINES_V  l1
64570   , fnd_lookup_values    fvl34
64571  WHERE xet.event_id between x_first_event_id and x_last_event_id
64572    and xet.event_date between p_pad_start_date and p_pad_end_date
64573    and xet.event_class_code = C_EVENT_CLASS_CODE
64574    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
64575    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
64576   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
64577   AND fvl34.view_application_id(+) = 275
64578   AND fvl34.language(+)            = USERENV('LANG')
64579   ;
64580 
64581 --
64582 BEGIN
64583 IF g_log_enabled THEN
64584    l_log_module := C_DEFAULT_MODULE||'.EventClass_116';
64585 END IF;
64586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64587    trace
64588       (p_msg      => 'BEGIN of EventClass_116'
64589       ,p_level    => C_LEVEL_PROCEDURE
64590       ,p_module   => l_log_module);
64591 END IF;
64592 
64593 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64594    trace
64595       (p_msg      => 'p_application_id = '||p_application_id||
64596                      ' - p_base_ledger_id = '||p_base_ledger_id||
64597                      ' - p_target_ledger_id  = '||p_target_ledger_id||
64598                      ' - p_language = '||p_language||
64599                      ' - p_currency_code = '||p_currency_code||
64600                      ' - p_sla_ledger_id = '||p_sla_ledger_id
64601       ,p_level    => C_LEVEL_STATEMENT
64602       ,p_module   => l_log_module);
64603 END IF;
64604 --
64605 -- initialze arrays
64606 --
64607 g_array_event.DELETE;
64608 l_rec_array_event := l_null_rec_array_event;
64609 --
64610 --------------------------------------
64611 -- 4262811 Initialze MPA Line Number
64612 --------------------------------------
64613 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
64614 
64615 --
64616 
64617 --
64618 OPEN header_cur;
64619 --
64620 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64621    trace
64622    (p_msg      => 'SQL - FETCH header_cur'
64623    ,p_level    => C_LEVEL_STATEMENT
64624    ,p_module   => l_log_module);
64625 END IF;
64626 --
64627 LOOP
64628 FETCH header_cur BULK COLLECT INTO
64629         l_array_entity_id
64630       , l_array_legal_entity_id
64631       , l_array_entity_code
64632       , l_array_transaction_num
64633       , l_array_event_id
64634       , l_array_class_code
64635       , l_array_event_type
64636       , l_array_event_number
64637       , l_array_event_date
64638       , l_array_transaction_date
64639       , l_array_reference_num_1
64640       , l_array_reference_num_2
64641       , l_array_reference_num_3
64642       , l_array_reference_num_4
64643       , l_array_reference_char_1
64644       , l_array_reference_char_2
64645       , l_array_reference_char_3
64646       , l_array_reference_char_4
64647       , l_array_reference_date_1
64651       , l_array_event_created_by
64648       , l_array_reference_date_2
64649       , l_array_reference_date_3
64650       , l_array_reference_date_4
64652       , l_array_budgetary_control_flag 
64653       , l_array_source_32
64654       , l_array_source_88
64655       LIMIT l_rows;
64656 --
64657 IF (C_LEVEL_EVENT >= g_log_level) THEN
64658    trace
64659    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
64660    ,p_level    => C_LEVEL_EVENT
64661    ,p_module   => l_log_module);
64662 END IF;
64663 --
64664 EXIT WHEN l_array_entity_id.COUNT = 0;
64665 
64666 -- initialize arrays
64667 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
64668 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
64669 
64670 --
64671 -- Bug 4458708
64672 --
64673 XLA_AE_LINES_PKG.g_LineNumber := 0;
64674 
64675 
64676 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
64677 g_last_hdr_idx := l_array_event_id.LAST;
64678 --
64679 -- loop for the headers. Each iteration is for each header extract row
64680 -- fetched in header cursor
64681 --
64682 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
64683 
64684 --
64685 -- set event info as cache for other routines to refer event attributes
64686 --
64687 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
64688    (p_application_id           => p_application_id
64689    ,p_primary_ledger_id        => p_primary_ledger_id
64690    ,p_base_ledger_id           => p_base_ledger_id
64691    ,p_target_ledger_id         => p_target_ledger_id
64692    ,p_entity_id                => l_array_entity_id(hdr_idx)
64693    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
64694    ,p_entity_code              => l_array_entity_code(hdr_idx)
64695    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
64696    ,p_event_id                 => l_array_event_id(hdr_idx)
64697    ,p_event_class_code         => l_array_class_code(hdr_idx)
64698    ,p_event_type_code          => l_array_event_type(hdr_idx)
64699    ,p_event_number             => l_array_event_number(hdr_idx)
64700    ,p_event_date               => l_array_event_date(hdr_idx)
64701    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
64702    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
64703    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
64704    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
64705    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
64706    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
64707    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
64708    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
64709    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
64710    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
64711    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
64712    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
64713    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
64714    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
64715    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
64716 
64717 --
64718 -- set the status of entry to C_VALID (0)
64719 --
64720 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
64721 
64722 --
64723 -- initialize a row for ae header
64724 --
64725 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
64726 
64727 l_event_id := l_array_event_id(hdr_idx);
64728 
64729 --
64730 -- storing the hdr_idx for event. May be used by line cursor.
64731 --
64732 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
64733 
64734 --
64735 -- store sources from header extract. This can be improved to
64736 -- store only those sources from header extract that may be used in lines
64737 --
64738 
64739 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
64740 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
64741 
64742 --
64743 -- initilaize the status of ae headers for diffrent balance types
64744 -- the status is initialised to C_NOT_CREATED (2)
64745 --
64746 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
64747 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
64748 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
64749 
64750 --
64751 -- call api to validate and store accounting attributes for header
64752 --
64753 
64754 ------------------------------------------------------------
64755 -- Accrual Reversal : to get date for Standard Source (NONE)
64756 ------------------------------------------------------------
64757 l_acc_rev_gl_date_source := NULL;
64758 
64759      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
64760       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
64761 
64762 
64763 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
64764 
64765 XLA_AE_HEADER_PKG.SetJeCategoryName;
64766 
64767 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
64768 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
64769 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
64770 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
64771 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
64772 
64773 
64774 -- No header level analytical criteria
64775 
64776 --
64780 
64777 --accounting attribute enhancement, bug 3612931
64778 --
64779 l_trx_reversal_source := SUBSTR(NULL, 1,30);
64781 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
64782    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
64783 
64784    xla_accounting_err_pkg.build_message
64785       (p_appli_s_name            => 'XLA'
64786       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
64787       ,p_token_1                 => 'ACCT_ATTR_NAME'
64788       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
64789       ,p_token_2                 => 'PRODUCT_NAME'
64790       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
64791       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
64792       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
64793       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
64794 
64795 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
64796    --
64797    -- following sets the accounting attributes needed to reverse
64798    -- accounting for a distributeion
64799    --
64800    xla_ae_lines_pkg.SetTrxReversalAttrs
64801       (p_event_id              => l_event_id
64802       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
64803       ,p_trx_reversal_source   => l_trx_reversal_source);
64804 
64805 END IF;
64806 
64807 
64808 ----------------------------------------------------------------
64809 -- 4262811 -  update the header statuses to invalid in need be
64810 ----------------------------------------------------------------
64811 --
64812 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
64813 
64814 
64815   -----------------------------------------------
64816   -- No accrual reversal for the event class/type
64817   -----------------------------------------------
64818 ----------------------------------------------------------------
64819 
64820 --
64821 -- this ends the header loop iteration for one bulk fetch
64822 --
64823 END LOOP;
64824 
64825 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
64826 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
64827 
64828 --
64829 -- insert dummy rows into lines gt table that were created due to
64830 -- transaction reversals
64831 --
64832 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
64833    l_result := XLA_AE_LINES_PKG.InsertLines;
64834 END IF;
64835 
64836 --
64837 -- reset the temp_line_num for each set of events fetched from header
64838 -- cursor rather than doing it for each new event in line cursor
64839 -- Bug 3939231
64840 --
64841 xla_ae_lines_pkg.g_temp_line_num := 0;
64842 
64843 
64844 
64845 --
64846 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
64847 --
64848 --
64849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64850 
64851       trace
64852          (p_msg      => 'SQL - FETCH line_cur'
64853          ,p_level    => C_LEVEL_STATEMENT
64854          ,p_module   => l_log_module);
64855 
64856 END IF;
64857 --
64858 --
64859 LOOP
64860   --
64861   FETCH line_cur BULK COLLECT INTO
64862         l_array_entity_id
64863       , l_array_legal_entity_id
64864       , l_array_entity_code
64865       , l_array_transaction_num
64866       , l_array_event_id
64867       , l_array_class_code
64868       , l_array_event_type
64869       , l_array_event_number
64870       , l_array_event_date
64871       , l_array_transaction_date
64872       , l_array_reference_num_1
64873       , l_array_reference_num_2
64874       , l_array_reference_num_3
64875       , l_array_reference_num_4
64876       , l_array_reference_char_1
64877       , l_array_reference_char_2
64878       , l_array_reference_char_3
64879       , l_array_reference_char_4
64880       , l_array_reference_date_1
64881       , l_array_reference_date_2
64882       , l_array_reference_date_3
64883       , l_array_reference_date_4
64884       , l_array_event_created_by
64885       , l_array_budgetary_control_flag
64886       , l_array_extract_line_num 
64887       , l_array_source_3
64888       , l_array_source_4
64889       , l_array_source_5
64890       , l_array_source_6
64891       , l_array_source_7
64892       , l_array_source_22
64893       , l_array_source_23
64894       , l_array_source_24
64895       , l_array_source_25
64896       , l_array_source_26
64897       , l_array_source_27
64898       , l_array_source_28
64899       , l_array_source_29
64900       , l_array_source_30
64901       , l_array_source_31
64902       , l_array_source_33
64903       , l_array_source_34
64904       , l_array_source_34_meaning
64905       , l_array_source_35
64906       LIMIT l_rows;
64907 
64908   --
64909   IF (C_LEVEL_EVENT >= g_log_level) THEN
64910             trace
64911                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
64912                ,p_level    => C_LEVEL_EVENT
64913                ,p_module   => l_log_module);
64914   END IF;
64915   --
64916   EXIT WHEN l_array_entity_id.count = 0;
64917 
64918   XLA_AE_LINES_PKG.g_rec_lines := null;
64919 
64920 --
64921 -- Bug 4458708
64922 --
64923 XLA_AE_LINES_PKG.g_LineNumber := 0;
64924 --
64925 --
64926 
64927 FOR Idx IN 1..l_array_event_id.count LOOP
64928    --
64929    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
64930    --
64931    l_event_id := l_array_event_id(idx);  -- 5648433
64932 
64933    --
64937    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
64934    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
64935    --
64936 
64938              (g_array_event(l_event_id).array_value_num('header_index'))
64939          ,'N'
64940          ) <> 'Y'
64941    THEN
64942       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64943          trace
64944             (p_msg      => 'Trancaction revesal option is not Y '
64945             ,p_level    => C_LEVEL_STATEMENT
64946             ,p_module   => l_log_module);
64947       END IF;
64948 
64949 --
64950 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
64951 --
64952 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
64953 --
64954 -- set event info as cache for other routines to refer event attributes
64955 --
64956 
64957 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
64958    l_previous_event_id := l_event_id;
64959 
64960    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
64961       (p_application_id           => p_application_id
64962       ,p_primary_ledger_id        => p_primary_ledger_id
64963       ,p_base_ledger_id           => p_base_ledger_id
64964       ,p_target_ledger_id         => p_target_ledger_id
64965       ,p_entity_id                => l_array_entity_id(Idx)
64966       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
64967       ,p_entity_code              => l_array_entity_code(Idx)
64968       ,p_transaction_num          => l_array_transaction_num(Idx)
64969       ,p_event_id                 => l_array_event_id(Idx)
64970       ,p_event_class_code         => l_array_class_code(Idx)
64971       ,p_event_type_code          => l_array_event_type(Idx)
64972       ,p_event_number             => l_array_event_number(Idx)
64973       ,p_event_date               => l_array_event_date(Idx)
64974       ,p_transaction_date         => l_array_transaction_date(Idx)
64975       ,p_reference_num_1          => l_array_reference_num_1(Idx)
64976       ,p_reference_num_2          => l_array_reference_num_2(Idx)
64977       ,p_reference_num_3          => l_array_reference_num_3(Idx)
64978       ,p_reference_num_4          => l_array_reference_num_4(Idx)
64979       ,p_reference_char_1         => l_array_reference_char_1(Idx)
64980       ,p_reference_char_2         => l_array_reference_char_2(Idx)
64981       ,p_reference_char_3         => l_array_reference_char_3(Idx)
64982       ,p_reference_char_4         => l_array_reference_char_4(Idx)
64983       ,p_reference_date_1         => l_array_reference_date_1(Idx)
64984       ,p_reference_date_2         => l_array_reference_date_2(Idx)
64985       ,p_reference_date_3         => l_array_reference_date_3(Idx)
64986       ,p_reference_date_4         => l_array_reference_date_4(Idx)
64987       ,p_event_created_by         => l_array_event_created_by(Idx)
64988       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
64989        --
64990 END IF;
64991 
64992 
64993 
64994 --
64995 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
64996 
64997 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
64998 
64999 IF l_continue_with_lines THEN
65000    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
65001       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
65002 
65003       xla_accounting_err_pkg.build_message
65004          (p_appli_s_name            => 'XLA'
65005          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
65006          ,p_token_1                 => 'LINE_NUMBER'
65007          ,p_value_1                 => l_array_extract_line_num(Idx)
65008          ,p_token_2                 => 'PRODUCT_NAME'
65009          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
65010          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
65011          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
65012          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
65013 
65014    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
65015       --
65016       -- following sets the accounting attributes needed to reverse
65017       -- accounting for a distributeion
65018       --
65019 
65020       --
65021       -- 5217187
65022       --
65023       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
65024       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
65025                                        g_array_event(l_event_id).array_value_num('header_index'));
65026       --
65027       --
65028 
65029       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
65030       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
65031       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
65032       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
65033       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
65034       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
65035       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
65036       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
65037       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
65038       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
65039       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
65040       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
65041       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
65042       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
65043       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
65044       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
65048       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
65045       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
65046       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
65047       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
65049       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
65050       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
65051       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
65052       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
65053       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
65054       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
65055       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
65056       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
65057       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
65058       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
65059       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
65060       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
65061       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
65062       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
65063       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
65064       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
65065       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
65066       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
65067       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
65068       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
65069       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
65070       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
65071       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
65072       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
65073       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
65074       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
65075       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
65076       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
65077 
65078 
65079       xla_ae_lines_pkg.SetAcctReversalAttrs
65080          (p_event_id             => l_event_id
65081          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
65082          ,p_calculate_acctd_flag => l_calculate_acctd_flag
65083          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
65084    END IF;
65085 
65086    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
65087        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
65088 
65089 --
65090 AcctLineType_43 (
65091  p_application_id  => p_application_id
65092  ,p_event_id     => l_event_id
65093  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65094  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65095  ,p_actual_flag => l_actual_flag
65096  ,p_balance_type_code => l_balance_type_code
65097  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65098  
65099  , p_source_3 => l_array_source_3(Idx)
65100  , p_source_4 => l_array_source_4(Idx)
65101  , p_source_5 => l_array_source_5(Idx)
65102  , p_source_6 => l_array_source_6(Idx)
65103  , p_source_22 => l_array_source_22(Idx)
65104  , p_source_23 => l_array_source_23(Idx)
65105  , p_source_24 => l_array_source_24(Idx)
65106  , p_source_25 => l_array_source_25(Idx)
65107  , p_source_26 => l_array_source_26(Idx)
65108  , p_source_27 => l_array_source_27(Idx)
65109  , p_source_28 => l_array_source_28(Idx)
65110  , p_source_29 => l_array_source_29(Idx)
65111  , p_source_30 => l_array_source_30(Idx)
65112  , p_source_31 => l_array_source_31(Idx)
65113  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
65114  , p_source_33 => l_array_source_33(Idx)
65115  , p_source_34 => l_array_source_34(Idx)
65116  , p_source_34_meaning => l_array_source_34_meaning(Idx)
65117  , p_source_35 => l_array_source_35(Idx)
65118  );
65119 If(l_balance_type_code = 'A') THEN
65120   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65121 END IF;
65122 
65123 --
65124 
65125 
65126 --
65127 AcctLineType_57 (
65128  p_application_id  => p_application_id
65129  ,p_event_id     => l_event_id
65130  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65131  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65132  ,p_actual_flag => l_actual_flag
65133  ,p_balance_type_code => l_balance_type_code
65134  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65135  
65136  , p_source_3 => l_array_source_3(Idx)
65137  , p_source_4 => l_array_source_4(Idx)
65138  , p_source_6 => l_array_source_6(Idx)
65139  , p_source_7 => l_array_source_7(Idx)
65140  , p_source_22 => l_array_source_22(Idx)
65141  , p_source_23 => l_array_source_23(Idx)
65142  , p_source_24 => l_array_source_24(Idx)
65143  , p_source_25 => l_array_source_25(Idx)
65144  , p_source_26 => l_array_source_26(Idx)
65145  , p_source_27 => l_array_source_27(Idx)
65146  , p_source_28 => l_array_source_28(Idx)
65147  , p_source_29 => l_array_source_29(Idx)
65148  , p_source_30 => l_array_source_30(Idx)
65149  , p_source_31 => l_array_source_31(Idx)
65150  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
65151  , p_source_33 => l_array_source_33(Idx)
65152  , p_source_34 => l_array_source_34(Idx)
65153  , p_source_34_meaning => l_array_source_34_meaning(Idx)
65154  , p_source_35 => l_array_source_35(Idx)
65155  );
65156 If(l_balance_type_code = 'A') THEN
65157   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65158 END IF;
65159 
65163       -- or secondary ledger that has different currency with primary
65160 --
65161 
65162       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
65164       -- or alc that is calculated by sla
65165       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
65166             (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'))
65167 
65168 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
65169 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
65170           AND (l_actual_flag = 'A')) THEN
65171         XLA_AE_LINES_PKG.CreateGainOrLossLines(
65172           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
65173          ,p_application_id   => p_application_id
65174          ,p_amb_context_code => 'DEFAULT'
65175          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
65176          ,p_event_class_code => C_EVENT_CLASS_CODE
65177          ,p_event_type_code  => C_EVENT_TYPE_CODE
65178          
65179          ,p_gain_ccid        => -1
65180          ,p_loss_ccid        => -1
65181 
65182          ,p_actual_flag      => l_actual_flag
65183          ,p_enc_flag         => null
65184          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
65185          ,p_enc_g_l_ref      => null
65186          );
65187       END IF;
65188    END IF;
65189 END IF;
65190 
65191    ELSE
65192       --
65193       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
65194       --
65195       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65196          trace
65197             (p_msg      => 'Trancaction revesal option is Y'
65198             ,p_level    => C_LEVEL_STATEMENT
65199             ,p_module   => l_log_module);
65200       END IF;
65201    END IF;
65202 
65203 END LOOP;
65204 l_result := XLA_AE_LINES_PKG.InsertLines ;
65205 end loop;
65206 close line_cur;
65207 
65208 
65209 --
65210 -- insert headers into xla_ae_headers_gt table
65211 --
65212 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
65213 
65214 -- insert into errors table here.
65215 
65216 END LOOP;
65217 
65218 --
65219 -- 4865292
65220 --
65221 -- Compare g_hdr_extract_count with event count in
65222 -- CreateHeadersAndLines.
65223 --
65224 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
65225 
65226 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65227    trace (p_msg     => '# rows extracted from header extract objects '
65228                     || ' (running total): '
65229                     || g_hdr_extract_count
65230          ,p_level   => C_LEVEL_STATEMENT
65231          ,p_module  => l_log_module);
65232 END IF;
65233 
65234 CLOSE header_cur;
65235 --
65236 
65237 --
65238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65239    trace
65240       (p_msg      => 'END of EventClass_116'
65241       ,p_level    => C_LEVEL_PROCEDURE
65242       ,p_module   => l_log_module);
65243 END IF;
65244 --
65245 RETURN l_result;
65246 EXCEPTION
65247 WHEN xla_exceptions_pkg.application_exception THEN
65248    
65249 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
65250 
65251    
65252 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
65253 
65254    RAISE;
65255 WHEN OTHERS THEN
65256    xla_exceptions_pkg.raise_message
65257       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_116');
65258 END EventClass_116;
65259 --
65260 
65261 ---------------------------------------
65262 --
65263 -- PRIVATE PROCEDURE
65264 --         insert_sources_117
65265 --
65266 ----------------------------------------
65267 --
65268 PROCEDURE insert_sources_117(
65269                                 p_target_ledger_id       IN NUMBER
65270                               , p_language               IN VARCHAR2
65271                               , p_sla_ledger_id          IN NUMBER
65272                               , p_pad_start_date         IN DATE
65273                               , p_pad_end_date           IN DATE
65274                          )
65275 IS
65276 
65277 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ADJ_ALL';
65278 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LABOR_COST_ADJ';
65279 p_apps_owner                   VARCHAR2(30);
65280 l_log_module                   VARCHAR2(240);
65281 BEGIN
65282 IF g_log_enabled THEN
65283       l_log_module := C_DEFAULT_MODULE||'.insert_sources_117';
65284 END IF;
65285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65286 
65287       trace
65288          (p_msg      => 'BEGIN of insert_sources_117'
65289          ,p_level    => C_LEVEL_PROCEDURE
65290          ,p_module   => l_log_module);
65291 
65292 END IF;
65293 
65294 -- select APPS owner
65295 SELECT oracle_username
65296   INTO p_apps_owner
65297   FROM fnd_oracle_userid
65298  WHERE read_only_flag = 'U'
65299 ;
65300 
65301 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65302       trace
65303          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
65304                         ' - p_language = '||p_language||
65305                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
65306                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
65307                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
65308                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
65309          ,p_level    => C_LEVEL_STATEMENT
65310          ,p_module   => l_log_module);
65311 END IF;
65312 
65313 
65314 --
65315 INSERT INTO xla_diag_sources --hdr2
65319       , sla_ledger_id
65316 (
65317         event_id
65318       , ledger_id
65320       , description_language
65321       , object_name
65322       , object_type_code
65323       , line_number
65324       , source_application_id
65325       , source_type_code
65326       , source_code
65327       , source_value
65328       , source_meaning
65329       , created_by
65330       , creation_date
65331       , last_update_date
65332       , last_updated_by
65333       , last_update_login
65334       , program_update_date
65335       , program_application_id
65336       , program_id
65337       , request_id
65338 )
65339 SELECT
65340         event_id
65341       , p_target_ledger_id
65342       , p_sla_ledger_id
65343       , p_language
65344       , object_name
65345       , object_type_code
65346       , line_number
65347       , source_application_id
65348       , source_type_code
65349       , source_code
65350       , SUBSTR(source_value ,1,1996)
65351       , SUBSTR(source_meaning ,1,200)
65352       , xla_environment_pkg.g_Usr_Id
65353       , TRUNC(SYSDATE)
65354       , TRUNC(SYSDATE)
65355       , xla_environment_pkg.g_Usr_Id
65356       , xla_environment_pkg.g_Login_Id
65357       , TRUNC(SYSDATE)
65358       , xla_environment_pkg.g_Prog_Appl_Id
65359       , xla_environment_pkg.g_Prog_Id
65360       , xla_environment_pkg.g_Req_Id
65361   FROM (
65362        SELECT xet.event_id                  event_id
65363             , 0                          line_number
65364             , CASE r
65365                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
65366                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
65367                 
65368                ELSE null
65369               END                           object_name
65370             , CASE r
65371                 WHEN 1 THEN 'HEADER' 
65372                 WHEN 2 THEN 'HEADER' 
65373                 
65374                 ELSE null
65375               END                           object_type_code
65376             , CASE r
65377                 WHEN 1 THEN '275' 
65378                 WHEN 2 THEN '275' 
65379                 
65380                 ELSE null
65381               END                           source_application_id
65382             , 'S'             source_type_code
65383             , CASE r
65384                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
65385                 WHEN 2 THEN 'GL_DATE' 
65386                 
65387                 ELSE null
65388               END                           source_code
65389             , CASE r
65390                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
65391                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
65392                 
65393                 ELSE null
65394               END                           source_value
65395             , null              source_meaning
65396          FROM xla_events_gt     xet  
65397       , PA_XLA_EXP_HEADER_V  h2
65398              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
65399          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
65400            AND xet.event_class_code = C_EVENT_CLASS_CODE
65401               AND h2.event_id = xet.event_id
65402 
65403 )
65404 ;
65405 --
65406 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65407 
65408       trace
65409          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
65410          ,p_level    => C_LEVEL_STATEMENT
65411          ,p_module   => l_log_module);
65412 
65413 END IF;
65414 --
65415 
65416 
65417 
65418 --
65419 INSERT INTO xla_diag_sources  --line2
65420 (
65421         event_id
65422       , ledger_id
65423       , sla_ledger_id
65424       , description_language
65425       , object_name
65426       , object_type_code
65427       , line_number
65428       , source_application_id
65429       , source_type_code
65430       , source_code
65431       , source_value
65432       , source_meaning
65433       , created_by
65434       , creation_date
65435       , last_update_date
65436       , last_updated_by
65437       , last_update_login
65438       , program_update_date
65439       , program_application_id
65440       , program_id
65441       , request_id
65442 )
65443 SELECT  event_id
65444       , p_target_ledger_id
65445       , p_sla_ledger_id
65446       , p_language
65447       , object_name
65448       , object_type_code
65449       , line_number
65450       , source_application_id
65451       , source_type_code
65452       , source_code
65453       , SUBSTR(source_value,1,1996)
65454       , SUBSTR(source_meaning ,1,200)
65455       , xla_environment_pkg.g_Usr_Id
65456       , TRUNC(SYSDATE)
65457       , TRUNC(SYSDATE)
65458       , xla_environment_pkg.g_Usr_Id
65459       , xla_environment_pkg.g_Login_Id
65460       , TRUNC(SYSDATE)
65461       , xla_environment_pkg.g_Prog_Appl_Id
65462       , xla_environment_pkg.g_Prog_Id
65463       , xla_environment_pkg.g_Req_Id
65464   FROM (
65465        SELECT xet.event_id                  event_id
65466             , l1.line_number                 line_number
65467             , CASE r
65468                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
65469                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
65470                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
65471                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
65472                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
65473                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
65474                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
65475                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
65476                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
65480                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
65477                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
65478                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
65479                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
65481                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
65482                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
65483                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
65484                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
65485                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
65486                 
65487                ELSE null
65488               END                           object_name
65489             , CASE r
65490                 WHEN 1 THEN 'LINE' 
65491                 WHEN 2 THEN 'LINE' 
65492                 WHEN 3 THEN 'LINE' 
65493                 WHEN 4 THEN 'LINE' 
65494                 WHEN 5 THEN 'LINE' 
65495                 WHEN 6 THEN 'LINE' 
65496                 WHEN 7 THEN 'LINE' 
65497                 WHEN 8 THEN 'LINE' 
65498                 WHEN 9 THEN 'LINE' 
65499                 WHEN 10 THEN 'LINE' 
65500                 WHEN 11 THEN 'LINE' 
65501                 WHEN 12 THEN 'LINE' 
65502                 WHEN 13 THEN 'LINE' 
65503                 WHEN 14 THEN 'LINE' 
65504                 WHEN 15 THEN 'LINE' 
65505                 WHEN 16 THEN 'LINE' 
65506                 WHEN 17 THEN 'LINE' 
65507                 WHEN 18 THEN 'LINE' 
65508                 
65509                 ELSE null
65510               END                           object_type_code
65511             , CASE r
65512                 WHEN 1 THEN '275' 
65513                 WHEN 2 THEN '275' 
65514                 WHEN 3 THEN '275' 
65515                 WHEN 4 THEN '275' 
65516                 WHEN 5 THEN '275' 
65517                 WHEN 6 THEN '275' 
65518                 WHEN 7 THEN '275' 
65519                 WHEN 8 THEN '275' 
65520                 WHEN 9 THEN '275' 
65521                 WHEN 10 THEN '275' 
65522                 WHEN 11 THEN '275' 
65523                 WHEN 12 THEN '275' 
65524                 WHEN 13 THEN '275' 
65525                 WHEN 14 THEN '275' 
65526                 WHEN 15 THEN '275' 
65527                 WHEN 16 THEN '275' 
65528                 WHEN 17 THEN '275' 
65529                 WHEN 18 THEN '275' 
65530                 
65531                 ELSE null
65532               END                           source_application_id
65533             , 'S'             source_type_code
65534             , CASE r
65535                 WHEN 1 THEN 'COST_CCID' 
65536                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
65537                 WHEN 3 THEN 'ADJ_COST_CCID' 
65538                 WHEN 4 THEN 'COST_CLEARING_CCID' 
65539                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
65540                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
65541                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
65542                 WHEN 8 THEN 'ENTERED_RAW_COST' 
65543                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
65544                 WHEN 10 THEN 'ACCT_RAW_COST' 
65545                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
65546                 WHEN 12 THEN 'EXCHANGE_RATE' 
65547                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
65548                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
65549                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
65550                 WHEN 16 THEN 'LINE_NUMBER' 
65551                 WHEN 17 THEN 'LINE_TYPE' 
65552                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
65553                 
65554                 ELSE null
65555               END                           source_code
65556             , CASE r
65557                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
65558                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
65559                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
65560                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
65561                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
65562                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
65563                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
65564                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
65565                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
65566                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
65567                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
65568                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
65569                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
65570                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
65571                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
65572                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
65573                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
65574                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
65575                 
65576                 ELSE null
65577               END                           source_value
65578             , CASE r
65579                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
65580                           103371
65581                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
65582                          ,'ALLOW_OVERRIDE_CCID_FLAG'
65583                          ,'S'
65584                          ,275)
65585                 WHEN 17 THEN fvl34.meaning
65586                 
65587                 ELSE null
65588               END               source_meaning
65589          FROM  xla_events_gt     xet  
65590         , PA_XLA_CDL_LINES_V  l1
65591   , fnd_lookup_values    fvl34
65592             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
65593         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
65594           AND xet.event_class_code = C_EVENT_CLASS_CODE
65595             AND l1.event_id          = xet.event_id
65596    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
65597   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
65598   AND fvl34.view_application_id(+) = 275
65602 ;
65599   AND fvl34.language(+)            = USERENV('LANG')
65600   
65601 )
65603 --
65604 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65605 
65606       trace
65607          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
65608          ,p_level    => C_LEVEL_STATEMENT
65609          ,p_module   => l_log_module);
65610 
65611 END IF;
65612 
65613 
65614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65615       trace
65616          (p_msg      => 'END of insert_sources_117'
65617          ,p_level    => C_LEVEL_PROCEDURE
65618          ,p_module   => l_log_module);
65619 END IF;
65620 EXCEPTION
65621   WHEN xla_exceptions_pkg.application_exception THEN
65622       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
65623             trace
65624                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
65625                ,p_level    => C_LEVEL_EXCEPTION
65626                ,p_module   => l_log_module);
65627       END IF;
65628       RAISE;
65629   WHEN OTHERS THEN
65630       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
65631             trace
65632                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
65633                ,p_level    => C_LEVEL_EXCEPTION
65634                ,p_module   => l_log_module);
65635        END IF;
65636        xla_exceptions_pkg.raise_message
65637            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_117');
65638 END insert_sources_117;
65639 --
65640 
65641 ---------------------------------------
65642 --
65643 -- PRIVATE FUNCTION
65644 --         EventClass_117
65645 --
65646 ----------------------------------------
65647 --
65648 FUNCTION EventClass_117
65649        (p_application_id         IN NUMBER
65650        ,p_base_ledger_id         IN NUMBER
65651        ,p_target_ledger_id       IN NUMBER
65652        ,p_language               IN VARCHAR2
65653        ,p_currency_code          IN VARCHAR2
65654        ,p_sla_ledger_id          IN NUMBER
65655        ,p_pad_start_date         IN DATE
65656        ,p_pad_end_date           IN DATE
65657        ,p_primary_ledger_id      IN NUMBER)
65658 RETURN BOOLEAN IS
65659 --
65660 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ADJ_ALL';
65661 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LABOR_COST_ADJ';
65662 
65663 l_calculate_acctd_flag   VARCHAR2(1) :='N';
65664 l_calculate_g_l_flag     VARCHAR2(1) :='N';
65665 --
65666 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65667 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65668 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65669 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65670 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65671 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65672 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65673 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65674 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65675 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65676 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65677 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65678 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65679 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65680 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65681 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65682 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65683 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65684 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65685 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65686 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65687 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65688 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
65689 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65690 
65691 l_event_id                             NUMBER;
65692 l_previous_event_id                    NUMBER;
65693 l_first_event_id                       NUMBER;
65694 l_last_event_id                        NUMBER;
65695 
65696 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
65697 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
65698 --
65699 --
65700 l_result                    BOOLEAN := TRUE;
65701 l_rows                      NUMBER  := 1000;
65702 l_event_type_name           VARCHAR2(80) := 'All';
65703 l_event_class_name          VARCHAR2(80) := 'Labor Cost Adjustment';
65704 l_description               VARCHAR2(4000);
65705 l_transaction_reversal      NUMBER;
65706 l_ae_header_id              NUMBER;
65707 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
65708 l_log_module                VARCHAR2(240);
65709 --
65710 l_acct_reversal_source      VARCHAR2(30);
65711 l_trx_reversal_source       VARCHAR2(30);
65712 
65713 l_continue_with_lines       BOOLEAN := TRUE;
65714 --
65715 l_acc_rev_gl_date_source    DATE;                      -- 4262811
65716 --
65717 type t_array_event_id is table of number index by binary_integer;
65718 
65719 l_rec_array_event                    t_rec_array_event;
65720 l_null_rec_array_event               t_rec_array_event;
65721 l_array_ae_header_id                 xla_number_array_type;
65722 l_actual_flag                        VARCHAR2(1) := NULL;
65723 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
65727 --
65724 l_balance_type_code                  VARCHAR2(1) :=NULL;
65725 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
65726 
65728 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
65729 --
65730 
65731 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
65732 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
65733 
65734 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
65735 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
65736 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
65737 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
65738 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
65739 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
65740 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
65741 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
65742 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
65743 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
65744 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
65745 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
65746 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
65747 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
65748 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
65749 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
65750 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
65751 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
65752 
65753 l_array_source_32              t_array_source_32;
65754 l_array_source_88              t_array_source_88;
65755 
65756 l_array_source_3      t_array_source_3;
65757 l_array_source_4      t_array_source_4;
65758 l_array_source_5      t_array_source_5;
65759 l_array_source_6      t_array_source_6;
65760 l_array_source_7      t_array_source_7;
65761 l_array_source_22      t_array_source_22;
65762 l_array_source_23      t_array_source_23;
65763 l_array_source_24      t_array_source_24;
65764 l_array_source_25      t_array_source_25;
65765 l_array_source_26      t_array_source_26;
65766 l_array_source_27      t_array_source_27;
65767 l_array_source_28      t_array_source_28;
65768 l_array_source_29      t_array_source_29;
65769 l_array_source_30      t_array_source_30;
65770 l_array_source_31      t_array_source_31;
65771 l_array_source_33      t_array_source_33;
65772 l_array_source_34      t_array_source_34;
65773 l_array_source_34_meaning      t_array_lookup_meaning;
65774 l_array_source_35      t_array_source_35;
65775 
65776 --
65777 CURSOR header_cur
65778 IS
65779 SELECT /*+ leading(xet) cardinality(xet,1) */
65780 -- Event Class Code: LABOR_COST_ADJ
65781     xet.entity_id
65782    ,xet.legal_entity_id
65783    ,xet.entity_code
65784    ,xet.transaction_number
65785    ,xet.event_id
65786    ,xet.event_class_code
65787    ,xet.event_type_code
65788    ,xet.event_number
65789    ,xet.event_date
65790    ,xet.transaction_date
65791    ,xet.reference_num_1
65792    ,xet.reference_num_2
65793    ,xet.reference_num_3
65794    ,xet.reference_num_4
65795    ,xet.reference_char_1
65796    ,xet.reference_char_2
65797    ,xet.reference_char_3
65798    ,xet.reference_char_4
65799    ,xet.reference_date_1
65800    ,xet.reference_date_2
65801    ,xet.reference_date_3
65802    ,xet.reference_date_4
65803    ,xet.event_created_by
65804    ,xet.budgetary_control_flag 
65805   , h2.EXPENDITURE_ITEM_ID    source_32
65806   , h2.GL_DATE    source_88
65807   FROM xla_events_gt     xet 
65808   , PA_XLA_EXP_HEADER_V  h2
65809  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
65810    and xet.event_class_code = C_EVENT_CLASS_CODE
65811    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
65812 
65813  ORDER BY event_id
65814 ;
65815 
65816 
65817 --
65818 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
65819 IS
65820 SELECT  /*+ leading(xet) cardinality(xet,1) */
65821 -- Event Class Code: LABOR_COST_ADJ
65822     xet.entity_id
65823    ,xet.legal_entity_id
65824    ,xet.entity_code
65825    ,xet.transaction_number
65826    ,xet.event_id
65827    ,xet.event_class_code
65828    ,xet.event_type_code
65829    ,xet.event_number
65830    ,xet.event_date
65831    ,xet.transaction_date
65832    ,xet.reference_num_1
65833    ,xet.reference_num_2
65834    ,xet.reference_num_3
65835    ,xet.reference_num_4
65836    ,xet.reference_char_1
65837    ,xet.reference_char_2
65838    ,xet.reference_char_3
65839    ,xet.reference_char_4
65840    ,xet.reference_date_1
65841    ,xet.reference_date_2
65842    ,xet.reference_date_3
65843    ,xet.reference_date_4
65844    ,xet.event_created_by
65845    ,xet.budgetary_control_flag
65846  , l1.LINE_NUMBER  
65847   , l1.COST_CCID    source_3
65848   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
65849   , l1.ADJ_COST_CCID    source_5
65850   , l1.COST_CLEARING_CCID    source_6
65851   , l1.ADJ_COST_CLEARING_CCID    source_7
65852   , l1.REVERSING_LINE_FLAG    source_22
65853   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
65857   , l1.EXCHANGE_RATE_DATE    source_27
65854   , l1.ENTERED_RAW_COST    source_24
65855   , l1.ENTERED_CURRENCY_CODE    source_25
65856   , l1.ACCT_RAW_COST    source_26
65858   , l1.EXCHANGE_RATE    source_28
65859   , l1.EXCHANGE_RATE_TYPE    source_29
65860   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
65861   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
65862   , l1.LINE_NUMBER    source_33
65863   , l1.LINE_TYPE    source_34
65864   , fvl34.meaning   source_34_meaning
65865   , l1.LINE_NUM_REVERSED    source_35
65866   FROM xla_events_gt     xet 
65867   , PA_XLA_CDL_LINES_V  l1
65868   , fnd_lookup_values    fvl34
65869  WHERE xet.event_id between x_first_event_id and x_last_event_id
65870    and xet.event_date between p_pad_start_date and p_pad_end_date
65871    and xet.event_class_code = C_EVENT_CLASS_CODE
65872    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
65873    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
65874   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
65875   AND fvl34.view_application_id(+) = 275
65876   AND fvl34.language(+)            = USERENV('LANG')
65877   ;
65878 
65879 --
65880 BEGIN
65881 IF g_log_enabled THEN
65882    l_log_module := C_DEFAULT_MODULE||'.EventClass_117';
65883 END IF;
65884 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65885    trace
65886       (p_msg      => 'BEGIN of EventClass_117'
65887       ,p_level    => C_LEVEL_PROCEDURE
65888       ,p_module   => l_log_module);
65889 END IF;
65890 
65891 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65892    trace
65893       (p_msg      => 'p_application_id = '||p_application_id||
65894                      ' - p_base_ledger_id = '||p_base_ledger_id||
65895                      ' - p_target_ledger_id  = '||p_target_ledger_id||
65896                      ' - p_language = '||p_language||
65897                      ' - p_currency_code = '||p_currency_code||
65898                      ' - p_sla_ledger_id = '||p_sla_ledger_id
65899       ,p_level    => C_LEVEL_STATEMENT
65900       ,p_module   => l_log_module);
65901 END IF;
65902 --
65903 -- initialze arrays
65904 --
65905 g_array_event.DELETE;
65906 l_rec_array_event := l_null_rec_array_event;
65907 --
65908 --------------------------------------
65909 -- 4262811 Initialze MPA Line Number
65910 --------------------------------------
65911 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
65912 
65913 --
65914 
65915 --
65916 OPEN header_cur;
65917 --
65918 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65919    trace
65920    (p_msg      => 'SQL - FETCH header_cur'
65921    ,p_level    => C_LEVEL_STATEMENT
65922    ,p_module   => l_log_module);
65923 END IF;
65924 --
65925 LOOP
65926 FETCH header_cur BULK COLLECT INTO
65927         l_array_entity_id
65928       , l_array_legal_entity_id
65929       , l_array_entity_code
65930       , l_array_transaction_num
65931       , l_array_event_id
65932       , l_array_class_code
65933       , l_array_event_type
65934       , l_array_event_number
65935       , l_array_event_date
65936       , l_array_transaction_date
65937       , l_array_reference_num_1
65938       , l_array_reference_num_2
65939       , l_array_reference_num_3
65940       , l_array_reference_num_4
65941       , l_array_reference_char_1
65942       , l_array_reference_char_2
65943       , l_array_reference_char_3
65944       , l_array_reference_char_4
65945       , l_array_reference_date_1
65946       , l_array_reference_date_2
65947       , l_array_reference_date_3
65948       , l_array_reference_date_4
65949       , l_array_event_created_by
65950       , l_array_budgetary_control_flag 
65951       , l_array_source_32
65952       , l_array_source_88
65953       LIMIT l_rows;
65954 --
65955 IF (C_LEVEL_EVENT >= g_log_level) THEN
65956    trace
65957    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
65958    ,p_level    => C_LEVEL_EVENT
65959    ,p_module   => l_log_module);
65960 END IF;
65961 --
65962 EXIT WHEN l_array_entity_id.COUNT = 0;
65963 
65964 -- initialize arrays
65965 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
65966 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
65967 
65968 --
65969 -- Bug 4458708
65970 --
65971 XLA_AE_LINES_PKG.g_LineNumber := 0;
65972 
65973 
65974 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
65975 g_last_hdr_idx := l_array_event_id.LAST;
65976 --
65977 -- loop for the headers. Each iteration is for each header extract row
65978 -- fetched in header cursor
65979 --
65980 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
65981 
65982 --
65983 -- set event info as cache for other routines to refer event attributes
65984 --
65985 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
65986    (p_application_id           => p_application_id
65987    ,p_primary_ledger_id        => p_primary_ledger_id
65988    ,p_base_ledger_id           => p_base_ledger_id
65989    ,p_target_ledger_id         => p_target_ledger_id
65990    ,p_entity_id                => l_array_entity_id(hdr_idx)
65991    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
65992    ,p_entity_code              => l_array_entity_code(hdr_idx)
65993    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
65994    ,p_event_id                 => l_array_event_id(hdr_idx)
65995    ,p_event_class_code         => l_array_class_code(hdr_idx)
65996    ,p_event_type_code          => l_array_event_type(hdr_idx)
65997    ,p_event_number             => l_array_event_number(hdr_idx)
65998    ,p_event_date               => l_array_event_date(hdr_idx)
65999    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
66000    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
66004    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
66001    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
66002    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
66003    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
66005    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
66006    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
66007    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
66008    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
66009    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
66010    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
66011    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
66012    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
66013    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
66014 
66015 --
66016 -- set the status of entry to C_VALID (0)
66017 --
66018 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
66019 
66020 --
66021 -- initialize a row for ae header
66022 --
66023 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
66024 
66025 l_event_id := l_array_event_id(hdr_idx);
66026 
66027 --
66028 -- storing the hdr_idx for event. May be used by line cursor.
66029 --
66030 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
66031 
66032 --
66033 -- store sources from header extract. This can be improved to
66034 -- store only those sources from header extract that may be used in lines
66035 --
66036 
66037 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
66038 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
66039 
66040 --
66041 -- initilaize the status of ae headers for diffrent balance types
66042 -- the status is initialised to C_NOT_CREATED (2)
66043 --
66044 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
66045 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
66046 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
66047 
66048 --
66049 -- call api to validate and store accounting attributes for header
66050 --
66051 
66052 ------------------------------------------------------------
66053 -- Accrual Reversal : to get date for Standard Source (NONE)
66054 ------------------------------------------------------------
66055 l_acc_rev_gl_date_source := NULL;
66056 
66057      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
66058       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
66059 
66060 
66061 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
66062 
66063 XLA_AE_HEADER_PKG.SetJeCategoryName;
66064 
66065 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
66066 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
66067 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
66068 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
66069 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
66070 
66071 
66072 -- No header level analytical criteria
66073 
66074 --
66075 --accounting attribute enhancement, bug 3612931
66076 --
66077 l_trx_reversal_source := SUBSTR(NULL, 1,30);
66078 
66079 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
66080    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
66081 
66082    xla_accounting_err_pkg.build_message
66083       (p_appli_s_name            => 'XLA'
66084       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
66085       ,p_token_1                 => 'ACCT_ATTR_NAME'
66086       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
66087       ,p_token_2                 => 'PRODUCT_NAME'
66088       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
66089       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
66090       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
66091       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
66092 
66093 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
66094    --
66095    -- following sets the accounting attributes needed to reverse
66096    -- accounting for a distributeion
66097    --
66098    xla_ae_lines_pkg.SetTrxReversalAttrs
66099       (p_event_id              => l_event_id
66100       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
66101       ,p_trx_reversal_source   => l_trx_reversal_source);
66102 
66103 END IF;
66104 
66105 
66106 ----------------------------------------------------------------
66107 -- 4262811 -  update the header statuses to invalid in need be
66108 ----------------------------------------------------------------
66109 --
66110 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
66111 
66112 
66113   -----------------------------------------------
66114   -- No accrual reversal for the event class/type
66115   -----------------------------------------------
66116 ----------------------------------------------------------------
66117 
66118 --
66119 -- this ends the header loop iteration for one bulk fetch
66120 --
66121 END LOOP;
66122 
66123 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
66124 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
66125 
66126 --
66127 -- insert dummy rows into lines gt table that were created due to
66131    l_result := XLA_AE_LINES_PKG.InsertLines;
66128 -- transaction reversals
66129 --
66130 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
66132 END IF;
66133 
66134 --
66135 -- reset the temp_line_num for each set of events fetched from header
66136 -- cursor rather than doing it for each new event in line cursor
66137 -- Bug 3939231
66138 --
66139 xla_ae_lines_pkg.g_temp_line_num := 0;
66140 
66141 
66142 
66143 --
66144 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
66145 --
66146 --
66147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66148 
66149       trace
66150          (p_msg      => 'SQL - FETCH line_cur'
66151          ,p_level    => C_LEVEL_STATEMENT
66152          ,p_module   => l_log_module);
66153 
66154 END IF;
66155 --
66156 --
66157 LOOP
66158   --
66159   FETCH line_cur BULK COLLECT INTO
66160         l_array_entity_id
66161       , l_array_legal_entity_id
66162       , l_array_entity_code
66163       , l_array_transaction_num
66164       , l_array_event_id
66165       , l_array_class_code
66166       , l_array_event_type
66167       , l_array_event_number
66168       , l_array_event_date
66169       , l_array_transaction_date
66170       , l_array_reference_num_1
66171       , l_array_reference_num_2
66172       , l_array_reference_num_3
66173       , l_array_reference_num_4
66174       , l_array_reference_char_1
66175       , l_array_reference_char_2
66176       , l_array_reference_char_3
66177       , l_array_reference_char_4
66178       , l_array_reference_date_1
66179       , l_array_reference_date_2
66180       , l_array_reference_date_3
66181       , l_array_reference_date_4
66182       , l_array_event_created_by
66183       , l_array_budgetary_control_flag
66184       , l_array_extract_line_num 
66185       , l_array_source_3
66186       , l_array_source_4
66187       , l_array_source_5
66188       , l_array_source_6
66189       , l_array_source_7
66190       , l_array_source_22
66191       , l_array_source_23
66192       , l_array_source_24
66193       , l_array_source_25
66194       , l_array_source_26
66195       , l_array_source_27
66196       , l_array_source_28
66197       , l_array_source_29
66198       , l_array_source_30
66199       , l_array_source_31
66200       , l_array_source_33
66201       , l_array_source_34
66202       , l_array_source_34_meaning
66203       , l_array_source_35
66204       LIMIT l_rows;
66205 
66206   --
66207   IF (C_LEVEL_EVENT >= g_log_level) THEN
66208             trace
66209                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
66210                ,p_level    => C_LEVEL_EVENT
66211                ,p_module   => l_log_module);
66212   END IF;
66213   --
66214   EXIT WHEN l_array_entity_id.count = 0;
66215 
66216   XLA_AE_LINES_PKG.g_rec_lines := null;
66217 
66218 --
66219 -- Bug 4458708
66220 --
66221 XLA_AE_LINES_PKG.g_LineNumber := 0;
66222 --
66223 --
66224 
66225 FOR Idx IN 1..l_array_event_id.count LOOP
66226    --
66227    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
66228    --
66229    l_event_id := l_array_event_id(idx);  -- 5648433
66230 
66231    --
66232    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
66233    --
66234 
66235    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
66236              (g_array_event(l_event_id).array_value_num('header_index'))
66237          ,'N'
66238          ) <> 'Y'
66239    THEN
66240       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66241          trace
66242             (p_msg      => 'Trancaction revesal option is not Y '
66243             ,p_level    => C_LEVEL_STATEMENT
66244             ,p_module   => l_log_module);
66245       END IF;
66246 
66247 --
66248 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
66249 --
66250 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
66251 --
66252 -- set event info as cache for other routines to refer event attributes
66253 --
66254 
66255 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
66256    l_previous_event_id := l_event_id;
66257 
66258    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
66259       (p_application_id           => p_application_id
66260       ,p_primary_ledger_id        => p_primary_ledger_id
66261       ,p_base_ledger_id           => p_base_ledger_id
66262       ,p_target_ledger_id         => p_target_ledger_id
66263       ,p_entity_id                => l_array_entity_id(Idx)
66264       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
66265       ,p_entity_code              => l_array_entity_code(Idx)
66266       ,p_transaction_num          => l_array_transaction_num(Idx)
66267       ,p_event_id                 => l_array_event_id(Idx)
66268       ,p_event_class_code         => l_array_class_code(Idx)
66269       ,p_event_type_code          => l_array_event_type(Idx)
66270       ,p_event_number             => l_array_event_number(Idx)
66271       ,p_event_date               => l_array_event_date(Idx)
66272       ,p_transaction_date         => l_array_transaction_date(Idx)
66273       ,p_reference_num_1          => l_array_reference_num_1(Idx)
66274       ,p_reference_num_2          => l_array_reference_num_2(Idx)
66275       ,p_reference_num_3          => l_array_reference_num_3(Idx)
66276       ,p_reference_num_4          => l_array_reference_num_4(Idx)
66277       ,p_reference_char_1         => l_array_reference_char_1(Idx)
66278       ,p_reference_char_2         => l_array_reference_char_2(Idx)
66279       ,p_reference_char_3         => l_array_reference_char_3(Idx)
66283       ,p_reference_date_3         => l_array_reference_date_3(Idx)
66280       ,p_reference_char_4         => l_array_reference_char_4(Idx)
66281       ,p_reference_date_1         => l_array_reference_date_1(Idx)
66282       ,p_reference_date_2         => l_array_reference_date_2(Idx)
66284       ,p_reference_date_4         => l_array_reference_date_4(Idx)
66285       ,p_event_created_by         => l_array_event_created_by(Idx)
66286       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
66287        --
66288 END IF;
66289 
66290 
66291 
66292 --
66293 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
66294 
66295 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
66296 
66297 IF l_continue_with_lines THEN
66298    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
66299       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
66300 
66301       xla_accounting_err_pkg.build_message
66302          (p_appli_s_name            => 'XLA'
66303          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
66304          ,p_token_1                 => 'LINE_NUMBER'
66305          ,p_value_1                 => l_array_extract_line_num(Idx)
66306          ,p_token_2                 => 'PRODUCT_NAME'
66307          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
66308          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
66309          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
66310          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
66311 
66312    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
66313       --
66314       -- following sets the accounting attributes needed to reverse
66315       -- accounting for a distributeion
66316       --
66317 
66318       --
66319       -- 5217187
66320       --
66321       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
66322       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
66323                                        g_array_event(l_event_id).array_value_num('header_index'));
66324       --
66325       --
66326 
66327       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
66328       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
66329       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
66330       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
66331       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
66332       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
66333       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
66334       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
66335       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
66336       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
66337       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
66338       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
66339       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
66340       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
66341       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
66342       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
66343       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
66344       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
66345       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
66346       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
66347       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
66348       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
66349       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
66350       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
66351       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
66352       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
66353       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
66354       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
66355       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
66356       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
66357       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
66358       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
66359       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
66360       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
66364       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
66361       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
66362       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
66363       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
66365       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
66366       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
66367       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
66368       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
66369       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
66370       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
66371       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
66372       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
66373       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
66374       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
66375 
66376 
66377       xla_ae_lines_pkg.SetAcctReversalAttrs
66378          (p_event_id             => l_event_id
66379          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
66380          ,p_calculate_acctd_flag => l_calculate_acctd_flag
66381          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
66382    END IF;
66383 
66384    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
66385        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
66386 
66387 --
66388 AcctLineType_51 (
66389  p_application_id  => p_application_id
66390  ,p_event_id     => l_event_id
66391  ,p_calculate_acctd_flag => l_calculate_acctd_flag
66392  ,p_calculate_g_l_flag => l_calculate_g_l_flag
66393  ,p_actual_flag => l_actual_flag
66394  ,p_balance_type_code => l_balance_type_code
66395  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
66396  
66397  , p_source_3 => l_array_source_3(Idx)
66398  , p_source_4 => l_array_source_4(Idx)
66399  , p_source_5 => l_array_source_5(Idx)
66400  , p_source_6 => l_array_source_6(Idx)
66401  , p_source_22 => l_array_source_22(Idx)
66402  , p_source_23 => l_array_source_23(Idx)
66403  , p_source_24 => l_array_source_24(Idx)
66404  , p_source_25 => l_array_source_25(Idx)
66405  , p_source_26 => l_array_source_26(Idx)
66406  , p_source_27 => l_array_source_27(Idx)
66407  , p_source_28 => l_array_source_28(Idx)
66408  , p_source_29 => l_array_source_29(Idx)
66409  , p_source_30 => l_array_source_30(Idx)
66410  , p_source_31 => l_array_source_31(Idx)
66411  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
66412  , p_source_33 => l_array_source_33(Idx)
66413  , p_source_34 => l_array_source_34(Idx)
66414  , p_source_34_meaning => l_array_source_34_meaning(Idx)
66415  , p_source_35 => l_array_source_35(Idx)
66416  );
66417 If(l_balance_type_code = 'A') THEN
66418   l_actual_gain_loss_ref := l_gain_or_loss_ref;
66419 END IF;
66420 
66421 --
66422 
66423 
66424 --
66425 AcctLineType_60 (
66426  p_application_id  => p_application_id
66427  ,p_event_id     => l_event_id
66428  ,p_calculate_acctd_flag => l_calculate_acctd_flag
66429  ,p_calculate_g_l_flag => l_calculate_g_l_flag
66430  ,p_actual_flag => l_actual_flag
66431  ,p_balance_type_code => l_balance_type_code
66432  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
66433  
66434  , p_source_3 => l_array_source_3(Idx)
66435  , p_source_4 => l_array_source_4(Idx)
66436  , p_source_6 => l_array_source_6(Idx)
66437  , p_source_7 => l_array_source_7(Idx)
66438  , p_source_22 => l_array_source_22(Idx)
66439  , p_source_23 => l_array_source_23(Idx)
66440  , p_source_24 => l_array_source_24(Idx)
66441  , p_source_25 => l_array_source_25(Idx)
66442  , p_source_26 => l_array_source_26(Idx)
66443  , p_source_27 => l_array_source_27(Idx)
66444  , p_source_28 => l_array_source_28(Idx)
66445  , p_source_29 => l_array_source_29(Idx)
66446  , p_source_30 => l_array_source_30(Idx)
66447  , p_source_31 => l_array_source_31(Idx)
66448  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
66449  , p_source_33 => l_array_source_33(Idx)
66450  , p_source_34 => l_array_source_34(Idx)
66451  , p_source_34_meaning => l_array_source_34_meaning(Idx)
66452  , p_source_35 => l_array_source_35(Idx)
66453  );
66454 If(l_balance_type_code = 'A') THEN
66455   l_actual_gain_loss_ref := l_gain_or_loss_ref;
66456 END IF;
66457 
66458 --
66459 
66460       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
66461       -- or secondary ledger that has different currency with primary
66462       -- or alc that is calculated by sla
66463       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
66464             (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'))
66465 
66466 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
66467 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
66468           AND (l_actual_flag = 'A')) THEN
66469         XLA_AE_LINES_PKG.CreateGainOrLossLines(
66470           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
66471          ,p_application_id   => p_application_id
66472          ,p_amb_context_code => 'DEFAULT'
66473          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
66474          ,p_event_class_code => C_EVENT_CLASS_CODE
66475          ,p_event_type_code  => C_EVENT_TYPE_CODE
66476          
66477          ,p_gain_ccid        => -1
66478          ,p_loss_ccid        => -1
66479 
66480          ,p_actual_flag      => l_actual_flag
66481          ,p_enc_flag         => null
66485       END IF;
66482          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
66483          ,p_enc_g_l_ref      => null
66484          );
66486    END IF;
66487 END IF;
66488 
66489    ELSE
66490       --
66491       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
66492       --
66493       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66494          trace
66495             (p_msg      => 'Trancaction revesal option is Y'
66496             ,p_level    => C_LEVEL_STATEMENT
66497             ,p_module   => l_log_module);
66498       END IF;
66499    END IF;
66500 
66501 END LOOP;
66502 l_result := XLA_AE_LINES_PKG.InsertLines ;
66503 end loop;
66504 close line_cur;
66505 
66506 
66507 --
66508 -- insert headers into xla_ae_headers_gt table
66509 --
66510 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
66511 
66512 -- insert into errors table here.
66513 
66514 END LOOP;
66515 
66516 --
66517 -- 4865292
66518 --
66519 -- Compare g_hdr_extract_count with event count in
66520 -- CreateHeadersAndLines.
66521 --
66522 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
66523 
66524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66525    trace (p_msg     => '# rows extracted from header extract objects '
66526                     || ' (running total): '
66527                     || g_hdr_extract_count
66528          ,p_level   => C_LEVEL_STATEMENT
66529          ,p_module  => l_log_module);
66530 END IF;
66531 
66532 CLOSE header_cur;
66533 --
66534 
66535 --
66536 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66537    trace
66538       (p_msg      => 'END of EventClass_117'
66539       ,p_level    => C_LEVEL_PROCEDURE
66540       ,p_module   => l_log_module);
66541 END IF;
66542 --
66543 RETURN l_result;
66544 EXCEPTION
66545 WHEN xla_exceptions_pkg.application_exception THEN
66546    
66547 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
66548 
66549    
66550 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
66551 
66552    RAISE;
66553 WHEN OTHERS THEN
66554    xla_exceptions_pkg.raise_message
66555       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_117');
66556 END EventClass_117;
66557 --
66558 
66559 ---------------------------------------
66560 --
66561 -- PRIVATE PROCEDURE
66562 --         insert_sources_118
66563 --
66564 ----------------------------------------
66565 --
66566 PROCEDURE insert_sources_118(
66567                                 p_target_ledger_id       IN NUMBER
66568                               , p_language               IN VARCHAR2
66569                               , p_sla_ledger_id          IN NUMBER
66570                               , p_pad_start_date         IN DATE
66571                               , p_pad_end_date           IN DATE
66572                          )
66573 IS
66574 
66575 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ALL';
66576 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LABOR_COST';
66577 p_apps_owner                   VARCHAR2(30);
66578 l_log_module                   VARCHAR2(240);
66579 BEGIN
66580 IF g_log_enabled THEN
66581       l_log_module := C_DEFAULT_MODULE||'.insert_sources_118';
66582 END IF;
66583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66584 
66585       trace
66586          (p_msg      => 'BEGIN of insert_sources_118'
66587          ,p_level    => C_LEVEL_PROCEDURE
66588          ,p_module   => l_log_module);
66589 
66590 END IF;
66591 
66592 -- select APPS owner
66593 SELECT oracle_username
66594   INTO p_apps_owner
66595   FROM fnd_oracle_userid
66596  WHERE read_only_flag = 'U'
66597 ;
66598 
66599 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66600       trace
66601          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
66602                         ' - p_language = '||p_language||
66603                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
66604                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
66605                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
66606                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
66607          ,p_level    => C_LEVEL_STATEMENT
66608          ,p_module   => l_log_module);
66609 END IF;
66610 
66611 
66612 --
66613 INSERT INTO xla_diag_sources --hdr2
66614 (
66615         event_id
66616       , ledger_id
66617       , sla_ledger_id
66618       , description_language
66619       , object_name
66620       , object_type_code
66621       , line_number
66622       , source_application_id
66623       , source_type_code
66624       , source_code
66625       , source_value
66626       , source_meaning
66627       , created_by
66628       , creation_date
66629       , last_update_date
66630       , last_updated_by
66631       , last_update_login
66632       , program_update_date
66633       , program_application_id
66634       , program_id
66635       , request_id
66636 )
66637 SELECT
66638         event_id
66639       , p_target_ledger_id
66640       , p_sla_ledger_id
66641       , p_language
66642       , object_name
66643       , object_type_code
66644       , line_number
66645       , source_application_id
66646       , source_type_code
66647       , source_code
66648       , SUBSTR(source_value ,1,1996)
66649       , SUBSTR(source_meaning ,1,200)
66650       , xla_environment_pkg.g_Usr_Id
66651       , TRUNC(SYSDATE)
66652       , TRUNC(SYSDATE)
66653       , xla_environment_pkg.g_Usr_Id
66654       , xla_environment_pkg.g_Login_Id
66655       , TRUNC(SYSDATE)
66656       , xla_environment_pkg.g_Prog_Appl_Id
66657       , xla_environment_pkg.g_Prog_Id
66658       , xla_environment_pkg.g_Req_Id
66659   FROM (
66660        SELECT xet.event_id                  event_id
66661             , 0                          line_number
66662             , CASE r
66663                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
66664                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
66665                 
66666                ELSE null
66667               END                           object_name
66668             , CASE r
66669                 WHEN 1 THEN 'HEADER' 
66670                 WHEN 2 THEN 'HEADER' 
66671                 
66672                 ELSE null
66673               END                           object_type_code
66674             , CASE r
66675                 WHEN 1 THEN '275' 
66676                 WHEN 2 THEN '275' 
66677                 
66678                 ELSE null
66679               END                           source_application_id
66680             , 'S'             source_type_code
66681             , CASE r
66682                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
66683                 WHEN 2 THEN 'GL_DATE' 
66684                 
66685                 ELSE null
66686               END                           source_code
66687             , CASE r
66688                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
66689                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
66690                 
66691                 ELSE null
66692               END                           source_value
66693             , null              source_meaning
66694          FROM xla_events_gt     xet  
66695       , PA_XLA_EXP_HEADER_V  h2
66696              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
66697          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
66698            AND xet.event_class_code = C_EVENT_CLASS_CODE
66702 ;
66699               AND h2.event_id = xet.event_id
66700 
66701 )
66703 --
66704 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66705 
66706       trace
66707          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
66708          ,p_level    => C_LEVEL_STATEMENT
66709          ,p_module   => l_log_module);
66710 
66711 END IF;
66712 --
66713 
66714 
66715 
66716 --
66717 INSERT INTO xla_diag_sources  --line2
66718 (
66719         event_id
66720       , ledger_id
66721       , sla_ledger_id
66722       , description_language
66723       , object_name
66724       , object_type_code
66725       , line_number
66726       , source_application_id
66727       , source_type_code
66728       , source_code
66729       , source_value
66730       , source_meaning
66731       , created_by
66732       , creation_date
66733       , last_update_date
66734       , last_updated_by
66735       , last_update_login
66736       , program_update_date
66737       , program_application_id
66738       , program_id
66739       , request_id
66740 )
66741 SELECT  event_id
66742       , p_target_ledger_id
66743       , p_sla_ledger_id
66744       , p_language
66745       , object_name
66746       , object_type_code
66747       , line_number
66748       , source_application_id
66749       , source_type_code
66750       , source_code
66751       , SUBSTR(source_value,1,1996)
66752       , SUBSTR(source_meaning ,1,200)
66753       , xla_environment_pkg.g_Usr_Id
66754       , TRUNC(SYSDATE)
66755       , TRUNC(SYSDATE)
66756       , xla_environment_pkg.g_Usr_Id
66757       , xla_environment_pkg.g_Login_Id
66758       , TRUNC(SYSDATE)
66759       , xla_environment_pkg.g_Prog_Appl_Id
66760       , xla_environment_pkg.g_Prog_Id
66761       , xla_environment_pkg.g_Req_Id
66762   FROM (
66763        SELECT xet.event_id                  event_id
66764             , l1.line_number                 line_number
66765             , CASE r
66766                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
66767                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
66768                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
66769                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
66770                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
66771                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
66772                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
66773                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
66774                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
66775                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
66776                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
66777                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
66778                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
66779                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
66780                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
66784                 
66781                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
66782                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
66783                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
66785                ELSE null
66786               END                           object_name
66787             , CASE r
66788                 WHEN 1 THEN 'LINE' 
66789                 WHEN 2 THEN 'LINE' 
66790                 WHEN 3 THEN 'LINE' 
66791                 WHEN 4 THEN 'LINE' 
66792                 WHEN 5 THEN 'LINE' 
66793                 WHEN 6 THEN 'LINE' 
66794                 WHEN 7 THEN 'LINE' 
66795                 WHEN 8 THEN 'LINE' 
66796                 WHEN 9 THEN 'LINE' 
66797                 WHEN 10 THEN 'LINE' 
66798                 WHEN 11 THEN 'LINE' 
66799                 WHEN 12 THEN 'LINE' 
66800                 WHEN 13 THEN 'LINE' 
66801                 WHEN 14 THEN 'LINE' 
66802                 WHEN 15 THEN 'LINE' 
66803                 WHEN 16 THEN 'LINE' 
66804                 WHEN 17 THEN 'LINE' 
66805                 WHEN 18 THEN 'LINE' 
66806                 
66807                 ELSE null
66808               END                           object_type_code
66809             , CASE r
66810                 WHEN 1 THEN '275' 
66811                 WHEN 2 THEN '275' 
66812                 WHEN 3 THEN '275' 
66813                 WHEN 4 THEN '275' 
66814                 WHEN 5 THEN '275' 
66815                 WHEN 6 THEN '275' 
66816                 WHEN 7 THEN '275' 
66817                 WHEN 8 THEN '275' 
66818                 WHEN 9 THEN '275' 
66819                 WHEN 10 THEN '275' 
66820                 WHEN 11 THEN '275' 
66821                 WHEN 12 THEN '275' 
66822                 WHEN 13 THEN '275' 
66823                 WHEN 14 THEN '275' 
66824                 WHEN 15 THEN '275' 
66825                 WHEN 16 THEN '275' 
66826                 WHEN 17 THEN '275' 
66827                 WHEN 18 THEN '275' 
66828                 
66829                 ELSE null
66830               END                           source_application_id
66831             , 'S'             source_type_code
66832             , CASE r
66833                 WHEN 1 THEN 'COST_CCID' 
66834                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
66835                 WHEN 3 THEN 'ADJ_COST_CCID' 
66836                 WHEN 4 THEN 'COST_CLEARING_CCID' 
66837                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
66838                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
66839                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
66840                 WHEN 8 THEN 'ENTERED_RAW_COST' 
66841                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
66842                 WHEN 10 THEN 'ACCT_RAW_COST' 
66843                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
66844                 WHEN 12 THEN 'EXCHANGE_RATE' 
66845                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
66846                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
66847                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
66848                 WHEN 16 THEN 'LINE_NUMBER' 
66849                 WHEN 17 THEN 'LINE_TYPE' 
66850                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
66851                 
66852                 ELSE null
66853               END                           source_code
66854             , CASE r
66855                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
66856                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
66857                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
66858                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
66859                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
66860                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
66861                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
66862                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
66863                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
66864                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
66865                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
66866                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
66867                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
66868                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
66869                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
66870                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
66871                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
66872                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
66873                 
66874                 ELSE null
66875               END                           source_value
66876             , CASE r
66877                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
66878                           103371
66879                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
66880                          ,'ALLOW_OVERRIDE_CCID_FLAG'
66881                          ,'S'
66882                          ,275)
66883                 WHEN 17 THEN fvl34.meaning
66884                 
66885                 ELSE null
66886               END               source_meaning
66887          FROM  xla_events_gt     xet  
66888         , PA_XLA_CDL_LINES_V  l1
66889   , fnd_lookup_values    fvl34
66890             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
66891         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
66892           AND xet.event_class_code = C_EVENT_CLASS_CODE
66893             AND l1.event_id          = xet.event_id
66894    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
66895   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
66896   AND fvl34.view_application_id(+) = 275
66897   AND fvl34.language(+)            = USERENV('LANG')
66898   
66899 )
66900 ;
66901 --
66902 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66903 
66904       trace
66905          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
66906          ,p_level    => C_LEVEL_STATEMENT
66910 
66907          ,p_module   => l_log_module);
66908 
66909 END IF;
66911 
66912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66913       trace
66914          (p_msg      => 'END of insert_sources_118'
66915          ,p_level    => C_LEVEL_PROCEDURE
66916          ,p_module   => l_log_module);
66917 END IF;
66918 EXCEPTION
66919   WHEN xla_exceptions_pkg.application_exception THEN
66920       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66921             trace
66922                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66923                ,p_level    => C_LEVEL_EXCEPTION
66924                ,p_module   => l_log_module);
66925       END IF;
66926       RAISE;
66927   WHEN OTHERS THEN
66928       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66929             trace
66930                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66931                ,p_level    => C_LEVEL_EXCEPTION
66932                ,p_module   => l_log_module);
66933        END IF;
66934        xla_exceptions_pkg.raise_message
66935            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_118');
66936 END insert_sources_118;
66937 --
66938 
66939 ---------------------------------------
66940 --
66941 -- PRIVATE FUNCTION
66942 --         EventClass_118
66943 --
66944 ----------------------------------------
66945 --
66946 FUNCTION EventClass_118
66947        (p_application_id         IN NUMBER
66948        ,p_base_ledger_id         IN NUMBER
66949        ,p_target_ledger_id       IN NUMBER
66950        ,p_language               IN VARCHAR2
66951        ,p_currency_code          IN VARCHAR2
66952        ,p_sla_ledger_id          IN NUMBER
66953        ,p_pad_start_date         IN DATE
66954        ,p_pad_end_date           IN DATE
66955        ,p_primary_ledger_id      IN NUMBER)
66956 RETURN BOOLEAN IS
66957 --
66958 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ALL';
66959 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LABOR_COST';
66960 
66961 l_calculate_acctd_flag   VARCHAR2(1) :='N';
66962 l_calculate_g_l_flag     VARCHAR2(1) :='N';
66963 --
66964 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66965 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66966 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66967 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66968 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66969 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66970 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66971 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66972 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66973 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66974 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66975 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66976 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66977 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66978 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66979 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66980 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66981 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66982 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66983 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66984 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66985 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66986 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
66987 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66988 
66989 l_event_id                             NUMBER;
66990 l_previous_event_id                    NUMBER;
66991 l_first_event_id                       NUMBER;
66992 l_last_event_id                        NUMBER;
66993 
66994 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
66995 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
66996 --
66997 --
66998 l_result                    BOOLEAN := TRUE;
66999 l_rows                      NUMBER  := 1000;
67000 l_event_type_name           VARCHAR2(80) := 'All';
67001 l_event_class_name          VARCHAR2(80) := 'Labor Cost';
67002 l_description               VARCHAR2(4000);
67003 l_transaction_reversal      NUMBER;
67004 l_ae_header_id              NUMBER;
67005 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
67006 l_log_module                VARCHAR2(240);
67007 --
67008 l_acct_reversal_source      VARCHAR2(30);
67009 l_trx_reversal_source       VARCHAR2(30);
67010 
67011 l_continue_with_lines       BOOLEAN := TRUE;
67012 --
67013 l_acc_rev_gl_date_source    DATE;                      -- 4262811
67014 --
67015 type t_array_event_id is table of number index by binary_integer;
67016 
67017 l_rec_array_event                    t_rec_array_event;
67018 l_null_rec_array_event               t_rec_array_event;
67019 l_array_ae_header_id                 xla_number_array_type;
67020 l_actual_flag                        VARCHAR2(1) := NULL;
67021 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
67022 l_balance_type_code                  VARCHAR2(1) :=NULL;
67023 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
67024 
67025 --
67026 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
67027 --
67028 
67029 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
67033 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
67030 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
67031 
67032 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
67034 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
67035 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
67036 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
67037 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
67038 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
67039 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
67040 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
67041 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
67042 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
67043 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
67044 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
67045 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
67046 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
67047 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
67048 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
67049 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
67050 
67051 l_array_source_32              t_array_source_32;
67052 l_array_source_88              t_array_source_88;
67053 
67054 l_array_source_3      t_array_source_3;
67055 l_array_source_4      t_array_source_4;
67056 l_array_source_5      t_array_source_5;
67057 l_array_source_6      t_array_source_6;
67058 l_array_source_7      t_array_source_7;
67059 l_array_source_22      t_array_source_22;
67060 l_array_source_23      t_array_source_23;
67061 l_array_source_24      t_array_source_24;
67062 l_array_source_25      t_array_source_25;
67063 l_array_source_26      t_array_source_26;
67064 l_array_source_27      t_array_source_27;
67065 l_array_source_28      t_array_source_28;
67066 l_array_source_29      t_array_source_29;
67067 l_array_source_30      t_array_source_30;
67068 l_array_source_31      t_array_source_31;
67069 l_array_source_33      t_array_source_33;
67070 l_array_source_34      t_array_source_34;
67071 l_array_source_34_meaning      t_array_lookup_meaning;
67072 l_array_source_35      t_array_source_35;
67073 
67074 --
67075 CURSOR header_cur
67076 IS
67077 SELECT /*+ leading(xet) cardinality(xet,1) */
67078 -- Event Class Code: LABOR_COST
67079     xet.entity_id
67080    ,xet.legal_entity_id
67081    ,xet.entity_code
67082    ,xet.transaction_number
67083    ,xet.event_id
67084    ,xet.event_class_code
67085    ,xet.event_type_code
67086    ,xet.event_number
67087    ,xet.event_date
67088    ,xet.transaction_date
67089    ,xet.reference_num_1
67090    ,xet.reference_num_2
67091    ,xet.reference_num_3
67092    ,xet.reference_num_4
67093    ,xet.reference_char_1
67094    ,xet.reference_char_2
67095    ,xet.reference_char_3
67096    ,xet.reference_char_4
67097    ,xet.reference_date_1
67098    ,xet.reference_date_2
67099    ,xet.reference_date_3
67100    ,xet.reference_date_4
67101    ,xet.event_created_by
67102    ,xet.budgetary_control_flag 
67103   , h2.EXPENDITURE_ITEM_ID    source_32
67104   , h2.GL_DATE    source_88
67105   FROM xla_events_gt     xet 
67106   , PA_XLA_EXP_HEADER_V  h2
67107  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
67108    and xet.event_class_code = C_EVENT_CLASS_CODE
67109    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
67110 
67111  ORDER BY event_id
67112 ;
67113 
67114 
67115 --
67116 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
67117 IS
67118 SELECT  /*+ leading(xet) cardinality(xet,1) */
67119 -- Event Class Code: LABOR_COST
67120     xet.entity_id
67121    ,xet.legal_entity_id
67122    ,xet.entity_code
67123    ,xet.transaction_number
67124    ,xet.event_id
67125    ,xet.event_class_code
67126    ,xet.event_type_code
67127    ,xet.event_number
67128    ,xet.event_date
67129    ,xet.transaction_date
67130    ,xet.reference_num_1
67131    ,xet.reference_num_2
67132    ,xet.reference_num_3
67133    ,xet.reference_num_4
67134    ,xet.reference_char_1
67135    ,xet.reference_char_2
67136    ,xet.reference_char_3
67137    ,xet.reference_char_4
67138    ,xet.reference_date_1
67139    ,xet.reference_date_2
67140    ,xet.reference_date_3
67141    ,xet.reference_date_4
67142    ,xet.event_created_by
67143    ,xet.budgetary_control_flag
67144  , l1.LINE_NUMBER  
67145   , l1.COST_CCID    source_3
67146   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
67147   , l1.ADJ_COST_CCID    source_5
67148   , l1.COST_CLEARING_CCID    source_6
67149   , l1.ADJ_COST_CLEARING_CCID    source_7
67150   , l1.REVERSING_LINE_FLAG    source_22
67151   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
67152   , l1.ENTERED_RAW_COST    source_24
67153   , l1.ENTERED_CURRENCY_CODE    source_25
67154   , l1.ACCT_RAW_COST    source_26
67155   , l1.EXCHANGE_RATE_DATE    source_27
67156   , l1.EXCHANGE_RATE    source_28
67157   , l1.EXCHANGE_RATE_TYPE    source_29
67158   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
67159   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
67163   , l1.LINE_NUM_REVERSED    source_35
67160   , l1.LINE_NUMBER    source_33
67161   , l1.LINE_TYPE    source_34
67162   , fvl34.meaning   source_34_meaning
67164   FROM xla_events_gt     xet 
67165   , PA_XLA_CDL_LINES_V  l1
67166   , fnd_lookup_values    fvl34
67167  WHERE xet.event_id between x_first_event_id and x_last_event_id
67168    and xet.event_date between p_pad_start_date and p_pad_end_date
67169    and xet.event_class_code = C_EVENT_CLASS_CODE
67170    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
67171    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
67172   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
67173   AND fvl34.view_application_id(+) = 275
67174   AND fvl34.language(+)            = USERENV('LANG')
67175   ;
67176 
67177 --
67178 BEGIN
67179 IF g_log_enabled THEN
67180    l_log_module := C_DEFAULT_MODULE||'.EventClass_118';
67181 END IF;
67182 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67183    trace
67184       (p_msg      => 'BEGIN of EventClass_118'
67185       ,p_level    => C_LEVEL_PROCEDURE
67186       ,p_module   => l_log_module);
67187 END IF;
67188 
67189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67190    trace
67191       (p_msg      => 'p_application_id = '||p_application_id||
67192                      ' - p_base_ledger_id = '||p_base_ledger_id||
67193                      ' - p_target_ledger_id  = '||p_target_ledger_id||
67194                      ' - p_language = '||p_language||
67195                      ' - p_currency_code = '||p_currency_code||
67196                      ' - p_sla_ledger_id = '||p_sla_ledger_id
67197       ,p_level    => C_LEVEL_STATEMENT
67198       ,p_module   => l_log_module);
67199 END IF;
67200 --
67201 -- initialze arrays
67202 --
67203 g_array_event.DELETE;
67204 l_rec_array_event := l_null_rec_array_event;
67205 --
67206 --------------------------------------
67207 -- 4262811 Initialze MPA Line Number
67208 --------------------------------------
67209 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
67210 
67211 --
67212 
67213 --
67214 OPEN header_cur;
67215 --
67216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67217    trace
67218    (p_msg      => 'SQL - FETCH header_cur'
67219    ,p_level    => C_LEVEL_STATEMENT
67220    ,p_module   => l_log_module);
67221 END IF;
67222 --
67223 LOOP
67224 FETCH header_cur BULK COLLECT INTO
67225         l_array_entity_id
67226       , l_array_legal_entity_id
67227       , l_array_entity_code
67228       , l_array_transaction_num
67229       , l_array_event_id
67230       , l_array_class_code
67231       , l_array_event_type
67232       , l_array_event_number
67233       , l_array_event_date
67234       , l_array_transaction_date
67235       , l_array_reference_num_1
67236       , l_array_reference_num_2
67237       , l_array_reference_num_3
67238       , l_array_reference_num_4
67239       , l_array_reference_char_1
67240       , l_array_reference_char_2
67241       , l_array_reference_char_3
67242       , l_array_reference_char_4
67243       , l_array_reference_date_1
67244       , l_array_reference_date_2
67245       , l_array_reference_date_3
67246       , l_array_reference_date_4
67247       , l_array_event_created_by
67248       , l_array_budgetary_control_flag 
67249       , l_array_source_32
67250       , l_array_source_88
67251       LIMIT l_rows;
67252 --
67253 IF (C_LEVEL_EVENT >= g_log_level) THEN
67254    trace
67255    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
67256    ,p_level    => C_LEVEL_EVENT
67257    ,p_module   => l_log_module);
67258 END IF;
67259 --
67260 EXIT WHEN l_array_entity_id.COUNT = 0;
67261 
67262 -- initialize arrays
67263 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
67264 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
67265 
67266 --
67267 -- Bug 4458708
67268 --
67269 XLA_AE_LINES_PKG.g_LineNumber := 0;
67270 
67271 
67272 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
67273 g_last_hdr_idx := l_array_event_id.LAST;
67274 --
67275 -- loop for the headers. Each iteration is for each header extract row
67276 -- fetched in header cursor
67277 --
67278 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
67279 
67280 --
67281 -- set event info as cache for other routines to refer event attributes
67282 --
67283 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
67284    (p_application_id           => p_application_id
67285    ,p_primary_ledger_id        => p_primary_ledger_id
67286    ,p_base_ledger_id           => p_base_ledger_id
67287    ,p_target_ledger_id         => p_target_ledger_id
67288    ,p_entity_id                => l_array_entity_id(hdr_idx)
67289    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
67290    ,p_entity_code              => l_array_entity_code(hdr_idx)
67291    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
67292    ,p_event_id                 => l_array_event_id(hdr_idx)
67293    ,p_event_class_code         => l_array_class_code(hdr_idx)
67294    ,p_event_type_code          => l_array_event_type(hdr_idx)
67295    ,p_event_number             => l_array_event_number(hdr_idx)
67296    ,p_event_date               => l_array_event_date(hdr_idx)
67297    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
67298    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
67299    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
67300    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
67301    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
67302    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
67303    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
67307    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
67304    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
67305    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
67306    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
67308    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
67309    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
67310    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
67311    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
67312 
67313 --
67314 -- set the status of entry to C_VALID (0)
67315 --
67316 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
67317 
67318 --
67319 -- initialize a row for ae header
67320 --
67321 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
67322 
67323 l_event_id := l_array_event_id(hdr_idx);
67324 
67325 --
67326 -- storing the hdr_idx for event. May be used by line cursor.
67327 --
67328 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
67329 
67330 --
67331 -- store sources from header extract. This can be improved to
67332 -- store only those sources from header extract that may be used in lines
67333 --
67334 
67335 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
67336 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
67337 
67338 --
67339 -- initilaize the status of ae headers for diffrent balance types
67340 -- the status is initialised to C_NOT_CREATED (2)
67341 --
67342 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67343 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67344 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67345 
67346 --
67347 -- call api to validate and store accounting attributes for header
67348 --
67349 
67350 ------------------------------------------------------------
67351 -- Accrual Reversal : to get date for Standard Source (NONE)
67352 ------------------------------------------------------------
67353 l_acc_rev_gl_date_source := NULL;
67354 
67355      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
67356       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
67357 
67358 
67359 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
67360 
67361 XLA_AE_HEADER_PKG.SetJeCategoryName;
67362 
67363 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
67364 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
67365 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
67366 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
67367 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
67368 
67369 
67370 -- No header level analytical criteria
67371 
67372 --
67373 --accounting attribute enhancement, bug 3612931
67374 --
67375 l_trx_reversal_source := SUBSTR(NULL, 1,30);
67376 
67377 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
67378    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
67379 
67380    xla_accounting_err_pkg.build_message
67381       (p_appli_s_name            => 'XLA'
67382       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
67383       ,p_token_1                 => 'ACCT_ATTR_NAME'
67384       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
67385       ,p_token_2                 => 'PRODUCT_NAME'
67386       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
67387       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
67388       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
67389       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
67390 
67391 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
67392    --
67393    -- following sets the accounting attributes needed to reverse
67394    -- accounting for a distributeion
67395    --
67396    xla_ae_lines_pkg.SetTrxReversalAttrs
67397       (p_event_id              => l_event_id
67398       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
67399       ,p_trx_reversal_source   => l_trx_reversal_source);
67400 
67401 END IF;
67402 
67403 
67404 ----------------------------------------------------------------
67405 -- 4262811 -  update the header statuses to invalid in need be
67406 ----------------------------------------------------------------
67407 --
67408 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
67409 
67410 
67411   -----------------------------------------------
67412   -- No accrual reversal for the event class/type
67413   -----------------------------------------------
67414 ----------------------------------------------------------------
67415 
67416 --
67417 -- this ends the header loop iteration for one bulk fetch
67418 --
67419 END LOOP;
67420 
67421 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
67422 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
67423 
67424 --
67425 -- insert dummy rows into lines gt table that were created due to
67426 -- transaction reversals
67427 --
67428 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
67429    l_result := XLA_AE_LINES_PKG.InsertLines;
67430 END IF;
67431 
67432 --
67433 -- reset the temp_line_num for each set of events fetched from header
67437 xla_ae_lines_pkg.g_temp_line_num := 0;
67434 -- cursor rather than doing it for each new event in line cursor
67435 -- Bug 3939231
67436 --
67438 
67439 
67440 
67441 --
67442 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
67443 --
67444 --
67445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67446 
67447       trace
67448          (p_msg      => 'SQL - FETCH line_cur'
67449          ,p_level    => C_LEVEL_STATEMENT
67450          ,p_module   => l_log_module);
67451 
67452 END IF;
67453 --
67454 --
67455 LOOP
67456   --
67457   FETCH line_cur BULK COLLECT INTO
67458         l_array_entity_id
67459       , l_array_legal_entity_id
67460       , l_array_entity_code
67461       , l_array_transaction_num
67462       , l_array_event_id
67463       , l_array_class_code
67464       , l_array_event_type
67465       , l_array_event_number
67466       , l_array_event_date
67467       , l_array_transaction_date
67468       , l_array_reference_num_1
67469       , l_array_reference_num_2
67470       , l_array_reference_num_3
67471       , l_array_reference_num_4
67472       , l_array_reference_char_1
67473       , l_array_reference_char_2
67474       , l_array_reference_char_3
67475       , l_array_reference_char_4
67476       , l_array_reference_date_1
67477       , l_array_reference_date_2
67478       , l_array_reference_date_3
67479       , l_array_reference_date_4
67480       , l_array_event_created_by
67481       , l_array_budgetary_control_flag
67482       , l_array_extract_line_num 
67483       , l_array_source_3
67484       , l_array_source_4
67485       , l_array_source_5
67486       , l_array_source_6
67487       , l_array_source_7
67488       , l_array_source_22
67489       , l_array_source_23
67490       , l_array_source_24
67491       , l_array_source_25
67492       , l_array_source_26
67493       , l_array_source_27
67494       , l_array_source_28
67495       , l_array_source_29
67496       , l_array_source_30
67497       , l_array_source_31
67498       , l_array_source_33
67499       , l_array_source_34
67500       , l_array_source_34_meaning
67501       , l_array_source_35
67502       LIMIT l_rows;
67503 
67504   --
67505   IF (C_LEVEL_EVENT >= g_log_level) THEN
67506             trace
67507                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
67508                ,p_level    => C_LEVEL_EVENT
67509                ,p_module   => l_log_module);
67510   END IF;
67511   --
67512   EXIT WHEN l_array_entity_id.count = 0;
67513 
67514   XLA_AE_LINES_PKG.g_rec_lines := null;
67515 
67516 --
67517 -- Bug 4458708
67518 --
67519 XLA_AE_LINES_PKG.g_LineNumber := 0;
67520 --
67521 --
67522 
67523 FOR Idx IN 1..l_array_event_id.count LOOP
67524    --
67525    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
67526    --
67527    l_event_id := l_array_event_id(idx);  -- 5648433
67528 
67529    --
67530    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
67531    --
67532 
67533    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
67534              (g_array_event(l_event_id).array_value_num('header_index'))
67535          ,'N'
67536          ) <> 'Y'
67537    THEN
67538       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67539          trace
67540             (p_msg      => 'Trancaction revesal option is not Y '
67541             ,p_level    => C_LEVEL_STATEMENT
67542             ,p_module   => l_log_module);
67543       END IF;
67544 
67545 --
67546 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
67547 --
67548 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
67549 --
67550 -- set event info as cache for other routines to refer event attributes
67551 --
67552 
67553 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
67554    l_previous_event_id := l_event_id;
67555 
67556    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
67557       (p_application_id           => p_application_id
67558       ,p_primary_ledger_id        => p_primary_ledger_id
67559       ,p_base_ledger_id           => p_base_ledger_id
67560       ,p_target_ledger_id         => p_target_ledger_id
67561       ,p_entity_id                => l_array_entity_id(Idx)
67562       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
67563       ,p_entity_code              => l_array_entity_code(Idx)
67564       ,p_transaction_num          => l_array_transaction_num(Idx)
67565       ,p_event_id                 => l_array_event_id(Idx)
67566       ,p_event_class_code         => l_array_class_code(Idx)
67567       ,p_event_type_code          => l_array_event_type(Idx)
67568       ,p_event_number             => l_array_event_number(Idx)
67569       ,p_event_date               => l_array_event_date(Idx)
67570       ,p_transaction_date         => l_array_transaction_date(Idx)
67571       ,p_reference_num_1          => l_array_reference_num_1(Idx)
67572       ,p_reference_num_2          => l_array_reference_num_2(Idx)
67573       ,p_reference_num_3          => l_array_reference_num_3(Idx)
67574       ,p_reference_num_4          => l_array_reference_num_4(Idx)
67575       ,p_reference_char_1         => l_array_reference_char_1(Idx)
67576       ,p_reference_char_2         => l_array_reference_char_2(Idx)
67577       ,p_reference_char_3         => l_array_reference_char_3(Idx)
67578       ,p_reference_char_4         => l_array_reference_char_4(Idx)
67579       ,p_reference_date_1         => l_array_reference_date_1(Idx)
67580       ,p_reference_date_2         => l_array_reference_date_2(Idx)
67581       ,p_reference_date_3         => l_array_reference_date_3(Idx)
67585        --
67582       ,p_reference_date_4         => l_array_reference_date_4(Idx)
67583       ,p_event_created_by         => l_array_event_created_by(Idx)
67584       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
67586 END IF;
67587 
67588 
67589 
67590 --
67591 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
67592 
67593 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
67594 
67595 IF l_continue_with_lines THEN
67596    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
67597       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
67598 
67599       xla_accounting_err_pkg.build_message
67600          (p_appli_s_name            => 'XLA'
67601          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
67602          ,p_token_1                 => 'LINE_NUMBER'
67603          ,p_value_1                 => l_array_extract_line_num(Idx)
67604          ,p_token_2                 => 'PRODUCT_NAME'
67605          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
67606          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
67607          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
67608          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
67609 
67610    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
67611       --
67612       -- following sets the accounting attributes needed to reverse
67613       -- accounting for a distributeion
67614       --
67615 
67616       --
67617       -- 5217187
67618       --
67619       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
67620       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
67621                                        g_array_event(l_event_id).array_value_num('header_index'));
67622       --
67623       --
67624 
67625       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
67626       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
67627       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
67628       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
67629       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
67630       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
67631       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
67632       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
67633       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
67634       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
67635       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
67636       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
67637       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
67638       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
67639       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
67640       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
67641       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
67642       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
67643       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
67644       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
67645       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
67646       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
67647       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
67648       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
67649       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
67650       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
67651       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
67652       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
67653       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
67654       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
67655       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
67656       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
67657       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
67658       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
67659       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
67660       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
67661       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
67662       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
67663       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
67664       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
67665       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
67666       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
67667       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
67668       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
67669       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
67670       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
67671       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
67672       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
67673 
67674 
67675       xla_ae_lines_pkg.SetAcctReversalAttrs
67676          (p_event_id             => l_event_id
67680    END IF;
67677          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
67678          ,p_calculate_acctd_flag => l_calculate_acctd_flag
67679          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
67681 
67682    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
67683        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
67684 
67685 --
67686 AcctLineType_45 (
67687  p_application_id  => p_application_id
67688  ,p_event_id     => l_event_id
67689  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67690  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67691  ,p_actual_flag => l_actual_flag
67692  ,p_balance_type_code => l_balance_type_code
67693  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67694  
67695  , p_source_3 => l_array_source_3(Idx)
67696  , p_source_4 => l_array_source_4(Idx)
67697  , p_source_5 => l_array_source_5(Idx)
67698  , p_source_6 => l_array_source_6(Idx)
67699  , p_source_22 => l_array_source_22(Idx)
67700  , p_source_23 => l_array_source_23(Idx)
67701  , p_source_24 => l_array_source_24(Idx)
67702  , p_source_25 => l_array_source_25(Idx)
67703  , p_source_26 => l_array_source_26(Idx)
67704  , p_source_27 => l_array_source_27(Idx)
67705  , p_source_28 => l_array_source_28(Idx)
67706  , p_source_29 => l_array_source_29(Idx)
67707  , p_source_30 => l_array_source_30(Idx)
67708  , p_source_31 => l_array_source_31(Idx)
67709  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
67710  , p_source_33 => l_array_source_33(Idx)
67711  , p_source_34 => l_array_source_34(Idx)
67712  , p_source_34_meaning => l_array_source_34_meaning(Idx)
67713  , p_source_35 => l_array_source_35(Idx)
67714  );
67715 If(l_balance_type_code = 'A') THEN
67716   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67717 END IF;
67718 
67719 --
67720 
67721 
67722 --
67723 AcctLineType_55 (
67724  p_application_id  => p_application_id
67725  ,p_event_id     => l_event_id
67726  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67727  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67728  ,p_actual_flag => l_actual_flag
67729  ,p_balance_type_code => l_balance_type_code
67730  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67731  
67732  , p_source_3 => l_array_source_3(Idx)
67733  , p_source_4 => l_array_source_4(Idx)
67734  , p_source_6 => l_array_source_6(Idx)
67735  , p_source_7 => l_array_source_7(Idx)
67736  , p_source_22 => l_array_source_22(Idx)
67737  , p_source_23 => l_array_source_23(Idx)
67738  , p_source_24 => l_array_source_24(Idx)
67739  , p_source_25 => l_array_source_25(Idx)
67740  , p_source_26 => l_array_source_26(Idx)
67741  , p_source_27 => l_array_source_27(Idx)
67742  , p_source_28 => l_array_source_28(Idx)
67743  , p_source_29 => l_array_source_29(Idx)
67744  , p_source_30 => l_array_source_30(Idx)
67745  , p_source_31 => l_array_source_31(Idx)
67746  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
67747  , p_source_33 => l_array_source_33(Idx)
67748  , p_source_34 => l_array_source_34(Idx)
67749  , p_source_34_meaning => l_array_source_34_meaning(Idx)
67750  , p_source_35 => l_array_source_35(Idx)
67751  );
67752 If(l_balance_type_code = 'A') THEN
67753   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67754 END IF;
67755 
67756 --
67757 
67758       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
67759       -- or secondary ledger that has different currency with primary
67760       -- or alc that is calculated by sla
67761       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
67762             (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'))
67763 
67764 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
67765 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
67766           AND (l_actual_flag = 'A')) THEN
67767         XLA_AE_LINES_PKG.CreateGainOrLossLines(
67768           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
67769          ,p_application_id   => p_application_id
67770          ,p_amb_context_code => 'DEFAULT'
67771          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
67772          ,p_event_class_code => C_EVENT_CLASS_CODE
67773          ,p_event_type_code  => C_EVENT_TYPE_CODE
67774          
67775          ,p_gain_ccid        => -1
67776          ,p_loss_ccid        => -1
67777 
67778          ,p_actual_flag      => l_actual_flag
67779          ,p_enc_flag         => null
67780          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
67781          ,p_enc_g_l_ref      => null
67782          );
67783       END IF;
67784    END IF;
67785 END IF;
67786 
67787    ELSE
67788       --
67789       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
67790       --
67791       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67792          trace
67793             (p_msg      => 'Trancaction revesal option is Y'
67794             ,p_level    => C_LEVEL_STATEMENT
67795             ,p_module   => l_log_module);
67796       END IF;
67797    END IF;
67798 
67799 END LOOP;
67800 l_result := XLA_AE_LINES_PKG.InsertLines ;
67801 end loop;
67802 close line_cur;
67803 
67804 
67805 --
67806 -- insert headers into xla_ae_headers_gt table
67807 --
67808 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
67809 
67810 -- insert into errors table here.
67811 
67812 END LOOP;
67813 
67814 --
67815 -- 4865292
67816 --
67817 -- Compare g_hdr_extract_count with event count in
67818 -- CreateHeadersAndLines.
67819 --
67820 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
67821 
67825                     || g_hdr_extract_count
67822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67823    trace (p_msg     => '# rows extracted from header extract objects '
67824                     || ' (running total): '
67826          ,p_level   => C_LEVEL_STATEMENT
67827          ,p_module  => l_log_module);
67828 END IF;
67829 
67830 CLOSE header_cur;
67831 --
67832 
67833 --
67834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67835    trace
67836       (p_msg      => 'END of EventClass_118'
67837       ,p_level    => C_LEVEL_PROCEDURE
67838       ,p_module   => l_log_module);
67839 END IF;
67840 --
67841 RETURN l_result;
67842 EXCEPTION
67843 WHEN xla_exceptions_pkg.application_exception THEN
67844    
67845 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
67846 
67847    
67848 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
67849 
67850    RAISE;
67851 WHEN OTHERS THEN
67852    xla_exceptions_pkg.raise_message
67853       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_118');
67854 END EventClass_118;
67855 --
67856 
67857 ---------------------------------------
67858 --
67859 -- PRIVATE PROCEDURE
67860 --         insert_sources_119
67861 --
67862 ----------------------------------------
67863 --
67864 PROCEDURE insert_sources_119(
67865                                 p_target_ledger_id       IN NUMBER
67866                               , p_language               IN VARCHAR2
67867                               , p_sla_ledger_id          IN NUMBER
67868                               , p_pad_start_date         IN DATE
67869                               , p_pad_end_date           IN DATE
67870                          )
67871 IS
67872 
67873 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ADJ_ALL';
67874 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_COST_ADJ';
67875 p_apps_owner                   VARCHAR2(30);
67876 l_log_module                   VARCHAR2(240);
67877 BEGIN
67878 IF g_log_enabled THEN
67879       l_log_module := C_DEFAULT_MODULE||'.insert_sources_119';
67880 END IF;
67881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67882 
67883       trace
67884          (p_msg      => 'BEGIN of insert_sources_119'
67885          ,p_level    => C_LEVEL_PROCEDURE
67886          ,p_module   => l_log_module);
67887 
67888 END IF;
67889 
67890 -- select APPS owner
67891 SELECT oracle_username
67892   INTO p_apps_owner
67893   FROM fnd_oracle_userid
67894  WHERE read_only_flag = 'U'
67895 ;
67896 
67897 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67898       trace
67899          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
67900                         ' - p_language = '||p_language||
67901                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
67902                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
67903                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
67904                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
67905          ,p_level    => C_LEVEL_STATEMENT
67906          ,p_module   => l_log_module);
67907 END IF;
67908 
67909 
67910 --
67911 INSERT INTO xla_diag_sources --hdr2
67912 (
67913         event_id
67914       , ledger_id
67915       , sla_ledger_id
67916       , description_language
67917       , object_name
67918       , object_type_code
67919       , line_number
67920       , source_application_id
67921       , source_type_code
67922       , source_code
67923       , source_value
67924       , source_meaning
67925       , created_by
67926       , creation_date
67927       , last_update_date
67928       , last_updated_by
67929       , last_update_login
67930       , program_update_date
67931       , program_application_id
67932       , program_id
67933       , request_id
67934 )
67935 SELECT
67936         event_id
67937       , p_target_ledger_id
67938       , p_sla_ledger_id
67939       , p_language
67940       , object_name
67941       , object_type_code
67942       , line_number
67943       , source_application_id
67944       , source_type_code
67945       , source_code
67946       , SUBSTR(source_value ,1,1996)
67947       , SUBSTR(source_meaning ,1,200)
67948       , xla_environment_pkg.g_Usr_Id
67949       , TRUNC(SYSDATE)
67950       , TRUNC(SYSDATE)
67951       , xla_environment_pkg.g_Usr_Id
67952       , xla_environment_pkg.g_Login_Id
67953       , TRUNC(SYSDATE)
67954       , xla_environment_pkg.g_Prog_Appl_Id
67955       , xla_environment_pkg.g_Prog_Id
67956       , xla_environment_pkg.g_Req_Id
67957   FROM (
67958        SELECT xet.event_id                  event_id
67959             , 0                          line_number
67960             , CASE r
67961                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
67962                 WHEN 2 THEN 'PA_XLA_PROJECT_REF_V' 
67963                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
67964                 
67965                ELSE null
67966               END                           object_name
67967             , CASE r
67968                 WHEN 1 THEN 'HEADER' 
67969                 WHEN 2 THEN 'HEADER' 
67970                 WHEN 3 THEN 'HEADER' 
67971                 
67972                 ELSE null
67973               END                           object_type_code
67974             , CASE r
67975                 WHEN 1 THEN '275' 
67976                 WHEN 2 THEN '275' 
67977                 WHEN 3 THEN '275' 
67978                 
67979                 ELSE null
67980               END                           source_application_id
67981             , 'S'             source_type_code
67982             , CASE r
67983                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
67987                 ELSE null
67984                 WHEN 2 THEN 'PROJECT_NUMBER' 
67985                 WHEN 3 THEN 'GL_DATE' 
67986                 
67988               END                           source_code
67989             , CASE r
67990                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
67991                 WHEN 2 THEN TO_CHAR(h3.PROJECT_NUMBER)
67992                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
67993                 
67994                 ELSE null
67995               END                           source_value
67996             , null              source_meaning
67997          FROM xla_events_gt     xet  
67998       , PA_XLA_EXP_HEADER_V  h2
67999       , PA_XLA_PROJECT_REF_V  h3
68000              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
68001          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
68002            AND xet.event_class_code = C_EVENT_CLASS_CODE
68003               AND h2.event_id = xet.event_id
68004  AND h3.project_id=h2.project_id
68005 )
68006 ;
68007 --
68008 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68009 
68010       trace
68011          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
68012          ,p_level    => C_LEVEL_STATEMENT
68013          ,p_module   => l_log_module);
68014 
68015 END IF;
68016 --
68017 
68018 
68019 
68020 --
68021 INSERT INTO xla_diag_sources  --line2
68022 (
68023         event_id
68024       , ledger_id
68025       , sla_ledger_id
68026       , description_language
68027       , object_name
68028       , object_type_code
68029       , line_number
68030       , source_application_id
68031       , source_type_code
68032       , source_code
68033       , source_value
68034       , source_meaning
68035       , created_by
68036       , creation_date
68037       , last_update_date
68038       , last_updated_by
68039       , last_update_login
68040       , program_update_date
68041       , program_application_id
68042       , program_id
68043       , request_id
68044 )
68045 SELECT  event_id
68046       , p_target_ledger_id
68047       , p_sla_ledger_id
68048       , p_language
68049       , object_name
68050       , object_type_code
68051       , line_number
68052       , source_application_id
68053       , source_type_code
68054       , source_code
68055       , SUBSTR(source_value,1,1996)
68056       , SUBSTR(source_meaning ,1,200)
68057       , xla_environment_pkg.g_Usr_Id
68058       , TRUNC(SYSDATE)
68059       , TRUNC(SYSDATE)
68060       , xla_environment_pkg.g_Usr_Id
68061       , xla_environment_pkg.g_Login_Id
68062       , TRUNC(SYSDATE)
68063       , xla_environment_pkg.g_Prog_Appl_Id
68064       , xla_environment_pkg.g_Prog_Id
68065       , xla_environment_pkg.g_Req_Id
68066   FROM (
68067        SELECT xet.event_id                  event_id
68068             , l1.line_number                 line_number
68069             , CASE r
68070                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
68071                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
68072                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
68073                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
68074                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
68075                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
68076                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
68077                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
68078                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
68079                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
68080                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
68081                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
68082                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
68083                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
68084                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
68085                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
68086                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
68087                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
68088                 
68089                ELSE null
68090               END                           object_name
68091             , CASE r
68092                 WHEN 1 THEN 'LINE' 
68093                 WHEN 2 THEN 'LINE' 
68094                 WHEN 3 THEN 'LINE' 
68095                 WHEN 4 THEN 'LINE' 
68096                 WHEN 5 THEN 'LINE' 
68097                 WHEN 6 THEN 'LINE' 
68098                 WHEN 7 THEN 'LINE' 
68099                 WHEN 8 THEN 'LINE' 
68100                 WHEN 9 THEN 'LINE' 
68101                 WHEN 10 THEN 'LINE' 
68102                 WHEN 11 THEN 'LINE' 
68103                 WHEN 12 THEN 'LINE' 
68104                 WHEN 13 THEN 'LINE' 
68105                 WHEN 14 THEN 'LINE' 
68106                 WHEN 15 THEN 'LINE' 
68107                 WHEN 16 THEN 'LINE' 
68108                 WHEN 17 THEN 'LINE' 
68109                 WHEN 18 THEN 'LINE' 
68110                 
68111                 ELSE null
68112               END                           object_type_code
68113             , CASE r
68114                 WHEN 1 THEN '275' 
68115                 WHEN 2 THEN '275' 
68116                 WHEN 3 THEN '275' 
68117                 WHEN 4 THEN '275' 
68118                 WHEN 5 THEN '275' 
68119                 WHEN 6 THEN '275' 
68120                 WHEN 7 THEN '275' 
68121                 WHEN 8 THEN '275' 
68122                 WHEN 9 THEN '275' 
68123                 WHEN 10 THEN '275' 
68124                 WHEN 11 THEN '275' 
68125                 WHEN 12 THEN '275' 
68126                 WHEN 13 THEN '275' 
68127                 WHEN 14 THEN '275' 
68128                 WHEN 15 THEN '275' 
68129                 WHEN 16 THEN '275' 
68130                 WHEN 17 THEN '275' 
68131                 WHEN 18 THEN '275' 
68132                 
68136             , CASE r
68133                 ELSE null
68134               END                           source_application_id
68135             , 'S'             source_type_code
68137                 WHEN 1 THEN 'COST_CCID' 
68138                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
68139                 WHEN 3 THEN 'ADJ_COST_CCID' 
68140                 WHEN 4 THEN 'COST_CLEARING_CCID' 
68141                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
68142                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
68143                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
68144                 WHEN 8 THEN 'ENTERED_RAW_COST' 
68145                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
68146                 WHEN 10 THEN 'ACCT_RAW_COST' 
68147                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
68148                 WHEN 12 THEN 'EXCHANGE_RATE' 
68149                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
68150                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
68151                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
68152                 WHEN 16 THEN 'LINE_NUMBER' 
68153                 WHEN 17 THEN 'LINE_TYPE' 
68154                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
68155                 
68156                 ELSE null
68157               END                           source_code
68158             , CASE r
68159                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
68160                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
68161                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
68162                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
68163                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
68164                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
68165                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
68166                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
68167                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
68168                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
68169                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
68170                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
68171                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
68172                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
68173                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
68174                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
68175                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
68176                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
68177                 
68178                 ELSE null
68179               END                           source_value
68180             , CASE r
68181                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
68182                           103371
68183                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
68184                          ,'ALLOW_OVERRIDE_CCID_FLAG'
68185                          ,'S'
68186                          ,275)
68187                 WHEN 17 THEN fvl34.meaning
68188                 
68189                 ELSE null
68190               END               source_meaning
68191          FROM  xla_events_gt     xet  
68192         , PA_XLA_CDL_LINES_V  l1
68193   , fnd_lookup_values    fvl34
68194             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
68195         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
68196           AND xet.event_class_code = C_EVENT_CLASS_CODE
68197             AND l1.event_id          = xet.event_id
68198    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
68199   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
68200   AND fvl34.view_application_id(+) = 275
68201   AND fvl34.language(+)            = USERENV('LANG')
68202   
68203 )
68204 ;
68205 --
68206 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68207 
68208       trace
68209          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
68210          ,p_level    => C_LEVEL_STATEMENT
68211          ,p_module   => l_log_module);
68212 
68213 END IF;
68214 
68215 
68216 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68217       trace
68218          (p_msg      => 'END of insert_sources_119'
68219          ,p_level    => C_LEVEL_PROCEDURE
68220          ,p_module   => l_log_module);
68221 END IF;
68222 EXCEPTION
68223   WHEN xla_exceptions_pkg.application_exception THEN
68224       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
68225             trace
68226                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
68227                ,p_level    => C_LEVEL_EXCEPTION
68228                ,p_module   => l_log_module);
68229       END IF;
68230       RAISE;
68231   WHEN OTHERS THEN
68232       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
68233             trace
68234                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
68235                ,p_level    => C_LEVEL_EXCEPTION
68236                ,p_module   => l_log_module);
68237        END IF;
68238        xla_exceptions_pkg.raise_message
68239            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_119');
68240 END insert_sources_119;
68241 --
68242 
68243 ---------------------------------------
68244 --
68245 -- PRIVATE FUNCTION
68246 --         EventClass_119
68247 --
68248 ----------------------------------------
68249 --
68250 FUNCTION EventClass_119
68251        (p_application_id         IN NUMBER
68252        ,p_base_ledger_id         IN NUMBER
68253        ,p_target_ledger_id       IN NUMBER
68254        ,p_language               IN VARCHAR2
68255        ,p_currency_code          IN VARCHAR2
68256        ,p_sla_ledger_id          IN NUMBER
68257        ,p_pad_start_date         IN DATE
68258        ,p_pad_end_date           IN DATE
68259        ,p_primary_ledger_id      IN NUMBER)
68260 RETURN BOOLEAN IS
68261 --
68262 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ADJ_ALL';
68266 l_calculate_g_l_flag     VARCHAR2(1) :='N';
68263 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_COST_ADJ';
68264 
68265 l_calculate_acctd_flag   VARCHAR2(1) :='N';
68267 --
68268 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68269 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68270 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68271 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68272 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68273 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68274 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68275 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68276 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68277 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68278 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68279 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68280 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68281 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68282 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68283 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68284 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68285 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68286 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68287 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68288 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68289 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68290 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
68291 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68292 
68293 l_event_id                             NUMBER;
68294 l_previous_event_id                    NUMBER;
68295 l_first_event_id                       NUMBER;
68296 l_last_event_id                        NUMBER;
68297 
68298 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
68299 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
68300 --
68301 --
68302 l_result                    BOOLEAN := TRUE;
68303 l_rows                      NUMBER  := 1000;
68304 l_event_type_name           VARCHAR2(80) := 'All';
68305 l_event_class_name          VARCHAR2(80) := 'Miscelleneous Cost Adjustment';
68306 l_description               VARCHAR2(4000);
68307 l_transaction_reversal      NUMBER;
68308 l_ae_header_id              NUMBER;
68309 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
68310 l_log_module                VARCHAR2(240);
68311 --
68312 l_acct_reversal_source      VARCHAR2(30);
68313 l_trx_reversal_source       VARCHAR2(30);
68314 
68315 l_continue_with_lines       BOOLEAN := TRUE;
68316 --
68317 l_acc_rev_gl_date_source    DATE;                      -- 4262811
68318 --
68319 type t_array_event_id is table of number index by binary_integer;
68320 
68321 l_rec_array_event                    t_rec_array_event;
68322 l_null_rec_array_event               t_rec_array_event;
68323 l_array_ae_header_id                 xla_number_array_type;
68324 l_actual_flag                        VARCHAR2(1) := NULL;
68325 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
68326 l_balance_type_code                  VARCHAR2(1) :=NULL;
68327 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
68328 
68329 --
68330 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
68331 --
68332 
68333 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
68334 TYPE t_array_source_68 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJECT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
68335 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
68336 
68337 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
68338 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
68339 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
68340 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
68341 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
68342 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
68343 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
68344 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
68345 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
68346 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
68347 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
68348 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
68349 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
68350 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
68351 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
68352 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
68353 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
68354 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
68355 
68356 l_array_source_32              t_array_source_32;
68360 l_array_source_3      t_array_source_3;
68357 l_array_source_68              t_array_source_68;
68358 l_array_source_88              t_array_source_88;
68359 
68361 l_array_source_4      t_array_source_4;
68362 l_array_source_5      t_array_source_5;
68363 l_array_source_6      t_array_source_6;
68364 l_array_source_7      t_array_source_7;
68365 l_array_source_22      t_array_source_22;
68366 l_array_source_23      t_array_source_23;
68367 l_array_source_24      t_array_source_24;
68368 l_array_source_25      t_array_source_25;
68369 l_array_source_26      t_array_source_26;
68370 l_array_source_27      t_array_source_27;
68371 l_array_source_28      t_array_source_28;
68372 l_array_source_29      t_array_source_29;
68373 l_array_source_30      t_array_source_30;
68374 l_array_source_31      t_array_source_31;
68375 l_array_source_33      t_array_source_33;
68376 l_array_source_34      t_array_source_34;
68377 l_array_source_34_meaning      t_array_lookup_meaning;
68378 l_array_source_35      t_array_source_35;
68379 
68380 --
68381 CURSOR header_cur
68382 IS
68383 SELECT /*+ leading(xet) cardinality(xet,1) */
68384 -- Event Class Code: MISC_COST_ADJ
68385     xet.entity_id
68386    ,xet.legal_entity_id
68387    ,xet.entity_code
68388    ,xet.transaction_number
68389    ,xet.event_id
68390    ,xet.event_class_code
68391    ,xet.event_type_code
68392    ,xet.event_number
68393    ,xet.event_date
68394    ,xet.transaction_date
68395    ,xet.reference_num_1
68396    ,xet.reference_num_2
68397    ,xet.reference_num_3
68398    ,xet.reference_num_4
68399    ,xet.reference_char_1
68400    ,xet.reference_char_2
68401    ,xet.reference_char_3
68402    ,xet.reference_char_4
68403    ,xet.reference_date_1
68404    ,xet.reference_date_2
68405    ,xet.reference_date_3
68406    ,xet.reference_date_4
68407    ,xet.event_created_by
68408    ,xet.budgetary_control_flag 
68409   , h2.EXPENDITURE_ITEM_ID    source_32
68410   , h3.PROJECT_NUMBER    source_68
68411   , h2.GL_DATE    source_88
68412   FROM xla_events_gt     xet 
68413   , PA_XLA_EXP_HEADER_V  h2
68414   , PA_XLA_PROJECT_REF_V  h3
68415  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
68416    and xet.event_class_code = C_EVENT_CLASS_CODE
68417    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
68418  AND h3.PROJECT_ID=h2.PROJECT_ID
68419  ORDER BY event_id
68420 ;
68421 
68422 
68423 --
68424 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
68425 IS
68426 SELECT  /*+ leading(xet) cardinality(xet,1) */
68427 -- Event Class Code: MISC_COST_ADJ
68428     xet.entity_id
68429    ,xet.legal_entity_id
68430    ,xet.entity_code
68431    ,xet.transaction_number
68432    ,xet.event_id
68433    ,xet.event_class_code
68434    ,xet.event_type_code
68435    ,xet.event_number
68436    ,xet.event_date
68437    ,xet.transaction_date
68438    ,xet.reference_num_1
68439    ,xet.reference_num_2
68440    ,xet.reference_num_3
68441    ,xet.reference_num_4
68442    ,xet.reference_char_1
68443    ,xet.reference_char_2
68444    ,xet.reference_char_3
68445    ,xet.reference_char_4
68446    ,xet.reference_date_1
68447    ,xet.reference_date_2
68448    ,xet.reference_date_3
68449    ,xet.reference_date_4
68450    ,xet.event_created_by
68451    ,xet.budgetary_control_flag
68452  , l1.LINE_NUMBER  
68453   , l1.COST_CCID    source_3
68454   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
68455   , l1.ADJ_COST_CCID    source_5
68456   , l1.COST_CLEARING_CCID    source_6
68457   , l1.ADJ_COST_CLEARING_CCID    source_7
68458   , l1.REVERSING_LINE_FLAG    source_22
68459   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
68460   , l1.ENTERED_RAW_COST    source_24
68464   , l1.EXCHANGE_RATE    source_28
68461   , l1.ENTERED_CURRENCY_CODE    source_25
68462   , l1.ACCT_RAW_COST    source_26
68463   , l1.EXCHANGE_RATE_DATE    source_27
68465   , l1.EXCHANGE_RATE_TYPE    source_29
68466   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
68467   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
68468   , l1.LINE_NUMBER    source_33
68469   , l1.LINE_TYPE    source_34
68470   , fvl34.meaning   source_34_meaning
68471   , l1.LINE_NUM_REVERSED    source_35
68472   FROM xla_events_gt     xet 
68473   , PA_XLA_CDL_LINES_V  l1
68474   , fnd_lookup_values    fvl34
68475  WHERE xet.event_id between x_first_event_id and x_last_event_id
68476    and xet.event_date between p_pad_start_date and p_pad_end_date
68477    and xet.event_class_code = C_EVENT_CLASS_CODE
68478    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
68479    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
68480   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
68481   AND fvl34.view_application_id(+) = 275
68482   AND fvl34.language(+)            = USERENV('LANG')
68483   ;
68484 
68485 --
68486 BEGIN
68487 IF g_log_enabled THEN
68488    l_log_module := C_DEFAULT_MODULE||'.EventClass_119';
68489 END IF;
68490 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68491    trace
68492       (p_msg      => 'BEGIN of EventClass_119'
68493       ,p_level    => C_LEVEL_PROCEDURE
68494       ,p_module   => l_log_module);
68495 END IF;
68496 
68497 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68498    trace
68499       (p_msg      => 'p_application_id = '||p_application_id||
68500                      ' - p_base_ledger_id = '||p_base_ledger_id||
68501                      ' - p_target_ledger_id  = '||p_target_ledger_id||
68502                      ' - p_language = '||p_language||
68503                      ' - p_currency_code = '||p_currency_code||
68504                      ' - p_sla_ledger_id = '||p_sla_ledger_id
68505       ,p_level    => C_LEVEL_STATEMENT
68506       ,p_module   => l_log_module);
68507 END IF;
68508 --
68509 -- initialze arrays
68510 --
68511 g_array_event.DELETE;
68512 l_rec_array_event := l_null_rec_array_event;
68513 --
68514 --------------------------------------
68515 -- 4262811 Initialze MPA Line Number
68516 --------------------------------------
68517 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
68518 
68519 --
68520 
68521 --
68522 OPEN header_cur;
68523 --
68524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68525    trace
68526    (p_msg      => 'SQL - FETCH header_cur'
68527    ,p_level    => C_LEVEL_STATEMENT
68528    ,p_module   => l_log_module);
68529 END IF;
68530 --
68531 LOOP
68532 FETCH header_cur BULK COLLECT INTO
68533         l_array_entity_id
68534       , l_array_legal_entity_id
68535       , l_array_entity_code
68536       , l_array_transaction_num
68537       , l_array_event_id
68538       , l_array_class_code
68539       , l_array_event_type
68540       , l_array_event_number
68541       , l_array_event_date
68542       , l_array_transaction_date
68543       , l_array_reference_num_1
68544       , l_array_reference_num_2
68545       , l_array_reference_num_3
68546       , l_array_reference_num_4
68547       , l_array_reference_char_1
68548       , l_array_reference_char_2
68549       , l_array_reference_char_3
68550       , l_array_reference_char_4
68551       , l_array_reference_date_1
68552       , l_array_reference_date_2
68553       , l_array_reference_date_3
68554       , l_array_reference_date_4
68555       , l_array_event_created_by
68556       , l_array_budgetary_control_flag 
68557       , l_array_source_32
68558       , l_array_source_68
68559       , l_array_source_88
68560       LIMIT l_rows;
68561 --
68562 IF (C_LEVEL_EVENT >= g_log_level) THEN
68563    trace
68564    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
68565    ,p_level    => C_LEVEL_EVENT
68566    ,p_module   => l_log_module);
68567 END IF;
68568 --
68569 EXIT WHEN l_array_entity_id.COUNT = 0;
68570 
68571 -- initialize arrays
68572 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
68573 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
68574 
68575 --
68576 -- Bug 4458708
68577 --
68578 XLA_AE_LINES_PKG.g_LineNumber := 0;
68579 
68580 
68581 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
68582 g_last_hdr_idx := l_array_event_id.LAST;
68583 --
68584 -- loop for the headers. Each iteration is for each header extract row
68585 -- fetched in header cursor
68586 --
68587 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
68588 
68589 --
68590 -- set event info as cache for other routines to refer event attributes
68591 --
68592 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
68593    (p_application_id           => p_application_id
68594    ,p_primary_ledger_id        => p_primary_ledger_id
68595    ,p_base_ledger_id           => p_base_ledger_id
68596    ,p_target_ledger_id         => p_target_ledger_id
68597    ,p_entity_id                => l_array_entity_id(hdr_idx)
68598    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
68599    ,p_entity_code              => l_array_entity_code(hdr_idx)
68600    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
68601    ,p_event_id                 => l_array_event_id(hdr_idx)
68602    ,p_event_class_code         => l_array_class_code(hdr_idx)
68603    ,p_event_type_code          => l_array_event_type(hdr_idx)
68604    ,p_event_number             => l_array_event_number(hdr_idx)
68605    ,p_event_date               => l_array_event_date(hdr_idx)
68606    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
68607    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
68611    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
68608    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
68609    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
68610    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
68612    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
68613    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
68614    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
68615    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
68616    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
68617    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
68618    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
68619    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
68620    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
68621 
68622 --
68623 -- set the status of entry to C_VALID (0)
68624 --
68625 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
68626 
68627 --
68628 -- initialize a row for ae header
68629 --
68630 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
68631 
68632 l_event_id := l_array_event_id(hdr_idx);
68633 
68634 --
68635 -- storing the hdr_idx for event. May be used by line cursor.
68636 --
68637 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
68638 
68639 --
68640 -- store sources from header extract. This can be improved to
68641 -- store only those sources from header extract that may be used in lines
68642 --
68643 
68644 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
68645 g_array_event(l_event_id).array_value_char('source_68') := l_array_source_68(hdr_idx);
68646 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
68647 
68648 --
68649 -- initilaize the status of ae headers for diffrent balance types
68650 -- the status is initialised to C_NOT_CREATED (2)
68651 --
68652 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68653 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68654 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68655 
68656 --
68657 -- call api to validate and store accounting attributes for header
68658 --
68659 
68660 ------------------------------------------------------------
68661 -- Accrual Reversal : to get date for Standard Source (NONE)
68662 ------------------------------------------------------------
68663 l_acc_rev_gl_date_source := NULL;
68664 
68665      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
68666       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
68667 
68668 
68669 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
68670 
68671 XLA_AE_HEADER_PKG.SetJeCategoryName;
68672 
68673 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
68674 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
68675 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
68676 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
68677 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
68678 
68679 
68680 -- No header level analytical criteria
68681 
68682 --
68683 --accounting attribute enhancement, bug 3612931
68684 --
68685 l_trx_reversal_source := SUBSTR(NULL, 1,30);
68686 
68687 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
68688    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68689 
68690    xla_accounting_err_pkg.build_message
68691       (p_appli_s_name            => 'XLA'
68692       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
68693       ,p_token_1                 => 'ACCT_ATTR_NAME'
68694       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
68695       ,p_token_2                 => 'PRODUCT_NAME'
68696       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68697       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68698       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68699       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68700 
68701 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
68702    --
68703    -- following sets the accounting attributes needed to reverse
68704    -- accounting for a distributeion
68705    --
68706    xla_ae_lines_pkg.SetTrxReversalAttrs
68707       (p_event_id              => l_event_id
68708       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
68709       ,p_trx_reversal_source   => l_trx_reversal_source);
68710 
68711 END IF;
68712 
68713 
68714 ----------------------------------------------------------------
68715 -- 4262811 -  update the header statuses to invalid in need be
68716 ----------------------------------------------------------------
68717 --
68718 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
68719 
68720 
68721   -----------------------------------------------
68722   -- No accrual reversal for the event class/type
68723   -----------------------------------------------
68724 ----------------------------------------------------------------
68725 
68726 --
68727 -- this ends the header loop iteration for one bulk fetch
68728 --
68729 END LOOP;
68730 
68731 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
68732 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
68733 
68737 --
68734 --
68735 -- insert dummy rows into lines gt table that were created due to
68736 -- transaction reversals
68738 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
68739    l_result := XLA_AE_LINES_PKG.InsertLines;
68740 END IF;
68741 
68742 --
68743 -- reset the temp_line_num for each set of events fetched from header
68744 -- cursor rather than doing it for each new event in line cursor
68745 -- Bug 3939231
68746 --
68747 xla_ae_lines_pkg.g_temp_line_num := 0;
68748 
68749 
68750 
68751 --
68752 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
68753 --
68754 --
68755 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68756 
68757       trace
68758          (p_msg      => 'SQL - FETCH line_cur'
68759          ,p_level    => C_LEVEL_STATEMENT
68760          ,p_module   => l_log_module);
68761 
68762 END IF;
68763 --
68764 --
68765 LOOP
68766   --
68767   FETCH line_cur BULK COLLECT INTO
68768         l_array_entity_id
68769       , l_array_legal_entity_id
68770       , l_array_entity_code
68771       , l_array_transaction_num
68772       , l_array_event_id
68773       , l_array_class_code
68774       , l_array_event_type
68775       , l_array_event_number
68776       , l_array_event_date
68777       , l_array_transaction_date
68778       , l_array_reference_num_1
68779       , l_array_reference_num_2
68780       , l_array_reference_num_3
68781       , l_array_reference_num_4
68782       , l_array_reference_char_1
68783       , l_array_reference_char_2
68784       , l_array_reference_char_3
68785       , l_array_reference_char_4
68786       , l_array_reference_date_1
68787       , l_array_reference_date_2
68788       , l_array_reference_date_3
68789       , l_array_reference_date_4
68790       , l_array_event_created_by
68791       , l_array_budgetary_control_flag
68792       , l_array_extract_line_num 
68793       , l_array_source_3
68794       , l_array_source_4
68795       , l_array_source_5
68796       , l_array_source_6
68797       , l_array_source_7
68798       , l_array_source_22
68799       , l_array_source_23
68800       , l_array_source_24
68801       , l_array_source_25
68802       , l_array_source_26
68803       , l_array_source_27
68804       , l_array_source_28
68805       , l_array_source_29
68806       , l_array_source_30
68807       , l_array_source_31
68808       , l_array_source_33
68809       , l_array_source_34
68810       , l_array_source_34_meaning
68811       , l_array_source_35
68812       LIMIT l_rows;
68813 
68814   --
68815   IF (C_LEVEL_EVENT >= g_log_level) THEN
68816             trace
68817                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
68818                ,p_level    => C_LEVEL_EVENT
68819                ,p_module   => l_log_module);
68820   END IF;
68821   --
68822   EXIT WHEN l_array_entity_id.count = 0;
68823 
68824   XLA_AE_LINES_PKG.g_rec_lines := null;
68825 
68826 --
68827 -- Bug 4458708
68828 --
68829 XLA_AE_LINES_PKG.g_LineNumber := 0;
68830 --
68831 --
68832 
68833 FOR Idx IN 1..l_array_event_id.count LOOP
68834    --
68835    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
68836    --
68837    l_event_id := l_array_event_id(idx);  -- 5648433
68838 
68839    --
68840    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
68841    --
68842 
68843    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
68844              (g_array_event(l_event_id).array_value_num('header_index'))
68845          ,'N'
68846          ) <> 'Y'
68847    THEN
68848       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68849          trace
68850             (p_msg      => 'Trancaction revesal option is not Y '
68851             ,p_level    => C_LEVEL_STATEMENT
68852             ,p_module   => l_log_module);
68853       END IF;
68854 
68855 --
68856 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
68857 --
68858 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
68859 --
68860 -- set event info as cache for other routines to refer event attributes
68861 --
68862 
68863 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
68864    l_previous_event_id := l_event_id;
68865 
68866    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
68867       (p_application_id           => p_application_id
68868       ,p_primary_ledger_id        => p_primary_ledger_id
68869       ,p_base_ledger_id           => p_base_ledger_id
68870       ,p_target_ledger_id         => p_target_ledger_id
68871       ,p_entity_id                => l_array_entity_id(Idx)
68872       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
68873       ,p_entity_code              => l_array_entity_code(Idx)
68874       ,p_transaction_num          => l_array_transaction_num(Idx)
68875       ,p_event_id                 => l_array_event_id(Idx)
68876       ,p_event_class_code         => l_array_class_code(Idx)
68877       ,p_event_type_code          => l_array_event_type(Idx)
68878       ,p_event_number             => l_array_event_number(Idx)
68879       ,p_event_date               => l_array_event_date(Idx)
68880       ,p_transaction_date         => l_array_transaction_date(Idx)
68881       ,p_reference_num_1          => l_array_reference_num_1(Idx)
68882       ,p_reference_num_2          => l_array_reference_num_2(Idx)
68883       ,p_reference_num_3          => l_array_reference_num_3(Idx)
68884       ,p_reference_num_4          => l_array_reference_num_4(Idx)
68885       ,p_reference_char_1         => l_array_reference_char_1(Idx)
68886       ,p_reference_char_2         => l_array_reference_char_2(Idx)
68890       ,p_reference_date_2         => l_array_reference_date_2(Idx)
68887       ,p_reference_char_3         => l_array_reference_char_3(Idx)
68888       ,p_reference_char_4         => l_array_reference_char_4(Idx)
68889       ,p_reference_date_1         => l_array_reference_date_1(Idx)
68891       ,p_reference_date_3         => l_array_reference_date_3(Idx)
68892       ,p_reference_date_4         => l_array_reference_date_4(Idx)
68893       ,p_event_created_by         => l_array_event_created_by(Idx)
68894       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
68895        --
68896 END IF;
68897 
68898 
68899 
68900 --
68901 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
68902 
68903 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
68904 
68905 IF l_continue_with_lines THEN
68906    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
68907       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68908 
68909       xla_accounting_err_pkg.build_message
68910          (p_appli_s_name            => 'XLA'
68911          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
68912          ,p_token_1                 => 'LINE_NUMBER'
68913          ,p_value_1                 => l_array_extract_line_num(Idx)
68914          ,p_token_2                 => 'PRODUCT_NAME'
68915          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68916          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68917          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68918          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68919 
68920    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
68921       --
68922       -- following sets the accounting attributes needed to reverse
68923       -- accounting for a distributeion
68924       --
68925 
68926       --
68927       -- 5217187
68928       --
68929       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
68930       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
68931                                        g_array_event(l_event_id).array_value_num('header_index'));
68932       --
68933       --
68934 
68935       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
68936       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
68937       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
68938       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
68939       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
68940       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
68941       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
68942       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
68943       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
68944       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
68945       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
68946       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
68947       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
68948       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
68949       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
68950       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
68951       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
68952       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
68953       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
68954       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
68955       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
68956       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
68957       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
68958       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
68959       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
68960       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
68961       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
68962       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
68963       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
68964       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
68965       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
68966       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
68967       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
68968       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
68969       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
68970       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
68971       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
68972       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
68973       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
68974       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
68975       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
68976       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
68977       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
68978       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
68979       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
68980       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
68981       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
68982       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
68983 
68984 
68985       xla_ae_lines_pkg.SetAcctReversalAttrs
68986          (p_event_id             => l_event_id
68987          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
68988          ,p_calculate_acctd_flag => l_calculate_acctd_flag
68989          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
68990    END IF;
68991 
68992    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
68993        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
68994 
68995 --
68996 AcctLineType_48 (
68997  p_application_id  => p_application_id
68998  ,p_event_id     => l_event_id
68999  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69000  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69001  ,p_actual_flag => l_actual_flag
69002  ,p_balance_type_code => l_balance_type_code
69003  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69004  
69005  , p_source_3 => l_array_source_3(Idx)
69006  , p_source_4 => l_array_source_4(Idx)
69007  , p_source_5 => l_array_source_5(Idx)
69008  , p_source_6 => l_array_source_6(Idx)
69009  , p_source_22 => l_array_source_22(Idx)
69010  , p_source_23 => l_array_source_23(Idx)
69011  , p_source_24 => l_array_source_24(Idx)
69012  , p_source_25 => l_array_source_25(Idx)
69013  , p_source_26 => l_array_source_26(Idx)
69014  , p_source_27 => l_array_source_27(Idx)
69015  , p_source_28 => l_array_source_28(Idx)
69016  , p_source_29 => l_array_source_29(Idx)
69017  , p_source_30 => l_array_source_30(Idx)
69018  , p_source_31 => l_array_source_31(Idx)
69019  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
69020  , p_source_33 => l_array_source_33(Idx)
69021  , p_source_34 => l_array_source_34(Idx)
69022  , p_source_34_meaning => l_array_source_34_meaning(Idx)
69026 If(l_balance_type_code = 'A') THEN
69023  , p_source_35 => l_array_source_35(Idx)
69024  , p_source_68 => g_array_event(l_event_id).array_value_char('source_68')
69025  );
69027   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69028 END IF;
69029 
69030 --
69031 
69032 
69033 --
69034 AcctLineType_62 (
69035  p_application_id  => p_application_id
69036  ,p_event_id     => l_event_id
69037  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69038  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69039  ,p_actual_flag => l_actual_flag
69040  ,p_balance_type_code => l_balance_type_code
69041  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69042  
69043  , p_source_3 => l_array_source_3(Idx)
69044  , p_source_4 => l_array_source_4(Idx)
69045  , p_source_6 => l_array_source_6(Idx)
69046  , p_source_7 => l_array_source_7(Idx)
69047  , p_source_22 => l_array_source_22(Idx)
69048  , p_source_23 => l_array_source_23(Idx)
69049  , p_source_24 => l_array_source_24(Idx)
69050  , p_source_25 => l_array_source_25(Idx)
69051  , p_source_26 => l_array_source_26(Idx)
69052  , p_source_27 => l_array_source_27(Idx)
69053  , p_source_28 => l_array_source_28(Idx)
69054  , p_source_29 => l_array_source_29(Idx)
69055  , p_source_30 => l_array_source_30(Idx)
69056  , p_source_31 => l_array_source_31(Idx)
69057  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
69058  , p_source_33 => l_array_source_33(Idx)
69059  , p_source_34 => l_array_source_34(Idx)
69060  , p_source_34_meaning => l_array_source_34_meaning(Idx)
69061  , p_source_35 => l_array_source_35(Idx)
69062  , p_source_68 => g_array_event(l_event_id).array_value_char('source_68')
69063  );
69064 If(l_balance_type_code = 'A') THEN
69065   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69066 END IF;
69067 
69068 --
69069 
69070       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
69071       -- or secondary ledger that has different currency with primary
69072       -- or alc that is calculated by sla
69073       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
69074             (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'))
69075 
69076 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
69077 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
69078           AND (l_actual_flag = 'A')) THEN
69079         XLA_AE_LINES_PKG.CreateGainOrLossLines(
69080           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
69081          ,p_application_id   => p_application_id
69082          ,p_amb_context_code => 'DEFAULT'
69083          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
69084          ,p_event_class_code => C_EVENT_CLASS_CODE
69085          ,p_event_type_code  => C_EVENT_TYPE_CODE
69086          
69087          ,p_gain_ccid        => -1
69088          ,p_loss_ccid        => -1
69089 
69090          ,p_actual_flag      => l_actual_flag
69091          ,p_enc_flag         => null
69092          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
69093          ,p_enc_g_l_ref      => null
69094          );
69095       END IF;
69096    END IF;
69097 END IF;
69098 
69099    ELSE
69100       --
69101       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
69102       --
69103       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69104          trace
69105             (p_msg      => 'Trancaction revesal option is Y'
69106             ,p_level    => C_LEVEL_STATEMENT
69107             ,p_module   => l_log_module);
69108       END IF;
69109    END IF;
69110 
69111 END LOOP;
69112 l_result := XLA_AE_LINES_PKG.InsertLines ;
69113 end loop;
69114 close line_cur;
69115 
69116 
69117 --
69118 -- insert headers into xla_ae_headers_gt table
69119 --
69120 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
69121 
69122 -- insert into errors table here.
69123 
69124 END LOOP;
69125 
69126 --
69127 -- 4865292
69128 --
69129 -- Compare g_hdr_extract_count with event count in
69130 -- CreateHeadersAndLines.
69131 --
69132 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
69133 
69134 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69135    trace (p_msg     => '# rows extracted from header extract objects '
69136                     || ' (running total): '
69137                     || g_hdr_extract_count
69138          ,p_level   => C_LEVEL_STATEMENT
69139          ,p_module  => l_log_module);
69140 END IF;
69141 
69142 CLOSE header_cur;
69143 --
69144 
69145 --
69146 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69147    trace
69148       (p_msg      => 'END of EventClass_119'
69149       ,p_level    => C_LEVEL_PROCEDURE
69150       ,p_module   => l_log_module);
69151 END IF;
69152 --
69153 RETURN l_result;
69154 EXCEPTION
69155 WHEN xla_exceptions_pkg.application_exception THEN
69156    
69157 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
69158 
69159    
69160 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
69161 
69162    RAISE;
69163 WHEN OTHERS THEN
69164    xla_exceptions_pkg.raise_message
69165       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_119');
69166 END EventClass_119;
69167 --
69168 
69169 ---------------------------------------
69170 --
69171 -- PRIVATE PROCEDURE
69172 --         insert_sources_120
69173 --
69174 ----------------------------------------
69175 --
69176 PROCEDURE insert_sources_120(
69177                                 p_target_ledger_id       IN NUMBER
69181                               , p_pad_end_date           IN DATE
69178                               , p_language               IN VARCHAR2
69179                               , p_sla_ledger_id          IN NUMBER
69180                               , p_pad_start_date         IN DATE
69182                          )
69183 IS
69184 
69185 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ALL';
69186 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_COST';
69187 p_apps_owner                   VARCHAR2(30);
69188 l_log_module                   VARCHAR2(240);
69189 BEGIN
69190 IF g_log_enabled THEN
69191       l_log_module := C_DEFAULT_MODULE||'.insert_sources_120';
69192 END IF;
69193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69194 
69195       trace
69196          (p_msg      => 'BEGIN of insert_sources_120'
69197          ,p_level    => C_LEVEL_PROCEDURE
69198          ,p_module   => l_log_module);
69199 
69200 END IF;
69201 
69202 -- select APPS owner
69203 SELECT oracle_username
69204   INTO p_apps_owner
69205   FROM fnd_oracle_userid
69206  WHERE read_only_flag = 'U'
69207 ;
69208 
69209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69210       trace
69211          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
69212                         ' - p_language = '||p_language||
69213                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
69214                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
69215                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
69216                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
69217          ,p_level    => C_LEVEL_STATEMENT
69218          ,p_module   => l_log_module);
69219 END IF;
69220 
69221 
69222 --
69223 INSERT INTO xla_diag_sources --hdr2
69224 (
69225         event_id
69226       , ledger_id
69227       , sla_ledger_id
69228       , description_language
69229       , object_name
69230       , object_type_code
69231       , line_number
69232       , source_application_id
69233       , source_type_code
69234       , source_code
69235       , source_value
69236       , source_meaning
69237       , created_by
69238       , creation_date
69239       , last_update_date
69240       , last_updated_by
69241       , last_update_login
69242       , program_update_date
69243       , program_application_id
69244       , program_id
69245       , request_id
69246 )
69247 SELECT
69248         event_id
69249       , p_target_ledger_id
69250       , p_sla_ledger_id
69251       , p_language
69252       , object_name
69253       , object_type_code
69254       , line_number
69255       , source_application_id
69256       , source_type_code
69257       , source_code
69258       , SUBSTR(source_value ,1,1996)
69259       , SUBSTR(source_meaning ,1,200)
69260       , xla_environment_pkg.g_Usr_Id
69261       , TRUNC(SYSDATE)
69262       , TRUNC(SYSDATE)
69263       , xla_environment_pkg.g_Usr_Id
69264       , xla_environment_pkg.g_Login_Id
69265       , TRUNC(SYSDATE)
69266       , xla_environment_pkg.g_Prog_Appl_Id
69267       , xla_environment_pkg.g_Prog_Id
69268       , xla_environment_pkg.g_Req_Id
69269   FROM (
69270        SELECT xet.event_id                  event_id
69271             , 0                          line_number
69272             , CASE r
69273                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
69274                 WHEN 2 THEN 'PA_XLA_PROJECT_REF_V' 
69275                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
69276                 
69277                ELSE null
69278               END                           object_name
69279             , CASE r
69280                 WHEN 1 THEN 'HEADER' 
69281                 WHEN 2 THEN 'HEADER' 
69282                 WHEN 3 THEN 'HEADER' 
69283                 
69284                 ELSE null
69285               END                           object_type_code
69286             , CASE r
69287                 WHEN 1 THEN '275' 
69288                 WHEN 2 THEN '275' 
69289                 WHEN 3 THEN '275' 
69290                 
69291                 ELSE null
69292               END                           source_application_id
69293             , 'S'             source_type_code
69294             , CASE r
69295                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
69296                 WHEN 2 THEN 'PROJECT_NUMBER' 
69297                 WHEN 3 THEN 'GL_DATE' 
69298                 
69299                 ELSE null
69300               END                           source_code
69301             , CASE r
69302                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
69303                 WHEN 2 THEN TO_CHAR(h3.PROJECT_NUMBER)
69304                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
69305                 
69306                 ELSE null
69307               END                           source_value
69308             , null              source_meaning
69309          FROM xla_events_gt     xet  
69310       , PA_XLA_EXP_HEADER_V  h2
69311       , PA_XLA_PROJECT_REF_V  h3
69312              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
69313          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
69314            AND xet.event_class_code = C_EVENT_CLASS_CODE
69315               AND h2.event_id = xet.event_id
69316  AND h3.project_id=h2.project_id
69317 )
69318 ;
69319 --
69320 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69321 
69322       trace
69323          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
69324          ,p_level    => C_LEVEL_STATEMENT
69325          ,p_module   => l_log_module);
69326 
69327 END IF;
69328 --
69329 
69330 
69331 
69332 --
69333 INSERT INTO xla_diag_sources  --line2
69334 (
69335         event_id
69336       , ledger_id
69337       , sla_ledger_id
69338       , description_language
69339       , object_name
69340       , object_type_code
69341       , line_number
69342       , source_application_id
69343       , source_type_code
69344       , source_code
69345       , source_value
69346       , source_meaning
69347       , created_by
69348       , creation_date
69349       , last_update_date
69350       , last_updated_by
69351       , last_update_login
69352       , program_update_date
69353       , program_application_id
69354       , program_id
69355       , request_id
69356 )
69357 SELECT  event_id
69358       , p_target_ledger_id
69359       , p_sla_ledger_id
69360       , p_language
69361       , object_name
69362       , object_type_code
69363       , line_number
69364       , source_application_id
69365       , source_type_code
69366       , source_code
69367       , SUBSTR(source_value,1,1996)
69368       , SUBSTR(source_meaning ,1,200)
69369       , xla_environment_pkg.g_Usr_Id
69370       , TRUNC(SYSDATE)
69371       , TRUNC(SYSDATE)
69372       , xla_environment_pkg.g_Usr_Id
69373       , xla_environment_pkg.g_Login_Id
69374       , TRUNC(SYSDATE)
69375       , xla_environment_pkg.g_Prog_Appl_Id
69376       , xla_environment_pkg.g_Prog_Id
69377       , xla_environment_pkg.g_Req_Id
69378   FROM (
69379        SELECT xet.event_id                  event_id
69380             , l1.line_number                 line_number
69381             , CASE r
69382                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
69383                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
69384                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
69385                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
69386                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
69387                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
69391                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
69388                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
69389                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
69390                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
69392                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
69393                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
69394                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
69395                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
69396                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
69397                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
69398                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
69399                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
69400                 
69401                ELSE null
69402               END                           object_name
69403             , CASE r
69404                 WHEN 1 THEN 'LINE' 
69405                 WHEN 2 THEN 'LINE' 
69406                 WHEN 3 THEN 'LINE' 
69407                 WHEN 4 THEN 'LINE' 
69408                 WHEN 5 THEN 'LINE' 
69409                 WHEN 6 THEN 'LINE' 
69410                 WHEN 7 THEN 'LINE' 
69411                 WHEN 8 THEN 'LINE' 
69412                 WHEN 9 THEN 'LINE' 
69413                 WHEN 10 THEN 'LINE' 
69414                 WHEN 11 THEN 'LINE' 
69415                 WHEN 12 THEN 'LINE' 
69416                 WHEN 13 THEN 'LINE' 
69417                 WHEN 14 THEN 'LINE' 
69418                 WHEN 15 THEN 'LINE' 
69419                 WHEN 16 THEN 'LINE' 
69420                 WHEN 17 THEN 'LINE' 
69421                 WHEN 18 THEN 'LINE' 
69422                 
69423                 ELSE null
69424               END                           object_type_code
69425             , CASE r
69426                 WHEN 1 THEN '275' 
69427                 WHEN 2 THEN '275' 
69428                 WHEN 3 THEN '275' 
69429                 WHEN 4 THEN '275' 
69430                 WHEN 5 THEN '275' 
69431                 WHEN 6 THEN '275' 
69432                 WHEN 7 THEN '275' 
69433                 WHEN 8 THEN '275' 
69434                 WHEN 9 THEN '275' 
69435                 WHEN 10 THEN '275' 
69436                 WHEN 11 THEN '275' 
69437                 WHEN 12 THEN '275' 
69438                 WHEN 13 THEN '275' 
69439                 WHEN 14 THEN '275' 
69440                 WHEN 15 THEN '275' 
69441                 WHEN 16 THEN '275' 
69442                 WHEN 17 THEN '275' 
69443                 WHEN 18 THEN '275' 
69444                 
69445                 ELSE null
69446               END                           source_application_id
69447             , 'S'             source_type_code
69448             , CASE r
69449                 WHEN 1 THEN 'COST_CCID' 
69450                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
69451                 WHEN 3 THEN 'ADJ_COST_CCID' 
69452                 WHEN 4 THEN 'COST_CLEARING_CCID' 
69453                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
69457                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
69454                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
69455                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
69456                 WHEN 8 THEN 'ENTERED_RAW_COST' 
69458                 WHEN 10 THEN 'ACCT_RAW_COST' 
69459                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
69460                 WHEN 12 THEN 'EXCHANGE_RATE' 
69461                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
69462                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
69463                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
69464                 WHEN 16 THEN 'LINE_NUMBER' 
69465                 WHEN 17 THEN 'LINE_TYPE' 
69466                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
69467                 
69468                 ELSE null
69469               END                           source_code
69470             , CASE r
69471                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
69472                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
69473                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
69474                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
69475                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
69476                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
69477                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
69478                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
69479                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
69480                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
69481                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
69482                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
69483                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
69484                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
69485                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
69486                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
69487                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
69488                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
69489                 
69490                 ELSE null
69491               END                           source_value
69492             , CASE r
69493                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
69494                           103371
69495                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
69496                          ,'ALLOW_OVERRIDE_CCID_FLAG'
69497                          ,'S'
69498                          ,275)
69499                 WHEN 17 THEN fvl34.meaning
69500                 
69501                 ELSE null
69502               END               source_meaning
69503          FROM  xla_events_gt     xet  
69504         , PA_XLA_CDL_LINES_V  l1
69505   , fnd_lookup_values    fvl34
69506             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
69507         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
69508           AND xet.event_class_code = C_EVENT_CLASS_CODE
69509             AND l1.event_id          = xet.event_id
69510    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
69511   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
69512   AND fvl34.view_application_id(+) = 275
69513   AND fvl34.language(+)            = USERENV('LANG')
69514   
69515 )
69516 ;
69517 --
69518 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69519 
69520       trace
69521          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
69522          ,p_level    => C_LEVEL_STATEMENT
69523          ,p_module   => l_log_module);
69524 
69525 END IF;
69526 
69527 
69528 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69529       trace
69530          (p_msg      => 'END of insert_sources_120'
69531          ,p_level    => C_LEVEL_PROCEDURE
69532          ,p_module   => l_log_module);
69533 END IF;
69534 EXCEPTION
69535   WHEN xla_exceptions_pkg.application_exception THEN
69536       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69537             trace
69538                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69539                ,p_level    => C_LEVEL_EXCEPTION
69540                ,p_module   => l_log_module);
69541       END IF;
69542       RAISE;
69543   WHEN OTHERS THEN
69544       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69545             trace
69546                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69547                ,p_level    => C_LEVEL_EXCEPTION
69548                ,p_module   => l_log_module);
69549        END IF;
69550        xla_exceptions_pkg.raise_message
69551            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_120');
69552 END insert_sources_120;
69553 --
69554 
69555 ---------------------------------------
69556 --
69557 -- PRIVATE FUNCTION
69558 --         EventClass_120
69559 --
69560 ----------------------------------------
69561 --
69562 FUNCTION EventClass_120
69563        (p_application_id         IN NUMBER
69564        ,p_base_ledger_id         IN NUMBER
69565        ,p_target_ledger_id       IN NUMBER
69566        ,p_language               IN VARCHAR2
69567        ,p_currency_code          IN VARCHAR2
69568        ,p_sla_ledger_id          IN NUMBER
69569        ,p_pad_start_date         IN DATE
69570        ,p_pad_end_date           IN DATE
69571        ,p_primary_ledger_id      IN NUMBER)
69572 RETURN BOOLEAN IS
69573 --
69574 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ALL';
69575 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_COST';
69576 
69577 l_calculate_acctd_flag   VARCHAR2(1) :='N';
69578 l_calculate_g_l_flag     VARCHAR2(1) :='N';
69579 --
69580 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69581 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69582 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69583 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69587 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69584 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69585 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69586 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69588 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69589 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69590 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69591 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69592 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69593 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69594 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69595 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69596 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69597 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69598 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69599 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69600 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69601 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69602 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
69603 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69604 
69605 l_event_id                             NUMBER;
69606 l_previous_event_id                    NUMBER;
69607 l_first_event_id                       NUMBER;
69608 l_last_event_id                        NUMBER;
69609 
69610 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
69611 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
69612 --
69613 --
69614 l_result                    BOOLEAN := TRUE;
69615 l_rows                      NUMBER  := 1000;
69616 l_event_type_name           VARCHAR2(80) := 'All';
69617 l_event_class_name          VARCHAR2(80) := 'Miscellaneous Cost';
69618 l_description               VARCHAR2(4000);
69619 l_transaction_reversal      NUMBER;
69620 l_ae_header_id              NUMBER;
69621 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
69622 l_log_module                VARCHAR2(240);
69623 --
69624 l_acct_reversal_source      VARCHAR2(30);
69625 l_trx_reversal_source       VARCHAR2(30);
69626 
69627 l_continue_with_lines       BOOLEAN := TRUE;
69628 --
69629 l_acc_rev_gl_date_source    DATE;                      -- 4262811
69630 --
69631 type t_array_event_id is table of number index by binary_integer;
69632 
69633 l_rec_array_event                    t_rec_array_event;
69634 l_null_rec_array_event               t_rec_array_event;
69635 l_array_ae_header_id                 xla_number_array_type;
69636 l_actual_flag                        VARCHAR2(1) := NULL;
69637 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
69638 l_balance_type_code                  VARCHAR2(1) :=NULL;
69639 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
69640 
69641 --
69642 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
69643 --
69644 
69645 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
69646 TYPE t_array_source_68 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJECT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
69647 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
69648 
69649 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
69650 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
69651 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
69652 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
69653 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
69654 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
69655 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
69656 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
69657 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
69658 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
69659 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
69660 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
69661 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
69662 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
69663 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
69664 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
69665 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
69666 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
69667 
69668 l_array_source_32              t_array_source_32;
69669 l_array_source_68              t_array_source_68;
69670 l_array_source_88              t_array_source_88;
69671 
69672 l_array_source_3      t_array_source_3;
69673 l_array_source_4      t_array_source_4;
69674 l_array_source_5      t_array_source_5;
69675 l_array_source_6      t_array_source_6;
69676 l_array_source_7      t_array_source_7;
69677 l_array_source_22      t_array_source_22;
69678 l_array_source_23      t_array_source_23;
69679 l_array_source_24      t_array_source_24;
69683 l_array_source_28      t_array_source_28;
69680 l_array_source_25      t_array_source_25;
69681 l_array_source_26      t_array_source_26;
69682 l_array_source_27      t_array_source_27;
69684 l_array_source_29      t_array_source_29;
69685 l_array_source_30      t_array_source_30;
69686 l_array_source_31      t_array_source_31;
69687 l_array_source_33      t_array_source_33;
69688 l_array_source_34      t_array_source_34;
69689 l_array_source_34_meaning      t_array_lookup_meaning;
69690 l_array_source_35      t_array_source_35;
69691 
69692 --
69693 CURSOR header_cur
69694 IS
69695 SELECT /*+ leading(xet) cardinality(xet,1) */
69696 -- Event Class Code: MISC_COST
69697     xet.entity_id
69698    ,xet.legal_entity_id
69699    ,xet.entity_code
69700    ,xet.transaction_number
69701    ,xet.event_id
69702    ,xet.event_class_code
69703    ,xet.event_type_code
69704    ,xet.event_number
69705    ,xet.event_date
69706    ,xet.transaction_date
69707    ,xet.reference_num_1
69708    ,xet.reference_num_2
69709    ,xet.reference_num_3
69710    ,xet.reference_num_4
69711    ,xet.reference_char_1
69712    ,xet.reference_char_2
69713    ,xet.reference_char_3
69714    ,xet.reference_char_4
69715    ,xet.reference_date_1
69716    ,xet.reference_date_2
69717    ,xet.reference_date_3
69718    ,xet.reference_date_4
69719    ,xet.event_created_by
69720    ,xet.budgetary_control_flag 
69721   , h2.EXPENDITURE_ITEM_ID    source_32
69722   , h3.PROJECT_NUMBER    source_68
69723   , h2.GL_DATE    source_88
69724   FROM xla_events_gt     xet 
69725   , PA_XLA_EXP_HEADER_V  h2
69726   , PA_XLA_PROJECT_REF_V  h3
69727  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
69728    and xet.event_class_code = C_EVENT_CLASS_CODE
69729    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
69730  AND h3.PROJECT_ID=h2.PROJECT_ID
69731  ORDER BY event_id
69732 ;
69733 
69734 
69735 --
69736 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
69737 IS
69738 SELECT  /*+ leading(xet) cardinality(xet,1) */
69739 -- Event Class Code: MISC_COST
69740     xet.entity_id
69741    ,xet.legal_entity_id
69742    ,xet.entity_code
69743    ,xet.transaction_number
69744    ,xet.event_id
69745    ,xet.event_class_code
69746    ,xet.event_type_code
69747    ,xet.event_number
69748    ,xet.event_date
69749    ,xet.transaction_date
69750    ,xet.reference_num_1
69751    ,xet.reference_num_2
69752    ,xet.reference_num_3
69753    ,xet.reference_num_4
69754    ,xet.reference_char_1
69755    ,xet.reference_char_2
69756    ,xet.reference_char_3
69757    ,xet.reference_char_4
69758    ,xet.reference_date_1
69759    ,xet.reference_date_2
69760    ,xet.reference_date_3
69761    ,xet.reference_date_4
69762    ,xet.event_created_by
69763    ,xet.budgetary_control_flag
69764  , l1.LINE_NUMBER  
69765   , l1.COST_CCID    source_3
69766   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
69767   , l1.ADJ_COST_CCID    source_5
69768   , l1.COST_CLEARING_CCID    source_6
69769   , l1.ADJ_COST_CLEARING_CCID    source_7
69770   , l1.REVERSING_LINE_FLAG    source_22
69771   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
69772   , l1.ENTERED_RAW_COST    source_24
69773   , l1.ENTERED_CURRENCY_CODE    source_25
69774   , l1.ACCT_RAW_COST    source_26
69775   , l1.EXCHANGE_RATE_DATE    source_27
69776   , l1.EXCHANGE_RATE    source_28
69777   , l1.EXCHANGE_RATE_TYPE    source_29
69778   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
69779   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
69780   , l1.LINE_NUMBER    source_33
69781   , l1.LINE_TYPE    source_34
69782   , fvl34.meaning   source_34_meaning
69783   , l1.LINE_NUM_REVERSED    source_35
69784   FROM xla_events_gt     xet 
69785   , PA_XLA_CDL_LINES_V  l1
69786   , fnd_lookup_values    fvl34
69787  WHERE xet.event_id between x_first_event_id and x_last_event_id
69788    and xet.event_date between p_pad_start_date and p_pad_end_date
69789    and xet.event_class_code = C_EVENT_CLASS_CODE
69790    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
69791    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
69792   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
69793   AND fvl34.view_application_id(+) = 275
69794   AND fvl34.language(+)            = USERENV('LANG')
69795   ;
69796 
69797 --
69798 BEGIN
69799 IF g_log_enabled THEN
69800    l_log_module := C_DEFAULT_MODULE||'.EventClass_120';
69801 END IF;
69802 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69803    trace
69804       (p_msg      => 'BEGIN of EventClass_120'
69805       ,p_level    => C_LEVEL_PROCEDURE
69806       ,p_module   => l_log_module);
69807 END IF;
69808 
69809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69810    trace
69811       (p_msg      => 'p_application_id = '||p_application_id||
69812                      ' - p_base_ledger_id = '||p_base_ledger_id||
69813                      ' - p_target_ledger_id  = '||p_target_ledger_id||
69814                      ' - p_language = '||p_language||
69815                      ' - p_currency_code = '||p_currency_code||
69816                      ' - p_sla_ledger_id = '||p_sla_ledger_id
69817       ,p_level    => C_LEVEL_STATEMENT
69818       ,p_module   => l_log_module);
69819 END IF;
69820 --
69821 -- initialze arrays
69822 --
69823 g_array_event.DELETE;
69824 l_rec_array_event := l_null_rec_array_event;
69825 --
69826 --------------------------------------
69827 -- 4262811 Initialze MPA Line Number
69828 --------------------------------------
69829 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
69830 
69831 --
69832 
69833 --
69834 OPEN header_cur;
69835 --
69836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69837    trace
69841 END IF;
69838    (p_msg      => 'SQL - FETCH header_cur'
69839    ,p_level    => C_LEVEL_STATEMENT
69840    ,p_module   => l_log_module);
69842 --
69843 LOOP
69844 FETCH header_cur BULK COLLECT INTO
69845         l_array_entity_id
69846       , l_array_legal_entity_id
69847       , l_array_entity_code
69848       , l_array_transaction_num
69849       , l_array_event_id
69850       , l_array_class_code
69851       , l_array_event_type
69852       , l_array_event_number
69853       , l_array_event_date
69854       , l_array_transaction_date
69855       , l_array_reference_num_1
69856       , l_array_reference_num_2
69857       , l_array_reference_num_3
69858       , l_array_reference_num_4
69859       , l_array_reference_char_1
69860       , l_array_reference_char_2
69861       , l_array_reference_char_3
69862       , l_array_reference_char_4
69863       , l_array_reference_date_1
69864       , l_array_reference_date_2
69865       , l_array_reference_date_3
69866       , l_array_reference_date_4
69867       , l_array_event_created_by
69868       , l_array_budgetary_control_flag 
69869       , l_array_source_32
69870       , l_array_source_68
69871       , l_array_source_88
69872       LIMIT l_rows;
69873 --
69874 IF (C_LEVEL_EVENT >= g_log_level) THEN
69875    trace
69876    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
69877    ,p_level    => C_LEVEL_EVENT
69878    ,p_module   => l_log_module);
69879 END IF;
69880 --
69881 EXIT WHEN l_array_entity_id.COUNT = 0;
69882 
69883 -- initialize arrays
69884 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
69885 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
69886 
69887 --
69888 -- Bug 4458708
69889 --
69890 XLA_AE_LINES_PKG.g_LineNumber := 0;
69891 
69892 
69893 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
69894 g_last_hdr_idx := l_array_event_id.LAST;
69895 --
69896 -- loop for the headers. Each iteration is for each header extract row
69897 -- fetched in header cursor
69898 --
69899 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
69900 
69901 --
69902 -- set event info as cache for other routines to refer event attributes
69903 --
69904 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
69905    (p_application_id           => p_application_id
69906    ,p_primary_ledger_id        => p_primary_ledger_id
69907    ,p_base_ledger_id           => p_base_ledger_id
69908    ,p_target_ledger_id         => p_target_ledger_id
69909    ,p_entity_id                => l_array_entity_id(hdr_idx)
69910    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
69911    ,p_entity_code              => l_array_entity_code(hdr_idx)
69912    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
69913    ,p_event_id                 => l_array_event_id(hdr_idx)
69914    ,p_event_class_code         => l_array_class_code(hdr_idx)
69915    ,p_event_type_code          => l_array_event_type(hdr_idx)
69916    ,p_event_number             => l_array_event_number(hdr_idx)
69917    ,p_event_date               => l_array_event_date(hdr_idx)
69918    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
69919    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
69920    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
69921    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
69922    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
69923    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
69924    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
69925    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
69926    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
69927    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
69928    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
69929    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
69930    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
69931    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
69932    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
69933 
69934 --
69935 -- set the status of entry to C_VALID (0)
69936 --
69937 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
69938 
69939 --
69940 -- initialize a row for ae header
69941 --
69942 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
69943 
69944 l_event_id := l_array_event_id(hdr_idx);
69945 
69946 --
69947 -- storing the hdr_idx for event. May be used by line cursor.
69948 --
69949 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
69950 
69951 --
69952 -- store sources from header extract. This can be improved to
69953 -- store only those sources from header extract that may be used in lines
69954 --
69955 
69956 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
69957 g_array_event(l_event_id).array_value_char('source_68') := l_array_source_68(hdr_idx);
69958 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
69959 
69960 --
69961 -- initilaize the status of ae headers for diffrent balance types
69962 -- the status is initialised to C_NOT_CREATED (2)
69963 --
69964 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69965 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69966 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69967 
69968 --
69969 -- call api to validate and store accounting attributes for header
69970 --
69971 
69972 ------------------------------------------------------------
69976 
69973 -- Accrual Reversal : to get date for Standard Source (NONE)
69974 ------------------------------------------------------------
69975 l_acc_rev_gl_date_source := NULL;
69977      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
69978       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
69979 
69980 
69981 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
69982 
69983 XLA_AE_HEADER_PKG.SetJeCategoryName;
69984 
69985 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
69986 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
69987 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
69988 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
69989 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
69990 
69991 
69992 -- No header level analytical criteria
69993 
69994 --
69995 --accounting attribute enhancement, bug 3612931
69996 --
69997 l_trx_reversal_source := SUBSTR(NULL, 1,30);
69998 
69999 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
70000    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
70001 
70002    xla_accounting_err_pkg.build_message
70003       (p_appli_s_name            => 'XLA'
70004       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
70005       ,p_token_1                 => 'ACCT_ATTR_NAME'
70006       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
70007       ,p_token_2                 => 'PRODUCT_NAME'
70008       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
70009       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
70010       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
70011       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
70012 
70013 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
70014    --
70015    -- following sets the accounting attributes needed to reverse
70016    -- accounting for a distributeion
70017    --
70018    xla_ae_lines_pkg.SetTrxReversalAttrs
70019       (p_event_id              => l_event_id
70020       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
70021       ,p_trx_reversal_source   => l_trx_reversal_source);
70022 
70023 END IF;
70024 
70025 
70026 ----------------------------------------------------------------
70027 -- 4262811 -  update the header statuses to invalid in need be
70028 ----------------------------------------------------------------
70029 --
70030 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
70031 
70032 
70033   -----------------------------------------------
70034   -- No accrual reversal for the event class/type
70035   -----------------------------------------------
70036 ----------------------------------------------------------------
70037 
70038 --
70039 -- this ends the header loop iteration for one bulk fetch
70040 --
70041 END LOOP;
70042 
70043 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
70044 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
70045 
70046 --
70047 -- insert dummy rows into lines gt table that were created due to
70048 -- transaction reversals
70049 --
70050 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
70051    l_result := XLA_AE_LINES_PKG.InsertLines;
70052 END IF;
70053 
70054 --
70055 -- reset the temp_line_num for each set of events fetched from header
70056 -- cursor rather than doing it for each new event in line cursor
70057 -- Bug 3939231
70058 --
70059 xla_ae_lines_pkg.g_temp_line_num := 0;
70060 
70061 
70062 
70063 --
70064 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
70065 --
70066 --
70067 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70068 
70069       trace
70070          (p_msg      => 'SQL - FETCH line_cur'
70071          ,p_level    => C_LEVEL_STATEMENT
70072          ,p_module   => l_log_module);
70073 
70074 END IF;
70075 --
70076 --
70077 LOOP
70078   --
70079   FETCH line_cur BULK COLLECT INTO
70080         l_array_entity_id
70081       , l_array_legal_entity_id
70082       , l_array_entity_code
70083       , l_array_transaction_num
70084       , l_array_event_id
70085       , l_array_class_code
70086       , l_array_event_type
70087       , l_array_event_number
70088       , l_array_event_date
70089       , l_array_transaction_date
70090       , l_array_reference_num_1
70091       , l_array_reference_num_2
70092       , l_array_reference_num_3
70093       , l_array_reference_num_4
70094       , l_array_reference_char_1
70095       , l_array_reference_char_2
70096       , l_array_reference_char_3
70097       , l_array_reference_char_4
70098       , l_array_reference_date_1
70099       , l_array_reference_date_2
70100       , l_array_reference_date_3
70101       , l_array_reference_date_4
70102       , l_array_event_created_by
70103       , l_array_budgetary_control_flag
70104       , l_array_extract_line_num 
70105       , l_array_source_3
70106       , l_array_source_4
70107       , l_array_source_5
70108       , l_array_source_6
70109       , l_array_source_7
70110       , l_array_source_22
70111       , l_array_source_23
70112       , l_array_source_24
70113       , l_array_source_25
70114       , l_array_source_26
70115       , l_array_source_27
70116       , l_array_source_28
70117       , l_array_source_29
70118       , l_array_source_30
70119       , l_array_source_31
70123       , l_array_source_35
70120       , l_array_source_33
70121       , l_array_source_34
70122       , l_array_source_34_meaning
70124       LIMIT l_rows;
70125 
70126   --
70127   IF (C_LEVEL_EVENT >= g_log_level) THEN
70128             trace
70129                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
70130                ,p_level    => C_LEVEL_EVENT
70131                ,p_module   => l_log_module);
70132   END IF;
70133   --
70134   EXIT WHEN l_array_entity_id.count = 0;
70135 
70136   XLA_AE_LINES_PKG.g_rec_lines := null;
70137 
70138 --
70139 -- Bug 4458708
70140 --
70141 XLA_AE_LINES_PKG.g_LineNumber := 0;
70142 --
70143 --
70144 
70145 FOR Idx IN 1..l_array_event_id.count LOOP
70146    --
70147    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
70148    --
70149    l_event_id := l_array_event_id(idx);  -- 5648433
70150 
70151    --
70152    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
70153    --
70154 
70155    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
70156              (g_array_event(l_event_id).array_value_num('header_index'))
70157          ,'N'
70158          ) <> 'Y'
70159    THEN
70160       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70161          trace
70162             (p_msg      => 'Trancaction revesal option is not Y '
70163             ,p_level    => C_LEVEL_STATEMENT
70164             ,p_module   => l_log_module);
70165       END IF;
70166 
70167 --
70168 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
70169 --
70170 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
70171 --
70172 -- set event info as cache for other routines to refer event attributes
70173 --
70174 
70175 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
70176    l_previous_event_id := l_event_id;
70177 
70178    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
70179       (p_application_id           => p_application_id
70180       ,p_primary_ledger_id        => p_primary_ledger_id
70181       ,p_base_ledger_id           => p_base_ledger_id
70182       ,p_target_ledger_id         => p_target_ledger_id
70183       ,p_entity_id                => l_array_entity_id(Idx)
70184       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
70185       ,p_entity_code              => l_array_entity_code(Idx)
70186       ,p_transaction_num          => l_array_transaction_num(Idx)
70187       ,p_event_id                 => l_array_event_id(Idx)
70188       ,p_event_class_code         => l_array_class_code(Idx)
70189       ,p_event_type_code          => l_array_event_type(Idx)
70190       ,p_event_number             => l_array_event_number(Idx)
70191       ,p_event_date               => l_array_event_date(Idx)
70192       ,p_transaction_date         => l_array_transaction_date(Idx)
70193       ,p_reference_num_1          => l_array_reference_num_1(Idx)
70194       ,p_reference_num_2          => l_array_reference_num_2(Idx)
70195       ,p_reference_num_3          => l_array_reference_num_3(Idx)
70196       ,p_reference_num_4          => l_array_reference_num_4(Idx)
70197       ,p_reference_char_1         => l_array_reference_char_1(Idx)
70198       ,p_reference_char_2         => l_array_reference_char_2(Idx)
70199       ,p_reference_char_3         => l_array_reference_char_3(Idx)
70200       ,p_reference_char_4         => l_array_reference_char_4(Idx)
70201       ,p_reference_date_1         => l_array_reference_date_1(Idx)
70202       ,p_reference_date_2         => l_array_reference_date_2(Idx)
70203       ,p_reference_date_3         => l_array_reference_date_3(Idx)
70204       ,p_reference_date_4         => l_array_reference_date_4(Idx)
70205       ,p_event_created_by         => l_array_event_created_by(Idx)
70206       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
70207        --
70208 END IF;
70209 
70210 
70211 
70212 --
70213 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
70214 
70215 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
70216 
70217 IF l_continue_with_lines THEN
70218    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
70219       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
70220 
70221       xla_accounting_err_pkg.build_message
70222          (p_appli_s_name            => 'XLA'
70223          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
70224          ,p_token_1                 => 'LINE_NUMBER'
70225          ,p_value_1                 => l_array_extract_line_num(Idx)
70226          ,p_token_2                 => 'PRODUCT_NAME'
70227          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
70228          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
70229          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
70230          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
70231 
70232    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
70233       --
70234       -- following sets the accounting attributes needed to reverse
70235       -- accounting for a distributeion
70236       --
70237 
70238       --
70239       -- 5217187
70240       --
70241       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
70242       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
70243                                        g_array_event(l_event_id).array_value_num('header_index'));
70244       --
70245       --
70246 
70247       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
70248       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
70252       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
70249       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
70250       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
70251       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
70253       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
70254       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
70255       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
70256       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
70257       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
70258       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
70259       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
70260       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
70261       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
70262       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
70263       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
70264       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
70265       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
70266       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
70267       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
70268       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
70269       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
70270       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
70271       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
70272       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
70273       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
70274       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
70275       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
70276       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
70277       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
70278       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
70279       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
70280       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
70281       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
70282       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
70283       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
70284       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
70285       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
70286       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
70287       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
70288       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
70289       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
70290       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
70291       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
70292       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
70293       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
70294       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
70295 
70296 
70297       xla_ae_lines_pkg.SetAcctReversalAttrs
70298          (p_event_id             => l_event_id
70299          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
70300          ,p_calculate_acctd_flag => l_calculate_acctd_flag
70301          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
70302    END IF;
70303 
70304    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
70305        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
70306 
70307 --
70308 AcctLineType_46 (
70309  p_application_id  => p_application_id
70310  ,p_event_id     => l_event_id
70311  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70312  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70313  ,p_actual_flag => l_actual_flag
70314  ,p_balance_type_code => l_balance_type_code
70315  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70316  
70317  , p_source_3 => l_array_source_3(Idx)
70318  , p_source_4 => l_array_source_4(Idx)
70319  , p_source_5 => l_array_source_5(Idx)
70320  , p_source_6 => l_array_source_6(Idx)
70321  , p_source_22 => l_array_source_22(Idx)
70322  , p_source_23 => l_array_source_23(Idx)
70323  , p_source_24 => l_array_source_24(Idx)
70324  , p_source_25 => l_array_source_25(Idx)
70325  , p_source_26 => l_array_source_26(Idx)
70326  , p_source_27 => l_array_source_27(Idx)
70327  , p_source_28 => l_array_source_28(Idx)
70328  , p_source_29 => l_array_source_29(Idx)
70329  , p_source_30 => l_array_source_30(Idx)
70330  , p_source_31 => l_array_source_31(Idx)
70331  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
70332  , p_source_33 => l_array_source_33(Idx)
70333  , p_source_34 => l_array_source_34(Idx)
70334  , p_source_34_meaning => l_array_source_34_meaning(Idx)
70335  , p_source_35 => l_array_source_35(Idx)
70336  , p_source_68 => g_array_event(l_event_id).array_value_char('source_68')
70337  );
70338 If(l_balance_type_code = 'A') THEN
70339   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70340 END IF;
70341 
70342 --
70343 
70344 
70345 --
70346 AcctLineType_58 (
70347  p_application_id  => p_application_id
70348  ,p_event_id     => l_event_id
70349  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70350  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70351  ,p_actual_flag => l_actual_flag
70355  , p_source_3 => l_array_source_3(Idx)
70352  ,p_balance_type_code => l_balance_type_code
70353  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70354  
70356  , p_source_4 => l_array_source_4(Idx)
70357  , p_source_6 => l_array_source_6(Idx)
70358  , p_source_7 => l_array_source_7(Idx)
70359  , p_source_22 => l_array_source_22(Idx)
70360  , p_source_23 => l_array_source_23(Idx)
70361  , p_source_24 => l_array_source_24(Idx)
70362  , p_source_25 => l_array_source_25(Idx)
70363  , p_source_26 => l_array_source_26(Idx)
70364  , p_source_27 => l_array_source_27(Idx)
70365  , p_source_28 => l_array_source_28(Idx)
70366  , p_source_29 => l_array_source_29(Idx)
70367  , p_source_30 => l_array_source_30(Idx)
70368  , p_source_31 => l_array_source_31(Idx)
70369  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
70370  , p_source_33 => l_array_source_33(Idx)
70371  , p_source_34 => l_array_source_34(Idx)
70372  , p_source_34_meaning => l_array_source_34_meaning(Idx)
70373  , p_source_35 => l_array_source_35(Idx)
70374  , p_source_68 => g_array_event(l_event_id).array_value_char('source_68')
70375  );
70376 If(l_balance_type_code = 'A') THEN
70377   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70378 END IF;
70379 
70380 --
70381 
70382       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
70383       -- or secondary ledger that has different currency with primary
70384       -- or alc that is calculated by sla
70385       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
70386             (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'))
70387 
70388 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
70389 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
70390           AND (l_actual_flag = 'A')) THEN
70391         XLA_AE_LINES_PKG.CreateGainOrLossLines(
70392           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
70393          ,p_application_id   => p_application_id
70394          ,p_amb_context_code => 'DEFAULT'
70395          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
70396          ,p_event_class_code => C_EVENT_CLASS_CODE
70397          ,p_event_type_code  => C_EVENT_TYPE_CODE
70398          
70399          ,p_gain_ccid        => -1
70400          ,p_loss_ccid        => -1
70401 
70402          ,p_actual_flag      => l_actual_flag
70403          ,p_enc_flag         => null
70404          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
70405          ,p_enc_g_l_ref      => null
70406          );
70407       END IF;
70408    END IF;
70409 END IF;
70410 
70411    ELSE
70412       --
70413       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
70414       --
70415       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70416          trace
70417             (p_msg      => 'Trancaction revesal option is Y'
70418             ,p_level    => C_LEVEL_STATEMENT
70419             ,p_module   => l_log_module);
70420       END IF;
70421    END IF;
70422 
70423 END LOOP;
70424 l_result := XLA_AE_LINES_PKG.InsertLines ;
70425 end loop;
70426 close line_cur;
70427 
70428 
70429 --
70430 -- insert headers into xla_ae_headers_gt table
70431 --
70432 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
70433 
70434 -- insert into errors table here.
70435 
70436 END LOOP;
70437 
70438 --
70439 -- 4865292
70440 --
70441 -- Compare g_hdr_extract_count with event count in
70442 -- CreateHeadersAndLines.
70443 --
70444 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
70445 
70446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70447    trace (p_msg     => '# rows extracted from header extract objects '
70448                     || ' (running total): '
70449                     || g_hdr_extract_count
70450          ,p_level   => C_LEVEL_STATEMENT
70451          ,p_module  => l_log_module);
70452 END IF;
70453 
70454 CLOSE header_cur;
70455 --
70456 
70457 --
70458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70459    trace
70460       (p_msg      => 'END of EventClass_120'
70461       ,p_level    => C_LEVEL_PROCEDURE
70462       ,p_module   => l_log_module);
70463 END IF;
70464 --
70465 RETURN l_result;
70466 EXCEPTION
70467 WHEN xla_exceptions_pkg.application_exception THEN
70468    
70469 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
70470 
70471    
70472 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
70473 
70474    RAISE;
70475 WHEN OTHERS THEN
70476    xla_exceptions_pkg.raise_message
70477       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_120');
70478 END EventClass_120;
70479 --
70480 
70481 ---------------------------------------
70482 --
70483 -- PRIVATE PROCEDURE
70484 --         insert_sources_121
70485 --
70486 ----------------------------------------
70487 --
70488 PROCEDURE insert_sources_121(
70489                                 p_target_ledger_id       IN NUMBER
70490                               , p_language               IN VARCHAR2
70491                               , p_sla_ledger_id          IN NUMBER
70492                               , p_pad_start_date         IN DATE
70493                               , p_pad_end_date           IN DATE
70494                          )
70495 IS
70496 
70497 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
70498 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS_ADJ';
70499 p_apps_owner                   VARCHAR2(30);
70500 l_log_module                   VARCHAR2(240);
70501 BEGIN
70505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70502 IF g_log_enabled THEN
70503       l_log_module := C_DEFAULT_MODULE||'.insert_sources_121';
70504 END IF;
70506 
70507       trace
70508          (p_msg      => 'BEGIN of insert_sources_121'
70509          ,p_level    => C_LEVEL_PROCEDURE
70510          ,p_module   => l_log_module);
70511 
70512 END IF;
70513 
70514 -- select APPS owner
70515 SELECT oracle_username
70516   INTO p_apps_owner
70517   FROM fnd_oracle_userid
70518  WHERE read_only_flag = 'U'
70519 ;
70520 
70521 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70522       trace
70523          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
70524                         ' - p_language = '||p_language||
70525                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
70526                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
70527                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
70528                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
70529          ,p_level    => C_LEVEL_STATEMENT
70530          ,p_module   => l_log_module);
70531 END IF;
70532 
70533 
70534 --
70535 INSERT INTO xla_diag_sources --hdr2
70536 (
70537         event_id
70538       , ledger_id
70539       , sla_ledger_id
70540       , description_language
70541       , object_name
70542       , object_type_code
70543       , line_number
70544       , source_application_id
70545       , source_type_code
70546       , source_code
70547       , source_value
70548       , source_meaning
70549       , created_by
70550       , creation_date
70551       , last_update_date
70552       , last_updated_by
70553       , last_update_login
70554       , program_update_date
70555       , program_application_id
70556       , program_id
70557       , request_id
70558 )
70559 SELECT
70560         event_id
70561       , p_target_ledger_id
70562       , p_sla_ledger_id
70563       , p_language
70564       , object_name
70565       , object_type_code
70566       , line_number
70567       , source_application_id
70568       , source_type_code
70569       , source_code
70570       , SUBSTR(source_value ,1,1996)
70571       , SUBSTR(source_meaning ,1,200)
70572       , xla_environment_pkg.g_Usr_Id
70573       , TRUNC(SYSDATE)
70574       , TRUNC(SYSDATE)
70575       , xla_environment_pkg.g_Usr_Id
70576       , xla_environment_pkg.g_Login_Id
70577       , TRUNC(SYSDATE)
70578       , xla_environment_pkg.g_Prog_Appl_Id
70579       , xla_environment_pkg.g_Prog_Id
70580       , xla_environment_pkg.g_Req_Id
70581   FROM (
70582        SELECT xet.event_id                  event_id
70583             , 0                          line_number
70584             , CASE r
70585                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
70586                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
70587                 
70588                ELSE null
70589               END                           object_name
70590             , CASE r
70591                 WHEN 1 THEN 'HEADER' 
70592                 WHEN 2 THEN 'HEADER' 
70593                 
70594                 ELSE null
70595               END                           object_type_code
70596             , CASE r
70597                 WHEN 1 THEN '275' 
70598                 WHEN 2 THEN '275' 
70599                 
70600                 ELSE null
70601               END                           source_application_id
70602             , 'S'             source_type_code
70603             , CASE r
70604                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
70605                 WHEN 2 THEN 'GL_DATE' 
70606                 
70607                 ELSE null
70608               END                           source_code
70609             , CASE r
70610                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
70611                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
70612                 
70613                 ELSE null
70614               END                           source_value
70615             , null              source_meaning
70616          FROM xla_events_gt     xet  
70617       , PA_XLA_EXP_HEADER_V  h2
70618              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
70619          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
70620            AND xet.event_class_code = C_EVENT_CLASS_CODE
70621               AND h2.event_id = xet.event_id
70622 
70623 )
70624 ;
70625 --
70626 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70627 
70628       trace
70629          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
70630          ,p_level    => C_LEVEL_STATEMENT
70634 --
70631          ,p_module   => l_log_module);
70632 
70633 END IF;
70635 
70636 
70637 
70638 --
70639 INSERT INTO xla_diag_sources  --line2
70640 (
70641         event_id
70642       , ledger_id
70643       , sla_ledger_id
70644       , description_language
70645       , object_name
70646       , object_type_code
70647       , line_number
70648       , source_application_id
70649       , source_type_code
70650       , source_code
70651       , source_value
70652       , source_meaning
70653       , created_by
70654       , creation_date
70655       , last_update_date
70656       , last_updated_by
70657       , last_update_login
70658       , program_update_date
70659       , program_application_id
70660       , program_id
70661       , request_id
70662 )
70663 SELECT  event_id
70664       , p_target_ledger_id
70665       , p_sla_ledger_id
70666       , p_language
70667       , object_name
70668       , object_type_code
70669       , line_number
70670       , source_application_id
70671       , source_type_code
70672       , source_code
70673       , SUBSTR(source_value,1,1996)
70674       , SUBSTR(source_meaning ,1,200)
70675       , xla_environment_pkg.g_Usr_Id
70676       , TRUNC(SYSDATE)
70677       , TRUNC(SYSDATE)
70678       , xla_environment_pkg.g_Usr_Id
70679       , xla_environment_pkg.g_Login_Id
70680       , TRUNC(SYSDATE)
70681       , xla_environment_pkg.g_Prog_Appl_Id
70682       , xla_environment_pkg.g_Prog_Id
70683       , xla_environment_pkg.g_Req_Id
70684   FROM (
70685        SELECT xet.event_id                  event_id
70686             , l1.line_number                 line_number
70687             , CASE r
70688                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
70689                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
70690                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
70691                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
70692                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
70693                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
70694                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
70695                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
70696                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
70697                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
70698                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
70699                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
70700                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
70701                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
70702                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
70703                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
70704                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
70705                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
70706                 
70707                ELSE null
70708               END                           object_name
70709             , CASE r
70710                 WHEN 1 THEN 'LINE' 
70711                 WHEN 2 THEN 'LINE' 
70712                 WHEN 3 THEN 'LINE' 
70713                 WHEN 4 THEN 'LINE' 
70714                 WHEN 5 THEN 'LINE' 
70715                 WHEN 6 THEN 'LINE' 
70716                 WHEN 7 THEN 'LINE' 
70717                 WHEN 8 THEN 'LINE' 
70718                 WHEN 9 THEN 'LINE' 
70719                 WHEN 10 THEN 'LINE' 
70720                 WHEN 11 THEN 'LINE' 
70721                 WHEN 12 THEN 'LINE' 
70722                 WHEN 13 THEN 'LINE' 
70723                 WHEN 14 THEN 'LINE' 
70724                 WHEN 15 THEN 'LINE' 
70725                 WHEN 16 THEN 'LINE' 
70726                 WHEN 17 THEN 'LINE' 
70727                 WHEN 18 THEN 'LINE' 
70728                 
70729                 ELSE null
70730               END                           object_type_code
70731             , CASE r
70732                 WHEN 1 THEN '275' 
70733                 WHEN 2 THEN '275' 
70734                 WHEN 3 THEN '275' 
70735                 WHEN 4 THEN '275' 
70736                 WHEN 5 THEN '275' 
70737                 WHEN 6 THEN '275' 
70738                 WHEN 7 THEN '275' 
70739                 WHEN 8 THEN '275' 
70740                 WHEN 9 THEN '275' 
70741                 WHEN 10 THEN '275' 
70742                 WHEN 11 THEN '275' 
70743                 WHEN 12 THEN '275' 
70744                 WHEN 13 THEN '275' 
70745                 WHEN 14 THEN '275' 
70746                 WHEN 15 THEN '275' 
70747                 WHEN 16 THEN '275' 
70748                 WHEN 17 THEN '275' 
70749                 WHEN 18 THEN '275' 
70750                 
70751                 ELSE null
70752               END                           source_application_id
70753             , 'S'             source_type_code
70754             , CASE r
70755                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
70756                 WHEN 2 THEN 'DESTINATION_CCID' 
70757                 WHEN 3 THEN 'ADJ_DESTINATION_CCID' 
70758                 WHEN 4 THEN 'SOURCE_CCID' 
70759                 WHEN 5 THEN 'ADJ_SOURCE_CCID' 
70760                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
70761                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
70762                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
70763                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
70764                 WHEN 10 THEN 'EXCHANGE_RATE' 
70765                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
70766                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
70767                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
70768                 WHEN 14 THEN 'LINE_NUMBER' 
70769                 WHEN 15 THEN 'LINE_TYPE' 
70770                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
70771                 WHEN 17 THEN 'ENTERED_AMOUNT' 
70772                 WHEN 18 THEN 'ACCT_AMOUNT' 
70773                 
70774                 ELSE null
70775               END                           source_code
70779                 WHEN 3 THEN TO_CHAR(l1.ADJ_DESTINATION_CCID)
70776             , CASE r
70777                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
70778                 WHEN 2 THEN TO_CHAR(l1.DESTINATION_CCID)
70780                 WHEN 4 THEN TO_CHAR(l1.SOURCE_CCID)
70781                 WHEN 5 THEN TO_CHAR(l1.ADJ_SOURCE_CCID)
70782                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
70783                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
70784                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
70785                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
70786                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
70787                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
70788                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
70789                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
70790                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
70791                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
70792                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
70793                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
70794                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
70795                 
70796                 ELSE null
70797               END                           source_value
70798             , CASE r
70799                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
70800                           103371
70801                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
70802                          ,'ALLOW_OVERRIDE_CCID_FLAG'
70803                          ,'S'
70804                          ,275)
70805                 WHEN 15 THEN fvl34.meaning
70806                 
70807                 ELSE null
70808               END               source_meaning
70809          FROM  xla_events_gt     xet  
70810         , PA_XLA_CCDL_LINES_V  l1
70811   , fnd_lookup_values    fvl34
70812             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
70813         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
70814           AND xet.event_class_code = C_EVENT_CLASS_CODE
70815             AND l1.event_id          = xet.event_id
70816    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
70817   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
70818   AND fvl34.view_application_id(+) = 275
70819   AND fvl34.language(+)            = USERENV('LANG')
70820   
70821 )
70822 ;
70823 --
70824 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70825 
70826       trace
70827          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
70828          ,p_level    => C_LEVEL_STATEMENT
70829          ,p_module   => l_log_module);
70830 
70831 END IF;
70832 
70833 
70834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70835       trace
70836          (p_msg      => 'END of insert_sources_121'
70837          ,p_level    => C_LEVEL_PROCEDURE
70838          ,p_module   => l_log_module);
70839 END IF;
70840 EXCEPTION
70841   WHEN xla_exceptions_pkg.application_exception THEN
70842       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
70843             trace
70844                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
70845                ,p_level    => C_LEVEL_EXCEPTION
70846                ,p_module   => l_log_module);
70847       END IF;
70848       RAISE;
70849   WHEN OTHERS THEN
70850       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
70851             trace
70852                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
70853                ,p_level    => C_LEVEL_EXCEPTION
70854                ,p_module   => l_log_module);
70855        END IF;
70856        xla_exceptions_pkg.raise_message
70857            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_121');
70858 END insert_sources_121;
70859 --
70860 
70861 ---------------------------------------
70862 --
70863 -- PRIVATE FUNCTION
70864 --         EventClass_121
70865 --
70866 ----------------------------------------
70867 --
70868 FUNCTION EventClass_121
70869        (p_application_id         IN NUMBER
70870        ,p_base_ledger_id         IN NUMBER
70871        ,p_target_ledger_id       IN NUMBER
70872        ,p_language               IN VARCHAR2
70873        ,p_currency_code          IN VARCHAR2
70874        ,p_sla_ledger_id          IN NUMBER
70875        ,p_pad_start_date         IN DATE
70876        ,p_pad_end_date           IN DATE
70877        ,p_primary_ledger_id      IN NUMBER)
70878 RETURN BOOLEAN IS
70879 --
70880 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
70881 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS_ADJ';
70882 
70883 l_calculate_acctd_flag   VARCHAR2(1) :='N';
70884 l_calculate_g_l_flag     VARCHAR2(1) :='N';
70885 --
70886 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70887 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70888 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70889 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70890 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70891 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70892 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70893 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70894 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70895 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70896 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70897 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70898 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70899 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70903 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70900 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70901 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70902 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70904 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70905 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70906 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70907 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70908 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
70909 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70910 
70911 l_event_id                             NUMBER;
70912 l_previous_event_id                    NUMBER;
70913 l_first_event_id                       NUMBER;
70914 l_last_event_id                        NUMBER;
70915 
70916 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
70917 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
70918 --
70919 --
70920 l_result                    BOOLEAN := TRUE;
70921 l_rows                      NUMBER  := 1000;
70922 l_event_type_name           VARCHAR2(80) := 'All';
70923 l_event_class_name          VARCHAR2(80) := 'Provider and Receiver Reclass Adjustment';
70924 l_description               VARCHAR2(4000);
70925 l_transaction_reversal      NUMBER;
70926 l_ae_header_id              NUMBER;
70927 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
70928 l_log_module                VARCHAR2(240);
70929 --
70930 l_acct_reversal_source      VARCHAR2(30);
70931 l_trx_reversal_source       VARCHAR2(30);
70932 
70933 l_continue_with_lines       BOOLEAN := TRUE;
70934 --
70935 l_acc_rev_gl_date_source    DATE;                      -- 4262811
70936 --
70937 type t_array_event_id is table of number index by binary_integer;
70938 
70939 l_rec_array_event                    t_rec_array_event;
70940 l_null_rec_array_event               t_rec_array_event;
70941 l_array_ae_header_id                 xla_number_array_type;
70942 l_actual_flag                        VARCHAR2(1) := NULL;
70943 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
70944 l_balance_type_code                  VARCHAR2(1) :=NULL;
70945 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
70946 
70947 --
70948 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
70949 --
70950 
70951 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
70952 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
70953 
70954 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
70955 TYPE t_array_source_11 IS TABLE OF PA_XLA_CCDL_LINES_V.DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
70956 TYPE t_array_source_12 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
70957 TYPE t_array_source_13 IS TABLE OF PA_XLA_CCDL_LINES_V.SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
70958 TYPE t_array_source_14 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
70959 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
70960 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
70961 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
70962 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
70963 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
70964 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
70965 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
70966 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
70967 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
70968 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
70969 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
70970 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
70971 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
70972 
70973 l_array_source_32              t_array_source_32;
70974 l_array_source_88              t_array_source_88;
70975 
70976 l_array_source_4      t_array_source_4;
70977 l_array_source_11      t_array_source_11;
70978 l_array_source_12      t_array_source_12;
70979 l_array_source_13      t_array_source_13;
70980 l_array_source_14      t_array_source_14;
70981 l_array_source_22      t_array_source_22;
70982 l_array_source_23      t_array_source_23;
70983 l_array_source_25      t_array_source_25;
70984 l_array_source_27      t_array_source_27;
70985 l_array_source_28      t_array_source_28;
70986 l_array_source_29      t_array_source_29;
70987 l_array_source_30      t_array_source_30;
70988 l_array_source_31      t_array_source_31;
70989 l_array_source_33      t_array_source_33;
70990 l_array_source_34      t_array_source_34;
70991 l_array_source_34_meaning      t_array_lookup_meaning;
70992 l_array_source_35      t_array_source_35;
70993 l_array_source_41      t_array_source_41;
70994 l_array_source_43      t_array_source_43;
70995 
70996 --
70997 CURSOR header_cur
70998 IS
70999 SELECT /*+ leading(xet) cardinality(xet,1) */
71000 -- Event Class Code: PRVDR_RECVR_RECLASS_ADJ
71001     xet.entity_id
71002    ,xet.legal_entity_id
71003    ,xet.entity_code
71004    ,xet.transaction_number
71005    ,xet.event_id
71006    ,xet.event_class_code
71010    ,xet.transaction_date
71007    ,xet.event_type_code
71008    ,xet.event_number
71009    ,xet.event_date
71011    ,xet.reference_num_1
71012    ,xet.reference_num_2
71013    ,xet.reference_num_3
71014    ,xet.reference_num_4
71015    ,xet.reference_char_1
71016    ,xet.reference_char_2
71017    ,xet.reference_char_3
71018    ,xet.reference_char_4
71019    ,xet.reference_date_1
71020    ,xet.reference_date_2
71021    ,xet.reference_date_3
71022    ,xet.reference_date_4
71023    ,xet.event_created_by
71024    ,xet.budgetary_control_flag 
71025   , h2.EXPENDITURE_ITEM_ID    source_32
71026   , h2.GL_DATE    source_88
71027   FROM xla_events_gt     xet 
71028   , PA_XLA_EXP_HEADER_V  h2
71029  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
71030    and xet.event_class_code = C_EVENT_CLASS_CODE
71031    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
71032 
71033  ORDER BY event_id
71034 ;
71035 
71036 
71037 --
71038 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
71039 IS
71040 SELECT  /*+ leading(xet) cardinality(xet,1) */
71041 -- Event Class Code: PRVDR_RECVR_RECLASS_ADJ
71042     xet.entity_id
71043    ,xet.legal_entity_id
71044    ,xet.entity_code
71045    ,xet.transaction_number
71046    ,xet.event_id
71047    ,xet.event_class_code
71048    ,xet.event_type_code
71049    ,xet.event_number
71050    ,xet.event_date
71051    ,xet.transaction_date
71052    ,xet.reference_num_1
71053    ,xet.reference_num_2
71054    ,xet.reference_num_3
71055    ,xet.reference_num_4
71056    ,xet.reference_char_1
71057    ,xet.reference_char_2
71058    ,xet.reference_char_3
71059    ,xet.reference_char_4
71060    ,xet.reference_date_1
71061    ,xet.reference_date_2
71062    ,xet.reference_date_3
71063    ,xet.reference_date_4
71064    ,xet.event_created_by
71065    ,xet.budgetary_control_flag
71066  , l1.LINE_NUMBER  
71067   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
71068   , l1.DESTINATION_CCID    source_11
71069   , l1.ADJ_DESTINATION_CCID    source_12
71070   , l1.SOURCE_CCID    source_13
71071   , l1.ADJ_SOURCE_CCID    source_14
71072   , l1.REVERSING_LINE_FLAG    source_22
71073   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
71074   , l1.ENTERED_CURRENCY_CODE    source_25
71075   , l1.EXCHANGE_RATE_DATE    source_27
71076   , l1.EXCHANGE_RATE    source_28
71077   , l1.EXCHANGE_RATE_TYPE    source_29
71078   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
71079   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
71080   , l1.LINE_NUMBER    source_33
71081   , l1.LINE_TYPE    source_34
71082   , fvl34.meaning   source_34_meaning
71083   , l1.LINE_NUM_REVERSED    source_35
71084   , l1.ENTERED_AMOUNT    source_41
71085   , l1.ACCT_AMOUNT    source_43
71086   FROM xla_events_gt     xet 
71087   , PA_XLA_CCDL_LINES_V  l1
71088   , fnd_lookup_values    fvl34
71089  WHERE xet.event_id between x_first_event_id and x_last_event_id
71090    and xet.event_date between p_pad_start_date and p_pad_end_date
71091    and xet.event_class_code = C_EVENT_CLASS_CODE
71092    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
71093    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
71094   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
71095   AND fvl34.view_application_id(+) = 275
71096   AND fvl34.language(+)            = USERENV('LANG')
71097   ;
71098 
71099 --
71100 BEGIN
71101 IF g_log_enabled THEN
71102    l_log_module := C_DEFAULT_MODULE||'.EventClass_121';
71103 END IF;
71104 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71105    trace
71106       (p_msg      => 'BEGIN of EventClass_121'
71107       ,p_level    => C_LEVEL_PROCEDURE
71108       ,p_module   => l_log_module);
71109 END IF;
71110 
71111 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71112    trace
71113       (p_msg      => 'p_application_id = '||p_application_id||
71114                      ' - p_base_ledger_id = '||p_base_ledger_id||
71115                      ' - p_target_ledger_id  = '||p_target_ledger_id||
71116                      ' - p_language = '||p_language||
71117                      ' - p_currency_code = '||p_currency_code||
71118                      ' - p_sla_ledger_id = '||p_sla_ledger_id
71119       ,p_level    => C_LEVEL_STATEMENT
71120       ,p_module   => l_log_module);
71121 END IF;
71122 --
71123 -- initialze arrays
71124 --
71125 g_array_event.DELETE;
71126 l_rec_array_event := l_null_rec_array_event;
71127 --
71128 --------------------------------------
71129 -- 4262811 Initialze MPA Line Number
71130 --------------------------------------
71131 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
71132 
71133 --
71134 
71135 --
71136 OPEN header_cur;
71137 --
71138 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71139    trace
71140    (p_msg      => 'SQL - FETCH header_cur'
71141    ,p_level    => C_LEVEL_STATEMENT
71142    ,p_module   => l_log_module);
71143 END IF;
71144 --
71145 LOOP
71146 FETCH header_cur BULK COLLECT INTO
71147         l_array_entity_id
71148       , l_array_legal_entity_id
71149       , l_array_entity_code
71150       , l_array_transaction_num
71151       , l_array_event_id
71152       , l_array_class_code
71153       , l_array_event_type
71154       , l_array_event_number
71155       , l_array_event_date
71156       , l_array_transaction_date
71157       , l_array_reference_num_1
71158       , l_array_reference_num_2
71159       , l_array_reference_num_3
71160       , l_array_reference_num_4
71161       , l_array_reference_char_1
71162       , l_array_reference_char_2
71163       , l_array_reference_char_3
71164       , l_array_reference_char_4
71165       , l_array_reference_date_1
71166       , l_array_reference_date_2
71170       , l_array_budgetary_control_flag 
71167       , l_array_reference_date_3
71168       , l_array_reference_date_4
71169       , l_array_event_created_by
71171       , l_array_source_32
71172       , l_array_source_88
71173       LIMIT l_rows;
71174 --
71175 IF (C_LEVEL_EVENT >= g_log_level) THEN
71176    trace
71177    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
71178    ,p_level    => C_LEVEL_EVENT
71179    ,p_module   => l_log_module);
71180 END IF;
71181 --
71182 EXIT WHEN l_array_entity_id.COUNT = 0;
71183 
71184 -- initialize arrays
71185 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
71186 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
71187 
71188 --
71189 -- Bug 4458708
71190 --
71191 XLA_AE_LINES_PKG.g_LineNumber := 0;
71192 
71193 
71194 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
71195 g_last_hdr_idx := l_array_event_id.LAST;
71196 --
71197 -- loop for the headers. Each iteration is for each header extract row
71198 -- fetched in header cursor
71199 --
71200 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
71201 
71202 --
71203 -- set event info as cache for other routines to refer event attributes
71204 --
71205 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71206    (p_application_id           => p_application_id
71207    ,p_primary_ledger_id        => p_primary_ledger_id
71208    ,p_base_ledger_id           => p_base_ledger_id
71209    ,p_target_ledger_id         => p_target_ledger_id
71210    ,p_entity_id                => l_array_entity_id(hdr_idx)
71211    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
71212    ,p_entity_code              => l_array_entity_code(hdr_idx)
71213    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
71214    ,p_event_id                 => l_array_event_id(hdr_idx)
71215    ,p_event_class_code         => l_array_class_code(hdr_idx)
71216    ,p_event_type_code          => l_array_event_type(hdr_idx)
71217    ,p_event_number             => l_array_event_number(hdr_idx)
71218    ,p_event_date               => l_array_event_date(hdr_idx)
71219    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
71220    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
71221    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
71222    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
71223    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
71224    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
71225    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
71226    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
71227    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
71228    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
71229    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
71230    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
71231    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
71232    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
71233    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
71234 
71235 --
71236 -- set the status of entry to C_VALID (0)
71237 --
71238 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71239 
71240 --
71241 -- initialize a row for ae header
71242 --
71243 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
71244 
71245 l_event_id := l_array_event_id(hdr_idx);
71246 
71247 --
71248 -- storing the hdr_idx for event. May be used by line cursor.
71249 --
71250 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
71251 
71252 --
71253 -- store sources from header extract. This can be improved to
71254 -- store only those sources from header extract that may be used in lines
71255 --
71256 
71257 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
71258 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
71259 
71260 --
71261 -- initilaize the status of ae headers for diffrent balance types
71262 -- the status is initialised to C_NOT_CREATED (2)
71263 --
71264 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71265 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71266 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71267 
71268 --
71269 -- call api to validate and store accounting attributes for header
71270 --
71271 
71272 ------------------------------------------------------------
71273 -- Accrual Reversal : to get date for Standard Source (NONE)
71274 ------------------------------------------------------------
71275 l_acc_rev_gl_date_source := NULL;
71276 
71277      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
71278       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
71279 
71280 
71281 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
71282 
71283 XLA_AE_HEADER_PKG.SetJeCategoryName;
71284 
71285 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
71286 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
71287 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
71288 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
71289 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
71290 
71291 
71292 -- No header level analytical criteria
71293 
71294 --
71295 --accounting attribute enhancement, bug 3612931
71296 --
71300    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71297 l_trx_reversal_source := SUBSTR(NULL, 1,30);
71298 
71299 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
71301 
71302    xla_accounting_err_pkg.build_message
71303       (p_appli_s_name            => 'XLA'
71304       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
71305       ,p_token_1                 => 'ACCT_ATTR_NAME'
71306       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
71307       ,p_token_2                 => 'PRODUCT_NAME'
71308       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71309       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71310       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71311       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71312 
71313 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
71314    --
71315    -- following sets the accounting attributes needed to reverse
71316    -- accounting for a distributeion
71317    --
71318    xla_ae_lines_pkg.SetTrxReversalAttrs
71319       (p_event_id              => l_event_id
71320       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
71321       ,p_trx_reversal_source   => l_trx_reversal_source);
71322 
71323 END IF;
71324 
71325 
71326 ----------------------------------------------------------------
71327 -- 4262811 -  update the header statuses to invalid in need be
71328 ----------------------------------------------------------------
71329 --
71330 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
71331 
71332 
71333   -----------------------------------------------
71334   -- No accrual reversal for the event class/type
71335   -----------------------------------------------
71336 ----------------------------------------------------------------
71337 
71338 --
71339 -- this ends the header loop iteration for one bulk fetch
71340 --
71341 END LOOP;
71342 
71343 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
71344 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
71345 
71346 --
71347 -- insert dummy rows into lines gt table that were created due to
71348 -- transaction reversals
71349 --
71350 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
71351    l_result := XLA_AE_LINES_PKG.InsertLines;
71352 END IF;
71353 
71354 --
71355 -- reset the temp_line_num for each set of events fetched from header
71356 -- cursor rather than doing it for each new event in line cursor
71357 -- Bug 3939231
71358 --
71359 xla_ae_lines_pkg.g_temp_line_num := 0;
71360 
71361 
71362 
71363 --
71364 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
71365 --
71366 --
71367 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71368 
71369       trace
71370          (p_msg      => 'SQL - FETCH line_cur'
71371          ,p_level    => C_LEVEL_STATEMENT
71372          ,p_module   => l_log_module);
71373 
71374 END IF;
71375 --
71376 --
71377 LOOP
71378   --
71379   FETCH line_cur BULK COLLECT INTO
71380         l_array_entity_id
71381       , l_array_legal_entity_id
71382       , l_array_entity_code
71383       , l_array_transaction_num
71384       , l_array_event_id
71385       , l_array_class_code
71386       , l_array_event_type
71387       , l_array_event_number
71388       , l_array_event_date
71389       , l_array_transaction_date
71390       , l_array_reference_num_1
71391       , l_array_reference_num_2
71392       , l_array_reference_num_3
71393       , l_array_reference_num_4
71394       , l_array_reference_char_1
71395       , l_array_reference_char_2
71396       , l_array_reference_char_3
71397       , l_array_reference_char_4
71398       , l_array_reference_date_1
71399       , l_array_reference_date_2
71400       , l_array_reference_date_3
71401       , l_array_reference_date_4
71402       , l_array_event_created_by
71403       , l_array_budgetary_control_flag
71404       , l_array_extract_line_num 
71405       , l_array_source_4
71406       , l_array_source_11
71407       , l_array_source_12
71408       , l_array_source_13
71409       , l_array_source_14
71410       , l_array_source_22
71411       , l_array_source_23
71412       , l_array_source_25
71413       , l_array_source_27
71414       , l_array_source_28
71415       , l_array_source_29
71416       , l_array_source_30
71417       , l_array_source_31
71418       , l_array_source_33
71419       , l_array_source_34
71420       , l_array_source_34_meaning
71421       , l_array_source_35
71422       , l_array_source_41
71423       , l_array_source_43
71424       LIMIT l_rows;
71425 
71426   --
71427   IF (C_LEVEL_EVENT >= g_log_level) THEN
71428             trace
71429                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
71430                ,p_level    => C_LEVEL_EVENT
71431                ,p_module   => l_log_module);
71432   END IF;
71433   --
71434   EXIT WHEN l_array_entity_id.count = 0;
71435 
71436   XLA_AE_LINES_PKG.g_rec_lines := null;
71437 
71438 --
71439 -- Bug 4458708
71440 --
71441 XLA_AE_LINES_PKG.g_LineNumber := 0;
71442 --
71443 --
71444 
71445 FOR Idx IN 1..l_array_event_id.count LOOP
71446    --
71447    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
71448    --
71449    l_event_id := l_array_event_id(idx);  -- 5648433
71450 
71451    --
71452    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
71453    --
71454 
71455    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
71456              (g_array_event(l_event_id).array_value_num('header_index'))
71457          ,'N'
71458          ) <> 'Y'
71459    THEN
71460       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71461          trace
71462             (p_msg      => 'Trancaction revesal option is not Y '
71463             ,p_level    => C_LEVEL_STATEMENT
71464             ,p_module   => l_log_module);
71465       END IF;
71466 
71467 --
71468 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
71469 --
71470 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71471 --
71472 -- set event info as cache for other routines to refer event attributes
71473 --
71474 
71475 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
71476    l_previous_event_id := l_event_id;
71477 
71478    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71479       (p_application_id           => p_application_id
71480       ,p_primary_ledger_id        => p_primary_ledger_id
71481       ,p_base_ledger_id           => p_base_ledger_id
71482       ,p_target_ledger_id         => p_target_ledger_id
71483       ,p_entity_id                => l_array_entity_id(Idx)
71484       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
71485       ,p_entity_code              => l_array_entity_code(Idx)
71486       ,p_transaction_num          => l_array_transaction_num(Idx)
71487       ,p_event_id                 => l_array_event_id(Idx)
71488       ,p_event_class_code         => l_array_class_code(Idx)
71489       ,p_event_type_code          => l_array_event_type(Idx)
71490       ,p_event_number             => l_array_event_number(Idx)
71491       ,p_event_date               => l_array_event_date(Idx)
71492       ,p_transaction_date         => l_array_transaction_date(Idx)
71493       ,p_reference_num_1          => l_array_reference_num_1(Idx)
71494       ,p_reference_num_2          => l_array_reference_num_2(Idx)
71498       ,p_reference_char_2         => l_array_reference_char_2(Idx)
71495       ,p_reference_num_3          => l_array_reference_num_3(Idx)
71496       ,p_reference_num_4          => l_array_reference_num_4(Idx)
71497       ,p_reference_char_1         => l_array_reference_char_1(Idx)
71499       ,p_reference_char_3         => l_array_reference_char_3(Idx)
71500       ,p_reference_char_4         => l_array_reference_char_4(Idx)
71501       ,p_reference_date_1         => l_array_reference_date_1(Idx)
71502       ,p_reference_date_2         => l_array_reference_date_2(Idx)
71503       ,p_reference_date_3         => l_array_reference_date_3(Idx)
71504       ,p_reference_date_4         => l_array_reference_date_4(Idx)
71505       ,p_event_created_by         => l_array_event_created_by(Idx)
71506       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
71507        --
71508 END IF;
71509 
71510 
71511 
71512 --
71513 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
71514 
71515 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
71516 
71517 IF l_continue_with_lines THEN
71518    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
71519       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71520 
71521       xla_accounting_err_pkg.build_message
71522          (p_appli_s_name            => 'XLA'
71523          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
71524          ,p_token_1                 => 'LINE_NUMBER'
71525          ,p_value_1                 => l_array_extract_line_num(Idx)
71526          ,p_token_2                 => 'PRODUCT_NAME'
71527          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71528          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71529          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71530          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71531 
71532    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
71533       --
71534       -- following sets the accounting attributes needed to reverse
71535       -- accounting for a distributeion
71536       --
71537 
71538       --
71539       -- 5217187
71540       --
71541       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
71542       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
71543                                        g_array_event(l_event_id).array_value_num('header_index'));
71544       --
71545       --
71546 
71547       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
71548       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
71549       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
71550       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
71551       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
71552       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_13(Idx));
71553       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
71554       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
71555       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
71556       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
71557       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
71558       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
71559       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
71560       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
71561       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
71562       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
71563       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
71564       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
71565       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
71566       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
71567       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
71568       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_11(Idx));
71569       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
71570       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
71571       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
71572       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
71573       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
71574       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
71575       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
71576       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
71577       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
71578       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
71579       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
71580       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
71581       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
71582       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
71583       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
71584       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
71585       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
71586       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
71587       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
71588       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
71592       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
71589       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
71590       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
71591       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
71593       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
71594       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
71595 
71596 
71597       xla_ae_lines_pkg.SetAcctReversalAttrs
71598          (p_event_id             => l_event_id
71599          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
71600          ,p_calculate_acctd_flag => l_calculate_acctd_flag
71601          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
71602    END IF;
71603 
71604    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
71605        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
71606 
71607 --
71608 AcctLineType_74 (
71609  p_application_id  => p_application_id
71610  ,p_event_id     => l_event_id
71611  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71612  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71613  ,p_actual_flag => l_actual_flag
71614  ,p_balance_type_code => l_balance_type_code
71615  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71616  
71617  , p_source_4 => l_array_source_4(Idx)
71618  , p_source_11 => l_array_source_11(Idx)
71619  , p_source_12 => l_array_source_12(Idx)
71620  , p_source_13 => l_array_source_13(Idx)
71621  , p_source_22 => l_array_source_22(Idx)
71622  , p_source_23 => l_array_source_23(Idx)
71623  , p_source_25 => l_array_source_25(Idx)
71624  , p_source_27 => l_array_source_27(Idx)
71625  , p_source_28 => l_array_source_28(Idx)
71626  , p_source_29 => l_array_source_29(Idx)
71627  , p_source_30 => l_array_source_30(Idx)
71628  , p_source_31 => l_array_source_31(Idx)
71629  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
71630  , p_source_33 => l_array_source_33(Idx)
71631  , p_source_34 => l_array_source_34(Idx)
71632  , p_source_34_meaning => l_array_source_34_meaning(Idx)
71633  , p_source_35 => l_array_source_35(Idx)
71634  , p_source_41 => l_array_source_41(Idx)
71635  , p_source_43 => l_array_source_43(Idx)
71636  );
71637 If(l_balance_type_code = 'A') THEN
71638   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71639 END IF;
71640 
71641 --
71642 
71643 
71644 --
71645 AcctLineType_76 (
71646  p_application_id  => p_application_id
71647  ,p_event_id     => l_event_id
71648  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71649  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71650  ,p_actual_flag => l_actual_flag
71651  ,p_balance_type_code => l_balance_type_code
71652  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71653  
71654  , p_source_4 => l_array_source_4(Idx)
71655  , p_source_11 => l_array_source_11(Idx)
71656  , p_source_13 => l_array_source_13(Idx)
71657  , p_source_14 => l_array_source_14(Idx)
71658  , p_source_22 => l_array_source_22(Idx)
71659  , p_source_23 => l_array_source_23(Idx)
71660  , p_source_25 => l_array_source_25(Idx)
71661  , p_source_27 => l_array_source_27(Idx)
71662  , p_source_28 => l_array_source_28(Idx)
71663  , p_source_29 => l_array_source_29(Idx)
71664  , p_source_30 => l_array_source_30(Idx)
71665  , p_source_31 => l_array_source_31(Idx)
71666  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
71667  , p_source_33 => l_array_source_33(Idx)
71668  , p_source_34 => l_array_source_34(Idx)
71669  , p_source_34_meaning => l_array_source_34_meaning(Idx)
71670  , p_source_35 => l_array_source_35(Idx)
71671  , p_source_41 => l_array_source_41(Idx)
71672  , p_source_43 => l_array_source_43(Idx)
71673  );
71674 If(l_balance_type_code = 'A') THEN
71675   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71676 END IF;
71677 
71678 --
71679 
71680       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
71681       -- or secondary ledger that has different currency with primary
71682       -- or alc that is calculated by sla
71683       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
71684             (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'))
71685 
71686 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
71687 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
71688           AND (l_actual_flag = 'A')) THEN
71689         XLA_AE_LINES_PKG.CreateGainOrLossLines(
71690           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
71691          ,p_application_id   => p_application_id
71692          ,p_amb_context_code => 'DEFAULT'
71693          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
71694          ,p_event_class_code => C_EVENT_CLASS_CODE
71695          ,p_event_type_code  => C_EVENT_TYPE_CODE
71696          
71697          ,p_gain_ccid        => -1
71698          ,p_loss_ccid        => -1
71699 
71700          ,p_actual_flag      => l_actual_flag
71701          ,p_enc_flag         => null
71702          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
71703          ,p_enc_g_l_ref      => null
71704          );
71705       END IF;
71706    END IF;
71707 END IF;
71708 
71709    ELSE
71710       --
71711       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
71712       --
71713       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71714          trace
71715             (p_msg      => 'Trancaction revesal option is Y'
71716             ,p_level    => C_LEVEL_STATEMENT
71717             ,p_module   => l_log_module);
71718       END IF;
71719    END IF;
71720 
71721 END LOOP;
71725 
71722 l_result := XLA_AE_LINES_PKG.InsertLines ;
71723 end loop;
71724 close line_cur;
71726 
71727 --
71728 -- insert headers into xla_ae_headers_gt table
71729 --
71730 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
71731 
71732 -- insert into errors table here.
71733 
71734 END LOOP;
71735 
71736 --
71737 -- 4865292
71738 --
71739 -- Compare g_hdr_extract_count with event count in
71740 -- CreateHeadersAndLines.
71741 --
71742 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
71743 
71744 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71745    trace (p_msg     => '# rows extracted from header extract objects '
71746                     || ' (running total): '
71747                     || g_hdr_extract_count
71748          ,p_level   => C_LEVEL_STATEMENT
71749          ,p_module  => l_log_module);
71750 END IF;
71751 
71752 CLOSE header_cur;
71753 --
71754 
71755 --
71756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71757    trace
71758       (p_msg      => 'END of EventClass_121'
71759       ,p_level    => C_LEVEL_PROCEDURE
71760       ,p_module   => l_log_module);
71761 END IF;
71762 --
71763 RETURN l_result;
71764 EXCEPTION
71765 WHEN xla_exceptions_pkg.application_exception THEN
71766    
71767 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
71768 
71769    
71770 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
71771 
71772    RAISE;
71773 WHEN OTHERS THEN
71774    xla_exceptions_pkg.raise_message
71775       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_121');
71776 END EventClass_121;
71777 --
71778 
71779 ---------------------------------------
71780 --
71781 -- PRIVATE PROCEDURE
71782 --         insert_sources_122
71783 --
71784 ----------------------------------------
71785 --
71786 PROCEDURE insert_sources_122(
71787                                 p_target_ledger_id       IN NUMBER
71788                               , p_language               IN VARCHAR2
71789                               , p_sla_ledger_id          IN NUMBER
71790                               , p_pad_start_date         IN DATE
71791                               , p_pad_end_date           IN DATE
71792                          )
71793 IS
71794 
71795 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ALL';
71796 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS';
71797 p_apps_owner                   VARCHAR2(30);
71798 l_log_module                   VARCHAR2(240);
71799 BEGIN
71800 IF g_log_enabled THEN
71801       l_log_module := C_DEFAULT_MODULE||'.insert_sources_122';
71802 END IF;
71803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71804 
71805       trace
71806          (p_msg      => 'BEGIN of insert_sources_122'
71807          ,p_level    => C_LEVEL_PROCEDURE
71808          ,p_module   => l_log_module);
71809 
71810 END IF;
71811 
71812 -- select APPS owner
71813 SELECT oracle_username
71814   INTO p_apps_owner
71815   FROM fnd_oracle_userid
71816  WHERE read_only_flag = 'U'
71817 ;
71818 
71819 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71820       trace
71821          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
71822                         ' - p_language = '||p_language||
71823                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
71824                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
71825                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
71826                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
71827          ,p_level    => C_LEVEL_STATEMENT
71828          ,p_module   => l_log_module);
71829 END IF;
71830 
71831 
71832 --
71833 INSERT INTO xla_diag_sources --hdr2
71834 (
71835         event_id
71836       , ledger_id
71837       , sla_ledger_id
71838       , description_language
71839       , object_name
71840       , object_type_code
71841       , line_number
71842       , source_application_id
71843       , source_type_code
71844       , source_code
71845       , source_value
71846       , source_meaning
71847       , created_by
71848       , creation_date
71849       , last_update_date
71850       , last_updated_by
71851       , last_update_login
71852       , program_update_date
71853       , program_application_id
71854       , program_id
71855       , request_id
71856 )
71857 SELECT
71858         event_id
71859       , p_target_ledger_id
71860       , p_sla_ledger_id
71861       , p_language
71862       , object_name
71863       , object_type_code
71864       , line_number
71865       , source_application_id
71866       , source_type_code
71867       , source_code
71868       , SUBSTR(source_value ,1,1996)
71869       , SUBSTR(source_meaning ,1,200)
71870       , xla_environment_pkg.g_Usr_Id
71871       , TRUNC(SYSDATE)
71872       , TRUNC(SYSDATE)
71873       , xla_environment_pkg.g_Usr_Id
71874       , xla_environment_pkg.g_Login_Id
71875       , TRUNC(SYSDATE)
71876       , xla_environment_pkg.g_Prog_Appl_Id
71877       , xla_environment_pkg.g_Prog_Id
71878       , xla_environment_pkg.g_Req_Id
71879   FROM (
71880        SELECT xet.event_id                  event_id
71881             , 0                          line_number
71882             , CASE r
71883                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
71884                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
71885                 
71886                ELSE null
71887               END                           object_name
71888             , CASE r
71889                 WHEN 1 THEN 'HEADER' 
71890                 WHEN 2 THEN 'HEADER' 
71891                 
71895                 WHEN 1 THEN '275' 
71892                 ELSE null
71893               END                           object_type_code
71894             , CASE r
71896                 WHEN 2 THEN '275' 
71897                 
71898                 ELSE null
71899               END                           source_application_id
71900             , 'S'             source_type_code
71901             , CASE r
71902                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
71903                 WHEN 2 THEN 'GL_DATE' 
71904                 
71905                 ELSE null
71906               END                           source_code
71907             , CASE r
71908                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
71909                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
71910                 
71911                 ELSE null
71912               END                           source_value
71913             , null              source_meaning
71914          FROM xla_events_gt     xet  
71915       , PA_XLA_EXP_HEADER_V  h2
71916              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
71917          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
71918            AND xet.event_class_code = C_EVENT_CLASS_CODE
71919               AND h2.event_id = xet.event_id
71920 
71921 )
71922 ;
71923 --
71924 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71925 
71926       trace
71927          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
71928          ,p_level    => C_LEVEL_STATEMENT
71929          ,p_module   => l_log_module);
71930 
71931 END IF;
71932 --
71933 
71934 
71935 
71936 --
71937 INSERT INTO xla_diag_sources  --line2
71938 (
71939         event_id
71940       , ledger_id
71941       , sla_ledger_id
71942       , description_language
71943       , object_name
71944       , object_type_code
71945       , line_number
71946       , source_application_id
71947       , source_type_code
71948       , source_code
71949       , source_value
71950       , source_meaning
71951       , created_by
71952       , creation_date
71953       , last_update_date
71954       , last_updated_by
71955       , last_update_login
71956       , program_update_date
71957       , program_application_id
71958       , program_id
71959       , request_id
71960 )
71961 SELECT  event_id
71962       , p_target_ledger_id
71963       , p_sla_ledger_id
71964       , p_language
71965       , object_name
71966       , object_type_code
71967       , line_number
71968       , source_application_id
71969       , source_type_code
71970       , source_code
71971       , SUBSTR(source_value,1,1996)
71972       , SUBSTR(source_meaning ,1,200)
71973       , xla_environment_pkg.g_Usr_Id
71974       , TRUNC(SYSDATE)
71975       , TRUNC(SYSDATE)
71976       , xla_environment_pkg.g_Usr_Id
71977       , xla_environment_pkg.g_Login_Id
71978       , TRUNC(SYSDATE)
71979       , xla_environment_pkg.g_Prog_Appl_Id
71980       , xla_environment_pkg.g_Prog_Id
71981       , xla_environment_pkg.g_Req_Id
71982   FROM (
71983        SELECT xet.event_id                  event_id
71984             , l1.line_number                 line_number
71985             , CASE r
71986                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
71987                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
71988                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
71989                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
71990                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
71991                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
71992                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
71993                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
71994                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
71995                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
71996                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
71997                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
71998                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
71999                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
72000                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
72001                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
72002                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
72003                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
72004                 
72005                ELSE null
72006               END                           object_name
72007             , CASE r
72008                 WHEN 1 THEN 'LINE' 
72009                 WHEN 2 THEN 'LINE' 
72010                 WHEN 3 THEN 'LINE' 
72011                 WHEN 4 THEN 'LINE' 
72012                 WHEN 5 THEN 'LINE' 
72013                 WHEN 6 THEN 'LINE' 
72014                 WHEN 7 THEN 'LINE' 
72015                 WHEN 8 THEN 'LINE' 
72016                 WHEN 9 THEN 'LINE' 
72017                 WHEN 10 THEN 'LINE' 
72018                 WHEN 11 THEN 'LINE' 
72019                 WHEN 12 THEN 'LINE' 
72020                 WHEN 13 THEN 'LINE' 
72021                 WHEN 14 THEN 'LINE' 
72022                 WHEN 15 THEN 'LINE' 
72023                 WHEN 16 THEN 'LINE' 
72024                 WHEN 17 THEN 'LINE' 
72025                 WHEN 18 THEN 'LINE' 
72026                 
72027                 ELSE null
72028               END                           object_type_code
72029             , CASE r
72030                 WHEN 1 THEN '275' 
72031                 WHEN 2 THEN '275' 
72032                 WHEN 3 THEN '275' 
72033                 WHEN 4 THEN '275' 
72034                 WHEN 5 THEN '275' 
72035                 WHEN 6 THEN '275' 
72036                 WHEN 7 THEN '275' 
72037                 WHEN 8 THEN '275' 
72038                 WHEN 9 THEN '275' 
72039                 WHEN 10 THEN '275' 
72040                 WHEN 11 THEN '275' 
72044                 WHEN 15 THEN '275' 
72041                 WHEN 12 THEN '275' 
72042                 WHEN 13 THEN '275' 
72043                 WHEN 14 THEN '275' 
72045                 WHEN 16 THEN '275' 
72046                 WHEN 17 THEN '275' 
72047                 WHEN 18 THEN '275' 
72048                 
72049                 ELSE null
72050               END                           source_application_id
72051             , 'S'             source_type_code
72052             , CASE r
72053                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
72054                 WHEN 2 THEN 'DESTINATION_CCID' 
72055                 WHEN 3 THEN 'ADJ_DESTINATION_CCID' 
72056                 WHEN 4 THEN 'SOURCE_CCID' 
72057                 WHEN 5 THEN 'ADJ_SOURCE_CCID' 
72058                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
72059                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
72060                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
72061                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
72062                 WHEN 10 THEN 'EXCHANGE_RATE' 
72063                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
72064                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
72065                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
72066                 WHEN 14 THEN 'LINE_NUMBER' 
72067                 WHEN 15 THEN 'LINE_TYPE' 
72068                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
72069                 WHEN 17 THEN 'ENTERED_AMOUNT' 
72070                 WHEN 18 THEN 'ACCT_AMOUNT' 
72071                 
72072                 ELSE null
72073               END                           source_code
72074             , CASE r
72075                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
72076                 WHEN 2 THEN TO_CHAR(l1.DESTINATION_CCID)
72077                 WHEN 3 THEN TO_CHAR(l1.ADJ_DESTINATION_CCID)
72078                 WHEN 4 THEN TO_CHAR(l1.SOURCE_CCID)
72079                 WHEN 5 THEN TO_CHAR(l1.ADJ_SOURCE_CCID)
72080                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
72081                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
72082                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
72083                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
72084                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
72085                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
72086                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
72087                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
72088                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
72089                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
72090                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
72091                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
72092                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
72093                 
72094                 ELSE null
72095               END                           source_value
72096             , CASE r
72097                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
72098                           103371
72099                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
72100                          ,'ALLOW_OVERRIDE_CCID_FLAG'
72101                          ,'S'
72102                          ,275)
72103                 WHEN 15 THEN fvl34.meaning
72104                 
72105                 ELSE null
72106               END               source_meaning
72107          FROM  xla_events_gt     xet  
72108         , PA_XLA_CCDL_LINES_V  l1
72109   , fnd_lookup_values    fvl34
72110             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
72111         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
72112           AND xet.event_class_code = C_EVENT_CLASS_CODE
72113             AND l1.event_id          = xet.event_id
72114    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
72115   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
72116   AND fvl34.view_application_id(+) = 275
72117   AND fvl34.language(+)            = USERENV('LANG')
72118   
72119 )
72120 ;
72121 --
72122 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72123 
72124       trace
72125          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
72126          ,p_level    => C_LEVEL_STATEMENT
72127          ,p_module   => l_log_module);
72128 
72129 END IF;
72130 
72131 
72132 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72133       trace
72134          (p_msg      => 'END of insert_sources_122'
72135          ,p_level    => C_LEVEL_PROCEDURE
72136          ,p_module   => l_log_module);
72137 END IF;
72138 EXCEPTION
72139   WHEN xla_exceptions_pkg.application_exception THEN
72140       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72141             trace
72142                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72143                ,p_level    => C_LEVEL_EXCEPTION
72144                ,p_module   => l_log_module);
72145       END IF;
72146       RAISE;
72147   WHEN OTHERS THEN
72148       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72149             trace
72150                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72151                ,p_level    => C_LEVEL_EXCEPTION
72152                ,p_module   => l_log_module);
72153        END IF;
72154        xla_exceptions_pkg.raise_message
72155            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_122');
72156 END insert_sources_122;
72157 --
72158 
72159 ---------------------------------------
72160 --
72161 -- PRIVATE FUNCTION
72162 --         EventClass_122
72163 --
72164 ----------------------------------------
72165 --
72166 FUNCTION EventClass_122
72167        (p_application_id         IN NUMBER
72168        ,p_base_ledger_id         IN NUMBER
72169        ,p_target_ledger_id       IN NUMBER
72170        ,p_language               IN VARCHAR2
72171        ,p_currency_code          IN VARCHAR2
72175        ,p_primary_ledger_id      IN NUMBER)
72172        ,p_sla_ledger_id          IN NUMBER
72173        ,p_pad_start_date         IN DATE
72174        ,p_pad_end_date           IN DATE
72176 RETURN BOOLEAN IS
72177 --
72178 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ALL';
72179 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS';
72180 
72181 l_calculate_acctd_flag   VARCHAR2(1) :='N';
72182 l_calculate_g_l_flag     VARCHAR2(1) :='N';
72183 --
72184 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72185 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72186 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72187 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72188 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72189 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72190 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72191 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72192 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72193 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72194 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72195 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72196 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72197 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72198 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72199 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72200 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72201 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72202 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72203 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72204 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72205 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72206 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
72207 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72208 
72209 l_event_id                             NUMBER;
72210 l_previous_event_id                    NUMBER;
72211 l_first_event_id                       NUMBER;
72212 l_last_event_id                        NUMBER;
72213 
72214 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
72215 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
72216 --
72217 --
72218 l_result                    BOOLEAN := TRUE;
72219 l_rows                      NUMBER  := 1000;
72220 l_event_type_name           VARCHAR2(80) := 'All';
72221 l_event_class_name          VARCHAR2(80) := 'Provider and Receiver Reclass';
72222 l_description               VARCHAR2(4000);
72223 l_transaction_reversal      NUMBER;
72224 l_ae_header_id              NUMBER;
72225 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
72226 l_log_module                VARCHAR2(240);
72227 --
72228 l_acct_reversal_source      VARCHAR2(30);
72229 l_trx_reversal_source       VARCHAR2(30);
72230 
72231 l_continue_with_lines       BOOLEAN := TRUE;
72232 --
72233 l_acc_rev_gl_date_source    DATE;                      -- 4262811
72234 --
72235 type t_array_event_id is table of number index by binary_integer;
72236 
72237 l_rec_array_event                    t_rec_array_event;
72238 l_null_rec_array_event               t_rec_array_event;
72239 l_array_ae_header_id                 xla_number_array_type;
72240 l_actual_flag                        VARCHAR2(1) := NULL;
72241 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
72242 l_balance_type_code                  VARCHAR2(1) :=NULL;
72243 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
72244 
72245 --
72246 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
72247 --
72248 
72249 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
72250 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
72251 
72252 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
72253 TYPE t_array_source_11 IS TABLE OF PA_XLA_CCDL_LINES_V.DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
72254 TYPE t_array_source_12 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
72255 TYPE t_array_source_13 IS TABLE OF PA_XLA_CCDL_LINES_V.SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
72256 TYPE t_array_source_14 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
72257 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
72258 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
72259 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
72260 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
72261 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
72262 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
72263 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
72264 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
72265 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
72266 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
72267 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
72271 l_array_source_32              t_array_source_32;
72268 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
72269 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
72270 
72272 l_array_source_88              t_array_source_88;
72273 
72274 l_array_source_4      t_array_source_4;
72275 l_array_source_11      t_array_source_11;
72276 l_array_source_12      t_array_source_12;
72277 l_array_source_13      t_array_source_13;
72278 l_array_source_14      t_array_source_14;
72279 l_array_source_22      t_array_source_22;
72280 l_array_source_23      t_array_source_23;
72281 l_array_source_25      t_array_source_25;
72282 l_array_source_27      t_array_source_27;
72283 l_array_source_28      t_array_source_28;
72284 l_array_source_29      t_array_source_29;
72285 l_array_source_30      t_array_source_30;
72286 l_array_source_31      t_array_source_31;
72287 l_array_source_33      t_array_source_33;
72288 l_array_source_34      t_array_source_34;
72289 l_array_source_34_meaning      t_array_lookup_meaning;
72290 l_array_source_35      t_array_source_35;
72291 l_array_source_41      t_array_source_41;
72292 l_array_source_43      t_array_source_43;
72293 
72294 --
72295 CURSOR header_cur
72296 IS
72297 SELECT /*+ leading(xet) cardinality(xet,1) */
72298 -- Event Class Code: PRVDR_RECVR_RECLASS
72299     xet.entity_id
72300    ,xet.legal_entity_id
72301    ,xet.entity_code
72302    ,xet.transaction_number
72303    ,xet.event_id
72304    ,xet.event_class_code
72305    ,xet.event_type_code
72306    ,xet.event_number
72307    ,xet.event_date
72308    ,xet.transaction_date
72309    ,xet.reference_num_1
72310    ,xet.reference_num_2
72311    ,xet.reference_num_3
72312    ,xet.reference_num_4
72313    ,xet.reference_char_1
72314    ,xet.reference_char_2
72315    ,xet.reference_char_3
72316    ,xet.reference_char_4
72317    ,xet.reference_date_1
72318    ,xet.reference_date_2
72319    ,xet.reference_date_3
72320    ,xet.reference_date_4
72321    ,xet.event_created_by
72322    ,xet.budgetary_control_flag 
72323   , h2.EXPENDITURE_ITEM_ID    source_32
72324   , h2.GL_DATE    source_88
72325   FROM xla_events_gt     xet 
72326   , PA_XLA_EXP_HEADER_V  h2
72327  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
72328    and xet.event_class_code = C_EVENT_CLASS_CODE
72329    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
72330 
72331  ORDER BY event_id
72332 ;
72333 
72334 
72335 --
72336 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
72337 IS
72338 SELECT  /*+ leading(xet) cardinality(xet,1) */
72339 -- Event Class Code: PRVDR_RECVR_RECLASS
72340     xet.entity_id
72341    ,xet.legal_entity_id
72342    ,xet.entity_code
72343    ,xet.transaction_number
72344    ,xet.event_id
72345    ,xet.event_class_code
72346    ,xet.event_type_code
72347    ,xet.event_number
72348    ,xet.event_date
72349    ,xet.transaction_date
72350    ,xet.reference_num_1
72351    ,xet.reference_num_2
72352    ,xet.reference_num_3
72353    ,xet.reference_num_4
72354    ,xet.reference_char_1
72355    ,xet.reference_char_2
72356    ,xet.reference_char_3
72357    ,xet.reference_char_4
72358    ,xet.reference_date_1
72359    ,xet.reference_date_2
72360    ,xet.reference_date_3
72361    ,xet.reference_date_4
72362    ,xet.event_created_by
72363    ,xet.budgetary_control_flag
72364  , l1.LINE_NUMBER  
72365   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
72366   , l1.DESTINATION_CCID    source_11
72367   , l1.ADJ_DESTINATION_CCID    source_12
72368   , l1.SOURCE_CCID    source_13
72369   , l1.ADJ_SOURCE_CCID    source_14
72370   , l1.REVERSING_LINE_FLAG    source_22
72371   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
72372   , l1.ENTERED_CURRENCY_CODE    source_25
72373   , l1.EXCHANGE_RATE_DATE    source_27
72374   , l1.EXCHANGE_RATE    source_28
72375   , l1.EXCHANGE_RATE_TYPE    source_29
72376   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
72377   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
72378   , l1.LINE_NUMBER    source_33
72379   , l1.LINE_TYPE    source_34
72380   , fvl34.meaning   source_34_meaning
72381   , l1.LINE_NUM_REVERSED    source_35
72382   , l1.ENTERED_AMOUNT    source_41
72383   , l1.ACCT_AMOUNT    source_43
72384   FROM xla_events_gt     xet 
72385   , PA_XLA_CCDL_LINES_V  l1
72386   , fnd_lookup_values    fvl34
72387  WHERE xet.event_id between x_first_event_id and x_last_event_id
72388    and xet.event_date between p_pad_start_date and p_pad_end_date
72389    and xet.event_class_code = C_EVENT_CLASS_CODE
72390    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
72391    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
72392   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
72393   AND fvl34.view_application_id(+) = 275
72394   AND fvl34.language(+)            = USERENV('LANG')
72395   ;
72396 
72397 --
72398 BEGIN
72399 IF g_log_enabled THEN
72400    l_log_module := C_DEFAULT_MODULE||'.EventClass_122';
72401 END IF;
72402 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72403    trace
72404       (p_msg      => 'BEGIN of EventClass_122'
72405       ,p_level    => C_LEVEL_PROCEDURE
72406       ,p_module   => l_log_module);
72407 END IF;
72408 
72409 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72410    trace
72411       (p_msg      => 'p_application_id = '||p_application_id||
72412                      ' - p_base_ledger_id = '||p_base_ledger_id||
72413                      ' - p_target_ledger_id  = '||p_target_ledger_id||
72414                      ' - p_language = '||p_language||
72415                      ' - p_currency_code = '||p_currency_code||
72416                      ' - p_sla_ledger_id = '||p_sla_ledger_id
72417       ,p_level    => C_LEVEL_STATEMENT
72418       ,p_module   => l_log_module);
72419 END IF;
72420 --
72421 -- initialze arrays
72422 --
72423 g_array_event.DELETE;
72424 l_rec_array_event := l_null_rec_array_event;
72425 --
72426 --------------------------------------
72427 -- 4262811 Initialze MPA Line Number
72428 --------------------------------------
72429 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
72430 
72431 --
72432 
72433 --
72434 OPEN header_cur;
72435 --
72436 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72437    trace
72438    (p_msg      => 'SQL - FETCH header_cur'
72439    ,p_level    => C_LEVEL_STATEMENT
72440    ,p_module   => l_log_module);
72441 END IF;
72442 --
72443 LOOP
72444 FETCH header_cur BULK COLLECT INTO
72445         l_array_entity_id
72446       , l_array_legal_entity_id
72447       , l_array_entity_code
72448       , l_array_transaction_num
72449       , l_array_event_id
72450       , l_array_class_code
72451       , l_array_event_type
72452       , l_array_event_number
72453       , l_array_event_date
72454       , l_array_transaction_date
72455       , l_array_reference_num_1
72456       , l_array_reference_num_2
72457       , l_array_reference_num_3
72458       , l_array_reference_num_4
72459       , l_array_reference_char_1
72460       , l_array_reference_char_2
72461       , l_array_reference_char_3
72462       , l_array_reference_char_4
72463       , l_array_reference_date_1
72464       , l_array_reference_date_2
72465       , l_array_reference_date_3
72466       , l_array_reference_date_4
72467       , l_array_event_created_by
72468       , l_array_budgetary_control_flag 
72469       , l_array_source_32
72470       , l_array_source_88
72471       LIMIT l_rows;
72472 --
72473 IF (C_LEVEL_EVENT >= g_log_level) THEN
72474    trace
72475    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
72476    ,p_level    => C_LEVEL_EVENT
72477    ,p_module   => l_log_module);
72478 END IF;
72479 --
72480 EXIT WHEN l_array_entity_id.COUNT = 0;
72481 
72482 -- initialize arrays
72483 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
72484 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
72485 
72486 --
72487 -- Bug 4458708
72488 --
72489 XLA_AE_LINES_PKG.g_LineNumber := 0;
72490 
72491 
72492 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
72493 g_last_hdr_idx := l_array_event_id.LAST;
72494 --
72495 -- loop for the headers. Each iteration is for each header extract row
72496 -- fetched in header cursor
72497 --
72498 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
72499 
72500 --
72501 -- set event info as cache for other routines to refer event attributes
72502 --
72503 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
72504    (p_application_id           => p_application_id
72505    ,p_primary_ledger_id        => p_primary_ledger_id
72506    ,p_base_ledger_id           => p_base_ledger_id
72507    ,p_target_ledger_id         => p_target_ledger_id
72508    ,p_entity_id                => l_array_entity_id(hdr_idx)
72509    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
72510    ,p_entity_code              => l_array_entity_code(hdr_idx)
72511    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
72512    ,p_event_id                 => l_array_event_id(hdr_idx)
72513    ,p_event_class_code         => l_array_class_code(hdr_idx)
72514    ,p_event_type_code          => l_array_event_type(hdr_idx)
72515    ,p_event_number             => l_array_event_number(hdr_idx)
72516    ,p_event_date               => l_array_event_date(hdr_idx)
72517    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
72518    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
72519    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
72520    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
72524    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
72521    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
72522    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
72523    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
72525    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
72526    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
72527    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
72528    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
72529    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
72530    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
72531    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
72532 
72533 --
72534 -- set the status of entry to C_VALID (0)
72535 --
72536 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
72537 
72538 --
72539 -- initialize a row for ae header
72540 --
72541 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
72542 
72543 l_event_id := l_array_event_id(hdr_idx);
72544 
72545 --
72546 -- storing the hdr_idx for event. May be used by line cursor.
72547 --
72548 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
72549 
72550 --
72551 -- store sources from header extract. This can be improved to
72552 -- store only those sources from header extract that may be used in lines
72553 --
72554 
72555 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
72556 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
72557 
72558 --
72559 -- initilaize the status of ae headers for diffrent balance types
72560 -- the status is initialised to C_NOT_CREATED (2)
72561 --
72562 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72563 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72564 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72565 
72566 --
72567 -- call api to validate and store accounting attributes for header
72568 --
72569 
72570 ------------------------------------------------------------
72571 -- Accrual Reversal : to get date for Standard Source (NONE)
72572 ------------------------------------------------------------
72573 l_acc_rev_gl_date_source := NULL;
72574 
72575      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
72576       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
72577 
72578 
72579 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
72580 
72581 XLA_AE_HEADER_PKG.SetJeCategoryName;
72582 
72583 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
72584 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
72585 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
72586 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
72587 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
72588 
72589 
72590 -- No header level analytical criteria
72591 
72592 --
72593 --accounting attribute enhancement, bug 3612931
72594 --
72595 l_trx_reversal_source := SUBSTR(NULL, 1,30);
72596 
72597 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
72598    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
72599 
72600    xla_accounting_err_pkg.build_message
72601       (p_appli_s_name            => 'XLA'
72602       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
72603       ,p_token_1                 => 'ACCT_ATTR_NAME'
72604       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
72605       ,p_token_2                 => 'PRODUCT_NAME'
72606       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
72607       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
72608       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
72609       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
72610 
72611 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
72612    --
72613    -- following sets the accounting attributes needed to reverse
72614    -- accounting for a distributeion
72615    --
72616    xla_ae_lines_pkg.SetTrxReversalAttrs
72617       (p_event_id              => l_event_id
72618       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
72619       ,p_trx_reversal_source   => l_trx_reversal_source);
72620 
72621 END IF;
72622 
72623 
72624 ----------------------------------------------------------------
72625 -- 4262811 -  update the header statuses to invalid in need be
72626 ----------------------------------------------------------------
72627 --
72628 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
72629 
72630 
72631   -----------------------------------------------
72632   -- No accrual reversal for the event class/type
72633   -----------------------------------------------
72634 ----------------------------------------------------------------
72635 
72636 --
72637 -- this ends the header loop iteration for one bulk fetch
72638 --
72639 END LOOP;
72640 
72641 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
72642 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
72643 
72644 --
72645 -- insert dummy rows into lines gt table that were created due to
72646 -- transaction reversals
72647 --
72648 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
72652 --
72649    l_result := XLA_AE_LINES_PKG.InsertLines;
72650 END IF;
72651 
72653 -- reset the temp_line_num for each set of events fetched from header
72654 -- cursor rather than doing it for each new event in line cursor
72655 -- Bug 3939231
72656 --
72657 xla_ae_lines_pkg.g_temp_line_num := 0;
72658 
72659 
72660 
72661 --
72662 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
72663 --
72664 --
72665 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72666 
72667       trace
72668          (p_msg      => 'SQL - FETCH line_cur'
72669          ,p_level    => C_LEVEL_STATEMENT
72670          ,p_module   => l_log_module);
72671 
72672 END IF;
72673 --
72674 --
72675 LOOP
72676   --
72677   FETCH line_cur BULK COLLECT INTO
72678         l_array_entity_id
72679       , l_array_legal_entity_id
72680       , l_array_entity_code
72681       , l_array_transaction_num
72682       , l_array_event_id
72683       , l_array_class_code
72684       , l_array_event_type
72685       , l_array_event_number
72686       , l_array_event_date
72687       , l_array_transaction_date
72688       , l_array_reference_num_1
72689       , l_array_reference_num_2
72690       , l_array_reference_num_3
72691       , l_array_reference_num_4
72692       , l_array_reference_char_1
72693       , l_array_reference_char_2
72694       , l_array_reference_char_3
72695       , l_array_reference_char_4
72696       , l_array_reference_date_1
72697       , l_array_reference_date_2
72698       , l_array_reference_date_3
72699       , l_array_reference_date_4
72700       , l_array_event_created_by
72701       , l_array_budgetary_control_flag
72702       , l_array_extract_line_num 
72703       , l_array_source_4
72704       , l_array_source_11
72705       , l_array_source_12
72706       , l_array_source_13
72707       , l_array_source_14
72708       , l_array_source_22
72709       , l_array_source_23
72710       , l_array_source_25
72711       , l_array_source_27
72712       , l_array_source_28
72713       , l_array_source_29
72714       , l_array_source_30
72715       , l_array_source_31
72716       , l_array_source_33
72717       , l_array_source_34
72718       , l_array_source_34_meaning
72719       , l_array_source_35
72720       , l_array_source_41
72721       , l_array_source_43
72722       LIMIT l_rows;
72723 
72724   --
72725   IF (C_LEVEL_EVENT >= g_log_level) THEN
72726             trace
72727                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
72728                ,p_level    => C_LEVEL_EVENT
72729                ,p_module   => l_log_module);
72730   END IF;
72731   --
72732   EXIT WHEN l_array_entity_id.count = 0;
72733 
72734   XLA_AE_LINES_PKG.g_rec_lines := null;
72735 
72736 --
72737 -- Bug 4458708
72738 --
72739 XLA_AE_LINES_PKG.g_LineNumber := 0;
72740 --
72741 --
72742 
72743 FOR Idx IN 1..l_array_event_id.count LOOP
72744    --
72745    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
72746    --
72747    l_event_id := l_array_event_id(idx);  -- 5648433
72748 
72749    --
72750    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
72751    --
72752 
72753    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
72754              (g_array_event(l_event_id).array_value_num('header_index'))
72755          ,'N'
72756          ) <> 'Y'
72757    THEN
72758       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72759          trace
72760             (p_msg      => 'Trancaction revesal option is not Y '
72761             ,p_level    => C_LEVEL_STATEMENT
72762             ,p_module   => l_log_module);
72763       END IF;
72764 
72765 --
72766 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
72767 --
72768 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
72769 --
72770 -- set event info as cache for other routines to refer event attributes
72771 --
72772 
72773 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
72774    l_previous_event_id := l_event_id;
72775 
72776    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
72777       (p_application_id           => p_application_id
72778       ,p_primary_ledger_id        => p_primary_ledger_id
72779       ,p_base_ledger_id           => p_base_ledger_id
72780       ,p_target_ledger_id         => p_target_ledger_id
72781       ,p_entity_id                => l_array_entity_id(Idx)
72782       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
72783       ,p_entity_code              => l_array_entity_code(Idx)
72784       ,p_transaction_num          => l_array_transaction_num(Idx)
72785       ,p_event_id                 => l_array_event_id(Idx)
72786       ,p_event_class_code         => l_array_class_code(Idx)
72787       ,p_event_type_code          => l_array_event_type(Idx)
72788       ,p_event_number             => l_array_event_number(Idx)
72789       ,p_event_date               => l_array_event_date(Idx)
72790       ,p_transaction_date         => l_array_transaction_date(Idx)
72791       ,p_reference_num_1          => l_array_reference_num_1(Idx)
72792       ,p_reference_num_2          => l_array_reference_num_2(Idx)
72793       ,p_reference_num_3          => l_array_reference_num_3(Idx)
72794       ,p_reference_num_4          => l_array_reference_num_4(Idx)
72795       ,p_reference_char_1         => l_array_reference_char_1(Idx)
72796       ,p_reference_char_2         => l_array_reference_char_2(Idx)
72797       ,p_reference_char_3         => l_array_reference_char_3(Idx)
72798       ,p_reference_char_4         => l_array_reference_char_4(Idx)
72799       ,p_reference_date_1         => l_array_reference_date_1(Idx)
72803       ,p_event_created_by         => l_array_event_created_by(Idx)
72800       ,p_reference_date_2         => l_array_reference_date_2(Idx)
72801       ,p_reference_date_3         => l_array_reference_date_3(Idx)
72802       ,p_reference_date_4         => l_array_reference_date_4(Idx)
72804       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
72805        --
72806 END IF;
72807 
72808 
72809 
72810 --
72811 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
72812 
72813 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
72814 
72815 IF l_continue_with_lines THEN
72816    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
72817       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
72818 
72819       xla_accounting_err_pkg.build_message
72820          (p_appli_s_name            => 'XLA'
72821          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
72822          ,p_token_1                 => 'LINE_NUMBER'
72823          ,p_value_1                 => l_array_extract_line_num(Idx)
72824          ,p_token_2                 => 'PRODUCT_NAME'
72825          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
72826          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
72827          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
72828          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
72829 
72830    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
72831       --
72832       -- following sets the accounting attributes needed to reverse
72833       -- accounting for a distributeion
72834       --
72835 
72836       --
72837       -- 5217187
72838       --
72839       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
72840       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
72841                                        g_array_event(l_event_id).array_value_num('header_index'));
72842       --
72843       --
72844 
72845       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
72846       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
72847       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
72848       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
72849       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
72850       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_13(Idx));
72851       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
72852       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
72853       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
72854       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
72855       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
72856       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
72857       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
72858       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
72859       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
72860       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
72861       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
72862       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
72863       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
72864       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
72865       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
72866       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_11(Idx));
72867       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
72868       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
72869       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
72870       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
72871       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
72872       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
72873       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
72874       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
72875       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
72876       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
72877       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
72878       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
72879       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
72880       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
72881       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
72882       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
72883       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
72884       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
72885       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
72886       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
72887       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
72888       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
72889       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
72890       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
72891       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
72892       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
72893 
72894 
72898          ,p_calculate_acctd_flag => l_calculate_acctd_flag
72895       xla_ae_lines_pkg.SetAcctReversalAttrs
72896          (p_event_id             => l_event_id
72897          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
72899          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
72900    END IF;
72901 
72902    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
72903        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
72904 
72905 --
72906 AcctLineType_73 (
72907  p_application_id  => p_application_id
72908  ,p_event_id     => l_event_id
72909  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72910  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72911  ,p_actual_flag => l_actual_flag
72912  ,p_balance_type_code => l_balance_type_code
72913  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72914  
72915  , p_source_4 => l_array_source_4(Idx)
72916  , p_source_11 => l_array_source_11(Idx)
72917  , p_source_12 => l_array_source_12(Idx)
72918  , p_source_13 => l_array_source_13(Idx)
72919  , p_source_22 => l_array_source_22(Idx)
72920  , p_source_23 => l_array_source_23(Idx)
72921  , p_source_25 => l_array_source_25(Idx)
72922  , p_source_27 => l_array_source_27(Idx)
72923  , p_source_28 => l_array_source_28(Idx)
72924  , p_source_29 => l_array_source_29(Idx)
72925  , p_source_30 => l_array_source_30(Idx)
72926  , p_source_31 => l_array_source_31(Idx)
72927  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
72928  , p_source_33 => l_array_source_33(Idx)
72929  , p_source_34 => l_array_source_34(Idx)
72930  , p_source_34_meaning => l_array_source_34_meaning(Idx)
72931  , p_source_35 => l_array_source_35(Idx)
72932  , p_source_41 => l_array_source_41(Idx)
72933  , p_source_43 => l_array_source_43(Idx)
72934  );
72935 If(l_balance_type_code = 'A') THEN
72936   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72937 END IF;
72938 
72939 --
72940 
72941 
72942 --
72943 AcctLineType_75 (
72944  p_application_id  => p_application_id
72945  ,p_event_id     => l_event_id
72946  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72947  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72948  ,p_actual_flag => l_actual_flag
72949  ,p_balance_type_code => l_balance_type_code
72950  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72951  
72952  , p_source_4 => l_array_source_4(Idx)
72953  , p_source_11 => l_array_source_11(Idx)
72954  , p_source_13 => l_array_source_13(Idx)
72955  , p_source_14 => l_array_source_14(Idx)
72956  , p_source_22 => l_array_source_22(Idx)
72957  , p_source_23 => l_array_source_23(Idx)
72958  , p_source_25 => l_array_source_25(Idx)
72959  , p_source_27 => l_array_source_27(Idx)
72960  , p_source_28 => l_array_source_28(Idx)
72961  , p_source_29 => l_array_source_29(Idx)
72962  , p_source_30 => l_array_source_30(Idx)
72963  , p_source_31 => l_array_source_31(Idx)
72964  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
72965  , p_source_33 => l_array_source_33(Idx)
72966  , p_source_34 => l_array_source_34(Idx)
72967  , p_source_34_meaning => l_array_source_34_meaning(Idx)
72968  , p_source_35 => l_array_source_35(Idx)
72969  , p_source_41 => l_array_source_41(Idx)
72970  , p_source_43 => l_array_source_43(Idx)
72971  );
72972 If(l_balance_type_code = 'A') THEN
72973   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72974 END IF;
72975 
72976 --
72977 
72978       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
72979       -- or secondary ledger that has different currency with primary
72980       -- or alc that is calculated by sla
72981       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
72982             (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'))
72983 
72984 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
72985 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
72986           AND (l_actual_flag = 'A')) THEN
72987         XLA_AE_LINES_PKG.CreateGainOrLossLines(
72988           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
72989          ,p_application_id   => p_application_id
72990          ,p_amb_context_code => 'DEFAULT'
72991          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
72992          ,p_event_class_code => C_EVENT_CLASS_CODE
72993          ,p_event_type_code  => C_EVENT_TYPE_CODE
72994          
72995          ,p_gain_ccid        => -1
72996          ,p_loss_ccid        => -1
72997 
72998          ,p_actual_flag      => l_actual_flag
72999          ,p_enc_flag         => null
73000          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
73001          ,p_enc_g_l_ref      => null
73002          );
73003       END IF;
73004    END IF;
73005 END IF;
73006 
73007    ELSE
73008       --
73009       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
73010       --
73011       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73012          trace
73013             (p_msg      => 'Trancaction revesal option is Y'
73014             ,p_level    => C_LEVEL_STATEMENT
73015             ,p_module   => l_log_module);
73016       END IF;
73017    END IF;
73018 
73019 END LOOP;
73020 l_result := XLA_AE_LINES_PKG.InsertLines ;
73021 end loop;
73022 close line_cur;
73023 
73024 
73025 --
73026 -- insert headers into xla_ae_headers_gt table
73027 --
73028 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
73029 
73030 -- insert into errors table here.
73031 
73032 END LOOP;
73033 
73034 --
73035 -- 4865292
73036 --
73037 -- Compare g_hdr_extract_count with event count in
73038 -- CreateHeadersAndLines.
73039 --
73043    trace (p_msg     => '# rows extracted from header extract objects '
73040 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
73041 
73042 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73044                     || ' (running total): '
73045                     || g_hdr_extract_count
73046          ,p_level   => C_LEVEL_STATEMENT
73047          ,p_module  => l_log_module);
73048 END IF;
73049 
73050 CLOSE header_cur;
73051 --
73052 
73053 --
73054 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73055    trace
73056       (p_msg      => 'END of EventClass_122'
73057       ,p_level    => C_LEVEL_PROCEDURE
73058       ,p_module   => l_log_module);
73059 END IF;
73060 --
73061 RETURN l_result;
73062 EXCEPTION
73063 WHEN xla_exceptions_pkg.application_exception THEN
73064    
73065 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
73066 
73067    
73068 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
73069 
73070    RAISE;
73071 WHEN OTHERS THEN
73072    xla_exceptions_pkg.raise_message
73073       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_122');
73074 END EventClass_122;
73075 --
73076 
73077 ---------------------------------------
73078 --
73079 -- PRIVATE PROCEDURE
73080 --         insert_sources_123
73081 --
73082 ----------------------------------------
73083 --
73084 PROCEDURE insert_sources_123(
73085                                 p_target_ledger_id       IN NUMBER
73086                               , p_language               IN VARCHAR2
73087                               , p_sla_ledger_id          IN NUMBER
73088                               , p_pad_start_date         IN DATE
73089                               , p_pad_end_date           IN DATE
73090                          )
73091 IS
73092 
73093 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ADJ_ALL';
73094 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REVENUE_ADJ';
73095 p_apps_owner                   VARCHAR2(30);
73096 l_log_module                   VARCHAR2(240);
73097 BEGIN
73098 IF g_log_enabled THEN
73099       l_log_module := C_DEFAULT_MODULE||'.insert_sources_123';
73100 END IF;
73101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73102 
73103       trace
73104          (p_msg      => 'BEGIN of insert_sources_123'
73105          ,p_level    => C_LEVEL_PROCEDURE
73106          ,p_module   => l_log_module);
73107 
73108 END IF;
73109 
73110 -- select APPS owner
73111 SELECT oracle_username
73112   INTO p_apps_owner
73113   FROM fnd_oracle_userid
73114  WHERE read_only_flag = 'U'
73115 ;
73116 
73117 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73118       trace
73119          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
73120                         ' - p_language = '||p_language||
73121                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
73122                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
73123                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
73124                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
73125          ,p_level    => C_LEVEL_STATEMENT
73126          ,p_module   => l_log_module);
73127 END IF;
73128 
73129 
73130 --
73131 INSERT INTO xla_diag_sources --hdr2
73132 (
73133         event_id
73134       , ledger_id
73135       , sla_ledger_id
73136       , description_language
73137       , object_name
73138       , object_type_code
73139       , line_number
73140       , source_application_id
73141       , source_type_code
73142       , source_code
73143       , source_value
73144       , source_meaning
73145       , created_by
73146       , creation_date
73147       , last_update_date
73148       , last_updated_by
73149       , last_update_login
73150       , program_update_date
73151       , program_application_id
73152       , program_id
73153       , request_id
73154 )
73155 SELECT
73156         event_id
73157       , p_target_ledger_id
73158       , p_sla_ledger_id
73159       , p_language
73160       , object_name
73161       , object_type_code
73162       , line_number
73163       , source_application_id
73164       , source_type_code
73165       , source_code
73166       , SUBSTR(source_value ,1,1996)
73167       , SUBSTR(source_meaning ,1,200)
73168       , xla_environment_pkg.g_Usr_Id
73169       , TRUNC(SYSDATE)
73170       , TRUNC(SYSDATE)
73171       , xla_environment_pkg.g_Usr_Id
73172       , xla_environment_pkg.g_Login_Id
73173       , TRUNC(SYSDATE)
73174       , xla_environment_pkg.g_Prog_Appl_Id
73175       , xla_environment_pkg.g_Prog_Id
73176       , xla_environment_pkg.g_Req_Id
73177   FROM (
73178        SELECT xet.event_id                  event_id
73179             , 0                          line_number
73180             , CASE r
73181                WHEN 1 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73182                 WHEN 2 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73183                 WHEN 3 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73184                 WHEN 4 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73185                 WHEN 5 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73186                 
73187                ELSE null
73188               END                           object_name
73189             , CASE r
73190                 WHEN 1 THEN 'HEADER' 
73191                 WHEN 2 THEN 'HEADER' 
73192                 WHEN 3 THEN 'HEADER' 
73193                 WHEN 4 THEN 'HEADER' 
73194                 WHEN 5 THEN 'HEADER' 
73195                 
73196                 ELSE null
73197               END                           object_type_code
73198             , CASE r
73199                 WHEN 1 THEN '275' 
73200                 WHEN 2 THEN '275' 
73204                 
73201                 WHEN 3 THEN '275' 
73202                 WHEN 4 THEN '275' 
73203                 WHEN 5 THEN '275' 
73205                 ELSE null
73206               END                           source_application_id
73207             , 'S'             source_type_code
73208             , CASE r
73209                 WHEN 1 THEN 'CREDITING_REVENUE_FLAG' 
73210                 WHEN 2 THEN 'EVENT_ID' 
73211                 WHEN 3 THEN 'GL_DATE' 
73212                 WHEN 4 THEN 'UER_CCID' 
73213                 WHEN 5 THEN 'UBR_CCID' 
73214                 
73215                 ELSE null
73216               END                           source_code
73217             , CASE r
73218                 WHEN 1 THEN TO_CHAR(h2.CREDITING_REVENUE_FLAG)
73219                 WHEN 2 THEN TO_CHAR(h2.EVENT_ID)
73220                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
73221                 WHEN 4 THEN TO_CHAR(h2.UER_CCID)
73222                 WHEN 5 THEN TO_CHAR(h2.UBR_CCID)
73223                 
73224                 ELSE null
73225               END                           source_value
73226             , CASE r
73227                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
73228                           103371
73229                          ,TO_CHAR(h2.CREDITING_REVENUE_FLAG)
73230                          ,'CREDITING_REVENUE_FLAG'
73231                          ,'S'
73232                          ,275)
73233                 
73234                 ELSE null
73235               END               source_meaning
73236          FROM xla_events_gt     xet  
73237       , PA_XLA_REVENUE_HEADERS_V  h2
73238              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
73239          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
73240            AND xet.event_class_code = C_EVENT_CLASS_CODE
73241               AND h2.event_id = xet.event_id
73242 
73243 )
73244 ;
73245 --
73246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73247 
73248       trace
73249          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
73250          ,p_level    => C_LEVEL_STATEMENT
73251          ,p_module   => l_log_module);
73252 
73253 END IF;
73254 --
73255 
73256 
73257 
73258 --
73259 INSERT INTO xla_diag_sources  --line2
73260 (
73261         event_id
73262       , ledger_id
73263       , sla_ledger_id
73264       , description_language
73265       , object_name
73266       , object_type_code
73267       , line_number
73268       , source_application_id
73269       , source_type_code
73270       , source_code
73271       , source_value
73272       , source_meaning
73273       , created_by
73274       , creation_date
73275       , last_update_date
73276       , last_updated_by
73277       , last_update_login
73278       , program_update_date
73279       , program_application_id
73280       , program_id
73281       , request_id
73282 )
73283 SELECT  event_id
73284       , p_target_ledger_id
73285       , p_sla_ledger_id
73286       , p_language
73287       , object_name
73288       , object_type_code
73289       , line_number
73290       , source_application_id
73291       , source_type_code
73292       , source_code
73293       , SUBSTR(source_value,1,1996)
73294       , SUBSTR(source_meaning ,1,200)
73295       , xla_environment_pkg.g_Usr_Id
73296       , TRUNC(SYSDATE)
73297       , TRUNC(SYSDATE)
73298       , xla_environment_pkg.g_Usr_Id
73299       , xla_environment_pkg.g_Login_Id
73300       , TRUNC(SYSDATE)
73301       , xla_environment_pkg.g_Prog_Appl_Id
73302       , xla_environment_pkg.g_Prog_Id
73303       , xla_environment_pkg.g_Req_Id
73304   FROM (
73305        SELECT xet.event_id                  event_id
73306             , l3.line_number                 line_number
73307             , CASE r
73308                WHEN 1 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73309                 WHEN 2 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73310                 WHEN 3 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73311                 WHEN 4 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73312                 WHEN 5 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73313                 WHEN 6 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73314                 WHEN 7 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73315                 WHEN 8 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73316                 WHEN 9 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73317                 WHEN 10 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73318                 WHEN 11 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73319                 WHEN 12 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73320                 WHEN 13 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73321                 WHEN 14 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73322                 WHEN 15 THEN 'PA_XLA_EVENT_TYPE_REF_V' 
73323                 WHEN 16 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73324                 WHEN 17 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73325                 WHEN 18 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73326                 WHEN 19 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73327                 WHEN 20 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73328                 WHEN 21 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73329                 WHEN 22 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73330                 WHEN 23 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73331                 
73332                ELSE null
73333               END                           object_name
73334             , CASE r
73335                 WHEN 1 THEN 'LINE' 
73336                 WHEN 2 THEN 'LINE' 
73337                 WHEN 3 THEN 'LINE' 
73338                 WHEN 4 THEN 'LINE' 
73339                 WHEN 5 THEN 'LINE' 
73340                 WHEN 6 THEN 'LINE' 
73341                 WHEN 7 THEN 'LINE' 
73342                 WHEN 8 THEN 'LINE' 
73343                 WHEN 9 THEN 'LINE' 
73347                 WHEN 13 THEN 'LINE' 
73344                 WHEN 10 THEN 'LINE' 
73345                 WHEN 11 THEN 'LINE' 
73346                 WHEN 12 THEN 'LINE' 
73348                 WHEN 14 THEN 'LINE' 
73349                 WHEN 15 THEN 'LINE' 
73350                 WHEN 16 THEN 'LINE' 
73351                 WHEN 17 THEN 'LINE' 
73352                 WHEN 18 THEN 'LINE' 
73353                 WHEN 19 THEN 'LINE' 
73354                 WHEN 20 THEN 'LINE' 
73355                 WHEN 21 THEN 'LINE' 
73356                 WHEN 22 THEN 'LINE' 
73357                 WHEN 23 THEN 'LINE' 
73358                 
73359                 ELSE null
73360               END                           object_type_code
73361             , CASE r
73362                 WHEN 1 THEN '275' 
73363                 WHEN 2 THEN '275' 
73364                 WHEN 3 THEN '275' 
73365                 WHEN 4 THEN '275' 
73366                 WHEN 5 THEN '275' 
73367                 WHEN 6 THEN '275' 
73368                 WHEN 7 THEN '275' 
73369                 WHEN 8 THEN '275' 
73370                 WHEN 9 THEN '275' 
73371                 WHEN 10 THEN '275' 
73372                 WHEN 11 THEN '275' 
73373                 WHEN 12 THEN '275' 
73374                 WHEN 13 THEN '275' 
73375                 WHEN 14 THEN '275' 
73376                 WHEN 15 THEN '275' 
73377                 WHEN 16 THEN '275' 
73378                 WHEN 17 THEN '275' 
73379                 WHEN 18 THEN '275' 
73380                 WHEN 19 THEN '275' 
73381                 WHEN 20 THEN '275' 
73382                 WHEN 21 THEN '275' 
73383                 WHEN 22 THEN '275' 
73384                 WHEN 23 THEN '275' 
73385                 
73386                 ELSE null
73387               END                           source_application_id
73388             , 'S'             source_type_code
73389             , CASE r
73390                 WHEN 1 THEN 'PDR_UBR_CCID' 
73391                 WHEN 2 THEN 'PDR_UER_CCID' 
73392                 WHEN 3 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
73393                 WHEN 4 THEN 'ENTERED_CURRENCY_CODE' 
73394                 WHEN 5 THEN 'EXCHANGE_RATE_DATE' 
73395                 WHEN 6 THEN 'EXCHANGE_RATE' 
73396                 WHEN 7 THEN 'EXCHANGE_RATE_TYPE' 
73397                 WHEN 8 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
73398                 WHEN 9 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
73399                 WHEN 10 THEN 'REVENUE_DISTRIBUTION_TYPE' 
73400                 WHEN 11 THEN 'REVENUE_FIRST_DIST_ID' 
73401                 WHEN 12 THEN 'REVENUE_SECOND_DIST_ID' 
73402                 WHEN 13 THEN 'ENTERED_AMOUNT' 
73403                 WHEN 14 THEN 'ACCT_AMOUNT' 
73404                 WHEN 15 THEN 'REV_EVENT_TYPE_CLASSIFICATION' 
73405                 WHEN 16 THEN 'ACTUAL_UPG_CR_CCID' 
73406                 WHEN 17 THEN 'ACTUAL_UPG_DR_CCID' 
73407                 WHEN 18 THEN 'APPLICATION_ID' 
73408                 WHEN 19 THEN 'REVENUE_ENTITY_CODE' 
73409                 WHEN 20 THEN 'CR_REVENUE_FIRST_DIST_ID' 
73410                 WHEN 21 THEN 'PROJECT_ID' 
73411                 WHEN 22 THEN 'CR_REVENUE_SECOND_DIST_ID' 
73412                 WHEN 23 THEN 'PDR_DRAFT_REV_NUM_CREDITED' 
73413                 
73414                 ELSE null
73415               END                           source_code
73416             , CASE r
73417                 WHEN 1 THEN TO_CHAR(l3.PDR_UBR_CCID)
73418                 WHEN 2 THEN TO_CHAR(l3.PDR_UER_CCID)
73419                 WHEN 3 THEN TO_CHAR(l3.ACTUAL_UPG_CR_ACCT_CLASS)
73420                 WHEN 4 THEN TO_CHAR(l3.ENTERED_CURRENCY_CODE)
73421                 WHEN 5 THEN TO_CHAR(l3.EXCHANGE_RATE_DATE)
73422                 WHEN 6 THEN TO_CHAR(l3.EXCHANGE_RATE)
73423                 WHEN 7 THEN TO_CHAR(l3.EXCHANGE_RATE_TYPE)
73424                 WHEN 8 THEN TO_CHAR(l3.ACTUAL_UPG_DR_ACCT_CLASS)
73425                 WHEN 9 THEN TO_CHAR(l3.USE_ACT_UPG_ATTRIB_FLAG)
73426                 WHEN 10 THEN TO_CHAR(l3.REVENUE_DISTRIBUTION_TYPE)
73427                 WHEN 11 THEN TO_CHAR(l3.REVENUE_FIRST_DIST_ID)
73428                 WHEN 12 THEN TO_CHAR(l3.REVENUE_SECOND_DIST_ID)
73429                 WHEN 13 THEN TO_CHAR(l3.ENTERED_AMOUNT)
73430                 WHEN 14 THEN TO_CHAR(l3.ACCT_AMOUNT)
73431                 WHEN 15 THEN TO_CHAR(l1.REV_EVENT_TYPE_CLASSIFICATION)
73432                 WHEN 16 THEN TO_CHAR(l3.ACTUAL_UPG_CR_CCID)
73433                 WHEN 17 THEN TO_CHAR(l3.ACTUAL_UPG_DR_CCID)
73434                 WHEN 18 THEN TO_CHAR(l3.APPLICATION_ID)
73435                 WHEN 19 THEN TO_CHAR(l3.REVENUE_ENTITY_CODE)
73436                 WHEN 20 THEN TO_CHAR(l3.CR_REVENUE_FIRST_DIST_ID)
73437                 WHEN 21 THEN TO_CHAR(l3.PROJECT_ID)
73438                 WHEN 22 THEN TO_CHAR(l3.CR_REVENUE_SECOND_DIST_ID)
73439                 WHEN 23 THEN TO_CHAR(l3.PDR_DRAFT_REV_NUM_CREDITED)
73440                 
73441                 ELSE null
73442               END                           source_value
73443             , CASE r
73444                 WHEN 15 THEN fvl58.meaning
73445                 
73446                 ELSE null
73447               END               source_meaning
73448          FROM  xla_events_gt     xet  
73449         , PA_XLA_EVENT_TYPE_REF_V  l1
73450         , PA_XLA_REVENUE_LINES_ADJ_V  l3
73451   , fnd_lookup_values    fvl58
73452             , (select rownum r from all_objects where rownum <= 23 and owner = p_apps_owner)
73453         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
73454           AND xet.event_class_code = C_EVENT_CLASS_CODE
73455             AND l3.event_id          = xet.event_id
73456  AND l1.rev_event_type (+) =l3.rev_event_type   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
73457   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
73458   AND fvl58.view_application_id(+) = 275
73459   AND fvl58.language(+)            = USERENV('LANG')
73460   
73461 )
73462 ;
73463 --
73464 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73468          ,p_level    => C_LEVEL_STATEMENT
73465 
73466       trace
73467          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
73469          ,p_module   => l_log_module);
73470 
73471 END IF;
73472 
73473 
73474 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73475       trace
73476          (p_msg      => 'END of insert_sources_123'
73477          ,p_level    => C_LEVEL_PROCEDURE
73478          ,p_module   => l_log_module);
73479 END IF;
73480 EXCEPTION
73481   WHEN xla_exceptions_pkg.application_exception THEN
73482       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
73483             trace
73484                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
73485                ,p_level    => C_LEVEL_EXCEPTION
73486                ,p_module   => l_log_module);
73487       END IF;
73488       RAISE;
73489   WHEN OTHERS THEN
73490       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
73491             trace
73492                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
73493                ,p_level    => C_LEVEL_EXCEPTION
73494                ,p_module   => l_log_module);
73495        END IF;
73496        xla_exceptions_pkg.raise_message
73497            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_123');
73498 END insert_sources_123;
73499 --
73500 
73501 ---------------------------------------
73502 --
73503 -- PRIVATE FUNCTION
73504 --         EventClass_123
73505 --
73506 ----------------------------------------
73507 --
73508 FUNCTION EventClass_123
73509        (p_application_id         IN NUMBER
73510        ,p_base_ledger_id         IN NUMBER
73511        ,p_target_ledger_id       IN NUMBER
73512        ,p_language               IN VARCHAR2
73513        ,p_currency_code          IN VARCHAR2
73514        ,p_sla_ledger_id          IN NUMBER
73515        ,p_pad_start_date         IN DATE
73516        ,p_pad_end_date           IN DATE
73517        ,p_primary_ledger_id      IN NUMBER)
73518 RETURN BOOLEAN IS
73519 --
73520 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ADJ_ALL';
73521 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REVENUE_ADJ';
73522 
73523 l_calculate_acctd_flag   VARCHAR2(1) :='N';
73524 l_calculate_g_l_flag     VARCHAR2(1) :='N';
73525 --
73526 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73527 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73528 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73529 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73530 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73531 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73532 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73533 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73534 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73535 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73536 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73537 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73538 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73539 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73540 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73541 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73542 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73543 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73544 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73545 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73546 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73547 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73548 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
73549 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73550 
73551 l_event_id                             NUMBER;
73552 l_previous_event_id                    NUMBER;
73553 l_first_event_id                       NUMBER;
73554 l_last_event_id                        NUMBER;
73555 
73556 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
73557 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
73558 --
73559 --
73560 l_result                    BOOLEAN := TRUE;
73561 l_rows                      NUMBER  := 1000;
73562 l_event_type_name           VARCHAR2(80) := 'All';
73563 l_event_class_name          VARCHAR2(80) := 'Revenue Adjustment';
73564 l_description               VARCHAR2(4000);
73565 l_transaction_reversal      NUMBER;
73566 l_ae_header_id              NUMBER;
73567 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
73568 l_log_module                VARCHAR2(240);
73569 --
73570 l_acct_reversal_source      VARCHAR2(30);
73571 l_trx_reversal_source       VARCHAR2(30);
73572 
73573 l_continue_with_lines       BOOLEAN := TRUE;
73574 --
73575 l_acc_rev_gl_date_source    DATE;                      -- 4262811
73576 --
73577 type t_array_event_id is table of number index by binary_integer;
73578 
73579 l_rec_array_event                    t_rec_array_event;
73580 l_null_rec_array_event               t_rec_array_event;
73581 l_array_ae_header_id                 xla_number_array_type;
73582 l_actual_flag                        VARCHAR2(1) := NULL;
73583 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
73584 l_balance_type_code                  VARCHAR2(1) :=NULL;
73585 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
73586 
73587 --
73591 TYPE t_array_source_38 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.CREDITING_REVENUE_FLAG%TYPE INDEX BY BINARY_INTEGER;
73588 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
73589 --
73590 
73592 TYPE t_array_source_42 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.EVENT_ID%TYPE INDEX BY BINARY_INTEGER;
73593 TYPE t_array_source_88 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
73594 TYPE t_array_source_92 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UER_CCID%TYPE INDEX BY BINARY_INTEGER;
73595 TYPE t_array_source_93 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
73596 
73597 TYPE t_array_source_19 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
73598 TYPE t_array_source_20 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_UER_CCID%TYPE INDEX BY BINARY_INTEGER;
73599 TYPE t_array_source_23 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
73600 TYPE t_array_source_25 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
73601 TYPE t_array_source_27 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
73602 TYPE t_array_source_28 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
73603 TYPE t_array_source_29 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
73604 TYPE t_array_source_30 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
73605 TYPE t_array_source_31 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
73606 TYPE t_array_source_36 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
73607 TYPE t_array_source_39 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73608 TYPE t_array_source_40 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73609 TYPE t_array_source_41 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
73610 TYPE t_array_source_43 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
73611 TYPE t_array_source_58 IS TABLE OF PA_XLA_EVENT_TYPE_REF_V.REV_EVENT_TYPE_CLASSIFICATION%TYPE INDEX BY BINARY_INTEGER;
73612 TYPE t_array_source_59 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_CR_CCID%TYPE INDEX BY BINARY_INTEGER;
73613 TYPE t_array_source_60 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_DR_CCID%TYPE INDEX BY BINARY_INTEGER;
73614 TYPE t_array_source_61 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
73615 TYPE t_array_source_62 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
73616 TYPE t_array_source_63 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.CR_REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73617 TYPE t_array_source_64 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PROJECT_ID%TYPE INDEX BY BINARY_INTEGER;
73618 TYPE t_array_source_65 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.CR_REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73619 TYPE t_array_source_66 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_DRAFT_REV_NUM_CREDITED%TYPE INDEX BY BINARY_INTEGER;
73620 
73621 l_array_source_38              t_array_source_38;
73622 l_array_source_42              t_array_source_42;
73623 l_array_source_88              t_array_source_88;
73624 l_array_source_92              t_array_source_92;
73625 l_array_source_93              t_array_source_93;
73626 
73627 l_array_source_19      t_array_source_19;
73628 l_array_source_20      t_array_source_20;
73629 l_array_source_23      t_array_source_23;
73630 l_array_source_25      t_array_source_25;
73631 l_array_source_27      t_array_source_27;
73632 l_array_source_28      t_array_source_28;
73633 l_array_source_29      t_array_source_29;
73634 l_array_source_30      t_array_source_30;
73635 l_array_source_31      t_array_source_31;
73636 l_array_source_36      t_array_source_36;
73637 l_array_source_39      t_array_source_39;
73638 l_array_source_40      t_array_source_40;
73639 l_array_source_41      t_array_source_41;
73640 l_array_source_43      t_array_source_43;
73641 l_array_source_58      t_array_source_58;
73642 l_array_source_58_meaning      t_array_lookup_meaning;
73643 l_array_source_59      t_array_source_59;
73644 l_array_source_60      t_array_source_60;
73645 l_array_source_61      t_array_source_61;
73646 l_array_source_62      t_array_source_62;
73647 l_array_source_63      t_array_source_63;
73648 l_array_source_64      t_array_source_64;
73649 l_array_source_65      t_array_source_65;
73650 l_array_source_66      t_array_source_66;
73651 
73652 --
73653 CURSOR header_cur
73654 IS
73655 SELECT /*+ leading(xet) cardinality(xet,1) */
73656 -- Event Class Code: REVENUE_ADJ
73657     xet.entity_id
73658    ,xet.legal_entity_id
73659    ,xet.entity_code
73660    ,xet.transaction_number
73661    ,xet.event_id
73662    ,xet.event_class_code
73663    ,xet.event_type_code
73664    ,xet.event_number
73665    ,xet.event_date
73666    ,xet.transaction_date
73667    ,xet.reference_num_1
73668    ,xet.reference_num_2
73669    ,xet.reference_num_3
73670    ,xet.reference_num_4
73671    ,xet.reference_char_1
73672    ,xet.reference_char_2
73673    ,xet.reference_char_3
73674    ,xet.reference_char_4
73675    ,xet.reference_date_1
73676    ,xet.reference_date_2
73677    ,xet.reference_date_3
73678    ,xet.reference_date_4
73679    ,xet.event_created_by
73680    ,xet.budgetary_control_flag 
73681   , h2.CREDITING_REVENUE_FLAG    source_38
73682   , h2.EVENT_ID    source_42
73683   , h2.GL_DATE    source_88
73684   , h2.UER_CCID    source_92
73685   , h2.UBR_CCID    source_93
73686   FROM xla_events_gt     xet 
73687   , PA_XLA_REVENUE_HEADERS_V  h2
73688  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
73689    and xet.event_class_code = C_EVENT_CLASS_CODE
73690    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
73691 
73692  ORDER BY event_id
73693 ;
73694 
73695 
73699 SELECT  /*+ leading(xet) cardinality(xet,1) */
73696 --
73697 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
73698 IS
73700 -- Event Class Code: REVENUE_ADJ
73701     xet.entity_id
73702    ,xet.legal_entity_id
73703    ,xet.entity_code
73704    ,xet.transaction_number
73705    ,xet.event_id
73706    ,xet.event_class_code
73707    ,xet.event_type_code
73708    ,xet.event_number
73709    ,xet.event_date
73710    ,xet.transaction_date
73711    ,xet.reference_num_1
73712    ,xet.reference_num_2
73713    ,xet.reference_num_3
73714    ,xet.reference_num_4
73715    ,xet.reference_char_1
73716    ,xet.reference_char_2
73717    ,xet.reference_char_3
73718    ,xet.reference_char_4
73719    ,xet.reference_date_1
73720    ,xet.reference_date_2
73721    ,xet.reference_date_3
73722    ,xet.reference_date_4
73723    ,xet.event_created_by
73724    ,xet.budgetary_control_flag
73725  , l3.LINE_NUMBER  
73726   , l3.PDR_UBR_CCID    source_19
73727   , l3.PDR_UER_CCID    source_20
73728   , l3.ACTUAL_UPG_CR_ACCT_CLASS    source_23
73729   , l3.ENTERED_CURRENCY_CODE    source_25
73730   , l3.EXCHANGE_RATE_DATE    source_27
73731   , l3.EXCHANGE_RATE    source_28
73732   , l3.EXCHANGE_RATE_TYPE    source_29
73733   , l3.ACTUAL_UPG_DR_ACCT_CLASS    source_30
73734   , l3.USE_ACT_UPG_ATTRIB_FLAG    source_31
73735   , l3.REVENUE_DISTRIBUTION_TYPE    source_36
73736   , l3.REVENUE_FIRST_DIST_ID    source_39
73737   , l3.REVENUE_SECOND_DIST_ID    source_40
73738   , l3.ENTERED_AMOUNT    source_41
73739   , l3.ACCT_AMOUNT    source_43
73740   , l1.REV_EVENT_TYPE_CLASSIFICATION    source_58
73741   , fvl58.meaning   source_58_meaning
73742   , l3.ACTUAL_UPG_CR_CCID    source_59
73743   , l3.ACTUAL_UPG_DR_CCID    source_60
73744   , l3.APPLICATION_ID    source_61
73745   , l3.REVENUE_ENTITY_CODE    source_62
73746   , l3.CR_REVENUE_FIRST_DIST_ID    source_63
73747   , l3.PROJECT_ID    source_64
73748   , l3.CR_REVENUE_SECOND_DIST_ID    source_65
73749   , l3.PDR_DRAFT_REV_NUM_CREDITED    source_66
73750   FROM xla_events_gt     xet 
73751   , PA_XLA_EVENT_TYPE_REF_V  l1
73752   , PA_XLA_REVENUE_LINES_ADJ_V  l3
73753   , fnd_lookup_values    fvl58
73754  WHERE xet.event_id between x_first_event_id and x_last_event_id
73755    and xet.event_date between p_pad_start_date and p_pad_end_date
73756    and xet.event_class_code = C_EVENT_CLASS_CODE
73757    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
73758  AND l1.REV_EVENT_TYPE (+) =l3.REV_EVENT_TYPE   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
73759   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
73760   AND fvl58.view_application_id(+) = 275
73761   AND fvl58.language(+)            = USERENV('LANG')
73762   ;
73763 
73764 --
73765 BEGIN
73766 IF g_log_enabled THEN
73767    l_log_module := C_DEFAULT_MODULE||'.EventClass_123';
73768 END IF;
73769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73770    trace
73771       (p_msg      => 'BEGIN of EventClass_123'
73772       ,p_level    => C_LEVEL_PROCEDURE
73773       ,p_module   => l_log_module);
73774 END IF;
73775 
73776 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73777    trace
73778       (p_msg      => 'p_application_id = '||p_application_id||
73779                      ' - p_base_ledger_id = '||p_base_ledger_id||
73780                      ' - p_target_ledger_id  = '||p_target_ledger_id||
73781                      ' - p_language = '||p_language||
73782                      ' - p_currency_code = '||p_currency_code||
73783                      ' - p_sla_ledger_id = '||p_sla_ledger_id
73784       ,p_level    => C_LEVEL_STATEMENT
73785       ,p_module   => l_log_module);
73786 END IF;
73787 --
73788 -- initialze arrays
73789 --
73790 g_array_event.DELETE;
73791 l_rec_array_event := l_null_rec_array_event;
73792 --
73793 --------------------------------------
73794 -- 4262811 Initialze MPA Line Number
73795 --------------------------------------
73796 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
73797 
73798 --
73799 
73800 --
73801 OPEN header_cur;
73802 --
73803 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73804    trace
73805    (p_msg      => 'SQL - FETCH header_cur'
73806    ,p_level    => C_LEVEL_STATEMENT
73807    ,p_module   => l_log_module);
73808 END IF;
73809 --
73810 LOOP
73811 FETCH header_cur BULK COLLECT INTO
73812         l_array_entity_id
73813       , l_array_legal_entity_id
73814       , l_array_entity_code
73815       , l_array_transaction_num
73816       , l_array_event_id
73817       , l_array_class_code
73818       , l_array_event_type
73819       , l_array_event_number
73820       , l_array_event_date
73821       , l_array_transaction_date
73822       , l_array_reference_num_1
73823       , l_array_reference_num_2
73824       , l_array_reference_num_3
73825       , l_array_reference_num_4
73826       , l_array_reference_char_1
73827       , l_array_reference_char_2
73828       , l_array_reference_char_3
73829       , l_array_reference_char_4
73830       , l_array_reference_date_1
73831       , l_array_reference_date_2
73832       , l_array_reference_date_3
73833       , l_array_reference_date_4
73834       , l_array_event_created_by
73835       , l_array_budgetary_control_flag 
73836       , l_array_source_38
73837       , l_array_source_42
73838       , l_array_source_88
73839       , l_array_source_92
73840       , l_array_source_93
73841       LIMIT l_rows;
73842 --
73843 IF (C_LEVEL_EVENT >= g_log_level) THEN
73844    trace
73845    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
73846    ,p_level    => C_LEVEL_EVENT
73847    ,p_module   => l_log_module);
73848 END IF;
73849 --
73853 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
73850 EXIT WHEN l_array_entity_id.COUNT = 0;
73851 
73852 -- initialize arrays
73854 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
73855 
73856 --
73857 -- Bug 4458708
73858 --
73859 XLA_AE_LINES_PKG.g_LineNumber := 0;
73860 
73861 
73862 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
73863 g_last_hdr_idx := l_array_event_id.LAST;
73864 --
73865 -- loop for the headers. Each iteration is for each header extract row
73866 -- fetched in header cursor
73867 --
73868 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
73869 
73870 --
73871 -- set event info as cache for other routines to refer event attributes
73872 --
73873 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
73874    (p_application_id           => p_application_id
73875    ,p_primary_ledger_id        => p_primary_ledger_id
73876    ,p_base_ledger_id           => p_base_ledger_id
73877    ,p_target_ledger_id         => p_target_ledger_id
73878    ,p_entity_id                => l_array_entity_id(hdr_idx)
73879    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
73880    ,p_entity_code              => l_array_entity_code(hdr_idx)
73881    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
73882    ,p_event_id                 => l_array_event_id(hdr_idx)
73883    ,p_event_class_code         => l_array_class_code(hdr_idx)
73884    ,p_event_type_code          => l_array_event_type(hdr_idx)
73885    ,p_event_number             => l_array_event_number(hdr_idx)
73886    ,p_event_date               => l_array_event_date(hdr_idx)
73887    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
73888    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
73889    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
73890    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
73891    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
73892    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
73893    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
73894    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
73895    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
73896    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
73897    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
73898    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
73899    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
73900    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
73901    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
73902 
73903 --
73904 -- set the status of entry to C_VALID (0)
73905 --
73906 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
73907 
73908 --
73909 -- initialize a row for ae header
73910 --
73911 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
73912 
73913 l_event_id := l_array_event_id(hdr_idx);
73914 
73915 --
73916 -- storing the hdr_idx for event. May be used by line cursor.
73917 --
73918 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
73919 
73920 --
73921 -- store sources from header extract. This can be improved to
73922 -- store only those sources from header extract that may be used in lines
73923 --
73924 
73925 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
73926 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
73927 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
73928 g_array_event(l_event_id).array_value_num('source_92') := l_array_source_92(hdr_idx);
73929 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
73930 
73931 --
73932 -- initilaize the status of ae headers for diffrent balance types
73933 -- the status is initialised to C_NOT_CREATED (2)
73934 --
73935 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73936 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73937 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73938 
73939 --
73940 -- call api to validate and store accounting attributes for header
73941 --
73942 
73943 ------------------------------------------------------------
73944 -- Accrual Reversal : to get date for Standard Source (NONE)
73945 ------------------------------------------------------------
73946 l_acc_rev_gl_date_source := NULL;
73947 
73948      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
73949       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
73950 
73951 
73952 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
73953 
73954 XLA_AE_HEADER_PKG.SetJeCategoryName;
73955 
73956 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
73957 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
73958 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
73959 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
73960 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
73961 
73962 
73963 -- No header level analytical criteria
73964 
73965 --
73966 --accounting attribute enhancement, bug 3612931
73967 --
73968 l_trx_reversal_source := SUBSTR(NULL, 1,30);
73969 
73970 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
73971    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
73972 
73973    xla_accounting_err_pkg.build_message
73974       (p_appli_s_name            => 'XLA'
73978       ,p_token_2                 => 'PRODUCT_NAME'
73975       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
73976       ,p_token_1                 => 'ACCT_ATTR_NAME'
73977       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
73979       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
73980       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
73981       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
73982       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
73983 
73984 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
73985    --
73986    -- following sets the accounting attributes needed to reverse
73987    -- accounting for a distributeion
73988    --
73989    xla_ae_lines_pkg.SetTrxReversalAttrs
73990       (p_event_id              => l_event_id
73991       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
73992       ,p_trx_reversal_source   => l_trx_reversal_source);
73993 
73994 END IF;
73995 
73996 
73997 ----------------------------------------------------------------
73998 -- 4262811 -  update the header statuses to invalid in need be
73999 ----------------------------------------------------------------
74000 --
74001 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
74002 
74003 
74004   -----------------------------------------------
74005   -- No accrual reversal for the event class/type
74006   -----------------------------------------------
74007 ----------------------------------------------------------------
74008 
74009 --
74010 -- this ends the header loop iteration for one bulk fetch
74011 --
74012 END LOOP;
74013 
74014 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
74015 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
74016 
74017 --
74018 -- insert dummy rows into lines gt table that were created due to
74019 -- transaction reversals
74020 --
74021 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
74022    l_result := XLA_AE_LINES_PKG.InsertLines;
74023 END IF;
74024 
74025 --
74026 -- reset the temp_line_num for each set of events fetched from header
74027 -- cursor rather than doing it for each new event in line cursor
74028 -- Bug 3939231
74029 --
74030 xla_ae_lines_pkg.g_temp_line_num := 0;
74031 
74032 
74033 
74034 --
74035 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
74036 --
74037 --
74038 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74039 
74040       trace
74041          (p_msg      => 'SQL - FETCH line_cur'
74042          ,p_level    => C_LEVEL_STATEMENT
74043          ,p_module   => l_log_module);
74044 
74045 END IF;
74046 --
74047 --
74048 LOOP
74049   --
74050   FETCH line_cur BULK COLLECT INTO
74051         l_array_entity_id
74052       , l_array_legal_entity_id
74053       , l_array_entity_code
74054       , l_array_transaction_num
74055       , l_array_event_id
74056       , l_array_class_code
74057       , l_array_event_type
74058       , l_array_event_number
74059       , l_array_event_date
74060       , l_array_transaction_date
74061       , l_array_reference_num_1
74062       , l_array_reference_num_2
74063       , l_array_reference_num_3
74064       , l_array_reference_num_4
74065       , l_array_reference_char_1
74066       , l_array_reference_char_2
74067       , l_array_reference_char_3
74068       , l_array_reference_char_4
74069       , l_array_reference_date_1
74070       , l_array_reference_date_2
74071       , l_array_reference_date_3
74072       , l_array_reference_date_4
74073       , l_array_event_created_by
74074       , l_array_budgetary_control_flag
74075       , l_array_extract_line_num 
74076       , l_array_source_19
74077       , l_array_source_20
74078       , l_array_source_23
74079       , l_array_source_25
74080       , l_array_source_27
74081       , l_array_source_28
74082       , l_array_source_29
74083       , l_array_source_30
74084       , l_array_source_31
74085       , l_array_source_36
74086       , l_array_source_39
74087       , l_array_source_40
74088       , l_array_source_41
74089       , l_array_source_43
74090       , l_array_source_58
74091       , l_array_source_58_meaning
74092       , l_array_source_59
74093       , l_array_source_60
74094       , l_array_source_61
74095       , l_array_source_62
74096       , l_array_source_63
74097       , l_array_source_64
74098       , l_array_source_65
74099       , l_array_source_66
74100       LIMIT l_rows;
74101 
74102   --
74103   IF (C_LEVEL_EVENT >= g_log_level) THEN
74104             trace
74105                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
74106                ,p_level    => C_LEVEL_EVENT
74107                ,p_module   => l_log_module);
74108   END IF;
74109   --
74110   EXIT WHEN l_array_entity_id.count = 0;
74111 
74112   XLA_AE_LINES_PKG.g_rec_lines := null;
74113 
74114 --
74115 -- Bug 4458708
74116 --
74117 XLA_AE_LINES_PKG.g_LineNumber := 0;
74118 --
74119 --
74120 
74121 FOR Idx IN 1..l_array_event_id.count LOOP
74122    --
74123    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
74124    --
74125    l_event_id := l_array_event_id(idx);  -- 5648433
74126 
74127    --
74128    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74129    --
74130 
74131    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
74135    THEN
74132              (g_array_event(l_event_id).array_value_num('header_index'))
74133          ,'N'
74134          ) <> 'Y'
74136       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74137          trace
74138             (p_msg      => 'Trancaction revesal option is not Y '
74139             ,p_level    => C_LEVEL_STATEMENT
74140             ,p_module   => l_log_module);
74141       END IF;
74142 
74143 --
74144 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
74145 --
74146 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
74147 --
74148 -- set event info as cache for other routines to refer event attributes
74149 --
74150 
74151 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
74152    l_previous_event_id := l_event_id;
74153 
74154    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
74155       (p_application_id           => p_application_id
74156       ,p_primary_ledger_id        => p_primary_ledger_id
74157       ,p_base_ledger_id           => p_base_ledger_id
74158       ,p_target_ledger_id         => p_target_ledger_id
74159       ,p_entity_id                => l_array_entity_id(Idx)
74160       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
74161       ,p_entity_code              => l_array_entity_code(Idx)
74162       ,p_transaction_num          => l_array_transaction_num(Idx)
74163       ,p_event_id                 => l_array_event_id(Idx)
74164       ,p_event_class_code         => l_array_class_code(Idx)
74165       ,p_event_type_code          => l_array_event_type(Idx)
74166       ,p_event_number             => l_array_event_number(Idx)
74167       ,p_event_date               => l_array_event_date(Idx)
74168       ,p_transaction_date         => l_array_transaction_date(Idx)
74169       ,p_reference_num_1          => l_array_reference_num_1(Idx)
74170       ,p_reference_num_2          => l_array_reference_num_2(Idx)
74171       ,p_reference_num_3          => l_array_reference_num_3(Idx)
74172       ,p_reference_num_4          => l_array_reference_num_4(Idx)
74173       ,p_reference_char_1         => l_array_reference_char_1(Idx)
74174       ,p_reference_char_2         => l_array_reference_char_2(Idx)
74175       ,p_reference_char_3         => l_array_reference_char_3(Idx)
74176       ,p_reference_char_4         => l_array_reference_char_4(Idx)
74177       ,p_reference_date_1         => l_array_reference_date_1(Idx)
74178       ,p_reference_date_2         => l_array_reference_date_2(Idx)
74179       ,p_reference_date_3         => l_array_reference_date_3(Idx)
74180       ,p_reference_date_4         => l_array_reference_date_4(Idx)
74181       ,p_event_created_by         => l_array_event_created_by(Idx)
74182       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
74183        --
74184 END IF;
74185 
74186 
74187 
74188 --
74189 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
74190 
74191 l_acct_reversal_source := SUBSTR(NULL, 1,30);
74192 
74193 IF l_continue_with_lines THEN
74194    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
74195       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
74196 
74197       xla_accounting_err_pkg.build_message
74198          (p_appli_s_name            => 'XLA'
74199          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
74200          ,p_token_1                 => 'LINE_NUMBER'
74201          ,p_value_1                 => l_array_extract_line_num(Idx)
74202          ,p_token_2                 => 'PRODUCT_NAME'
74203          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
74204          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
74205          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
74206          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
74207 
74208    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
74209       --
74210       -- following sets the accounting attributes needed to reverse
74211       -- accounting for a distributeion
74212       --
74213 
74214       --
74215       -- 5217187
74216       --
74217       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
74218       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
74219                                        g_array_event(l_event_id).array_value_num('header_index'));
74220       --
74221       --
74222 
74223       -- No reversal code generated
74224 
74225       xla_ae_lines_pkg.SetAcctReversalAttrs
74226          (p_event_id             => l_event_id
74227          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
74228          ,p_calculate_acctd_flag => l_calculate_acctd_flag
74229          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
74230    END IF;
74231 
74232    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
74233        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
74234 
74235 --
74236 AcctLineType_31 (
74237  p_application_id  => p_application_id
74238  ,p_event_id     => l_event_id
74239  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74240  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74241  ,p_actual_flag => l_actual_flag
74242  ,p_balance_type_code => l_balance_type_code
74243  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74244  
74245  , p_source_23 => l_array_source_23(Idx)
74246  , p_source_25 => l_array_source_25(Idx)
74247  , p_source_27 => l_array_source_27(Idx)
74248  , p_source_28 => l_array_source_28(Idx)
74249  , p_source_29 => l_array_source_29(Idx)
74250  , p_source_30 => l_array_source_30(Idx)
74251  , p_source_31 => l_array_source_31(Idx)
74252  , p_source_36 => l_array_source_36(Idx)
74253  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74254  , p_source_39 => l_array_source_39(Idx)
74255  , p_source_40 => l_array_source_40(Idx)
74259  , p_source_58 => l_array_source_58(Idx)
74256  , p_source_41 => l_array_source_41(Idx)
74257  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74258  , p_source_43 => l_array_source_43(Idx)
74260  , p_source_58_meaning => l_array_source_58_meaning(Idx)
74261  , p_source_59 => l_array_source_59(Idx)
74262  , p_source_60 => l_array_source_60(Idx)
74263  , p_source_61 => l_array_source_61(Idx)
74264  , p_source_62 => l_array_source_62(Idx)
74265  , p_source_63 => l_array_source_63(Idx)
74266  , p_source_64 => l_array_source_64(Idx)
74267  , p_source_65 => l_array_source_65(Idx)
74268  , p_source_66 => l_array_source_66(Idx)
74269  );
74270 If(l_balance_type_code = 'A') THEN
74271   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74272 END IF;
74273 
74274 --
74275 
74276 
74277 --
74278 AcctLineType_33 (
74279  p_application_id  => p_application_id
74280  ,p_event_id     => l_event_id
74281  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74282  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74283  ,p_actual_flag => l_actual_flag
74284  ,p_balance_type_code => l_balance_type_code
74285  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74286  
74287  , p_source_23 => l_array_source_23(Idx)
74288  , p_source_25 => l_array_source_25(Idx)
74289  , p_source_27 => l_array_source_27(Idx)
74290  , p_source_28 => l_array_source_28(Idx)
74291  , p_source_29 => l_array_source_29(Idx)
74292  , p_source_30 => l_array_source_30(Idx)
74293  , p_source_31 => l_array_source_31(Idx)
74294  , p_source_36 => l_array_source_36(Idx)
74295  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74296  , p_source_39 => l_array_source_39(Idx)
74297  , p_source_40 => l_array_source_40(Idx)
74298  , p_source_41 => l_array_source_41(Idx)
74299  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74300  , p_source_43 => l_array_source_43(Idx)
74301  , p_source_58 => l_array_source_58(Idx)
74302  , p_source_58_meaning => l_array_source_58_meaning(Idx)
74303  , p_source_59 => l_array_source_59(Idx)
74304  , p_source_60 => l_array_source_60(Idx)
74305  , p_source_61 => l_array_source_61(Idx)
74306  , p_source_62 => l_array_source_62(Idx)
74307  , p_source_63 => l_array_source_63(Idx)
74308  , p_source_64 => l_array_source_64(Idx)
74309  , p_source_65 => l_array_source_65(Idx)
74310  , p_source_66 => l_array_source_66(Idx)
74311  );
74312 If(l_balance_type_code = 'A') THEN
74313   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74314 END IF;
74315 
74316 --
74317 
74318 
74319 --
74320 AcctLineType_66 (
74321  p_application_id  => p_application_id
74322  ,p_event_id     => l_event_id
74323  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74324  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74325  ,p_actual_flag => l_actual_flag
74326  ,p_balance_type_code => l_balance_type_code
74327  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74328  
74329  , p_source_23 => l_array_source_23(Idx)
74330  , p_source_25 => l_array_source_25(Idx)
74331  , p_source_27 => l_array_source_27(Idx)
74332  , p_source_28 => l_array_source_28(Idx)
74333  , p_source_29 => l_array_source_29(Idx)
74334  , p_source_30 => l_array_source_30(Idx)
74335  , p_source_31 => l_array_source_31(Idx)
74336  , p_source_36 => l_array_source_36(Idx)
74337  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74338  , p_source_39 => l_array_source_39(Idx)
74339  , p_source_40 => l_array_source_40(Idx)
74340  , p_source_41 => l_array_source_41(Idx)
74341  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74342  , p_source_43 => l_array_source_43(Idx)
74343  , p_source_59 => l_array_source_59(Idx)
74344  , p_source_60 => l_array_source_60(Idx)
74345  , p_source_61 => l_array_source_61(Idx)
74346  , p_source_62 => l_array_source_62(Idx)
74347  , p_source_63 => l_array_source_63(Idx)
74348  , p_source_64 => l_array_source_64(Idx)
74349  , p_source_65 => l_array_source_65(Idx)
74350  , p_source_66 => l_array_source_66(Idx)
74351  );
74352 If(l_balance_type_code = 'A') THEN
74353   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74354 END IF;
74355 
74356 --
74357 
74358 
74359 --
74360 AcctLineType_68 (
74361  p_application_id  => p_application_id
74362  ,p_event_id     => l_event_id
74363  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74364  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74365  ,p_actual_flag => l_actual_flag
74366  ,p_balance_type_code => l_balance_type_code
74367  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74368  
74369  , p_source_23 => l_array_source_23(Idx)
74370  , p_source_25 => l_array_source_25(Idx)
74371  , p_source_27 => l_array_source_27(Idx)
74372  , p_source_28 => l_array_source_28(Idx)
74373  , p_source_29 => l_array_source_29(Idx)
74374  , p_source_30 => l_array_source_30(Idx)
74375  , p_source_31 => l_array_source_31(Idx)
74376  , p_source_36 => l_array_source_36(Idx)
74377  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74378  , p_source_39 => l_array_source_39(Idx)
74379  , p_source_40 => l_array_source_40(Idx)
74380  , p_source_41 => l_array_source_41(Idx)
74381  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74382  , p_source_43 => l_array_source_43(Idx)
74383  , p_source_59 => l_array_source_59(Idx)
74384  , p_source_60 => l_array_source_60(Idx)
74385  , p_source_61 => l_array_source_61(Idx)
74386  , p_source_62 => l_array_source_62(Idx)
74387  , p_source_63 => l_array_source_63(Idx)
74388  , p_source_64 => l_array_source_64(Idx)
74389  , p_source_65 => l_array_source_65(Idx)
74390  , p_source_66 => l_array_source_66(Idx)
74391  );
74392 If(l_balance_type_code = 'A') THEN
74393   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74394 END IF;
74395 
74396 --
74397 
74398 
74399 --
74400 AcctLineType_77 (
74404  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74401  p_application_id  => p_application_id
74402  ,p_event_id     => l_event_id
74403  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74405  ,p_actual_flag => l_actual_flag
74406  ,p_balance_type_code => l_balance_type_code
74407  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74408  
74409  , p_source_23 => l_array_source_23(Idx)
74410  , p_source_25 => l_array_source_25(Idx)
74411  , p_source_27 => l_array_source_27(Idx)
74412  , p_source_28 => l_array_source_28(Idx)
74413  , p_source_29 => l_array_source_29(Idx)
74414  , p_source_30 => l_array_source_30(Idx)
74415  , p_source_31 => l_array_source_31(Idx)
74416  , p_source_36 => l_array_source_36(Idx)
74417  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74418  , p_source_39 => l_array_source_39(Idx)
74419  , p_source_40 => l_array_source_40(Idx)
74420  , p_source_41 => l_array_source_41(Idx)
74421  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74422  , p_source_43 => l_array_source_43(Idx)
74423  , p_source_59 => l_array_source_59(Idx)
74424  , p_source_60 => l_array_source_60(Idx)
74425  , p_source_61 => l_array_source_61(Idx)
74426  , p_source_62 => l_array_source_62(Idx)
74427  , p_source_63 => l_array_source_63(Idx)
74428  , p_source_64 => l_array_source_64(Idx)
74429  , p_source_65 => l_array_source_65(Idx)
74430  , p_source_66 => l_array_source_66(Idx)
74431  );
74432 If(l_balance_type_code = 'A') THEN
74433   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74434 END IF;
74435 
74436 --
74437 
74438 
74439 --
74440 AcctLineType_83 (
74441  p_application_id  => p_application_id
74442  ,p_event_id     => l_event_id
74443  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74444  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74445  ,p_actual_flag => l_actual_flag
74446  ,p_balance_type_code => l_balance_type_code
74447  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74448  
74449  , p_source_19 => l_array_source_19(Idx)
74450  , p_source_23 => l_array_source_23(Idx)
74451  , p_source_25 => l_array_source_25(Idx)
74452  , p_source_27 => l_array_source_27(Idx)
74453  , p_source_28 => l_array_source_28(Idx)
74454  , p_source_29 => l_array_source_29(Idx)
74455  , p_source_30 => l_array_source_30(Idx)
74456  , p_source_31 => l_array_source_31(Idx)
74457  , p_source_36 => l_array_source_36(Idx)
74458  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74459  , p_source_39 => l_array_source_39(Idx)
74460  , p_source_40 => l_array_source_40(Idx)
74461  , p_source_41 => l_array_source_41(Idx)
74462  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74463  , p_source_43 => l_array_source_43(Idx)
74464  , p_source_59 => l_array_source_59(Idx)
74465  , p_source_60 => l_array_source_60(Idx)
74466  , p_source_61 => l_array_source_61(Idx)
74467  , p_source_62 => l_array_source_62(Idx)
74468  , p_source_63 => l_array_source_63(Idx)
74469  , p_source_64 => l_array_source_64(Idx)
74470  , p_source_65 => l_array_source_65(Idx)
74471  , p_source_66 => l_array_source_66(Idx)
74472  );
74473 If(l_balance_type_code = 'A') THEN
74474   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74475 END IF;
74476 
74477 --
74478 
74479 
74480 --
74481 AcctLineType_85 (
74482  p_application_id  => p_application_id
74483  ,p_event_id     => l_event_id
74484  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74485  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74486  ,p_actual_flag => l_actual_flag
74487  ,p_balance_type_code => l_balance_type_code
74488  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74489  
74490  , p_source_20 => l_array_source_20(Idx)
74491  , p_source_23 => l_array_source_23(Idx)
74492  , p_source_25 => l_array_source_25(Idx)
74493  , p_source_27 => l_array_source_27(Idx)
74494  , p_source_28 => l_array_source_28(Idx)
74495  , p_source_29 => l_array_source_29(Idx)
74496  , p_source_30 => l_array_source_30(Idx)
74497  , p_source_31 => l_array_source_31(Idx)
74498  , p_source_36 => l_array_source_36(Idx)
74499  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74500  , p_source_39 => l_array_source_39(Idx)
74501  , p_source_40 => l_array_source_40(Idx)
74502  , p_source_41 => l_array_source_41(Idx)
74503  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74504  , p_source_43 => l_array_source_43(Idx)
74505  , p_source_59 => l_array_source_59(Idx)
74506  , p_source_60 => l_array_source_60(Idx)
74507  , p_source_61 => l_array_source_61(Idx)
74508  , p_source_62 => l_array_source_62(Idx)
74509  , p_source_63 => l_array_source_63(Idx)
74510  , p_source_64 => l_array_source_64(Idx)
74511  , p_source_65 => l_array_source_65(Idx)
74512  , p_source_66 => l_array_source_66(Idx)
74513  );
74514 If(l_balance_type_code = 'A') THEN
74515   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74516 END IF;
74517 
74518 --
74519 
74520       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
74521       -- or secondary ledger that has different currency with primary
74522       -- or alc that is calculated by sla
74523       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
74524             (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'))
74525 
74526 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
74527 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
74528           AND (l_actual_flag = 'A')) THEN
74529         XLA_AE_LINES_PKG.CreateGainOrLossLines(
74530           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
74531          ,p_application_id   => p_application_id
74532          ,p_amb_context_code => 'DEFAULT'
74536          
74533          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
74534          ,p_event_class_code => C_EVENT_CLASS_CODE
74535          ,p_event_type_code  => C_EVENT_TYPE_CODE
74537          ,p_gain_ccid        => g_array_event(l_event_id).array_value_num('source_92')
74538          ,p_loss_ccid        => g_array_event(l_event_id).array_value_num('source_93')
74539 
74540          ,p_actual_flag      => l_actual_flag
74541          ,p_enc_flag         => null
74542          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
74543          ,p_enc_g_l_ref      => null
74544          );
74545       END IF;
74546    END IF;
74547 END IF;
74548 
74549    ELSE
74550       --
74551       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74552       --
74553       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74554          trace
74555             (p_msg      => 'Trancaction revesal option is Y'
74556             ,p_level    => C_LEVEL_STATEMENT
74557             ,p_module   => l_log_module);
74558       END IF;
74559    END IF;
74560 
74561 END LOOP;
74562 l_result := XLA_AE_LINES_PKG.InsertLines ;
74563 end loop;
74564 close line_cur;
74565 
74566 
74567 --
74568 -- insert headers into xla_ae_headers_gt table
74569 --
74570 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
74571 
74572 -- insert into errors table here.
74573 
74574 END LOOP;
74575 
74576 --
74577 -- 4865292
74578 --
74579 -- Compare g_hdr_extract_count with event count in
74580 -- CreateHeadersAndLines.
74581 --
74582 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
74583 
74584 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74585    trace (p_msg     => '# rows extracted from header extract objects '
74586                     || ' (running total): '
74587                     || g_hdr_extract_count
74588          ,p_level   => C_LEVEL_STATEMENT
74589          ,p_module  => l_log_module);
74590 END IF;
74591 
74592 CLOSE header_cur;
74593 --
74594 
74595 --
74596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74597    trace
74598       (p_msg      => 'END of EventClass_123'
74599       ,p_level    => C_LEVEL_PROCEDURE
74600       ,p_module   => l_log_module);
74601 END IF;
74602 --
74603 RETURN l_result;
74604 EXCEPTION
74605 WHEN xla_exceptions_pkg.application_exception THEN
74606    
74607 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
74608 
74609    
74610 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
74611 
74612    RAISE;
74613 WHEN OTHERS THEN
74614    xla_exceptions_pkg.raise_message
74615       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_123');
74616 END EventClass_123;
74617 --
74618 
74619 ---------------------------------------
74620 --
74621 -- PRIVATE PROCEDURE
74622 --         insert_sources_124
74623 --
74624 ----------------------------------------
74625 --
74626 PROCEDURE insert_sources_124(
74627                                 p_target_ledger_id       IN NUMBER
74628                               , p_language               IN VARCHAR2
74629                               , p_sla_ledger_id          IN NUMBER
74630                               , p_pad_start_date         IN DATE
74631                               , p_pad_end_date           IN DATE
74632                          )
74633 IS
74634 
74635 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ALL';
74636 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REVENUE';
74637 p_apps_owner                   VARCHAR2(30);
74638 l_log_module                   VARCHAR2(240);
74639 BEGIN
74640 IF g_log_enabled THEN
74641       l_log_module := C_DEFAULT_MODULE||'.insert_sources_124';
74642 END IF;
74643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74644 
74645       trace
74646          (p_msg      => 'BEGIN of insert_sources_124'
74647          ,p_level    => C_LEVEL_PROCEDURE
74648          ,p_module   => l_log_module);
74649 
74650 END IF;
74651 
74652 -- select APPS owner
74653 SELECT oracle_username
74654   INTO p_apps_owner
74655   FROM fnd_oracle_userid
74656  WHERE read_only_flag = 'U'
74657 ;
74658 
74659 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74660       trace
74661          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
74662                         ' - p_language = '||p_language||
74663                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
74664                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
74665                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
74666                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
74667          ,p_level    => C_LEVEL_STATEMENT
74668          ,p_module   => l_log_module);
74669 END IF;
74670 
74671 
74672 --
74673 INSERT INTO xla_diag_sources --hdr2
74674 (
74675         event_id
74676       , ledger_id
74677       , sla_ledger_id
74678       , description_language
74679       , object_name
74680       , object_type_code
74681       , line_number
74682       , source_application_id
74683       , source_type_code
74684       , source_code
74685       , source_value
74686       , source_meaning
74687       , created_by
74688       , creation_date
74689       , last_update_date
74690       , last_updated_by
74691       , last_update_login
74692       , program_update_date
74693       , program_application_id
74694       , program_id
74695       , request_id
74696 )
74697 SELECT
74698         event_id
74699       , p_target_ledger_id
74700       , p_sla_ledger_id
74701       , p_language
74702       , object_name
74706       , source_type_code
74703       , object_type_code
74704       , line_number
74705       , source_application_id
74707       , source_code
74708       , SUBSTR(source_value ,1,1996)
74709       , SUBSTR(source_meaning ,1,200)
74710       , xla_environment_pkg.g_Usr_Id
74711       , TRUNC(SYSDATE)
74712       , TRUNC(SYSDATE)
74713       , xla_environment_pkg.g_Usr_Id
74714       , xla_environment_pkg.g_Login_Id
74715       , TRUNC(SYSDATE)
74716       , xla_environment_pkg.g_Prog_Appl_Id
74717       , xla_environment_pkg.g_Prog_Id
74718       , xla_environment_pkg.g_Req_Id
74719   FROM (
74720        SELECT xet.event_id                  event_id
74721             , 0                          line_number
74722             , CASE r
74723                WHEN 1 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74724                 WHEN 2 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74725                 WHEN 3 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74726                 WHEN 4 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74727                 WHEN 5 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74728                 
74729                ELSE null
74730               END                           object_name
74731             , CASE r
74732                 WHEN 1 THEN 'HEADER' 
74733                 WHEN 2 THEN 'HEADER' 
74734                 WHEN 3 THEN 'HEADER' 
74735                 WHEN 4 THEN 'HEADER' 
74736                 WHEN 5 THEN 'HEADER' 
74737                 
74738                 ELSE null
74739               END                           object_type_code
74740             , CASE r
74741                 WHEN 1 THEN '275' 
74742                 WHEN 2 THEN '275' 
74743                 WHEN 3 THEN '275' 
74744                 WHEN 4 THEN '275' 
74745                 WHEN 5 THEN '275' 
74746                 
74747                 ELSE null
74748               END                           source_application_id
74749             , 'S'             source_type_code
74750             , CASE r
74751                 WHEN 1 THEN 'CREDITING_REVENUE_FLAG' 
74752                 WHEN 2 THEN 'EVENT_ID' 
74753                 WHEN 3 THEN 'GL_DATE' 
74754                 WHEN 4 THEN 'UER_CCID' 
74755                 WHEN 5 THEN 'UBR_CCID' 
74756                 
74757                 ELSE null
74758               END                           source_code
74759             , CASE r
74760                 WHEN 1 THEN TO_CHAR(h2.CREDITING_REVENUE_FLAG)
74761                 WHEN 2 THEN TO_CHAR(h2.EVENT_ID)
74762                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
74763                 WHEN 4 THEN TO_CHAR(h2.UER_CCID)
74764                 WHEN 5 THEN TO_CHAR(h2.UBR_CCID)
74765                 
74766                 ELSE null
74767               END                           source_value
74768             , CASE r
74769                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
74770                           103371
74771                          ,TO_CHAR(h2.CREDITING_REVENUE_FLAG)
74772                          ,'CREDITING_REVENUE_FLAG'
74773                          ,'S'
74774                          ,275)
74775                 
74776                 ELSE null
74777               END               source_meaning
74778          FROM xla_events_gt     xet  
74779       , PA_XLA_REVENUE_HEADERS_V  h2
74780              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
74781          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74782            AND xet.event_class_code = C_EVENT_CLASS_CODE
74783               AND h2.event_id = xet.event_id
74784 
74785 )
74786 ;
74787 --
74788 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74789 
74790       trace
74791          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
74792          ,p_level    => C_LEVEL_STATEMENT
74793          ,p_module   => l_log_module);
74794 
74795 END IF;
74796 --
74797 
74798 
74799 
74800 --
74801 INSERT INTO xla_diag_sources  --line2
74802 (
74803         event_id
74804       , ledger_id
74805       , sla_ledger_id
74806       , description_language
74807       , object_name
74808       , object_type_code
74809       , line_number
74810       , source_application_id
74811       , source_type_code
74812       , source_code
74813       , source_value
74814       , source_meaning
74815       , created_by
74816       , creation_date
74817       , last_update_date
74818       , last_updated_by
74819       , last_update_login
74820       , program_update_date
74821       , program_application_id
74822       , program_id
74823       , request_id
74824 )
74825 SELECT  event_id
74826       , p_target_ledger_id
74827       , p_sla_ledger_id
74828       , p_language
74829       , object_name
74830       , object_type_code
74831       , line_number
74832       , source_application_id
74833       , source_type_code
74834       , source_code
74835       , SUBSTR(source_value,1,1996)
74836       , SUBSTR(source_meaning ,1,200)
74837       , xla_environment_pkg.g_Usr_Id
74838       , TRUNC(SYSDATE)
74839       , TRUNC(SYSDATE)
74840       , xla_environment_pkg.g_Usr_Id
74841       , xla_environment_pkg.g_Login_Id
74842       , TRUNC(SYSDATE)
74843       , xla_environment_pkg.g_Prog_Appl_Id
74844       , xla_environment_pkg.g_Prog_Id
74845       , xla_environment_pkg.g_Req_Id
74846   FROM (
74847        SELECT xet.event_id                  event_id
74848             , l3.line_number                 line_number
74849             , CASE r
74850                WHEN 1 THEN 'PA_XLA_REVENUE_LINES_V' 
74851                 WHEN 2 THEN 'PA_XLA_REVENUE_LINES_V' 
74852                 WHEN 3 THEN 'PA_XLA_REVENUE_LINES_V' 
74853                 WHEN 4 THEN 'PA_XLA_REVENUE_LINES_V' 
74857                 WHEN 8 THEN 'PA_XLA_REVENUE_LINES_V' 
74854                 WHEN 5 THEN 'PA_XLA_REVENUE_LINES_V' 
74855                 WHEN 6 THEN 'PA_XLA_REVENUE_LINES_V' 
74856                 WHEN 7 THEN 'PA_XLA_REVENUE_LINES_V' 
74858                 WHEN 9 THEN 'PA_XLA_REVENUE_LINES_V' 
74859                 WHEN 10 THEN 'PA_XLA_REVENUE_LINES_V' 
74860                 WHEN 11 THEN 'PA_XLA_REVENUE_LINES_V' 
74861                 WHEN 12 THEN 'PA_XLA_REVENUE_LINES_V' 
74862                 WHEN 13 THEN 'PA_XLA_REVENUE_LINES_V' 
74863                 WHEN 14 THEN 'PA_XLA_REVENUE_LINES_V' 
74864                 WHEN 15 THEN 'PA_XLA_REVENUE_LINES_V' 
74865                 WHEN 16 THEN 'PA_XLA_REVENUE_LINES_V' 
74866                 WHEN 17 THEN 'PA_XLA_EVENT_TYPE_REF_V' 
74867                 
74868                ELSE null
74869               END                           object_name
74870             , CASE r
74871                 WHEN 1 THEN 'LINE' 
74872                 WHEN 2 THEN 'LINE' 
74873                 WHEN 3 THEN 'LINE' 
74874                 WHEN 4 THEN 'LINE' 
74875                 WHEN 5 THEN 'LINE' 
74876                 WHEN 6 THEN 'LINE' 
74877                 WHEN 7 THEN 'LINE' 
74878                 WHEN 8 THEN 'LINE' 
74879                 WHEN 9 THEN 'LINE' 
74880                 WHEN 10 THEN 'LINE' 
74881                 WHEN 11 THEN 'LINE' 
74882                 WHEN 12 THEN 'LINE' 
74883                 WHEN 13 THEN 'LINE' 
74884                 WHEN 14 THEN 'LINE' 
74885                 WHEN 15 THEN 'LINE' 
74886                 WHEN 16 THEN 'LINE' 
74887                 WHEN 17 THEN 'LINE' 
74888                 
74889                 ELSE null
74890               END                           object_type_code
74891             , CASE r
74892                 WHEN 1 THEN '275' 
74893                 WHEN 2 THEN '275' 
74894                 WHEN 3 THEN '275' 
74895                 WHEN 4 THEN '275' 
74896                 WHEN 5 THEN '275' 
74897                 WHEN 6 THEN '275' 
74898                 WHEN 7 THEN '275' 
74899                 WHEN 8 THEN '275' 
74900                 WHEN 9 THEN '275' 
74901                 WHEN 10 THEN '275' 
74902                 WHEN 11 THEN '275' 
74903                 WHEN 12 THEN '275' 
74904                 WHEN 13 THEN '275' 
74905                 WHEN 14 THEN '275' 
74906                 WHEN 15 THEN '275' 
74907                 WHEN 16 THEN '275' 
74908                 WHEN 17 THEN '275' 
74909                 
74910                 ELSE null
74911               END                           source_application_id
74912             , 'S'             source_type_code
74913             , CASE r
74914                 WHEN 1 THEN 'PERDL_CODE_COMBINATION_ID' 
74915                 WHEN 2 THEN 'PDR_REALIZED_GAINS_CCID' 
74916                 WHEN 3 THEN 'PDR_REALIZED_LOSSES_CCID' 
74917                 WHEN 4 THEN 'PRDL_CODE_COMBINATION_ID' 
74918                 WHEN 5 THEN 'PDR_UBR_CCID' 
74919                 WHEN 6 THEN 'PDR_UER_CCID' 
74920                 WHEN 7 THEN 'ENTERED_CURRENCY_CODE' 
74921                 WHEN 8 THEN 'EXCHANGE_RATE_DATE' 
74922                 WHEN 9 THEN 'EXCHANGE_RATE' 
74923                 WHEN 10 THEN 'EXCHANGE_RATE_TYPE' 
74924                 WHEN 11 THEN 'REVENUE_DISTRIBUTION_TYPE' 
74925                 WHEN 12 THEN 'SYSTEM_LINKAGE_FUNCTION' 
74926                 WHEN 13 THEN 'REVENUE_FIRST_DIST_ID' 
74927                 WHEN 14 THEN 'REVENUE_SECOND_DIST_ID' 
74928                 WHEN 15 THEN 'ENTERED_AMOUNT' 
74929                 WHEN 16 THEN 'ACCT_AMOUNT' 
74930                 WHEN 17 THEN 'REV_EVENT_TYPE_CLASSIFICATION' 
74931                 
74932                 ELSE null
74933               END                           source_code
74934             , CASE r
74935                 WHEN 1 THEN TO_CHAR(l3.PERDL_CODE_COMBINATION_ID)
74936                 WHEN 2 THEN TO_CHAR(l3.PDR_REALIZED_GAINS_CCID)
74937                 WHEN 3 THEN TO_CHAR(l3.PDR_REALIZED_LOSSES_CCID)
74938                 WHEN 4 THEN TO_CHAR(l3.PRDL_CODE_COMBINATION_ID)
74939                 WHEN 5 THEN TO_CHAR(l3.PDR_UBR_CCID)
74940                 WHEN 6 THEN TO_CHAR(l3.PDR_UER_CCID)
74941                 WHEN 7 THEN TO_CHAR(l3.ENTERED_CURRENCY_CODE)
74942                 WHEN 8 THEN TO_CHAR(l3.EXCHANGE_RATE_DATE)
74943                 WHEN 9 THEN TO_CHAR(l3.EXCHANGE_RATE)
74944                 WHEN 10 THEN TO_CHAR(l3.EXCHANGE_RATE_TYPE)
74945                 WHEN 11 THEN TO_CHAR(l3.REVENUE_DISTRIBUTION_TYPE)
74946                 WHEN 12 THEN TO_CHAR(l3.SYSTEM_LINKAGE_FUNCTION)
74947                 WHEN 13 THEN TO_CHAR(l3.REVENUE_FIRST_DIST_ID)
74948                 WHEN 14 THEN TO_CHAR(l3.REVENUE_SECOND_DIST_ID)
74949                 WHEN 15 THEN TO_CHAR(l3.ENTERED_AMOUNT)
74950                 WHEN 16 THEN TO_CHAR(l3.ACCT_AMOUNT)
74951                 WHEN 17 THEN TO_CHAR(l1.REV_EVENT_TYPE_CLASSIFICATION)
74952                 
74953                 ELSE null
74954               END                           source_value
74955             , CASE r
74956                 WHEN 17 THEN fvl58.meaning
74957                 
74958                 ELSE null
74959               END               source_meaning
74960          FROM  xla_events_gt     xet  
74961         , PA_XLA_EVENT_TYPE_REF_V  l1
74962         , PA_XLA_REVENUE_LINES_V  l3
74963   , fnd_lookup_values    fvl58
74964             , (select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
74965         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74966           AND xet.event_class_code = C_EVENT_CLASS_CODE
74967             AND l3.event_id          = xet.event_id
74968  AND l1.rev_event_type (+) =l3.rev_event_type   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
74969   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
74970   AND fvl58.view_application_id(+) = 275
74971   AND fvl58.language(+)            = USERENV('LANG')
74972   
74973 )
74974 ;
74978       trace
74975 --
74976 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74977 
74979          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
74980          ,p_level    => C_LEVEL_STATEMENT
74981          ,p_module   => l_log_module);
74982 
74983 END IF;
74984 
74985 
74986 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74987       trace
74988          (p_msg      => 'END of insert_sources_124'
74989          ,p_level    => C_LEVEL_PROCEDURE
74990          ,p_module   => l_log_module);
74991 END IF;
74992 EXCEPTION
74993   WHEN xla_exceptions_pkg.application_exception THEN
74994       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
74995             trace
74996                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
74997                ,p_level    => C_LEVEL_EXCEPTION
74998                ,p_module   => l_log_module);
74999       END IF;
75000       RAISE;
75001   WHEN OTHERS THEN
75002       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
75003             trace
75004                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
75005                ,p_level    => C_LEVEL_EXCEPTION
75006                ,p_module   => l_log_module);
75007        END IF;
75008        xla_exceptions_pkg.raise_message
75009            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_124');
75010 END insert_sources_124;
75011 --
75012 
75013 ---------------------------------------
75014 --
75015 -- PRIVATE FUNCTION
75016 --         EventClass_124
75017 --
75018 ----------------------------------------
75019 --
75020 FUNCTION EventClass_124
75021        (p_application_id         IN NUMBER
75022        ,p_base_ledger_id         IN NUMBER
75023        ,p_target_ledger_id       IN NUMBER
75024        ,p_language               IN VARCHAR2
75025        ,p_currency_code          IN VARCHAR2
75026        ,p_sla_ledger_id          IN NUMBER
75027        ,p_pad_start_date         IN DATE
75028        ,p_pad_end_date           IN DATE
75029        ,p_primary_ledger_id      IN NUMBER)
75030 RETURN BOOLEAN IS
75031 --
75032 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ALL';
75033 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REVENUE';
75034 
75035 l_calculate_acctd_flag   VARCHAR2(1) :='N';
75036 l_calculate_g_l_flag     VARCHAR2(1) :='N';
75037 --
75038 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75039 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75040 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75041 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75042 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75043 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75044 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75045 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75046 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75047 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75048 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75049 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75050 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75051 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75052 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75053 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75054 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75055 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75056 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75057 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75058 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75059 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75060 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
75061 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75062 
75063 l_event_id                             NUMBER;
75064 l_previous_event_id                    NUMBER;
75065 l_first_event_id                       NUMBER;
75066 l_last_event_id                        NUMBER;
75067 
75068 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
75069 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
75070 --
75071 --
75072 l_result                    BOOLEAN := TRUE;
75073 l_rows                      NUMBER  := 1000;
75074 l_event_type_name           VARCHAR2(80) := 'All';
75075 l_event_class_name          VARCHAR2(80) := 'Revenue';
75076 l_description               VARCHAR2(4000);
75077 l_transaction_reversal      NUMBER;
75078 l_ae_header_id              NUMBER;
75079 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
75080 l_log_module                VARCHAR2(240);
75081 --
75082 l_acct_reversal_source      VARCHAR2(30);
75083 l_trx_reversal_source       VARCHAR2(30);
75084 
75085 l_continue_with_lines       BOOLEAN := TRUE;
75086 --
75087 l_acc_rev_gl_date_source    DATE;                      -- 4262811
75088 --
75089 type t_array_event_id is table of number index by binary_integer;
75090 
75091 l_rec_array_event                    t_rec_array_event;
75092 l_null_rec_array_event               t_rec_array_event;
75093 l_array_ae_header_id                 xla_number_array_type;
75094 l_actual_flag                        VARCHAR2(1) := NULL;
75095 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
75096 l_balance_type_code                  VARCHAR2(1) :=NULL;
75097 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
75098 
75099 --
75103 TYPE t_array_source_38 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.CREDITING_REVENUE_FLAG%TYPE INDEX BY BINARY_INTEGER;
75100 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
75101 --
75102 
75104 TYPE t_array_source_42 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.EVENT_ID%TYPE INDEX BY BINARY_INTEGER;
75105 TYPE t_array_source_88 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
75106 TYPE t_array_source_92 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UER_CCID%TYPE INDEX BY BINARY_INTEGER;
75107 TYPE t_array_source_93 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
75108 
75109 TYPE t_array_source_1 IS TABLE OF PA_XLA_REVENUE_LINES_V.PERDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
75110 TYPE t_array_source_16 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_REALIZED_GAINS_CCID%TYPE INDEX BY BINARY_INTEGER;
75111 TYPE t_array_source_17 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_REALIZED_LOSSES_CCID%TYPE INDEX BY BINARY_INTEGER;
75112 TYPE t_array_source_18 IS TABLE OF PA_XLA_REVENUE_LINES_V.PRDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
75113 TYPE t_array_source_19 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
75114 TYPE t_array_source_20 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_UER_CCID%TYPE INDEX BY BINARY_INTEGER;
75115 TYPE t_array_source_25 IS TABLE OF PA_XLA_REVENUE_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
75116 TYPE t_array_source_27 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
75117 TYPE t_array_source_28 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
75118 TYPE t_array_source_29 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
75119 TYPE t_array_source_36 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
75120 TYPE t_array_source_37 IS TABLE OF PA_XLA_REVENUE_LINES_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
75121 TYPE t_array_source_39 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
75122 TYPE t_array_source_40 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
75123 TYPE t_array_source_41 IS TABLE OF PA_XLA_REVENUE_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
75124 TYPE t_array_source_43 IS TABLE OF PA_XLA_REVENUE_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
75125 TYPE t_array_source_58 IS TABLE OF PA_XLA_EVENT_TYPE_REF_V.REV_EVENT_TYPE_CLASSIFICATION%TYPE INDEX BY BINARY_INTEGER;
75126 
75127 l_array_source_38              t_array_source_38;
75128 l_array_source_42              t_array_source_42;
75129 l_array_source_88              t_array_source_88;
75130 l_array_source_92              t_array_source_92;
75131 l_array_source_93              t_array_source_93;
75132 
75133 l_array_source_1      t_array_source_1;
75134 l_array_source_16      t_array_source_16;
75135 l_array_source_17      t_array_source_17;
75136 l_array_source_18      t_array_source_18;
75137 l_array_source_19      t_array_source_19;
75138 l_array_source_20      t_array_source_20;
75139 l_array_source_25      t_array_source_25;
75140 l_array_source_27      t_array_source_27;
75141 l_array_source_28      t_array_source_28;
75142 l_array_source_29      t_array_source_29;
75143 l_array_source_36      t_array_source_36;
75144 l_array_source_37      t_array_source_37;
75145 l_array_source_39      t_array_source_39;
75146 l_array_source_40      t_array_source_40;
75147 l_array_source_41      t_array_source_41;
75148 l_array_source_43      t_array_source_43;
75149 l_array_source_58      t_array_source_58;
75150 l_array_source_58_meaning      t_array_lookup_meaning;
75151 
75152 --
75153 CURSOR header_cur
75154 IS
75155 SELECT /*+ leading(xet) cardinality(xet,1) */
75156 -- Event Class Code: REVENUE
75157     xet.entity_id
75158    ,xet.legal_entity_id
75159    ,xet.entity_code
75160    ,xet.transaction_number
75161    ,xet.event_id
75162    ,xet.event_class_code
75163    ,xet.event_type_code
75164    ,xet.event_number
75165    ,xet.event_date
75166    ,xet.transaction_date
75167    ,xet.reference_num_1
75168    ,xet.reference_num_2
75169    ,xet.reference_num_3
75170    ,xet.reference_num_4
75171    ,xet.reference_char_1
75172    ,xet.reference_char_2
75173    ,xet.reference_char_3
75174    ,xet.reference_char_4
75175    ,xet.reference_date_1
75176    ,xet.reference_date_2
75177    ,xet.reference_date_3
75178    ,xet.reference_date_4
75179    ,xet.event_created_by
75180    ,xet.budgetary_control_flag 
75181   , h2.CREDITING_REVENUE_FLAG    source_38
75182   , h2.EVENT_ID    source_42
75183   , h2.GL_DATE    source_88
75184   , h2.UER_CCID    source_92
75185   , h2.UBR_CCID    source_93
75186   FROM xla_events_gt     xet 
75187   , PA_XLA_REVENUE_HEADERS_V  h2
75188  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
75189    and xet.event_class_code = C_EVENT_CLASS_CODE
75190    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
75191 
75192  ORDER BY event_id
75193 ;
75194 
75195 
75196 --
75197 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
75198 IS
75199 SELECT  /*+ leading(xet) cardinality(xet,1) */
75200 -- Event Class Code: REVENUE
75201     xet.entity_id
75202    ,xet.legal_entity_id
75203    ,xet.entity_code
75204    ,xet.transaction_number
75205    ,xet.event_id
75206    ,xet.event_class_code
75207    ,xet.event_type_code
75208    ,xet.event_number
75209    ,xet.event_date
75210    ,xet.transaction_date
75211    ,xet.reference_num_1
75212    ,xet.reference_num_2
75213    ,xet.reference_num_3
75214    ,xet.reference_num_4
75215    ,xet.reference_char_1
75216    ,xet.reference_char_2
75217    ,xet.reference_char_3
75218    ,xet.reference_char_4
75219    ,xet.reference_date_1
75220    ,xet.reference_date_2
75221    ,xet.reference_date_3
75222    ,xet.reference_date_4
75223    ,xet.event_created_by
75227   , l3.PDR_REALIZED_GAINS_CCID    source_16
75224    ,xet.budgetary_control_flag
75225  , l3.LINE_NUMBER  
75226   , l3.PERDL_CODE_COMBINATION_ID    source_1
75228   , l3.PDR_REALIZED_LOSSES_CCID    source_17
75229   , l3.PRDL_CODE_COMBINATION_ID    source_18
75230   , l3.PDR_UBR_CCID    source_19
75231   , l3.PDR_UER_CCID    source_20
75232   , l3.ENTERED_CURRENCY_CODE    source_25
75233   , l3.EXCHANGE_RATE_DATE    source_27
75234   , l3.EXCHANGE_RATE    source_28
75235   , l3.EXCHANGE_RATE_TYPE    source_29
75236   , l3.REVENUE_DISTRIBUTION_TYPE    source_36
75237   , l3.SYSTEM_LINKAGE_FUNCTION    source_37
75238   , l3.REVENUE_FIRST_DIST_ID    source_39
75239   , l3.REVENUE_SECOND_DIST_ID    source_40
75240   , l3.ENTERED_AMOUNT    source_41
75241   , l3.ACCT_AMOUNT    source_43
75242   , l1.REV_EVENT_TYPE_CLASSIFICATION    source_58
75243   , fvl58.meaning   source_58_meaning
75244   FROM xla_events_gt     xet 
75245   , PA_XLA_EVENT_TYPE_REF_V  l1
75246   , PA_XLA_REVENUE_LINES_V  l3
75247   , fnd_lookup_values    fvl58
75248  WHERE xet.event_id between x_first_event_id and x_last_event_id
75249    and xet.event_date between p_pad_start_date and p_pad_end_date
75250    and xet.event_class_code = C_EVENT_CLASS_CODE
75251    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
75252  AND l1.REV_EVENT_TYPE (+) =l3.REV_EVENT_TYPE   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
75253   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
75254   AND fvl58.view_application_id(+) = 275
75255   AND fvl58.language(+)            = USERENV('LANG')
75256   ;
75257 
75258 --
75259 BEGIN
75260 IF g_log_enabled THEN
75261    l_log_module := C_DEFAULT_MODULE||'.EventClass_124';
75262 END IF;
75263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75264    trace
75265       (p_msg      => 'BEGIN of EventClass_124'
75266       ,p_level    => C_LEVEL_PROCEDURE
75267       ,p_module   => l_log_module);
75268 END IF;
75269 
75270 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75271    trace
75272       (p_msg      => 'p_application_id = '||p_application_id||
75273                      ' - p_base_ledger_id = '||p_base_ledger_id||
75274                      ' - p_target_ledger_id  = '||p_target_ledger_id||
75275                      ' - p_language = '||p_language||
75276                      ' - p_currency_code = '||p_currency_code||
75277                      ' - p_sla_ledger_id = '||p_sla_ledger_id
75278       ,p_level    => C_LEVEL_STATEMENT
75279       ,p_module   => l_log_module);
75280 END IF;
75281 --
75282 -- initialze arrays
75283 --
75284 g_array_event.DELETE;
75285 l_rec_array_event := l_null_rec_array_event;
75286 --
75287 --------------------------------------
75288 -- 4262811 Initialze MPA Line Number
75289 --------------------------------------
75290 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
75291 
75292 --
75293 
75294 --
75295 OPEN header_cur;
75296 --
75297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75298    trace
75299    (p_msg      => 'SQL - FETCH header_cur'
75300    ,p_level    => C_LEVEL_STATEMENT
75301    ,p_module   => l_log_module);
75302 END IF;
75303 --
75304 LOOP
75305 FETCH header_cur BULK COLLECT INTO
75306         l_array_entity_id
75307       , l_array_legal_entity_id
75308       , l_array_entity_code
75309       , l_array_transaction_num
75310       , l_array_event_id
75311       , l_array_class_code
75312       , l_array_event_type
75313       , l_array_event_number
75314       , l_array_event_date
75315       , l_array_transaction_date
75316       , l_array_reference_num_1
75317       , l_array_reference_num_2
75318       , l_array_reference_num_3
75319       , l_array_reference_num_4
75320       , l_array_reference_char_1
75321       , l_array_reference_char_2
75322       , l_array_reference_char_3
75323       , l_array_reference_char_4
75324       , l_array_reference_date_1
75325       , l_array_reference_date_2
75326       , l_array_reference_date_3
75327       , l_array_reference_date_4
75328       , l_array_event_created_by
75329       , l_array_budgetary_control_flag 
75330       , l_array_source_38
75331       , l_array_source_42
75332       , l_array_source_88
75333       , l_array_source_92
75334       , l_array_source_93
75335       LIMIT l_rows;
75336 --
75337 IF (C_LEVEL_EVENT >= g_log_level) THEN
75338    trace
75339    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
75340    ,p_level    => C_LEVEL_EVENT
75341    ,p_module   => l_log_module);
75342 END IF;
75343 --
75344 EXIT WHEN l_array_entity_id.COUNT = 0;
75345 
75346 -- initialize arrays
75347 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
75348 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
75349 
75350 --
75351 -- Bug 4458708
75352 --
75353 XLA_AE_LINES_PKG.g_LineNumber := 0;
75354 
75355 
75356 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
75357 g_last_hdr_idx := l_array_event_id.LAST;
75358 --
75359 -- loop for the headers. Each iteration is for each header extract row
75360 -- fetched in header cursor
75361 --
75362 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
75363 
75364 --
75365 -- set event info as cache for other routines to refer event attributes
75366 --
75367 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
75368    (p_application_id           => p_application_id
75369    ,p_primary_ledger_id        => p_primary_ledger_id
75370    ,p_base_ledger_id           => p_base_ledger_id
75371    ,p_target_ledger_id         => p_target_ledger_id
75372    ,p_entity_id                => l_array_entity_id(hdr_idx)
75373    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
75377    ,p_event_class_code         => l_array_class_code(hdr_idx)
75374    ,p_entity_code              => l_array_entity_code(hdr_idx)
75375    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
75376    ,p_event_id                 => l_array_event_id(hdr_idx)
75378    ,p_event_type_code          => l_array_event_type(hdr_idx)
75379    ,p_event_number             => l_array_event_number(hdr_idx)
75380    ,p_event_date               => l_array_event_date(hdr_idx)
75381    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
75382    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
75383    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
75384    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
75385    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
75386    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
75387    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
75388    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
75389    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
75390    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
75391    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
75392    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
75393    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
75394    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
75395    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
75396 
75397 --
75398 -- set the status of entry to C_VALID (0)
75399 --
75400 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
75401 
75402 --
75403 -- initialize a row for ae header
75404 --
75405 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
75406 
75407 l_event_id := l_array_event_id(hdr_idx);
75408 
75409 --
75410 -- storing the hdr_idx for event. May be used by line cursor.
75411 --
75412 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
75413 
75414 --
75415 -- store sources from header extract. This can be improved to
75416 -- store only those sources from header extract that may be used in lines
75417 --
75418 
75419 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
75420 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
75421 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
75422 g_array_event(l_event_id).array_value_num('source_92') := l_array_source_92(hdr_idx);
75423 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
75424 
75425 --
75426 -- initilaize the status of ae headers for diffrent balance types
75427 -- the status is initialised to C_NOT_CREATED (2)
75428 --
75429 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75430 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75431 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75432 
75433 --
75434 -- call api to validate and store accounting attributes for header
75435 --
75436 
75437 ------------------------------------------------------------
75438 -- Accrual Reversal : to get date for Standard Source (NONE)
75439 ------------------------------------------------------------
75440 l_acc_rev_gl_date_source := NULL;
75441 
75442      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
75443       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
75444 
75445 
75446 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
75447 
75448 XLA_AE_HEADER_PKG.SetJeCategoryName;
75449 
75450 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
75451 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
75452 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
75453 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
75454 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
75455 
75456 
75457 -- No header level analytical criteria
75458 
75459 --
75460 --accounting attribute enhancement, bug 3612931
75461 --
75462 l_trx_reversal_source := SUBSTR(NULL, 1,30);
75463 
75464 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
75465    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75466 
75467    xla_accounting_err_pkg.build_message
75468       (p_appli_s_name            => 'XLA'
75469       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
75470       ,p_token_1                 => 'ACCT_ATTR_NAME'
75471       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
75472       ,p_token_2                 => 'PRODUCT_NAME'
75473       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75474       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75475       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75476       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75477 
75478 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
75479    --
75480    -- following sets the accounting attributes needed to reverse
75481    -- accounting for a distributeion
75482    --
75483    xla_ae_lines_pkg.SetTrxReversalAttrs
75484       (p_event_id              => l_event_id
75485       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
75486       ,p_trx_reversal_source   => l_trx_reversal_source);
75487 
75488 END IF;
75489 
75490 
75491 ----------------------------------------------------------------
75495 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
75492 -- 4262811 -  update the header statuses to invalid in need be
75493 ----------------------------------------------------------------
75494 --
75496 
75497 
75498   -----------------------------------------------
75499   -- No accrual reversal for the event class/type
75500   -----------------------------------------------
75501 ----------------------------------------------------------------
75502 
75503 --
75504 -- this ends the header loop iteration for one bulk fetch
75505 --
75506 END LOOP;
75507 
75508 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
75509 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
75510 
75511 --
75512 -- insert dummy rows into lines gt table that were created due to
75513 -- transaction reversals
75514 --
75515 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
75516    l_result := XLA_AE_LINES_PKG.InsertLines;
75517 END IF;
75518 
75519 --
75520 -- reset the temp_line_num for each set of events fetched from header
75521 -- cursor rather than doing it for each new event in line cursor
75522 -- Bug 3939231
75523 --
75524 xla_ae_lines_pkg.g_temp_line_num := 0;
75525 
75526 
75527 
75528 --
75529 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
75530 --
75531 --
75532 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75533 
75534       trace
75535          (p_msg      => 'SQL - FETCH line_cur'
75536          ,p_level    => C_LEVEL_STATEMENT
75537          ,p_module   => l_log_module);
75538 
75539 END IF;
75540 --
75541 --
75542 LOOP
75543   --
75544   FETCH line_cur BULK COLLECT INTO
75545         l_array_entity_id
75546       , l_array_legal_entity_id
75547       , l_array_entity_code
75548       , l_array_transaction_num
75549       , l_array_event_id
75550       , l_array_class_code
75551       , l_array_event_type
75552       , l_array_event_number
75553       , l_array_event_date
75554       , l_array_transaction_date
75555       , l_array_reference_num_1
75556       , l_array_reference_num_2
75557       , l_array_reference_num_3
75558       , l_array_reference_num_4
75559       , l_array_reference_char_1
75560       , l_array_reference_char_2
75561       , l_array_reference_char_3
75562       , l_array_reference_char_4
75563       , l_array_reference_date_1
75564       , l_array_reference_date_2
75565       , l_array_reference_date_3
75566       , l_array_reference_date_4
75567       , l_array_event_created_by
75568       , l_array_budgetary_control_flag
75569       , l_array_extract_line_num 
75570       , l_array_source_1
75571       , l_array_source_16
75572       , l_array_source_17
75573       , l_array_source_18
75574       , l_array_source_19
75575       , l_array_source_20
75576       , l_array_source_25
75577       , l_array_source_27
75578       , l_array_source_28
75579       , l_array_source_29
75580       , l_array_source_36
75581       , l_array_source_37
75582       , l_array_source_39
75583       , l_array_source_40
75584       , l_array_source_41
75585       , l_array_source_43
75586       , l_array_source_58
75587       , l_array_source_58_meaning
75588       LIMIT l_rows;
75589 
75590   --
75591   IF (C_LEVEL_EVENT >= g_log_level) THEN
75592             trace
75593                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
75594                ,p_level    => C_LEVEL_EVENT
75595                ,p_module   => l_log_module);
75596   END IF;
75597   --
75598   EXIT WHEN l_array_entity_id.count = 0;
75599 
75600   XLA_AE_LINES_PKG.g_rec_lines := null;
75601 
75602 --
75603 -- Bug 4458708
75604 --
75605 XLA_AE_LINES_PKG.g_LineNumber := 0;
75606 --
75607 --
75608 
75609 FOR Idx IN 1..l_array_event_id.count LOOP
75610    --
75611    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
75612    --
75613    l_event_id := l_array_event_id(idx);  -- 5648433
75614 
75615    --
75616    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
75617    --
75618 
75619    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
75620              (g_array_event(l_event_id).array_value_num('header_index'))
75621          ,'N'
75622          ) <> 'Y'
75623    THEN
75624       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75625          trace
75626             (p_msg      => 'Trancaction revesal option is not Y '
75627             ,p_level    => C_LEVEL_STATEMENT
75628             ,p_module   => l_log_module);
75629       END IF;
75630 
75631 --
75632 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
75633 --
75634 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
75635 --
75636 -- set event info as cache for other routines to refer event attributes
75637 --
75638 
75639 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
75640    l_previous_event_id := l_event_id;
75641 
75642    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
75643       (p_application_id           => p_application_id
75644       ,p_primary_ledger_id        => p_primary_ledger_id
75645       ,p_base_ledger_id           => p_base_ledger_id
75646       ,p_target_ledger_id         => p_target_ledger_id
75647       ,p_entity_id                => l_array_entity_id(Idx)
75648       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
75649       ,p_entity_code              => l_array_entity_code(Idx)
75650       ,p_transaction_num          => l_array_transaction_num(Idx)
75651       ,p_event_id                 => l_array_event_id(Idx)
75655       ,p_event_date               => l_array_event_date(Idx)
75652       ,p_event_class_code         => l_array_class_code(Idx)
75653       ,p_event_type_code          => l_array_event_type(Idx)
75654       ,p_event_number             => l_array_event_number(Idx)
75656       ,p_transaction_date         => l_array_transaction_date(Idx)
75657       ,p_reference_num_1          => l_array_reference_num_1(Idx)
75658       ,p_reference_num_2          => l_array_reference_num_2(Idx)
75659       ,p_reference_num_3          => l_array_reference_num_3(Idx)
75660       ,p_reference_num_4          => l_array_reference_num_4(Idx)
75661       ,p_reference_char_1         => l_array_reference_char_1(Idx)
75662       ,p_reference_char_2         => l_array_reference_char_2(Idx)
75663       ,p_reference_char_3         => l_array_reference_char_3(Idx)
75664       ,p_reference_char_4         => l_array_reference_char_4(Idx)
75665       ,p_reference_date_1         => l_array_reference_date_1(Idx)
75666       ,p_reference_date_2         => l_array_reference_date_2(Idx)
75667       ,p_reference_date_3         => l_array_reference_date_3(Idx)
75668       ,p_reference_date_4         => l_array_reference_date_4(Idx)
75669       ,p_event_created_by         => l_array_event_created_by(Idx)
75670       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
75671        --
75672 END IF;
75673 
75674 
75675 
75676 --
75677 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
75678 
75679 l_acct_reversal_source := SUBSTR(NULL, 1,30);
75680 
75681 IF l_continue_with_lines THEN
75682    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
75683       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75684 
75685       xla_accounting_err_pkg.build_message
75686          (p_appli_s_name            => 'XLA'
75687          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
75688          ,p_token_1                 => 'LINE_NUMBER'
75689          ,p_value_1                 => l_array_extract_line_num(Idx)
75690          ,p_token_2                 => 'PRODUCT_NAME'
75691          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75692          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75693          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75694          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75695 
75696    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
75697       --
75698       -- following sets the accounting attributes needed to reverse
75699       -- accounting for a distributeion
75700       --
75701 
75702       --
75703       -- 5217187
75704       --
75705       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
75706       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
75707                                        g_array_event(l_event_id).array_value_num('header_index'));
75708       --
75709       --
75710 
75711       -- No reversal code generated
75712 
75713       xla_ae_lines_pkg.SetAcctReversalAttrs
75714          (p_event_id             => l_event_id
75715          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
75716          ,p_calculate_acctd_flag => l_calculate_acctd_flag
75717          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
75718    END IF;
75719 
75720    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
75721        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
75722 
75723 --
75724 AcctLineType_24 (
75725  p_application_id  => p_application_id
75726  ,p_event_id     => l_event_id
75727  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75728  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75729  ,p_actual_flag => l_actual_flag
75730  ,p_balance_type_code => l_balance_type_code
75731  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75732  
75733  , p_source_18 => l_array_source_18(Idx)
75734  , p_source_25 => l_array_source_25(Idx)
75735  , p_source_27 => l_array_source_27(Idx)
75736  , p_source_28 => l_array_source_28(Idx)
75737  , p_source_29 => l_array_source_29(Idx)
75738  , p_source_36 => l_array_source_36(Idx)
75739  , p_source_37 => l_array_source_37(Idx)
75740  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75741  , p_source_39 => l_array_source_39(Idx)
75742  , p_source_40 => l_array_source_40(Idx)
75743  , p_source_41 => l_array_source_41(Idx)
75744  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75745  , p_source_43 => l_array_source_43(Idx)
75746  );
75747 If(l_balance_type_code = 'A') THEN
75748   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75749 END IF;
75750 
75751 --
75752 
75753 
75754 --
75755 AcctLineType_29 (
75756  p_application_id  => p_application_id
75757  ,p_event_id     => l_event_id
75758  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75759  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75760  ,p_actual_flag => l_actual_flag
75761  ,p_balance_type_code => l_balance_type_code
75762  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75763  
75764  , p_source_18 => l_array_source_18(Idx)
75765  , p_source_25 => l_array_source_25(Idx)
75766  , p_source_27 => l_array_source_27(Idx)
75767  , p_source_28 => l_array_source_28(Idx)
75768  , p_source_29 => l_array_source_29(Idx)
75769  , p_source_36 => l_array_source_36(Idx)
75770  , p_source_37 => l_array_source_37(Idx)
75771  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75772  , p_source_39 => l_array_source_39(Idx)
75773  , p_source_40 => l_array_source_40(Idx)
75774  , p_source_41 => l_array_source_41(Idx)
75775  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75776  , p_source_43 => l_array_source_43(Idx)
75777  );
75778 If(l_balance_type_code = 'A') THEN
75782 --
75779   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75780 END IF;
75781 
75783 
75784 
75785 --
75786 AcctLineType_30 (
75787  p_application_id  => p_application_id
75788  ,p_event_id     => l_event_id
75789  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75790  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75791  ,p_actual_flag => l_actual_flag
75792  ,p_balance_type_code => l_balance_type_code
75793  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75794  
75795  , p_source_1 => l_array_source_1(Idx)
75796  , p_source_25 => l_array_source_25(Idx)
75797  , p_source_27 => l_array_source_27(Idx)
75798  , p_source_28 => l_array_source_28(Idx)
75799  , p_source_29 => l_array_source_29(Idx)
75800  , p_source_36 => l_array_source_36(Idx)
75801  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75802  , p_source_39 => l_array_source_39(Idx)
75803  , p_source_40 => l_array_source_40(Idx)
75804  , p_source_41 => l_array_source_41(Idx)
75805  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75806  , p_source_43 => l_array_source_43(Idx)
75807  , p_source_58 => l_array_source_58(Idx)
75808  , p_source_58_meaning => l_array_source_58_meaning(Idx)
75809  );
75810 If(l_balance_type_code = 'A') THEN
75811   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75812 END IF;
75813 
75814 --
75815 
75816 
75817 --
75818 AcctLineType_32 (
75819  p_application_id  => p_application_id
75820  ,p_event_id     => l_event_id
75821  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75822  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75823  ,p_actual_flag => l_actual_flag
75824  ,p_balance_type_code => l_balance_type_code
75825  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75826  
75827  , p_source_1 => l_array_source_1(Idx)
75828  , p_source_25 => l_array_source_25(Idx)
75829  , p_source_27 => l_array_source_27(Idx)
75830  , p_source_28 => l_array_source_28(Idx)
75831  , p_source_29 => l_array_source_29(Idx)
75832  , p_source_36 => l_array_source_36(Idx)
75833  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75834  , p_source_39 => l_array_source_39(Idx)
75835  , p_source_40 => l_array_source_40(Idx)
75836  , p_source_41 => l_array_source_41(Idx)
75837  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75838  , p_source_43 => l_array_source_43(Idx)
75839  , p_source_58 => l_array_source_58(Idx)
75840  , p_source_58_meaning => l_array_source_58_meaning(Idx)
75841  );
75842 If(l_balance_type_code = 'A') THEN
75843   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75844 END IF;
75845 
75846 --
75847 
75848 
75849 --
75850 AcctLineType_34 (
75851  p_application_id  => p_application_id
75852  ,p_event_id     => l_event_id
75853  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75854  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75855  ,p_actual_flag => l_actual_flag
75856  ,p_balance_type_code => l_balance_type_code
75857  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75858  
75859  , p_source_18 => l_array_source_18(Idx)
75860  , p_source_25 => l_array_source_25(Idx)
75861  , p_source_27 => l_array_source_27(Idx)
75862  , p_source_28 => l_array_source_28(Idx)
75863  , p_source_29 => l_array_source_29(Idx)
75864  , p_source_36 => l_array_source_36(Idx)
75865  , p_source_37 => l_array_source_37(Idx)
75866  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75867  , p_source_39 => l_array_source_39(Idx)
75868  , p_source_40 => l_array_source_40(Idx)
75869  , p_source_41 => l_array_source_41(Idx)
75870  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75871  , p_source_43 => l_array_source_43(Idx)
75872  );
75873 If(l_balance_type_code = 'A') THEN
75874   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75875 END IF;
75876 
75877 --
75878 
75879 
75880 --
75881 AcctLineType_35 (
75882  p_application_id  => p_application_id
75883  ,p_event_id     => l_event_id
75884  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75885  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75886  ,p_actual_flag => l_actual_flag
75887  ,p_balance_type_code => l_balance_type_code
75888  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75889  
75890  , p_source_18 => l_array_source_18(Idx)
75891  , p_source_25 => l_array_source_25(Idx)
75892  , p_source_27 => l_array_source_27(Idx)
75893  , p_source_28 => l_array_source_28(Idx)
75894  , p_source_29 => l_array_source_29(Idx)
75895  , p_source_36 => l_array_source_36(Idx)
75896  , p_source_37 => l_array_source_37(Idx)
75897  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75898  , p_source_39 => l_array_source_39(Idx)
75899  , p_source_40 => l_array_source_40(Idx)
75900  , p_source_41 => l_array_source_41(Idx)
75901  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75902  , p_source_43 => l_array_source_43(Idx)
75903  );
75904 If(l_balance_type_code = 'A') THEN
75905   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75906 END IF;
75907 
75908 --
75909 
75910 
75911 --
75912 AcctLineType_36 (
75913  p_application_id  => p_application_id
75914  ,p_event_id     => l_event_id
75915  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75916  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75917  ,p_actual_flag => l_actual_flag
75918  ,p_balance_type_code => l_balance_type_code
75919  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75920  
75921  , p_source_18 => l_array_source_18(Idx)
75922  , p_source_25 => l_array_source_25(Idx)
75923  , p_source_27 => l_array_source_27(Idx)
75924  , p_source_28 => l_array_source_28(Idx)
75925  , p_source_29 => l_array_source_29(Idx)
75926  , p_source_36 => l_array_source_36(Idx)
75927  , p_source_37 => l_array_source_37(Idx)
75928  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75932  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75929  , p_source_39 => l_array_source_39(Idx)
75930  , p_source_40 => l_array_source_40(Idx)
75931  , p_source_41 => l_array_source_41(Idx)
75933  , p_source_43 => l_array_source_43(Idx)
75934  );
75935 If(l_balance_type_code = 'A') THEN
75936   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75937 END IF;
75938 
75939 --
75940 
75941 
75942 --
75943 AcctLineType_65 (
75944  p_application_id  => p_application_id
75945  ,p_event_id     => l_event_id
75946  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75947  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75948  ,p_actual_flag => l_actual_flag
75949  ,p_balance_type_code => l_balance_type_code
75950  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75951  
75952  , p_source_16 => l_array_source_16(Idx)
75953  , p_source_25 => l_array_source_25(Idx)
75954  , p_source_27 => l_array_source_27(Idx)
75955  , p_source_28 => l_array_source_28(Idx)
75956  , p_source_29 => l_array_source_29(Idx)
75957  , p_source_36 => l_array_source_36(Idx)
75958  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75959  , p_source_39 => l_array_source_39(Idx)
75960  , p_source_40 => l_array_source_40(Idx)
75961  , p_source_41 => l_array_source_41(Idx)
75962  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75963  , p_source_43 => l_array_source_43(Idx)
75964  );
75965 If(l_balance_type_code = 'A') THEN
75966   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75967 END IF;
75968 
75969 --
75970 
75971 
75972 --
75973 AcctLineType_67 (
75974  p_application_id  => p_application_id
75975  ,p_event_id     => l_event_id
75976  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75977  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75978  ,p_actual_flag => l_actual_flag
75979  ,p_balance_type_code => l_balance_type_code
75980  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75981  
75982  , p_source_17 => l_array_source_17(Idx)
75983  , p_source_25 => l_array_source_25(Idx)
75984  , p_source_27 => l_array_source_27(Idx)
75985  , p_source_28 => l_array_source_28(Idx)
75986  , p_source_29 => l_array_source_29(Idx)
75987  , p_source_36 => l_array_source_36(Idx)
75988  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75989  , p_source_39 => l_array_source_39(Idx)
75990  , p_source_40 => l_array_source_40(Idx)
75991  , p_source_41 => l_array_source_41(Idx)
75992  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75993  , p_source_43 => l_array_source_43(Idx)
75994  );
75995 If(l_balance_type_code = 'A') THEN
75996   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75997 END IF;
75998 
75999 --
76000 
76001 
76002 --
76003 AcctLineType_82 (
76004  p_application_id  => p_application_id
76005  ,p_event_id     => l_event_id
76006  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76007  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76008  ,p_actual_flag => l_actual_flag
76009  ,p_balance_type_code => l_balance_type_code
76010  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76011  
76012  , p_source_19 => l_array_source_19(Idx)
76013  , p_source_25 => l_array_source_25(Idx)
76014  , p_source_27 => l_array_source_27(Idx)
76015  , p_source_28 => l_array_source_28(Idx)
76016  , p_source_29 => l_array_source_29(Idx)
76017  , p_source_36 => l_array_source_36(Idx)
76018  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
76019  , p_source_39 => l_array_source_39(Idx)
76020  , p_source_40 => l_array_source_40(Idx)
76021  , p_source_41 => l_array_source_41(Idx)
76022  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
76023  , p_source_43 => l_array_source_43(Idx)
76024  );
76025 If(l_balance_type_code = 'A') THEN
76026   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76027 END IF;
76028 
76029 --
76030 
76031 
76032 --
76033 AcctLineType_84 (
76034  p_application_id  => p_application_id
76035  ,p_event_id     => l_event_id
76036  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76037  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76038  ,p_actual_flag => l_actual_flag
76039  ,p_balance_type_code => l_balance_type_code
76040  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76041  
76042  , p_source_20 => l_array_source_20(Idx)
76043  , p_source_25 => l_array_source_25(Idx)
76044  , p_source_27 => l_array_source_27(Idx)
76045  , p_source_28 => l_array_source_28(Idx)
76046  , p_source_29 => l_array_source_29(Idx)
76047  , p_source_36 => l_array_source_36(Idx)
76048  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
76049  , p_source_39 => l_array_source_39(Idx)
76050  , p_source_40 => l_array_source_40(Idx)
76051  , p_source_41 => l_array_source_41(Idx)
76052  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
76053  , p_source_43 => l_array_source_43(Idx)
76054  );
76055 If(l_balance_type_code = 'A') THEN
76056   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76057 END IF;
76058 
76059 --
76060 
76061 
76062 --
76063 AcctLineType_86 (
76064  p_application_id  => p_application_id
76065  ,p_event_id     => l_event_id
76066  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76067  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76068  ,p_actual_flag => l_actual_flag
76069  ,p_balance_type_code => l_balance_type_code
76070  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76071  
76072  , p_source_18 => l_array_source_18(Idx)
76073  , p_source_25 => l_array_source_25(Idx)
76074  , p_source_27 => l_array_source_27(Idx)
76075  , p_source_28 => l_array_source_28(Idx)
76076  , p_source_29 => l_array_source_29(Idx)
76077  , p_source_36 => l_array_source_36(Idx)
76078  , p_source_37 => l_array_source_37(Idx)
76082  , p_source_41 => l_array_source_41(Idx)
76079  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
76080  , p_source_39 => l_array_source_39(Idx)
76081  , p_source_40 => l_array_source_40(Idx)
76083  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
76084  , p_source_43 => l_array_source_43(Idx)
76085  );
76086 If(l_balance_type_code = 'A') THEN
76087   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76088 END IF;
76089 
76090 --
76091 
76092 
76093 --
76094 AcctLineType_87 (
76095  p_application_id  => p_application_id
76096  ,p_event_id     => l_event_id
76097  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76098  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76099  ,p_actual_flag => l_actual_flag
76100  ,p_balance_type_code => l_balance_type_code
76101  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76102  
76103  , p_source_18 => l_array_source_18(Idx)
76104  , p_source_25 => l_array_source_25(Idx)
76105  , p_source_27 => l_array_source_27(Idx)
76106  , p_source_28 => l_array_source_28(Idx)
76107  , p_source_29 => l_array_source_29(Idx)
76108  , p_source_36 => l_array_source_36(Idx)
76109  , p_source_37 => l_array_source_37(Idx)
76110  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
76111  , p_source_39 => l_array_source_39(Idx)
76112  , p_source_40 => l_array_source_40(Idx)
76113  , p_source_41 => l_array_source_41(Idx)
76114  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
76115  , p_source_43 => l_array_source_43(Idx)
76116  );
76117 If(l_balance_type_code = 'A') THEN
76118   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76119 END IF;
76120 
76121 --
76122 
76123 
76124 --
76125 AcctLineType_88 (
76126  p_application_id  => p_application_id
76127  ,p_event_id     => l_event_id
76128  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76129  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76130  ,p_actual_flag => l_actual_flag
76131  ,p_balance_type_code => l_balance_type_code
76132  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76133  
76134  , p_source_18 => l_array_source_18(Idx)
76135  , p_source_25 => l_array_source_25(Idx)
76136  , p_source_27 => l_array_source_27(Idx)
76137  , p_source_28 => l_array_source_28(Idx)
76138  , p_source_29 => l_array_source_29(Idx)
76139  , p_source_36 => l_array_source_36(Idx)
76140  , p_source_37 => l_array_source_37(Idx)
76141  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
76142  , p_source_39 => l_array_source_39(Idx)
76143  , p_source_40 => l_array_source_40(Idx)
76144  , p_source_41 => l_array_source_41(Idx)
76145  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
76146  , p_source_43 => l_array_source_43(Idx)
76147  );
76148 If(l_balance_type_code = 'A') THEN
76149   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76150 END IF;
76151 
76152 --
76153 
76154       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
76155       -- or secondary ledger that has different currency with primary
76156       -- or alc that is calculated by sla
76157       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
76158             (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'))
76159 
76160 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
76161 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
76162           AND (l_actual_flag = 'A')) THEN
76163         XLA_AE_LINES_PKG.CreateGainOrLossLines(
76164           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
76165          ,p_application_id   => p_application_id
76166          ,p_amb_context_code => 'DEFAULT'
76167          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
76168          ,p_event_class_code => C_EVENT_CLASS_CODE
76169          ,p_event_type_code  => C_EVENT_TYPE_CODE
76170          
76171          ,p_gain_ccid        => g_array_event(l_event_id).array_value_num('source_92')
76172          ,p_loss_ccid        => g_array_event(l_event_id).array_value_num('source_93')
76173 
76174          ,p_actual_flag      => l_actual_flag
76175          ,p_enc_flag         => null
76176          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
76177          ,p_enc_g_l_ref      => null
76178          );
76179       END IF;
76180    END IF;
76181 END IF;
76182 
76183    ELSE
76184       --
76185       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
76186       --
76187       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76188          trace
76189             (p_msg      => 'Trancaction revesal option is Y'
76190             ,p_level    => C_LEVEL_STATEMENT
76191             ,p_module   => l_log_module);
76192       END IF;
76193    END IF;
76194 
76195 END LOOP;
76196 l_result := XLA_AE_LINES_PKG.InsertLines ;
76197 end loop;
76198 close line_cur;
76199 
76200 
76201 --
76202 -- insert headers into xla_ae_headers_gt table
76203 --
76204 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
76205 
76206 -- insert into errors table here.
76207 
76208 END LOOP;
76209 
76210 --
76211 -- 4865292
76212 --
76213 -- Compare g_hdr_extract_count with event count in
76214 -- CreateHeadersAndLines.
76215 --
76216 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
76217 
76218 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76219    trace (p_msg     => '# rows extracted from header extract objects '
76220                     || ' (running total): '
76221                     || g_hdr_extract_count
76222          ,p_level   => C_LEVEL_STATEMENT
76223          ,p_module  => l_log_module);
76227 --
76224 END IF;
76225 
76226 CLOSE header_cur;
76228 
76229 --
76230 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76231    trace
76232       (p_msg      => 'END of EventClass_124'
76233       ,p_level    => C_LEVEL_PROCEDURE
76234       ,p_module   => l_log_module);
76235 END IF;
76236 --
76237 RETURN l_result;
76238 EXCEPTION
76239 WHEN xla_exceptions_pkg.application_exception THEN
76240    
76241 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
76242 
76243    
76244 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
76245 
76246    RAISE;
76247 WHEN OTHERS THEN
76248    xla_exceptions_pkg.raise_message
76249       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_124');
76250 END EventClass_124;
76251 --
76252 
76253 ---------------------------------------
76254 --
76255 -- PRIVATE PROCEDURE
76256 --         insert_sources_125
76257 --
76258 ----------------------------------------
76259 --
76260 PROCEDURE insert_sources_125(
76261                                 p_target_ledger_id       IN NUMBER
76262                               , p_language               IN VARCHAR2
76263                               , p_sla_ledger_id          IN NUMBER
76264                               , p_pad_start_date         IN DATE
76265                               , p_pad_end_date           IN DATE
76266                          )
76267 IS
76268 
76269 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ADJ_ALL';
76270 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST_ADJ';
76271 p_apps_owner                   VARCHAR2(30);
76272 l_log_module                   VARCHAR2(240);
76273 BEGIN
76274 IF g_log_enabled THEN
76275       l_log_module := C_DEFAULT_MODULE||'.insert_sources_125';
76276 END IF;
76277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76278 
76279       trace
76280          (p_msg      => 'BEGIN of insert_sources_125'
76281          ,p_level    => C_LEVEL_PROCEDURE
76282          ,p_module   => l_log_module);
76283 
76284 END IF;
76285 
76286 -- select APPS owner
76287 SELECT oracle_username
76288   INTO p_apps_owner
76289   FROM fnd_oracle_userid
76290  WHERE read_only_flag = 'U'
76291 ;
76292 
76293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76294       trace
76295          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
76296                         ' - p_language = '||p_language||
76297                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
76298                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
76299                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
76300                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
76301          ,p_level    => C_LEVEL_STATEMENT
76302          ,p_module   => l_log_module);
76303 END IF;
76304 
76305 
76306 --
76307 INSERT INTO xla_diag_sources --hdr2
76308 (
76309         event_id
76310       , ledger_id
76311       , sla_ledger_id
76312       , description_language
76313       , object_name
76314       , object_type_code
76315       , line_number
76316       , source_application_id
76317       , source_type_code
76318       , source_code
76319       , source_value
76320       , source_meaning
76321       , created_by
76322       , creation_date
76323       , last_update_date
76324       , last_updated_by
76325       , last_update_login
76326       , program_update_date
76327       , program_application_id
76328       , program_id
76329       , request_id
76330 )
76331 SELECT
76332         event_id
76333       , p_target_ledger_id
76334       , p_sla_ledger_id
76335       , p_language
76336       , object_name
76337       , object_type_code
76338       , line_number
76339       , source_application_id
76340       , source_type_code
76341       , source_code
76342       , SUBSTR(source_value ,1,1996)
76343       , SUBSTR(source_meaning ,1,200)
76344       , xla_environment_pkg.g_Usr_Id
76345       , TRUNC(SYSDATE)
76346       , TRUNC(SYSDATE)
76347       , xla_environment_pkg.g_Usr_Id
76348       , xla_environment_pkg.g_Login_Id
76349       , TRUNC(SYSDATE)
76350       , xla_environment_pkg.g_Prog_Appl_Id
76351       , xla_environment_pkg.g_Prog_Id
76352       , xla_environment_pkg.g_Req_Id
76353   FROM (
76354        SELECT xet.event_id                  event_id
76355             , 0                          line_number
76356             , CASE r
76357                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
76358                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
76359                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
76360                 
76361                ELSE null
76362               END                           object_name
76363             , CASE r
76364                 WHEN 1 THEN 'HEADER' 
76365                 WHEN 2 THEN 'HEADER' 
76366                 WHEN 3 THEN 'HEADER' 
76367                 
76368                 ELSE null
76369               END                           object_type_code
76370             , CASE r
76371                 WHEN 1 THEN '275' 
76372                 WHEN 2 THEN '275' 
76373                 WHEN 3 THEN '275' 
76374                 
76375                 ELSE null
76376               END                           source_application_id
76377             , 'S'             source_type_code
76378             , CASE r
76379                 WHEN 1 THEN 'EXCHANGE_RATE_VARIANCE_FLAG' 
76380                 WHEN 2 THEN 'EXPENDITURE_ITEM_ID' 
76381                 WHEN 3 THEN 'GL_DATE' 
76382                 
76383                 ELSE null
76384               END                           source_code
76385             , CASE r
76389                 
76386                 WHEN 1 THEN TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
76387                 WHEN 2 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
76388                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
76390                 ELSE null
76391               END                           source_value
76392             , CASE r
76393                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
76394                           103371
76395                          ,TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
76396                          ,'EXCHANGE_RATE_VARIANCE_FLAG'
76397                          ,'S'
76398                          ,275)
76399                 
76400                 ELSE null
76401               END               source_meaning
76402          FROM xla_events_gt     xet  
76403       , PA_XLA_EXP_HEADER_V  h2
76404              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
76405          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
76406            AND xet.event_class_code = C_EVENT_CLASS_CODE
76407               AND h2.event_id = xet.event_id
76408 
76409 )
76410 ;
76411 --
76412 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76413 
76414       trace
76415          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
76416          ,p_level    => C_LEVEL_STATEMENT
76417          ,p_module   => l_log_module);
76418 
76419 END IF;
76420 --
76421 
76422 
76423 
76424 --
76425 INSERT INTO xla_diag_sources  --line2
76426 (
76427         event_id
76428       , ledger_id
76429       , sla_ledger_id
76430       , description_language
76431       , object_name
76432       , object_type_code
76433       , line_number
76434       , source_application_id
76435       , source_type_code
76436       , source_code
76437       , source_value
76438       , source_meaning
76439       , created_by
76440       , creation_date
76441       , last_update_date
76442       , last_updated_by
76443       , last_update_login
76444       , program_update_date
76445       , program_application_id
76446       , program_id
76447       , request_id
76448 )
76449 SELECT  event_id
76450       , p_target_ledger_id
76451       , p_sla_ledger_id
76452       , p_language
76453       , object_name
76454       , object_type_code
76455       , line_number
76456       , source_application_id
76457       , source_type_code
76458       , source_code
76459       , SUBSTR(source_value,1,1996)
76460       , SUBSTR(source_meaning ,1,200)
76461       , xla_environment_pkg.g_Usr_Id
76462       , TRUNC(SYSDATE)
76463       , TRUNC(SYSDATE)
76464       , xla_environment_pkg.g_Usr_Id
76465       , xla_environment_pkg.g_Login_Id
76466       , TRUNC(SYSDATE)
76467       , xla_environment_pkg.g_Prog_Appl_Id
76468       , xla_environment_pkg.g_Prog_Id
76469       , xla_environment_pkg.g_Req_Id
76470   FROM (
76471        SELECT xet.event_id                  event_id
76472             , l1.line_number                 line_number
76473             , CASE r
76474                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
76475                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
76476                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
76477                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
76478                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
76479                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
76480                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
76481                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
76482                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
76483                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
76484                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
76485                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
76486                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
76487                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
76488                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
76489                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
76490                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
76491                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
76492                 
76493                ELSE null
76494               END                           object_name
76495             , CASE r
76496                 WHEN 1 THEN 'LINE' 
76497                 WHEN 2 THEN 'LINE' 
76498                 WHEN 3 THEN 'LINE' 
76499                 WHEN 4 THEN 'LINE' 
76500                 WHEN 5 THEN 'LINE' 
76501                 WHEN 6 THEN 'LINE' 
76502                 WHEN 7 THEN 'LINE' 
76503                 WHEN 8 THEN 'LINE' 
76504                 WHEN 9 THEN 'LINE' 
76505                 WHEN 10 THEN 'LINE' 
76506                 WHEN 11 THEN 'LINE' 
76507                 WHEN 12 THEN 'LINE' 
76508                 WHEN 13 THEN 'LINE' 
76509                 WHEN 14 THEN 'LINE' 
76510                 WHEN 15 THEN 'LINE' 
76511                 WHEN 16 THEN 'LINE' 
76512                 WHEN 17 THEN 'LINE' 
76513                 WHEN 18 THEN 'LINE' 
76514                 
76515                 ELSE null
76516               END                           object_type_code
76517             , CASE r
76518                 WHEN 1 THEN '275' 
76519                 WHEN 2 THEN '275' 
76520                 WHEN 3 THEN '275' 
76521                 WHEN 4 THEN '275' 
76522                 WHEN 5 THEN '275' 
76523                 WHEN 6 THEN '275' 
76524                 WHEN 7 THEN '275' 
76525                 WHEN 8 THEN '275' 
76526                 WHEN 9 THEN '275' 
76527                 WHEN 10 THEN '275' 
76528                 WHEN 11 THEN '275' 
76529                 WHEN 12 THEN '275' 
76530                 WHEN 13 THEN '275' 
76531                 WHEN 14 THEN '275' 
76532                 WHEN 15 THEN '275' 
76533                 WHEN 16 THEN '275' 
76537                 ELSE null
76534                 WHEN 17 THEN '275' 
76535                 WHEN 18 THEN '275' 
76536                 
76538               END                           source_application_id
76539             , 'S'             source_type_code
76540             , CASE r
76541                 WHEN 1 THEN 'COST_CCID' 
76542                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
76543                 WHEN 3 THEN 'ADJ_COST_CCID' 
76544                 WHEN 4 THEN 'COST_CLEARING_CCID' 
76545                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
76546                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
76547                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
76548                 WHEN 8 THEN 'ENTERED_RAW_COST' 
76549                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
76550                 WHEN 10 THEN 'ACCT_RAW_COST' 
76551                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
76552                 WHEN 12 THEN 'EXCHANGE_RATE' 
76553                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
76554                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
76555                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
76556                 WHEN 16 THEN 'LINE_NUMBER' 
76557                 WHEN 17 THEN 'LINE_TYPE' 
76558                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
76559                 
76560                 ELSE null
76561               END                           source_code
76562             , CASE r
76563                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
76564                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
76565                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
76566                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
76567                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
76568                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
76569                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
76570                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
76571                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
76572                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
76573                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
76574                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
76575                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
76576                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
76577                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
76578                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
76579                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
76580                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
76581                 
76582                 ELSE null
76583               END                           source_value
76584             , CASE r
76585                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
76586                           103371
76587                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
76588                          ,'ALLOW_OVERRIDE_CCID_FLAG'
76589                          ,'S'
76590                          ,275)
76591                 WHEN 17 THEN fvl34.meaning
76592                 
76593                 ELSE null
76594               END               source_meaning
76595          FROM  xla_events_gt     xet  
76596         , PA_XLA_CDL_LINES_V  l1
76597   , fnd_lookup_values    fvl34
76598             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
76599         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
76600           AND xet.event_class_code = C_EVENT_CLASS_CODE
76601             AND l1.event_id          = xet.event_id
76602    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
76603   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
76604   AND fvl34.view_application_id(+) = 275
76605   AND fvl34.language(+)            = USERENV('LANG')
76606   
76607 )
76608 ;
76609 --
76610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76611 
76612       trace
76613          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
76614          ,p_level    => C_LEVEL_STATEMENT
76615          ,p_module   => l_log_module);
76616 
76617 END IF;
76618 
76619 
76620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76621       trace
76622          (p_msg      => 'END of insert_sources_125'
76623          ,p_level    => C_LEVEL_PROCEDURE
76624          ,p_module   => l_log_module);
76625 END IF;
76626 EXCEPTION
76627   WHEN xla_exceptions_pkg.application_exception THEN
76628       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
76629             trace
76630                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
76631                ,p_level    => C_LEVEL_EXCEPTION
76632                ,p_module   => l_log_module);
76633       END IF;
76634       RAISE;
76635   WHEN OTHERS THEN
76636       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
76637             trace
76638                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
76639                ,p_level    => C_LEVEL_EXCEPTION
76640                ,p_module   => l_log_module);
76641        END IF;
76642        xla_exceptions_pkg.raise_message
76643            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_125');
76644 END insert_sources_125;
76645 --
76646 
76647 ---------------------------------------
76648 --
76649 -- PRIVATE FUNCTION
76650 --         EventClass_125
76651 --
76652 ----------------------------------------
76653 --
76654 FUNCTION EventClass_125
76655        (p_application_id         IN NUMBER
76656        ,p_base_ledger_id         IN NUMBER
76657        ,p_target_ledger_id       IN NUMBER
76658        ,p_language               IN VARCHAR2
76659        ,p_currency_code          IN VARCHAR2
76660        ,p_sla_ledger_id          IN NUMBER
76661        ,p_pad_start_date         IN DATE
76662        ,p_pad_end_date           IN DATE
76663        ,p_primary_ledger_id      IN NUMBER)
76664 RETURN BOOLEAN IS
76665 --
76669 l_calculate_acctd_flag   VARCHAR2(1) :='N';
76666 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ADJ_ALL';
76667 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST_ADJ';
76668 
76670 l_calculate_g_l_flag     VARCHAR2(1) :='N';
76671 --
76672 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76673 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76674 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76675 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76676 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76677 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76678 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76679 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76680 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76681 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76682 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76683 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76684 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76685 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76686 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76687 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76688 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76689 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76690 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76691 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76692 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76693 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76694 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
76695 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76696 
76697 l_event_id                             NUMBER;
76698 l_previous_event_id                    NUMBER;
76699 l_first_event_id                       NUMBER;
76700 l_last_event_id                        NUMBER;
76701 
76702 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
76703 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
76704 --
76705 --
76706 l_result                    BOOLEAN := TRUE;
76707 l_rows                      NUMBER  := 1000;
76708 l_event_type_name           VARCHAR2(80) := 'All';
76709 l_event_class_name          VARCHAR2(80) := 'Supplier Cost Adjustment';
76710 l_description               VARCHAR2(4000);
76711 l_transaction_reversal      NUMBER;
76712 l_ae_header_id              NUMBER;
76713 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
76714 l_log_module                VARCHAR2(240);
76715 --
76716 l_acct_reversal_source      VARCHAR2(30);
76717 l_trx_reversal_source       VARCHAR2(30);
76718 
76719 l_continue_with_lines       BOOLEAN := TRUE;
76720 --
76721 l_acc_rev_gl_date_source    DATE;                      -- 4262811
76722 --
76723 type t_array_event_id is table of number index by binary_integer;
76724 
76725 l_rec_array_event                    t_rec_array_event;
76726 l_null_rec_array_event               t_rec_array_event;
76727 l_array_ae_header_id                 xla_number_array_type;
76728 l_actual_flag                        VARCHAR2(1) := NULL;
76729 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
76730 l_balance_type_code                  VARCHAR2(1) :=NULL;
76731 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
76732 
76733 --
76734 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
76735 --
76736 
76737 TYPE t_array_source_21 IS TABLE OF PA_XLA_EXP_HEADER_V.EXCHANGE_RATE_VARIANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
76738 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
76739 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
76740 
76741 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
76742 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
76743 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
76744 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
76745 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
76746 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
76747 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
76748 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
76749 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
76750 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
76751 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
76752 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
76753 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
76754 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
76755 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
76756 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
76757 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
76761 l_array_source_32              t_array_source_32;
76758 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
76759 
76760 l_array_source_21              t_array_source_21;
76762 l_array_source_88              t_array_source_88;
76763 
76764 l_array_source_3      t_array_source_3;
76765 l_array_source_4      t_array_source_4;
76766 l_array_source_5      t_array_source_5;
76767 l_array_source_6      t_array_source_6;
76768 l_array_source_7      t_array_source_7;
76769 l_array_source_22      t_array_source_22;
76770 l_array_source_23      t_array_source_23;
76771 l_array_source_24      t_array_source_24;
76772 l_array_source_25      t_array_source_25;
76773 l_array_source_26      t_array_source_26;
76774 l_array_source_27      t_array_source_27;
76775 l_array_source_28      t_array_source_28;
76776 l_array_source_29      t_array_source_29;
76777 l_array_source_30      t_array_source_30;
76778 l_array_source_31      t_array_source_31;
76779 l_array_source_33      t_array_source_33;
76780 l_array_source_34      t_array_source_34;
76781 l_array_source_34_meaning      t_array_lookup_meaning;
76782 l_array_source_35      t_array_source_35;
76783 
76784 --
76785 CURSOR header_cur
76786 IS
76787 SELECT /*+ leading(xet) cardinality(xet,1) */
76788 -- Event Class Code: SUPPLIER_COST_ADJ
76789     xet.entity_id
76790    ,xet.legal_entity_id
76791    ,xet.entity_code
76792    ,xet.transaction_number
76793    ,xet.event_id
76794    ,xet.event_class_code
76795    ,xet.event_type_code
76796    ,xet.event_number
76797    ,xet.event_date
76798    ,xet.transaction_date
76799    ,xet.reference_num_1
76800    ,xet.reference_num_2
76801    ,xet.reference_num_3
76802    ,xet.reference_num_4
76803    ,xet.reference_char_1
76804    ,xet.reference_char_2
76805    ,xet.reference_char_3
76806    ,xet.reference_char_4
76807    ,xet.reference_date_1
76808    ,xet.reference_date_2
76809    ,xet.reference_date_3
76810    ,xet.reference_date_4
76811    ,xet.event_created_by
76812    ,xet.budgetary_control_flag 
76813   , h2.EXCHANGE_RATE_VARIANCE_FLAG    source_21
76814   , h2.EXPENDITURE_ITEM_ID    source_32
76815   , h2.GL_DATE    source_88
76816   FROM xla_events_gt     xet 
76817   , PA_XLA_EXP_HEADER_V  h2
76818  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
76819    and xet.event_class_code = C_EVENT_CLASS_CODE
76820    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
76821 
76822  ORDER BY event_id
76823 ;
76824 
76825 
76826 --
76827 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
76828 IS
76829 SELECT  /*+ leading(xet) cardinality(xet,1) */
76830 -- Event Class Code: SUPPLIER_COST_ADJ
76831     xet.entity_id
76832    ,xet.legal_entity_id
76833    ,xet.entity_code
76834    ,xet.transaction_number
76835    ,xet.event_id
76836    ,xet.event_class_code
76837    ,xet.event_type_code
76838    ,xet.event_number
76839    ,xet.event_date
76840    ,xet.transaction_date
76841    ,xet.reference_num_1
76842    ,xet.reference_num_2
76843    ,xet.reference_num_3
76844    ,xet.reference_num_4
76845    ,xet.reference_char_1
76846    ,xet.reference_char_2
76847    ,xet.reference_char_3
76848    ,xet.reference_char_4
76849    ,xet.reference_date_1
76850    ,xet.reference_date_2
76851    ,xet.reference_date_3
76852    ,xet.reference_date_4
76853    ,xet.event_created_by
76854    ,xet.budgetary_control_flag
76855  , l1.LINE_NUMBER  
76856   , l1.COST_CCID    source_3
76857   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
76858   , l1.ADJ_COST_CCID    source_5
76859   , l1.COST_CLEARING_CCID    source_6
76860   , l1.ADJ_COST_CLEARING_CCID    source_7
76861   , l1.REVERSING_LINE_FLAG    source_22
76862   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
76863   , l1.ENTERED_RAW_COST    source_24
76864   , l1.ENTERED_CURRENCY_CODE    source_25
76865   , l1.ACCT_RAW_COST    source_26
76866   , l1.EXCHANGE_RATE_DATE    source_27
76867   , l1.EXCHANGE_RATE    source_28
76868   , l1.EXCHANGE_RATE_TYPE    source_29
76869   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
76870   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
76871   , l1.LINE_NUMBER    source_33
76872   , l1.LINE_TYPE    source_34
76873   , fvl34.meaning   source_34_meaning
76874   , l1.LINE_NUM_REVERSED    source_35
76875   FROM xla_events_gt     xet 
76876   , PA_XLA_CDL_LINES_V  l1
76877   , fnd_lookup_values    fvl34
76878  WHERE xet.event_id between x_first_event_id and x_last_event_id
76879    and xet.event_date between p_pad_start_date and p_pad_end_date
76880    and xet.event_class_code = C_EVENT_CLASS_CODE
76881    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
76882    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
76883   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
76884   AND fvl34.view_application_id(+) = 275
76885   AND fvl34.language(+)            = USERENV('LANG')
76886   ;
76887 
76888 --
76889 BEGIN
76890 IF g_log_enabled THEN
76891    l_log_module := C_DEFAULT_MODULE||'.EventClass_125';
76892 END IF;
76893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76894    trace
76895       (p_msg      => 'BEGIN of EventClass_125'
76896       ,p_level    => C_LEVEL_PROCEDURE
76897       ,p_module   => l_log_module);
76898 END IF;
76899 
76900 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76901    trace
76902       (p_msg      => 'p_application_id = '||p_application_id||
76903                      ' - p_base_ledger_id = '||p_base_ledger_id||
76904                      ' - p_target_ledger_id  = '||p_target_ledger_id||
76905                      ' - p_language = '||p_language||
76906                      ' - p_currency_code = '||p_currency_code||
76907                      ' - p_sla_ledger_id = '||p_sla_ledger_id
76911 --
76908       ,p_level    => C_LEVEL_STATEMENT
76909       ,p_module   => l_log_module);
76910 END IF;
76912 -- initialze arrays
76913 --
76914 g_array_event.DELETE;
76915 l_rec_array_event := l_null_rec_array_event;
76916 --
76917 --------------------------------------
76918 -- 4262811 Initialze MPA Line Number
76919 --------------------------------------
76920 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
76921 
76922 --
76923 
76924 --
76925 OPEN header_cur;
76926 --
76927 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76928    trace
76929    (p_msg      => 'SQL - FETCH header_cur'
76930    ,p_level    => C_LEVEL_STATEMENT
76931    ,p_module   => l_log_module);
76932 END IF;
76933 --
76934 LOOP
76935 FETCH header_cur BULK COLLECT INTO
76936         l_array_entity_id
76937       , l_array_legal_entity_id
76938       , l_array_entity_code
76939       , l_array_transaction_num
76940       , l_array_event_id
76941       , l_array_class_code
76942       , l_array_event_type
76943       , l_array_event_number
76944       , l_array_event_date
76945       , l_array_transaction_date
76946       , l_array_reference_num_1
76947       , l_array_reference_num_2
76948       , l_array_reference_num_3
76949       , l_array_reference_num_4
76950       , l_array_reference_char_1
76951       , l_array_reference_char_2
76952       , l_array_reference_char_3
76953       , l_array_reference_char_4
76954       , l_array_reference_date_1
76955       , l_array_reference_date_2
76956       , l_array_reference_date_3
76957       , l_array_reference_date_4
76958       , l_array_event_created_by
76959       , l_array_budgetary_control_flag 
76960       , l_array_source_21
76961       , l_array_source_32
76962       , l_array_source_88
76963       LIMIT l_rows;
76964 --
76965 IF (C_LEVEL_EVENT >= g_log_level) THEN
76966    trace
76967    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
76968    ,p_level    => C_LEVEL_EVENT
76969    ,p_module   => l_log_module);
76970 END IF;
76971 --
76972 EXIT WHEN l_array_entity_id.COUNT = 0;
76973 
76974 -- initialize arrays
76975 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
76976 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
76977 
76978 --
76979 -- Bug 4458708
76980 --
76981 XLA_AE_LINES_PKG.g_LineNumber := 0;
76982 
76983 
76984 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
76985 g_last_hdr_idx := l_array_event_id.LAST;
76986 --
76987 -- loop for the headers. Each iteration is for each header extract row
76988 -- fetched in header cursor
76989 --
76990 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
76991 
76992 --
76993 -- set event info as cache for other routines to refer event attributes
76994 --
76995 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
76996    (p_application_id           => p_application_id
76997    ,p_primary_ledger_id        => p_primary_ledger_id
76998    ,p_base_ledger_id           => p_base_ledger_id
76999    ,p_target_ledger_id         => p_target_ledger_id
77000    ,p_entity_id                => l_array_entity_id(hdr_idx)
77001    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
77002    ,p_entity_code              => l_array_entity_code(hdr_idx)
77003    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
77004    ,p_event_id                 => l_array_event_id(hdr_idx)
77005    ,p_event_class_code         => l_array_class_code(hdr_idx)
77006    ,p_event_type_code          => l_array_event_type(hdr_idx)
77007    ,p_event_number             => l_array_event_number(hdr_idx)
77008    ,p_event_date               => l_array_event_date(hdr_idx)
77009    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
77010    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
77011    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
77012    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
77013    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
77014    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
77015    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
77016    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
77017    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
77018    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
77019    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
77020    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
77021    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
77022    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
77023    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
77024 
77025 --
77026 -- set the status of entry to C_VALID (0)
77027 --
77028 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
77029 
77030 --
77031 -- initialize a row for ae header
77032 --
77033 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
77034 
77035 l_event_id := l_array_event_id(hdr_idx);
77036 
77037 --
77038 -- storing the hdr_idx for event. May be used by line cursor.
77039 --
77040 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
77041 
77042 --
77043 -- store sources from header extract. This can be improved to
77044 -- store only those sources from header extract that may be used in lines
77045 --
77046 
77047 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
77048 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
77049 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
77050 
77051 --
77055 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77052 -- initilaize the status of ae headers for diffrent balance types
77053 -- the status is initialised to C_NOT_CREATED (2)
77054 --
77056 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77057 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77058 
77059 --
77060 -- call api to validate and store accounting attributes for header
77061 --
77062 
77063 ------------------------------------------------------------
77064 -- Accrual Reversal : to get date for Standard Source (NONE)
77065 ------------------------------------------------------------
77066 l_acc_rev_gl_date_source := NULL;
77067 
77068      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
77069       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
77070 
77071 
77072 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
77073 
77074 XLA_AE_HEADER_PKG.SetJeCategoryName;
77075 
77076 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
77077 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
77078 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
77079 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
77080 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
77081 
77082 
77083 -- No header level analytical criteria
77084 
77085 --
77086 --accounting attribute enhancement, bug 3612931
77087 --
77088 l_trx_reversal_source := SUBSTR(NULL, 1,30);
77089 
77090 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
77091    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
77092 
77093    xla_accounting_err_pkg.build_message
77094       (p_appli_s_name            => 'XLA'
77095       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
77096       ,p_token_1                 => 'ACCT_ATTR_NAME'
77097       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
77098       ,p_token_2                 => 'PRODUCT_NAME'
77099       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
77100       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
77101       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
77102       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
77103 
77104 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
77105    --
77106    -- following sets the accounting attributes needed to reverse
77107    -- accounting for a distributeion
77108    --
77109    xla_ae_lines_pkg.SetTrxReversalAttrs
77110       (p_event_id              => l_event_id
77111       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
77112       ,p_trx_reversal_source   => l_trx_reversal_source);
77113 
77114 END IF;
77115 
77116 
77117 ----------------------------------------------------------------
77118 -- 4262811 -  update the header statuses to invalid in need be
77119 ----------------------------------------------------------------
77120 --
77121 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
77122 
77123 
77124   -----------------------------------------------
77125   -- No accrual reversal for the event class/type
77126   -----------------------------------------------
77127 ----------------------------------------------------------------
77128 
77129 --
77130 -- this ends the header loop iteration for one bulk fetch
77131 --
77132 END LOOP;
77133 
77134 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
77135 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
77136 
77137 --
77138 -- insert dummy rows into lines gt table that were created due to
77139 -- transaction reversals
77140 --
77141 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
77142    l_result := XLA_AE_LINES_PKG.InsertLines;
77143 END IF;
77144 
77145 --
77146 -- reset the temp_line_num for each set of events fetched from header
77147 -- cursor rather than doing it for each new event in line cursor
77148 -- Bug 3939231
77149 --
77150 xla_ae_lines_pkg.g_temp_line_num := 0;
77151 
77152 
77153 
77154 --
77155 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
77156 --
77157 --
77158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77159 
77160       trace
77161          (p_msg      => 'SQL - FETCH line_cur'
77162          ,p_level    => C_LEVEL_STATEMENT
77163          ,p_module   => l_log_module);
77164 
77165 END IF;
77166 --
77167 --
77168 LOOP
77169   --
77170   FETCH line_cur BULK COLLECT INTO
77171         l_array_entity_id
77172       , l_array_legal_entity_id
77173       , l_array_entity_code
77174       , l_array_transaction_num
77175       , l_array_event_id
77176       , l_array_class_code
77177       , l_array_event_type
77178       , l_array_event_number
77179       , l_array_event_date
77180       , l_array_transaction_date
77181       , l_array_reference_num_1
77182       , l_array_reference_num_2
77183       , l_array_reference_num_3
77184       , l_array_reference_num_4
77185       , l_array_reference_char_1
77186       , l_array_reference_char_2
77187       , l_array_reference_char_3
77188       , l_array_reference_char_4
77189       , l_array_reference_date_1
77190       , l_array_reference_date_2
77191       , l_array_reference_date_3
77192       , l_array_reference_date_4
77196       , l_array_source_3
77193       , l_array_event_created_by
77194       , l_array_budgetary_control_flag
77195       , l_array_extract_line_num 
77197       , l_array_source_4
77198       , l_array_source_5
77199       , l_array_source_6
77200       , l_array_source_7
77201       , l_array_source_22
77202       , l_array_source_23
77203       , l_array_source_24
77204       , l_array_source_25
77205       , l_array_source_26
77206       , l_array_source_27
77207       , l_array_source_28
77208       , l_array_source_29
77209       , l_array_source_30
77210       , l_array_source_31
77211       , l_array_source_33
77212       , l_array_source_34
77213       , l_array_source_34_meaning
77214       , l_array_source_35
77215       LIMIT l_rows;
77216 
77217   --
77218   IF (C_LEVEL_EVENT >= g_log_level) THEN
77219             trace
77220                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
77221                ,p_level    => C_LEVEL_EVENT
77222                ,p_module   => l_log_module);
77223   END IF;
77224   --
77225   EXIT WHEN l_array_entity_id.count = 0;
77226 
77227   XLA_AE_LINES_PKG.g_rec_lines := null;
77228 
77229 --
77230 -- Bug 4458708
77231 --
77232 XLA_AE_LINES_PKG.g_LineNumber := 0;
77233 --
77234 --
77235 
77236 FOR Idx IN 1..l_array_event_id.count LOOP
77237    --
77238    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
77239    --
77240    l_event_id := l_array_event_id(idx);  -- 5648433
77241 
77242    --
77243    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
77244    --
77245 
77246    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
77247              (g_array_event(l_event_id).array_value_num('header_index'))
77248          ,'N'
77249          ) <> 'Y'
77250    THEN
77251       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77252          trace
77253             (p_msg      => 'Trancaction revesal option is not Y '
77254             ,p_level    => C_LEVEL_STATEMENT
77255             ,p_module   => l_log_module);
77256       END IF;
77257 
77258 --
77259 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
77260 --
77261 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
77262 --
77263 -- set event info as cache for other routines to refer event attributes
77264 --
77265 
77266 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
77267    l_previous_event_id := l_event_id;
77268 
77269    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
77270       (p_application_id           => p_application_id
77271       ,p_primary_ledger_id        => p_primary_ledger_id
77272       ,p_base_ledger_id           => p_base_ledger_id
77273       ,p_target_ledger_id         => p_target_ledger_id
77274       ,p_entity_id                => l_array_entity_id(Idx)
77275       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
77276       ,p_entity_code              => l_array_entity_code(Idx)
77277       ,p_transaction_num          => l_array_transaction_num(Idx)
77278       ,p_event_id                 => l_array_event_id(Idx)
77279       ,p_event_class_code         => l_array_class_code(Idx)
77280       ,p_event_type_code          => l_array_event_type(Idx)
77281       ,p_event_number             => l_array_event_number(Idx)
77282       ,p_event_date               => l_array_event_date(Idx)
77283       ,p_transaction_date         => l_array_transaction_date(Idx)
77284       ,p_reference_num_1          => l_array_reference_num_1(Idx)
77285       ,p_reference_num_2          => l_array_reference_num_2(Idx)
77286       ,p_reference_num_3          => l_array_reference_num_3(Idx)
77287       ,p_reference_num_4          => l_array_reference_num_4(Idx)
77288       ,p_reference_char_1         => l_array_reference_char_1(Idx)
77289       ,p_reference_char_2         => l_array_reference_char_2(Idx)
77290       ,p_reference_char_3         => l_array_reference_char_3(Idx)
77291       ,p_reference_char_4         => l_array_reference_char_4(Idx)
77292       ,p_reference_date_1         => l_array_reference_date_1(Idx)
77293       ,p_reference_date_2         => l_array_reference_date_2(Idx)
77294       ,p_reference_date_3         => l_array_reference_date_3(Idx)
77295       ,p_reference_date_4         => l_array_reference_date_4(Idx)
77296       ,p_event_created_by         => l_array_event_created_by(Idx)
77297       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
77298        --
77299 END IF;
77300 
77301 
77302 
77303 --
77304 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
77305 
77306 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
77307 
77308 IF l_continue_with_lines THEN
77309    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
77310       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
77311 
77312       xla_accounting_err_pkg.build_message
77313          (p_appli_s_name            => 'XLA'
77314          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
77315          ,p_token_1                 => 'LINE_NUMBER'
77316          ,p_value_1                 => l_array_extract_line_num(Idx)
77317          ,p_token_2                 => 'PRODUCT_NAME'
77318          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
77319          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
77320          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
77321          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
77322 
77323    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
77324       --
77325       -- following sets the accounting attributes needed to reverse
77329       --
77326       -- accounting for a distributeion
77327       --
77328 
77330       -- 5217187
77331       --
77332       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
77333       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
77334                                        g_array_event(l_event_id).array_value_num('header_index'));
77335       --
77336       --
77337 
77338       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
77339       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
77340       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
77341       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
77342       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
77343       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
77344       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
77345       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
77346       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
77347       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
77348       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
77349       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
77350       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
77351       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
77352       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
77353       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
77354       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
77355       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
77356       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
77357       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
77358       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
77359       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
77360       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
77361       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
77362       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
77363       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
77364       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
77365       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
77366       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
77367       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
77368       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
77369       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
77370       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
77371       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
77372       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
77373       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
77374       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
77375       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
77376       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
77377       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
77378       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
77379       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
77380       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
77381       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
77382       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
77383       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
77384       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
77385       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
77386 
77387 
77388       xla_ae_lines_pkg.SetAcctReversalAttrs
77389          (p_event_id             => l_event_id
77390          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
77391          ,p_calculate_acctd_flag => l_calculate_acctd_flag
77392          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
77393    END IF;
77394 
77395    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
77396        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
77397 
77398 --
77399 AcctLineType_21 (
77400  p_application_id  => p_application_id
77401  ,p_event_id     => l_event_id
77402  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77403  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77404  ,p_actual_flag => l_actual_flag
77405  ,p_balance_type_code => l_balance_type_code
77406  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77407  
77408  , p_source_3 => l_array_source_3(Idx)
77409  , p_source_4 => l_array_source_4(Idx)
77410  , p_source_5 => l_array_source_5(Idx)
77411  , p_source_6 => l_array_source_6(Idx)
77412  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77413  , p_source_22 => l_array_source_22(Idx)
77414  , p_source_23 => l_array_source_23(Idx)
77415  , p_source_24 => l_array_source_24(Idx)
77416  , p_source_25 => l_array_source_25(Idx)
77417  , p_source_26 => l_array_source_26(Idx)
77418  , p_source_27 => l_array_source_27(Idx)
77419  , p_source_28 => l_array_source_28(Idx)
77420  , p_source_29 => l_array_source_29(Idx)
77421  , p_source_30 => l_array_source_30(Idx)
77422  , p_source_31 => l_array_source_31(Idx)
77423  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77424  , p_source_33 => l_array_source_33(Idx)
77428  );
77425  , p_source_34 => l_array_source_34(Idx)
77426  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77427  , p_source_35 => l_array_source_35(Idx)
77429 If(l_balance_type_code = 'A') THEN
77430   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77431 END IF;
77432 
77433 --
77434 
77435 
77436 --
77437 AcctLineType_22 (
77438  p_application_id  => p_application_id
77439  ,p_event_id     => l_event_id
77440  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77441  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77442  ,p_actual_flag => l_actual_flag
77443  ,p_balance_type_code => l_balance_type_code
77444  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77445  
77446  , p_source_3 => l_array_source_3(Idx)
77447  , p_source_4 => l_array_source_4(Idx)
77448  , p_source_6 => l_array_source_6(Idx)
77449  , p_source_7 => l_array_source_7(Idx)
77450  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77451  , p_source_22 => l_array_source_22(Idx)
77452  , p_source_23 => l_array_source_23(Idx)
77453  , p_source_24 => l_array_source_24(Idx)
77454  , p_source_25 => l_array_source_25(Idx)
77455  , p_source_26 => l_array_source_26(Idx)
77456  , p_source_27 => l_array_source_27(Idx)
77457  , p_source_28 => l_array_source_28(Idx)
77458  , p_source_29 => l_array_source_29(Idx)
77459  , p_source_30 => l_array_source_30(Idx)
77460  , p_source_31 => l_array_source_31(Idx)
77461  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77462  , p_source_33 => l_array_source_33(Idx)
77463  , p_source_34 => l_array_source_34(Idx)
77464  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77465  , p_source_35 => l_array_source_35(Idx)
77466  );
77467 If(l_balance_type_code = 'A') THEN
77468   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77469 END IF;
77470 
77471 --
77472 
77473 
77474 --
77475 AcctLineType_47 (
77476  p_application_id  => p_application_id
77477  ,p_event_id     => l_event_id
77478  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77479  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77480  ,p_actual_flag => l_actual_flag
77481  ,p_balance_type_code => l_balance_type_code
77482  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77483  
77484  , p_source_3 => l_array_source_3(Idx)
77485  , p_source_4 => l_array_source_4(Idx)
77486  , p_source_5 => l_array_source_5(Idx)
77487  , p_source_6 => l_array_source_6(Idx)
77488  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77489  , p_source_22 => l_array_source_22(Idx)
77490  , p_source_23 => l_array_source_23(Idx)
77491  , p_source_24 => l_array_source_24(Idx)
77492  , p_source_25 => l_array_source_25(Idx)
77493  , p_source_26 => l_array_source_26(Idx)
77494  , p_source_27 => l_array_source_27(Idx)
77495  , p_source_28 => l_array_source_28(Idx)
77496  , p_source_29 => l_array_source_29(Idx)
77497  , p_source_30 => l_array_source_30(Idx)
77498  , p_source_31 => l_array_source_31(Idx)
77499  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77500  , p_source_33 => l_array_source_33(Idx)
77501  , p_source_34 => l_array_source_34(Idx)
77502  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77503  , p_source_35 => l_array_source_35(Idx)
77504  );
77505 If(l_balance_type_code = 'A') THEN
77506   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77507 END IF;
77508 
77509 --
77510 
77511 
77512 --
77513 AcctLineType_59 (
77514  p_application_id  => p_application_id
77515  ,p_event_id     => l_event_id
77516  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77517  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77518  ,p_actual_flag => l_actual_flag
77519  ,p_balance_type_code => l_balance_type_code
77520  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77521  
77522  , p_source_3 => l_array_source_3(Idx)
77523  , p_source_4 => l_array_source_4(Idx)
77524  , p_source_6 => l_array_source_6(Idx)
77525  , p_source_7 => l_array_source_7(Idx)
77526  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77527  , p_source_22 => l_array_source_22(Idx)
77528  , p_source_23 => l_array_source_23(Idx)
77529  , p_source_24 => l_array_source_24(Idx)
77530  , p_source_25 => l_array_source_25(Idx)
77531  , p_source_26 => l_array_source_26(Idx)
77532  , p_source_27 => l_array_source_27(Idx)
77533  , p_source_28 => l_array_source_28(Idx)
77534  , p_source_29 => l_array_source_29(Idx)
77535  , p_source_30 => l_array_source_30(Idx)
77536  , p_source_31 => l_array_source_31(Idx)
77537  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77538  , p_source_33 => l_array_source_33(Idx)
77539  , p_source_34 => l_array_source_34(Idx)
77540  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77541  , p_source_35 => l_array_source_35(Idx)
77542  );
77543 If(l_balance_type_code = 'A') THEN
77544   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77545 END IF;
77546 
77547 --
77548 
77549       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
77550       -- or secondary ledger that has different currency with primary
77551       -- or alc that is calculated by sla
77552       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
77553             (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'))
77554 
77555 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
77556 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
77557           AND (l_actual_flag = 'A')) THEN
77558         XLA_AE_LINES_PKG.CreateGainOrLossLines(
77559           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
77560          ,p_application_id   => p_application_id
77561          ,p_amb_context_code => 'DEFAULT'
77565          
77562          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
77563          ,p_event_class_code => C_EVENT_CLASS_CODE
77564          ,p_event_type_code  => C_EVENT_TYPE_CODE
77566          ,p_gain_ccid        => -1
77567          ,p_loss_ccid        => -1
77568 
77569          ,p_actual_flag      => l_actual_flag
77570          ,p_enc_flag         => null
77571          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
77572          ,p_enc_g_l_ref      => null
77573          );
77574       END IF;
77575    END IF;
77576 END IF;
77577 
77578    ELSE
77579       --
77580       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
77581       --
77582       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77583          trace
77584             (p_msg      => 'Trancaction revesal option is Y'
77585             ,p_level    => C_LEVEL_STATEMENT
77586             ,p_module   => l_log_module);
77587       END IF;
77588    END IF;
77589 
77590 END LOOP;
77591 l_result := XLA_AE_LINES_PKG.InsertLines ;
77592 end loop;
77593 close line_cur;
77594 
77595 
77596 --
77597 -- insert headers into xla_ae_headers_gt table
77598 --
77599 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
77600 
77601 -- insert into errors table here.
77602 
77603 END LOOP;
77604 
77605 --
77606 -- 4865292
77607 --
77608 -- Compare g_hdr_extract_count with event count in
77609 -- CreateHeadersAndLines.
77610 --
77611 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
77612 
77613 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77614    trace (p_msg     => '# rows extracted from header extract objects '
77615                     || ' (running total): '
77616                     || g_hdr_extract_count
77617          ,p_level   => C_LEVEL_STATEMENT
77618          ,p_module  => l_log_module);
77619 END IF;
77620 
77621 CLOSE header_cur;
77622 --
77623 
77624 --
77625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77626    trace
77627       (p_msg      => 'END of EventClass_125'
77628       ,p_level    => C_LEVEL_PROCEDURE
77629       ,p_module   => l_log_module);
77630 END IF;
77631 --
77632 RETURN l_result;
77633 EXCEPTION
77634 WHEN xla_exceptions_pkg.application_exception THEN
77635    
77636 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
77637 
77638    
77639 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
77640 
77641    RAISE;
77642 WHEN OTHERS THEN
77643    xla_exceptions_pkg.raise_message
77644       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_125');
77645 END EventClass_125;
77646 --
77647 
77648 ---------------------------------------
77649 --
77650 -- PRIVATE PROCEDURE
77651 --         insert_sources_126
77652 --
77653 ----------------------------------------
77654 --
77655 PROCEDURE insert_sources_126(
77656                                 p_target_ledger_id       IN NUMBER
77657                               , p_language               IN VARCHAR2
77658                               , p_sla_ledger_id          IN NUMBER
77659                               , p_pad_start_date         IN DATE
77660                               , p_pad_end_date           IN DATE
77661                          )
77662 IS
77663 
77664 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ALL';
77665 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST';
77666 p_apps_owner                   VARCHAR2(30);
77667 l_log_module                   VARCHAR2(240);
77668 BEGIN
77669 IF g_log_enabled THEN
77670       l_log_module := C_DEFAULT_MODULE||'.insert_sources_126';
77671 END IF;
77672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77673 
77674       trace
77675          (p_msg      => 'BEGIN of insert_sources_126'
77676          ,p_level    => C_LEVEL_PROCEDURE
77677          ,p_module   => l_log_module);
77678 
77679 END IF;
77680 
77681 -- select APPS owner
77682 SELECT oracle_username
77683   INTO p_apps_owner
77684   FROM fnd_oracle_userid
77685  WHERE read_only_flag = 'U'
77686 ;
77687 
77688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77689       trace
77690          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
77691                         ' - p_language = '||p_language||
77692                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
77693                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
77694                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
77695                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
77696          ,p_level    => C_LEVEL_STATEMENT
77697          ,p_module   => l_log_module);
77698 END IF;
77699 
77700 
77701 --
77702 INSERT INTO xla_diag_sources --hdr2
77703 (
77704         event_id
77705       , ledger_id
77706       , sla_ledger_id
77707       , description_language
77708       , object_name
77709       , object_type_code
77710       , line_number
77711       , source_application_id
77712       , source_type_code
77713       , source_code
77714       , source_value
77715       , source_meaning
77716       , created_by
77717       , creation_date
77718       , last_update_date
77719       , last_updated_by
77720       , last_update_login
77721       , program_update_date
77722       , program_application_id
77723       , program_id
77724       , request_id
77725 )
77726 SELECT
77727         event_id
77728       , p_target_ledger_id
77729       , p_sla_ledger_id
77730       , p_language
77731       , object_name
77732       , object_type_code
77733       , line_number
77734       , source_application_id
77738       , SUBSTR(source_meaning ,1,200)
77735       , source_type_code
77736       , source_code
77737       , SUBSTR(source_value ,1,1996)
77739       , xla_environment_pkg.g_Usr_Id
77740       , TRUNC(SYSDATE)
77741       , TRUNC(SYSDATE)
77742       , xla_environment_pkg.g_Usr_Id
77743       , xla_environment_pkg.g_Login_Id
77744       , TRUNC(SYSDATE)
77745       , xla_environment_pkg.g_Prog_Appl_Id
77746       , xla_environment_pkg.g_Prog_Id
77747       , xla_environment_pkg.g_Req_Id
77748   FROM (
77749        SELECT xet.event_id                  event_id
77750             , 0                          line_number
77751             , CASE r
77752                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
77753                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
77754                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
77755                 
77756                ELSE null
77757               END                           object_name
77758             , CASE r
77759                 WHEN 1 THEN 'HEADER' 
77760                 WHEN 2 THEN 'HEADER' 
77761                 WHEN 3 THEN 'HEADER' 
77762                 
77763                 ELSE null
77764               END                           object_type_code
77765             , CASE r
77766                 WHEN 1 THEN '275' 
77767                 WHEN 2 THEN '275' 
77768                 WHEN 3 THEN '275' 
77769                 
77770                 ELSE null
77771               END                           source_application_id
77772             , 'S'             source_type_code
77773             , CASE r
77774                 WHEN 1 THEN 'EXCHANGE_RATE_VARIANCE_FLAG' 
77775                 WHEN 2 THEN 'EXPENDITURE_ITEM_ID' 
77776                 WHEN 3 THEN 'GL_DATE' 
77777                 
77778                 ELSE null
77779               END                           source_code
77780             , CASE r
77781                 WHEN 1 THEN TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
77782                 WHEN 2 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
77783                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
77784                 
77785                 ELSE null
77786               END                           source_value
77787             , CASE r
77788                 WHEN 1 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
77789                           103371
77790                          ,TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
77791                          ,'EXCHANGE_RATE_VARIANCE_FLAG'
77792                          ,'S'
77793                          ,275)
77794                 
77795                 ELSE null
77796               END               source_meaning
77797          FROM xla_events_gt     xet  
77798       , PA_XLA_EXP_HEADER_V  h2
77799              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
77800          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77801            AND xet.event_class_code = C_EVENT_CLASS_CODE
77802               AND h2.event_id = xet.event_id
77803 
77804 )
77805 ;
77806 --
77807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77808 
77809       trace
77810          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
77811          ,p_level    => C_LEVEL_STATEMENT
77812          ,p_module   => l_log_module);
77813 
77814 END IF;
77815 --
77816 
77817 
77818 
77819 --
77820 INSERT INTO xla_diag_sources  --line2
77821 (
77822         event_id
77823       , ledger_id
77824       , sla_ledger_id
77825       , description_language
77826       , object_name
77827       , object_type_code
77828       , line_number
77829       , source_application_id
77830       , source_type_code
77831       , source_code
77832       , source_value
77833       , source_meaning
77834       , created_by
77835       , creation_date
77836       , last_update_date
77837       , last_updated_by
77838       , last_update_login
77839       , program_update_date
77840       , program_application_id
77841       , program_id
77842       , request_id
77843 )
77844 SELECT  event_id
77845       , p_target_ledger_id
77846       , p_sla_ledger_id
77847       , p_language
77848       , object_name
77849       , object_type_code
77850       , line_number
77851       , source_application_id
77852       , source_type_code
77853       , source_code
77854       , SUBSTR(source_value,1,1996)
77855       , SUBSTR(source_meaning ,1,200)
77856       , xla_environment_pkg.g_Usr_Id
77857       , TRUNC(SYSDATE)
77858       , TRUNC(SYSDATE)
77859       , xla_environment_pkg.g_Usr_Id
77860       , xla_environment_pkg.g_Login_Id
77861       , TRUNC(SYSDATE)
77862       , xla_environment_pkg.g_Prog_Appl_Id
77863       , xla_environment_pkg.g_Prog_Id
77864       , xla_environment_pkg.g_Req_Id
77865   FROM (
77866        SELECT xet.event_id                  event_id
77867             , l1.line_number                 line_number
77868             , CASE r
77869                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
77870                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
77871                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
77872                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
77873                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
77874                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
77875                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
77876                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
77877                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
77878                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
77879                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
77880                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
77881                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
77882                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
77883                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
77887                 
77884                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
77885                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
77886                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
77888                ELSE null
77889               END                           object_name
77890             , CASE r
77891                 WHEN 1 THEN 'LINE' 
77892                 WHEN 2 THEN 'LINE' 
77893                 WHEN 3 THEN 'LINE' 
77894                 WHEN 4 THEN 'LINE' 
77895                 WHEN 5 THEN 'LINE' 
77896                 WHEN 6 THEN 'LINE' 
77897                 WHEN 7 THEN 'LINE' 
77898                 WHEN 8 THEN 'LINE' 
77899                 WHEN 9 THEN 'LINE' 
77900                 WHEN 10 THEN 'LINE' 
77901                 WHEN 11 THEN 'LINE' 
77902                 WHEN 12 THEN 'LINE' 
77903                 WHEN 13 THEN 'LINE' 
77904                 WHEN 14 THEN 'LINE' 
77905                 WHEN 15 THEN 'LINE' 
77906                 WHEN 16 THEN 'LINE' 
77907                 WHEN 17 THEN 'LINE' 
77908                 WHEN 18 THEN 'LINE' 
77909                 
77910                 ELSE null
77911               END                           object_type_code
77912             , CASE r
77913                 WHEN 1 THEN '275' 
77914                 WHEN 2 THEN '275' 
77915                 WHEN 3 THEN '275' 
77916                 WHEN 4 THEN '275' 
77917                 WHEN 5 THEN '275' 
77918                 WHEN 6 THEN '275' 
77919                 WHEN 7 THEN '275' 
77920                 WHEN 8 THEN '275' 
77921                 WHEN 9 THEN '275' 
77922                 WHEN 10 THEN '275' 
77923                 WHEN 11 THEN '275' 
77924                 WHEN 12 THEN '275' 
77925                 WHEN 13 THEN '275' 
77926                 WHEN 14 THEN '275' 
77927                 WHEN 15 THEN '275' 
77928                 WHEN 16 THEN '275' 
77929                 WHEN 17 THEN '275' 
77930                 WHEN 18 THEN '275' 
77931                 
77932                 ELSE null
77933               END                           source_application_id
77934             , 'S'             source_type_code
77935             , CASE r
77936                 WHEN 1 THEN 'COST_CCID' 
77937                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
77938                 WHEN 3 THEN 'ADJ_COST_CCID' 
77939                 WHEN 4 THEN 'COST_CLEARING_CCID' 
77940                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
77941                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
77942                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
77943                 WHEN 8 THEN 'ENTERED_RAW_COST' 
77944                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
77945                 WHEN 10 THEN 'ACCT_RAW_COST' 
77946                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
77947                 WHEN 12 THEN 'EXCHANGE_RATE' 
77948                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
77949                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
77950                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
77951                 WHEN 16 THEN 'LINE_NUMBER' 
77952                 WHEN 17 THEN 'LINE_TYPE' 
77953                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
77954                 
77955                 ELSE null
77956               END                           source_code
77957             , CASE r
77958                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
77959                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
77960                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
77961                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
77962                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
77963                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
77964                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
77965                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
77966                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
77967                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
77968                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
77969                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
77970                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
77971                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
77972                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
77973                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
77974                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
77975                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
77976                 
77977                 ELSE null
77978               END                           source_value
77979             , CASE r
77980                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
77981                           103371
77982                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
77983                          ,'ALLOW_OVERRIDE_CCID_FLAG'
77984                          ,'S'
77985                          ,275)
77986                 WHEN 17 THEN fvl34.meaning
77987                 
77988                 ELSE null
77989               END               source_meaning
77990          FROM  xla_events_gt     xet  
77991         , PA_XLA_CDL_LINES_V  l1
77992   , fnd_lookup_values    fvl34
77993             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
77994         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77995           AND xet.event_class_code = C_EVENT_CLASS_CODE
77996             AND l1.event_id          = xet.event_id
77997    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
77998   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
77999   AND fvl34.view_application_id(+) = 275
78000   AND fvl34.language(+)            = USERENV('LANG')
78001   
78002 )
78003 ;
78004 --
78005 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78006 
78007       trace
78008          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
78009          ,p_level    => C_LEVEL_STATEMENT
78013 
78010          ,p_module   => l_log_module);
78011 
78012 END IF;
78014 
78015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78016       trace
78017          (p_msg      => 'END of insert_sources_126'
78018          ,p_level    => C_LEVEL_PROCEDURE
78019          ,p_module   => l_log_module);
78020 END IF;
78021 EXCEPTION
78022   WHEN xla_exceptions_pkg.application_exception THEN
78023       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
78024             trace
78025                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
78026                ,p_level    => C_LEVEL_EXCEPTION
78027                ,p_module   => l_log_module);
78028       END IF;
78029       RAISE;
78030   WHEN OTHERS THEN
78031       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
78032             trace
78033                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
78034                ,p_level    => C_LEVEL_EXCEPTION
78035                ,p_module   => l_log_module);
78036        END IF;
78037        xla_exceptions_pkg.raise_message
78038            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_126');
78039 END insert_sources_126;
78040 --
78041 
78042 ---------------------------------------
78043 --
78044 -- PRIVATE FUNCTION
78045 --         EventClass_126
78046 --
78047 ----------------------------------------
78048 --
78049 FUNCTION EventClass_126
78050        (p_application_id         IN NUMBER
78051        ,p_base_ledger_id         IN NUMBER
78052        ,p_target_ledger_id       IN NUMBER
78053        ,p_language               IN VARCHAR2
78054        ,p_currency_code          IN VARCHAR2
78055        ,p_sla_ledger_id          IN NUMBER
78056        ,p_pad_start_date         IN DATE
78057        ,p_pad_end_date           IN DATE
78058        ,p_primary_ledger_id      IN NUMBER)
78059 RETURN BOOLEAN IS
78060 --
78061 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ALL';
78062 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST';
78063 
78064 l_calculate_acctd_flag   VARCHAR2(1) :='N';
78065 l_calculate_g_l_flag     VARCHAR2(1) :='N';
78066 --
78067 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78068 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78069 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78070 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78071 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78072 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78073 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78074 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78075 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78076 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78077 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78078 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78079 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78080 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78081 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78082 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78083 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78084 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78085 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78086 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78087 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78088 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78089 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
78090 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78091 
78092 l_event_id                             NUMBER;
78093 l_previous_event_id                    NUMBER;
78094 l_first_event_id                       NUMBER;
78095 l_last_event_id                        NUMBER;
78096 
78097 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
78098 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
78099 --
78100 --
78101 l_result                    BOOLEAN := TRUE;
78102 l_rows                      NUMBER  := 1000;
78103 l_event_type_name           VARCHAR2(80) := 'All';
78104 l_event_class_name          VARCHAR2(80) := 'Supplier Cost';
78105 l_description               VARCHAR2(4000);
78106 l_transaction_reversal      NUMBER;
78107 l_ae_header_id              NUMBER;
78108 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
78109 l_log_module                VARCHAR2(240);
78110 --
78111 l_acct_reversal_source      VARCHAR2(30);
78112 l_trx_reversal_source       VARCHAR2(30);
78113 
78114 l_continue_with_lines       BOOLEAN := TRUE;
78115 --
78116 l_acc_rev_gl_date_source    DATE;                      -- 4262811
78117 --
78118 type t_array_event_id is table of number index by binary_integer;
78119 
78120 l_rec_array_event                    t_rec_array_event;
78121 l_null_rec_array_event               t_rec_array_event;
78122 l_array_ae_header_id                 xla_number_array_type;
78123 l_actual_flag                        VARCHAR2(1) := NULL;
78124 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
78125 l_balance_type_code                  VARCHAR2(1) :=NULL;
78126 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
78127 
78128 --
78129 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
78130 --
78131 
78132 TYPE t_array_source_21 IS TABLE OF PA_XLA_EXP_HEADER_V.EXCHANGE_RATE_VARIANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
78136 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
78133 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
78134 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
78135 
78137 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
78138 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
78139 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
78140 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
78141 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
78142 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78143 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
78144 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
78145 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
78146 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
78147 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
78148 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
78149 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78150 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
78151 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
78152 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
78153 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
78154 
78155 l_array_source_21              t_array_source_21;
78156 l_array_source_32              t_array_source_32;
78157 l_array_source_88              t_array_source_88;
78158 
78159 l_array_source_3      t_array_source_3;
78160 l_array_source_4      t_array_source_4;
78161 l_array_source_5      t_array_source_5;
78162 l_array_source_6      t_array_source_6;
78163 l_array_source_7      t_array_source_7;
78164 l_array_source_22      t_array_source_22;
78165 l_array_source_23      t_array_source_23;
78166 l_array_source_24      t_array_source_24;
78167 l_array_source_25      t_array_source_25;
78168 l_array_source_26      t_array_source_26;
78169 l_array_source_27      t_array_source_27;
78170 l_array_source_28      t_array_source_28;
78171 l_array_source_29      t_array_source_29;
78172 l_array_source_30      t_array_source_30;
78173 l_array_source_31      t_array_source_31;
78174 l_array_source_33      t_array_source_33;
78175 l_array_source_34      t_array_source_34;
78176 l_array_source_34_meaning      t_array_lookup_meaning;
78177 l_array_source_35      t_array_source_35;
78178 
78179 --
78180 CURSOR header_cur
78181 IS
78182 SELECT /*+ leading(xet) cardinality(xet,1) */
78183 -- Event Class Code: SUPPLIER_COST
78184     xet.entity_id
78185    ,xet.legal_entity_id
78186    ,xet.entity_code
78187    ,xet.transaction_number
78188    ,xet.event_id
78189    ,xet.event_class_code
78190    ,xet.event_type_code
78191    ,xet.event_number
78192    ,xet.event_date
78193    ,xet.transaction_date
78194    ,xet.reference_num_1
78195    ,xet.reference_num_2
78196    ,xet.reference_num_3
78197    ,xet.reference_num_4
78198    ,xet.reference_char_1
78199    ,xet.reference_char_2
78200    ,xet.reference_char_3
78201    ,xet.reference_char_4
78202    ,xet.reference_date_1
78203    ,xet.reference_date_2
78204    ,xet.reference_date_3
78205    ,xet.reference_date_4
78206    ,xet.event_created_by
78207    ,xet.budgetary_control_flag 
78208   , h2.EXCHANGE_RATE_VARIANCE_FLAG    source_21
78209   , h2.EXPENDITURE_ITEM_ID    source_32
78210   , h2.GL_DATE    source_88
78211   FROM xla_events_gt     xet 
78212   , PA_XLA_EXP_HEADER_V  h2
78213  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
78214    and xet.event_class_code = C_EVENT_CLASS_CODE
78215    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
78216 
78217  ORDER BY event_id
78218 ;
78219 
78220 
78221 --
78222 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
78223 IS
78224 SELECT  /*+ leading(xet) cardinality(xet,1) */
78225 -- Event Class Code: SUPPLIER_COST
78226     xet.entity_id
78227    ,xet.legal_entity_id
78228    ,xet.entity_code
78229    ,xet.transaction_number
78230    ,xet.event_id
78231    ,xet.event_class_code
78232    ,xet.event_type_code
78233    ,xet.event_number
78234    ,xet.event_date
78235    ,xet.transaction_date
78236    ,xet.reference_num_1
78237    ,xet.reference_num_2
78238    ,xet.reference_num_3
78239    ,xet.reference_num_4
78240    ,xet.reference_char_1
78241    ,xet.reference_char_2
78242    ,xet.reference_char_3
78243    ,xet.reference_char_4
78244    ,xet.reference_date_1
78245    ,xet.reference_date_2
78246    ,xet.reference_date_3
78247    ,xet.reference_date_4
78248    ,xet.event_created_by
78249    ,xet.budgetary_control_flag
78250  , l1.LINE_NUMBER  
78251   , l1.COST_CCID    source_3
78252   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
78253   , l1.ADJ_COST_CCID    source_5
78254   , l1.COST_CLEARING_CCID    source_6
78255   , l1.ADJ_COST_CLEARING_CCID    source_7
78256   , l1.REVERSING_LINE_FLAG    source_22
78257   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
78258   , l1.ENTERED_RAW_COST    source_24
78259   , l1.ENTERED_CURRENCY_CODE    source_25
78260   , l1.ACCT_RAW_COST    source_26
78264   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
78261   , l1.EXCHANGE_RATE_DATE    source_27
78262   , l1.EXCHANGE_RATE    source_28
78263   , l1.EXCHANGE_RATE_TYPE    source_29
78265   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
78266   , l1.LINE_NUMBER    source_33
78267   , l1.LINE_TYPE    source_34
78268   , fvl34.meaning   source_34_meaning
78269   , l1.LINE_NUM_REVERSED    source_35
78270   FROM xla_events_gt     xet 
78271   , PA_XLA_CDL_LINES_V  l1
78272   , fnd_lookup_values    fvl34
78273  WHERE xet.event_id between x_first_event_id and x_last_event_id
78274    and xet.event_date between p_pad_start_date and p_pad_end_date
78275    and xet.event_class_code = C_EVENT_CLASS_CODE
78276    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
78277    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
78278   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
78279   AND fvl34.view_application_id(+) = 275
78280   AND fvl34.language(+)            = USERENV('LANG')
78281   ;
78282 
78283 --
78284 BEGIN
78285 IF g_log_enabled THEN
78286    l_log_module := C_DEFAULT_MODULE||'.EventClass_126';
78287 END IF;
78288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78289    trace
78290       (p_msg      => 'BEGIN of EventClass_126'
78291       ,p_level    => C_LEVEL_PROCEDURE
78292       ,p_module   => l_log_module);
78293 END IF;
78294 
78295 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78296    trace
78297       (p_msg      => 'p_application_id = '||p_application_id||
78298                      ' - p_base_ledger_id = '||p_base_ledger_id||
78299                      ' - p_target_ledger_id  = '||p_target_ledger_id||
78300                      ' - p_language = '||p_language||
78301                      ' - p_currency_code = '||p_currency_code||
78302                      ' - p_sla_ledger_id = '||p_sla_ledger_id
78303       ,p_level    => C_LEVEL_STATEMENT
78304       ,p_module   => l_log_module);
78305 END IF;
78306 --
78307 -- initialze arrays
78308 --
78309 g_array_event.DELETE;
78310 l_rec_array_event := l_null_rec_array_event;
78311 --
78312 --------------------------------------
78313 -- 4262811 Initialze MPA Line Number
78314 --------------------------------------
78315 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
78316 
78317 --
78318 
78319 --
78320 OPEN header_cur;
78321 --
78322 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78323    trace
78324    (p_msg      => 'SQL - FETCH header_cur'
78325    ,p_level    => C_LEVEL_STATEMENT
78326    ,p_module   => l_log_module);
78327 END IF;
78328 --
78329 LOOP
78330 FETCH header_cur BULK COLLECT INTO
78331         l_array_entity_id
78332       , l_array_legal_entity_id
78333       , l_array_entity_code
78334       , l_array_transaction_num
78335       , l_array_event_id
78336       , l_array_class_code
78337       , l_array_event_type
78338       , l_array_event_number
78339       , l_array_event_date
78340       , l_array_transaction_date
78341       , l_array_reference_num_1
78342       , l_array_reference_num_2
78343       , l_array_reference_num_3
78344       , l_array_reference_num_4
78345       , l_array_reference_char_1
78346       , l_array_reference_char_2
78347       , l_array_reference_char_3
78348       , l_array_reference_char_4
78349       , l_array_reference_date_1
78350       , l_array_reference_date_2
78351       , l_array_reference_date_3
78352       , l_array_reference_date_4
78353       , l_array_event_created_by
78354       , l_array_budgetary_control_flag 
78355       , l_array_source_21
78356       , l_array_source_32
78357       , l_array_source_88
78358       LIMIT l_rows;
78359 --
78360 IF (C_LEVEL_EVENT >= g_log_level) THEN
78361    trace
78362    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
78363    ,p_level    => C_LEVEL_EVENT
78364    ,p_module   => l_log_module);
78365 END IF;
78366 --
78367 EXIT WHEN l_array_entity_id.COUNT = 0;
78368 
78369 -- initialize arrays
78370 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
78371 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
78372 
78373 --
78374 -- Bug 4458708
78375 --
78376 XLA_AE_LINES_PKG.g_LineNumber := 0;
78377 
78378 
78379 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
78380 g_last_hdr_idx := l_array_event_id.LAST;
78381 --
78382 -- loop for the headers. Each iteration is for each header extract row
78383 -- fetched in header cursor
78384 --
78385 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
78386 
78387 --
78388 -- set event info as cache for other routines to refer event attributes
78389 --
78390 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78391    (p_application_id           => p_application_id
78392    ,p_primary_ledger_id        => p_primary_ledger_id
78393    ,p_base_ledger_id           => p_base_ledger_id
78394    ,p_target_ledger_id         => p_target_ledger_id
78395    ,p_entity_id                => l_array_entity_id(hdr_idx)
78396    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
78397    ,p_entity_code              => l_array_entity_code(hdr_idx)
78398    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
78399    ,p_event_id                 => l_array_event_id(hdr_idx)
78400    ,p_event_class_code         => l_array_class_code(hdr_idx)
78401    ,p_event_type_code          => l_array_event_type(hdr_idx)
78402    ,p_event_number             => l_array_event_number(hdr_idx)
78403    ,p_event_date               => l_array_event_date(hdr_idx)
78404    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
78405    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
78406    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
78410    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
78407    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
78408    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
78409    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
78411    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
78412    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
78413    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
78414    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
78415    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
78416    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
78417    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
78418    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
78419 
78420 --
78421 -- set the status of entry to C_VALID (0)
78422 --
78423 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78424 
78425 --
78426 -- initialize a row for ae header
78427 --
78428 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
78429 
78430 l_event_id := l_array_event_id(hdr_idx);
78431 
78432 --
78433 -- storing the hdr_idx for event. May be used by line cursor.
78434 --
78435 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
78436 
78437 --
78438 -- store sources from header extract. This can be improved to
78439 -- store only those sources from header extract that may be used in lines
78440 --
78441 
78442 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
78443 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
78444 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
78445 
78446 --
78447 -- initilaize the status of ae headers for diffrent balance types
78448 -- the status is initialised to C_NOT_CREATED (2)
78449 --
78450 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78451 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78452 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78453 
78454 --
78455 -- call api to validate and store accounting attributes for header
78456 --
78457 
78458 ------------------------------------------------------------
78459 -- Accrual Reversal : to get date for Standard Source (NONE)
78460 ------------------------------------------------------------
78461 l_acc_rev_gl_date_source := NULL;
78462 
78463      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
78464       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
78465 
78466 
78467 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
78468 
78469 XLA_AE_HEADER_PKG.SetJeCategoryName;
78470 
78471 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
78472 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
78473 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
78474 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
78475 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
78476 
78477 
78478 -- No header level analytical criteria
78479 
78480 --
78481 --accounting attribute enhancement, bug 3612931
78482 --
78483 l_trx_reversal_source := SUBSTR(NULL, 1,30);
78484 
78485 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
78486    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78487 
78488    xla_accounting_err_pkg.build_message
78489       (p_appli_s_name            => 'XLA'
78490       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
78491       ,p_token_1                 => 'ACCT_ATTR_NAME'
78492       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
78493       ,p_token_2                 => 'PRODUCT_NAME'
78494       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78495       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78496       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78497       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78498 
78499 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
78500    --
78501    -- following sets the accounting attributes needed to reverse
78502    -- accounting for a distributeion
78503    --
78504    xla_ae_lines_pkg.SetTrxReversalAttrs
78505       (p_event_id              => l_event_id
78506       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
78507       ,p_trx_reversal_source   => l_trx_reversal_source);
78508 
78509 END IF;
78510 
78511 
78512 ----------------------------------------------------------------
78513 -- 4262811 -  update the header statuses to invalid in need be
78514 ----------------------------------------------------------------
78515 --
78516 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
78517 
78518 
78519   -----------------------------------------------
78520   -- No accrual reversal for the event class/type
78521   -----------------------------------------------
78522 ----------------------------------------------------------------
78523 
78524 --
78525 -- this ends the header loop iteration for one bulk fetch
78526 --
78527 END LOOP;
78528 
78529 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
78530 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
78531 
78532 --
78536 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
78533 -- insert dummy rows into lines gt table that were created due to
78534 -- transaction reversals
78535 --
78537    l_result := XLA_AE_LINES_PKG.InsertLines;
78538 END IF;
78539 
78540 --
78541 -- reset the temp_line_num for each set of events fetched from header
78542 -- cursor rather than doing it for each new event in line cursor
78543 -- Bug 3939231
78544 --
78545 xla_ae_lines_pkg.g_temp_line_num := 0;
78546 
78547 
78548 
78549 --
78550 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
78551 --
78552 --
78553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78554 
78555       trace
78556          (p_msg      => 'SQL - FETCH line_cur'
78557          ,p_level    => C_LEVEL_STATEMENT
78558          ,p_module   => l_log_module);
78559 
78560 END IF;
78561 --
78562 --
78563 LOOP
78564   --
78565   FETCH line_cur BULK COLLECT INTO
78566         l_array_entity_id
78567       , l_array_legal_entity_id
78568       , l_array_entity_code
78569       , l_array_transaction_num
78570       , l_array_event_id
78571       , l_array_class_code
78572       , l_array_event_type
78573       , l_array_event_number
78574       , l_array_event_date
78575       , l_array_transaction_date
78576       , l_array_reference_num_1
78577       , l_array_reference_num_2
78578       , l_array_reference_num_3
78579       , l_array_reference_num_4
78580       , l_array_reference_char_1
78581       , l_array_reference_char_2
78582       , l_array_reference_char_3
78583       , l_array_reference_char_4
78584       , l_array_reference_date_1
78585       , l_array_reference_date_2
78586       , l_array_reference_date_3
78587       , l_array_reference_date_4
78588       , l_array_event_created_by
78589       , l_array_budgetary_control_flag
78590       , l_array_extract_line_num 
78591       , l_array_source_3
78592       , l_array_source_4
78593       , l_array_source_5
78594       , l_array_source_6
78595       , l_array_source_7
78596       , l_array_source_22
78597       , l_array_source_23
78598       , l_array_source_24
78599       , l_array_source_25
78600       , l_array_source_26
78601       , l_array_source_27
78602       , l_array_source_28
78603       , l_array_source_29
78604       , l_array_source_30
78605       , l_array_source_31
78606       , l_array_source_33
78607       , l_array_source_34
78608       , l_array_source_34_meaning
78609       , l_array_source_35
78610       LIMIT l_rows;
78611 
78612   --
78613   IF (C_LEVEL_EVENT >= g_log_level) THEN
78614             trace
78615                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
78616                ,p_level    => C_LEVEL_EVENT
78617                ,p_module   => l_log_module);
78618   END IF;
78619   --
78620   EXIT WHEN l_array_entity_id.count = 0;
78621 
78622   XLA_AE_LINES_PKG.g_rec_lines := null;
78623 
78624 --
78625 -- Bug 4458708
78626 --
78627 XLA_AE_LINES_PKG.g_LineNumber := 0;
78628 --
78629 --
78630 
78631 FOR Idx IN 1..l_array_event_id.count LOOP
78632    --
78633    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
78634    --
78635    l_event_id := l_array_event_id(idx);  -- 5648433
78636 
78637    --
78638    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78639    --
78640 
78641    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
78642              (g_array_event(l_event_id).array_value_num('header_index'))
78643          ,'N'
78644          ) <> 'Y'
78645    THEN
78646       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78647          trace
78648             (p_msg      => 'Trancaction revesal option is not Y '
78649             ,p_level    => C_LEVEL_STATEMENT
78650             ,p_module   => l_log_module);
78651       END IF;
78652 
78653 --
78654 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
78655 --
78656 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78657 --
78658 -- set event info as cache for other routines to refer event attributes
78659 --
78660 
78661 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
78662    l_previous_event_id := l_event_id;
78663 
78664    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78665       (p_application_id           => p_application_id
78666       ,p_primary_ledger_id        => p_primary_ledger_id
78667       ,p_base_ledger_id           => p_base_ledger_id
78668       ,p_target_ledger_id         => p_target_ledger_id
78669       ,p_entity_id                => l_array_entity_id(Idx)
78670       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
78671       ,p_entity_code              => l_array_entity_code(Idx)
78672       ,p_transaction_num          => l_array_transaction_num(Idx)
78673       ,p_event_id                 => l_array_event_id(Idx)
78674       ,p_event_class_code         => l_array_class_code(Idx)
78675       ,p_event_type_code          => l_array_event_type(Idx)
78676       ,p_event_number             => l_array_event_number(Idx)
78677       ,p_event_date               => l_array_event_date(Idx)
78678       ,p_transaction_date         => l_array_transaction_date(Idx)
78679       ,p_reference_num_1          => l_array_reference_num_1(Idx)
78680       ,p_reference_num_2          => l_array_reference_num_2(Idx)
78681       ,p_reference_num_3          => l_array_reference_num_3(Idx)
78682       ,p_reference_num_4          => l_array_reference_num_4(Idx)
78683       ,p_reference_char_1         => l_array_reference_char_1(Idx)
78684       ,p_reference_char_2         => l_array_reference_char_2(Idx)
78688       ,p_reference_date_2         => l_array_reference_date_2(Idx)
78685       ,p_reference_char_3         => l_array_reference_char_3(Idx)
78686       ,p_reference_char_4         => l_array_reference_char_4(Idx)
78687       ,p_reference_date_1         => l_array_reference_date_1(Idx)
78689       ,p_reference_date_3         => l_array_reference_date_3(Idx)
78690       ,p_reference_date_4         => l_array_reference_date_4(Idx)
78691       ,p_event_created_by         => l_array_event_created_by(Idx)
78692       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
78693        --
78694 END IF;
78695 
78696 
78697 
78698 --
78699 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
78700 
78701 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
78702 
78703 IF l_continue_with_lines THEN
78704    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
78705       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78706 
78707       xla_accounting_err_pkg.build_message
78708          (p_appli_s_name            => 'XLA'
78709          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
78710          ,p_token_1                 => 'LINE_NUMBER'
78711          ,p_value_1                 => l_array_extract_line_num(Idx)
78712          ,p_token_2                 => 'PRODUCT_NAME'
78713          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78714          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78715          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78716          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78717 
78718    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
78719       --
78720       -- following sets the accounting attributes needed to reverse
78721       -- accounting for a distributeion
78722       --
78723 
78724       --
78725       -- 5217187
78726       --
78727       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
78728       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
78729                                        g_array_event(l_event_id).array_value_num('header_index'));
78730       --
78731       --
78732 
78733       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
78734       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
78735       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
78736       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
78737       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
78738       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
78739       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
78740       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
78741       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
78742       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
78743       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
78744       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
78745       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
78746       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
78747       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
78748       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
78749       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
78750       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
78751       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
78752       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
78753       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
78754       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
78755       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
78756       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
78757       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
78758       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
78759       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
78760       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
78761       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
78762       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
78763       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
78764       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
78765       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
78766       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
78767       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
78768       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
78769       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
78770       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
78771       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
78772       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
78773       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
78774       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
78775       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
78776       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
78777       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
78781 
78778       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
78779       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
78780       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
78782 
78783       xla_ae_lines_pkg.SetAcctReversalAttrs
78784          (p_event_id             => l_event_id
78785          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
78786          ,p_calculate_acctd_flag => l_calculate_acctd_flag
78787          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
78788    END IF;
78789 
78790    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
78791        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
78792 
78793 --
78794 AcctLineType_20 (
78795  p_application_id  => p_application_id
78796  ,p_event_id     => l_event_id
78797  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78798  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78799  ,p_actual_flag => l_actual_flag
78800  ,p_balance_type_code => l_balance_type_code
78801  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78802  
78803  , p_source_3 => l_array_source_3(Idx)
78804  , p_source_4 => l_array_source_4(Idx)
78805  , p_source_5 => l_array_source_5(Idx)
78806  , p_source_6 => l_array_source_6(Idx)
78807  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78808  , p_source_22 => l_array_source_22(Idx)
78809  , p_source_23 => l_array_source_23(Idx)
78810  , p_source_24 => l_array_source_24(Idx)
78811  , p_source_25 => l_array_source_25(Idx)
78812  , p_source_26 => l_array_source_26(Idx)
78813  , p_source_27 => l_array_source_27(Idx)
78814  , p_source_28 => l_array_source_28(Idx)
78815  , p_source_29 => l_array_source_29(Idx)
78816  , p_source_30 => l_array_source_30(Idx)
78817  , p_source_31 => l_array_source_31(Idx)
78818  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78819  , p_source_33 => l_array_source_33(Idx)
78820  , p_source_34 => l_array_source_34(Idx)
78821  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78822  , p_source_35 => l_array_source_35(Idx)
78823  );
78824 If(l_balance_type_code = 'A') THEN
78825   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78826 END IF;
78827 
78828 --
78829 
78830 
78831 --
78832 AcctLineType_23 (
78833  p_application_id  => p_application_id
78834  ,p_event_id     => l_event_id
78835  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78836  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78837  ,p_actual_flag => l_actual_flag
78838  ,p_balance_type_code => l_balance_type_code
78839  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78840  
78841  , p_source_3 => l_array_source_3(Idx)
78842  , p_source_4 => l_array_source_4(Idx)
78843  , p_source_6 => l_array_source_6(Idx)
78844  , p_source_7 => l_array_source_7(Idx)
78845  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78846  , p_source_22 => l_array_source_22(Idx)
78847  , p_source_23 => l_array_source_23(Idx)
78848  , p_source_24 => l_array_source_24(Idx)
78849  , p_source_25 => l_array_source_25(Idx)
78850  , p_source_26 => l_array_source_26(Idx)
78851  , p_source_27 => l_array_source_27(Idx)
78852  , p_source_28 => l_array_source_28(Idx)
78853  , p_source_29 => l_array_source_29(Idx)
78854  , p_source_30 => l_array_source_30(Idx)
78855  , p_source_31 => l_array_source_31(Idx)
78856  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78857  , p_source_33 => l_array_source_33(Idx)
78858  , p_source_34 => l_array_source_34(Idx)
78859  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78860  , p_source_35 => l_array_source_35(Idx)
78861  );
78862 If(l_balance_type_code = 'A') THEN
78863   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78864 END IF;
78865 
78866 --
78867 
78868 
78869 --
78870 AcctLineType_44 (
78871  p_application_id  => p_application_id
78872  ,p_event_id     => l_event_id
78873  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78874  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78875  ,p_actual_flag => l_actual_flag
78876  ,p_balance_type_code => l_balance_type_code
78877  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78878  
78879  , p_source_3 => l_array_source_3(Idx)
78880  , p_source_4 => l_array_source_4(Idx)
78881  , p_source_5 => l_array_source_5(Idx)
78882  , p_source_6 => l_array_source_6(Idx)
78883  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78884  , p_source_22 => l_array_source_22(Idx)
78885  , p_source_23 => l_array_source_23(Idx)
78886  , p_source_24 => l_array_source_24(Idx)
78887  , p_source_25 => l_array_source_25(Idx)
78888  , p_source_26 => l_array_source_26(Idx)
78889  , p_source_27 => l_array_source_27(Idx)
78890  , p_source_28 => l_array_source_28(Idx)
78891  , p_source_29 => l_array_source_29(Idx)
78892  , p_source_30 => l_array_source_30(Idx)
78893  , p_source_31 => l_array_source_31(Idx)
78894  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78895  , p_source_33 => l_array_source_33(Idx)
78896  , p_source_34 => l_array_source_34(Idx)
78897  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78898  , p_source_35 => l_array_source_35(Idx)
78899  );
78900 If(l_balance_type_code = 'A') THEN
78901   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78902 END IF;
78903 
78904 --
78905 
78906 
78907 --
78908 AcctLineType_56 (
78909  p_application_id  => p_application_id
78910  ,p_event_id     => l_event_id
78911  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78912  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78913  ,p_actual_flag => l_actual_flag
78914  ,p_balance_type_code => l_balance_type_code
78915  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78916  
78917  , p_source_3 => l_array_source_3(Idx)
78918  , p_source_4 => l_array_source_4(Idx)
78919  , p_source_6 => l_array_source_6(Idx)
78923  , p_source_23 => l_array_source_23(Idx)
78920  , p_source_7 => l_array_source_7(Idx)
78921  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78922  , p_source_22 => l_array_source_22(Idx)
78924  , p_source_24 => l_array_source_24(Idx)
78925  , p_source_25 => l_array_source_25(Idx)
78926  , p_source_26 => l_array_source_26(Idx)
78927  , p_source_27 => l_array_source_27(Idx)
78928  , p_source_28 => l_array_source_28(Idx)
78929  , p_source_29 => l_array_source_29(Idx)
78930  , p_source_30 => l_array_source_30(Idx)
78931  , p_source_31 => l_array_source_31(Idx)
78932  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78933  , p_source_33 => l_array_source_33(Idx)
78934  , p_source_34 => l_array_source_34(Idx)
78935  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78936  , p_source_35 => l_array_source_35(Idx)
78937  );
78938 If(l_balance_type_code = 'A') THEN
78939   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78940 END IF;
78941 
78942 --
78943 
78944       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
78945       -- or secondary ledger that has different currency with primary
78946       -- or alc that is calculated by sla
78947       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
78948             (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'))
78949 
78950 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
78951 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
78952           AND (l_actual_flag = 'A')) THEN
78953         XLA_AE_LINES_PKG.CreateGainOrLossLines(
78954           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
78955          ,p_application_id   => p_application_id
78956          ,p_amb_context_code => 'DEFAULT'
78957          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
78958          ,p_event_class_code => C_EVENT_CLASS_CODE
78959          ,p_event_type_code  => C_EVENT_TYPE_CODE
78960          
78961          ,p_gain_ccid        => -1
78962          ,p_loss_ccid        => -1
78963 
78964          ,p_actual_flag      => l_actual_flag
78965          ,p_enc_flag         => null
78966          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
78967          ,p_enc_g_l_ref      => null
78968          );
78969       END IF;
78970    END IF;
78971 END IF;
78972 
78973    ELSE
78974       --
78975       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78976       --
78977       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78978          trace
78979             (p_msg      => 'Trancaction revesal option is Y'
78980             ,p_level    => C_LEVEL_STATEMENT
78981             ,p_module   => l_log_module);
78982       END IF;
78983    END IF;
78984 
78985 END LOOP;
78986 l_result := XLA_AE_LINES_PKG.InsertLines ;
78987 end loop;
78988 close line_cur;
78989 
78990 
78991 --
78992 -- insert headers into xla_ae_headers_gt table
78993 --
78994 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
78995 
78996 -- insert into errors table here.
78997 
78998 END LOOP;
78999 
79000 --
79001 -- 4865292
79002 --
79003 -- Compare g_hdr_extract_count with event count in
79004 -- CreateHeadersAndLines.
79005 --
79006 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
79007 
79008 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79009    trace (p_msg     => '# rows extracted from header extract objects '
79010                     || ' (running total): '
79011                     || g_hdr_extract_count
79012          ,p_level   => C_LEVEL_STATEMENT
79013          ,p_module  => l_log_module);
79014 END IF;
79015 
79016 CLOSE header_cur;
79017 --
79018 
79019 --
79020 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79021    trace
79022       (p_msg      => 'END of EventClass_126'
79023       ,p_level    => C_LEVEL_PROCEDURE
79024       ,p_module   => l_log_module);
79025 END IF;
79026 --
79027 RETURN l_result;
79028 EXCEPTION
79029 WHEN xla_exceptions_pkg.application_exception THEN
79030    
79031 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
79032 
79033    
79034 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
79035 
79036    RAISE;
79037 WHEN OTHERS THEN
79038    xla_exceptions_pkg.raise_message
79039       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_126');
79040 END EventClass_126;
79041 --
79042 
79043 ---------------------------------------
79044 --
79045 -- PRIVATE PROCEDURE
79046 --         insert_sources_127
79047 --
79048 ----------------------------------------
79049 --
79050 PROCEDURE insert_sources_127(
79051                                 p_target_ledger_id       IN NUMBER
79052                               , p_language               IN VARCHAR2
79053                               , p_sla_ledger_id          IN NUMBER
79054                               , p_pad_start_date         IN DATE
79055                               , p_pad_end_date           IN DATE
79056                          )
79057 IS
79058 
79059 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ADJ_ALL';
79060 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST_ADJ';
79061 p_apps_owner                   VARCHAR2(30);
79062 l_log_module                   VARCHAR2(240);
79063 BEGIN
79064 IF g_log_enabled THEN
79065       l_log_module := C_DEFAULT_MODULE||'.insert_sources_127';
79066 END IF;
79067 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79068 
79069       trace
79070          (p_msg      => 'BEGIN of insert_sources_127'
79074 END IF;
79071          ,p_level    => C_LEVEL_PROCEDURE
79072          ,p_module   => l_log_module);
79073 
79075 
79076 -- select APPS owner
79077 SELECT oracle_username
79078   INTO p_apps_owner
79079   FROM fnd_oracle_userid
79080  WHERE read_only_flag = 'U'
79081 ;
79082 
79083 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79084       trace
79085          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
79086                         ' - p_language = '||p_language||
79087                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
79088                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
79089                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
79090                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
79091          ,p_level    => C_LEVEL_STATEMENT
79092          ,p_module   => l_log_module);
79093 END IF;
79094 
79095 
79096 --
79097 INSERT INTO xla_diag_sources --hdr2
79098 (
79099         event_id
79100       , ledger_id
79101       , sla_ledger_id
79102       , description_language
79103       , object_name
79104       , object_type_code
79105       , line_number
79106       , source_application_id
79107       , source_type_code
79108       , source_code
79109       , source_value
79110       , source_meaning
79111       , created_by
79112       , creation_date
79113       , last_update_date
79114       , last_updated_by
79115       , last_update_login
79116       , program_update_date
79117       , program_application_id
79118       , program_id
79119       , request_id
79120 )
79121 SELECT
79122         event_id
79123       , p_target_ledger_id
79124       , p_sla_ledger_id
79125       , p_language
79126       , object_name
79127       , object_type_code
79128       , line_number
79129       , source_application_id
79130       , source_type_code
79131       , source_code
79132       , SUBSTR(source_value ,1,1996)
79133       , SUBSTR(source_meaning ,1,200)
79134       , xla_environment_pkg.g_Usr_Id
79135       , TRUNC(SYSDATE)
79136       , TRUNC(SYSDATE)
79137       , xla_environment_pkg.g_Usr_Id
79138       , xla_environment_pkg.g_Login_Id
79139       , TRUNC(SYSDATE)
79140       , xla_environment_pkg.g_Prog_Appl_Id
79141       , xla_environment_pkg.g_Prog_Id
79142       , xla_environment_pkg.g_Req_Id
79143   FROM (
79144        SELECT xet.event_id                  event_id
79145             , 0                          line_number
79146             , CASE r
79147                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
79148                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
79149                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
79150                 
79151                ELSE null
79152               END                           object_name
79153             , CASE r
79154                 WHEN 1 THEN 'HEADER' 
79155                 WHEN 2 THEN 'HEADER' 
79156                 WHEN 3 THEN 'HEADER' 
79157                 
79158                 ELSE null
79159               END                           object_type_code
79160             , CASE r
79161                 WHEN 1 THEN '275' 
79162                 WHEN 2 THEN '275' 
79163                 WHEN 3 THEN '275' 
79164                 
79165                 ELSE null
79166               END                           source_application_id
79167             , 'S'             source_type_code
79168             , CASE r
79169                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
79170                 WHEN 2 THEN 'SYSTEM_LINKAGE_FUNCTION' 
79171                 WHEN 3 THEN 'GL_DATE' 
79172                 
79173                 ELSE null
79174               END                           source_code
79175             , CASE r
79176                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
79177                 WHEN 2 THEN TO_CHAR(h2.SYSTEM_LINKAGE_FUNCTION)
79178                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
79179                 
79180                 ELSE null
79181               END                           source_value
79182             , null              source_meaning
79183          FROM xla_events_gt     xet  
79184       , PA_XLA_EXP_HEADER_V  h2
79185              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
79186          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79187            AND xet.event_class_code = C_EVENT_CLASS_CODE
79188               AND h2.event_id = xet.event_id
79189 
79190 )
79191 ;
79192 --
79193 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79194 
79195       trace
79196          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
79197          ,p_level    => C_LEVEL_STATEMENT
79198          ,p_module   => l_log_module);
79199 
79200 END IF;
79201 --
79202 
79203 
79204 
79205 --
79206 INSERT INTO xla_diag_sources  --line2
79207 (
79208         event_id
79209       , ledger_id
79210       , sla_ledger_id
79211       , description_language
79212       , object_name
79213       , object_type_code
79214       , line_number
79215       , source_application_id
79216       , source_type_code
79217       , source_code
79218       , source_value
79219       , source_meaning
79220       , created_by
79221       , creation_date
79222       , last_update_date
79223       , last_updated_by
79224       , last_update_login
79225       , program_update_date
79226       , program_application_id
79227       , program_id
79228       , request_id
79229 )
79230 SELECT  event_id
79231       , p_target_ledger_id
79232       , p_sla_ledger_id
79233       , p_language
79234       , object_name
79238       , source_type_code
79235       , object_type_code
79236       , line_number
79237       , source_application_id
79239       , source_code
79240       , SUBSTR(source_value,1,1996)
79241       , SUBSTR(source_meaning ,1,200)
79242       , xla_environment_pkg.g_Usr_Id
79243       , TRUNC(SYSDATE)
79244       , TRUNC(SYSDATE)
79245       , xla_environment_pkg.g_Usr_Id
79246       , xla_environment_pkg.g_Login_Id
79247       , TRUNC(SYSDATE)
79248       , xla_environment_pkg.g_Prog_Appl_Id
79249       , xla_environment_pkg.g_Prog_Id
79250       , xla_environment_pkg.g_Req_Id
79251   FROM (
79252        SELECT xet.event_id                  event_id
79253             , l1.line_number                 line_number
79254             , CASE r
79255                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
79256                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
79257                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
79258                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
79259                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
79260                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
79261                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
79262                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
79263                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
79264                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
79265                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
79266                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
79267                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
79268                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
79269                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
79270                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
79271                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
79272                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
79273                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
79274                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
79275                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
79276                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
79277                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
79278                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
79279                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
79280                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
79281                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
79282                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
79283                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
79284                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
79285                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
79286                 WHEN 32 THEN 'PA_XLA_CDL_LINES_V' 
79287                 WHEN 33 THEN 'PA_XLA_CDL_LINES_V' 
79288                 WHEN 34 THEN 'PA_XLA_CDL_LINES_V' 
79289                 WHEN 35 THEN 'PA_XLA_CDL_LINES_V' 
79290                 WHEN 36 THEN 'PA_XLA_CDL_LINES_V' 
79291                 WHEN 37 THEN 'PA_XLA_CDL_LINES_V' 
79292                 WHEN 38 THEN 'PA_XLA_CDL_LINES_V' 
79293                 WHEN 39 THEN 'PA_XLA_CDL_LINES_V' 
79294                 WHEN 40 THEN 'PA_XLA_CDL_LINES_V' 
79295                 WHEN 41 THEN 'PA_XLA_CDL_LINES_V' 
79296                 WHEN 42 THEN 'PA_XLA_CDL_LINES_V' 
79297                 WHEN 43 THEN 'PA_XLA_CDL_LINES_V' 
79298                 WHEN 44 THEN 'PA_XLA_CDL_LINES_V' 
79299                 WHEN 45 THEN 'PA_XLA_CDL_LINES_V' 
79300                 WHEN 46 THEN 'PA_XLA_CDL_LINES_V' 
79301                 WHEN 47 THEN 'PA_XLA_CDL_LINES_V' 
79302                 WHEN 48 THEN 'PA_XLA_CDL_LINES_V' 
79303                 
79304                ELSE null
79305               END                           object_name
79306             , CASE r
79307                 WHEN 1 THEN 'LINE' 
79308                 WHEN 2 THEN 'LINE' 
79309                 WHEN 3 THEN 'LINE' 
79310                 WHEN 4 THEN 'LINE' 
79311                 WHEN 5 THEN 'LINE' 
79312                 WHEN 6 THEN 'LINE' 
79313                 WHEN 7 THEN 'LINE' 
79314                 WHEN 8 THEN 'LINE' 
79315                 WHEN 9 THEN 'LINE' 
79316                 WHEN 10 THEN 'LINE' 
79317                 WHEN 11 THEN 'LINE' 
79318                 WHEN 12 THEN 'LINE' 
79319                 WHEN 13 THEN 'LINE' 
79320                 WHEN 14 THEN 'LINE' 
79321                 WHEN 15 THEN 'LINE' 
79322                 WHEN 16 THEN 'LINE' 
79323                 WHEN 17 THEN 'LINE' 
79324                 WHEN 18 THEN 'LINE' 
79325                 WHEN 19 THEN 'LINE' 
79326                 WHEN 20 THEN 'LINE' 
79327                 WHEN 21 THEN 'LINE' 
79328                 WHEN 22 THEN 'LINE' 
79329                 WHEN 23 THEN 'LINE' 
79330                 WHEN 24 THEN 'LINE' 
79331                 WHEN 25 THEN 'LINE' 
79332                 WHEN 26 THEN 'LINE' 
79333                 WHEN 27 THEN 'LINE' 
79334                 WHEN 28 THEN 'LINE' 
79335                 WHEN 29 THEN 'LINE' 
79336                 WHEN 30 THEN 'LINE' 
79337                 WHEN 31 THEN 'LINE' 
79338                 WHEN 32 THEN 'LINE' 
79339                 WHEN 33 THEN 'LINE' 
79340                 WHEN 34 THEN 'LINE' 
79341                 WHEN 35 THEN 'LINE' 
79342                 WHEN 36 THEN 'LINE' 
79343                 WHEN 37 THEN 'LINE' 
79344                 WHEN 38 THEN 'LINE' 
79345                 WHEN 39 THEN 'LINE' 
79346                 WHEN 40 THEN 'LINE' 
79347                 WHEN 41 THEN 'LINE' 
79348                 WHEN 42 THEN 'LINE' 
79349                 WHEN 43 THEN 'LINE' 
79350                 WHEN 44 THEN 'LINE' 
79351                 WHEN 45 THEN 'LINE' 
79352                 WHEN 46 THEN 'LINE' 
79353                 WHEN 47 THEN 'LINE' 
79354                 WHEN 48 THEN 'LINE' 
79355                 
79356                 ELSE null
79357               END                           object_type_code
79358             , CASE r
79359                 WHEN 1 THEN '275' 
79360                 WHEN 2 THEN '275' 
79361                 WHEN 3 THEN '275' 
79362                 WHEN 4 THEN '275' 
79366                 WHEN 8 THEN '275' 
79363                 WHEN 5 THEN '275' 
79364                 WHEN 6 THEN '275' 
79365                 WHEN 7 THEN '275' 
79367                 WHEN 9 THEN '275' 
79368                 WHEN 10 THEN '275' 
79369                 WHEN 11 THEN '275' 
79370                 WHEN 12 THEN '275' 
79371                 WHEN 13 THEN '275' 
79372                 WHEN 14 THEN '275' 
79373                 WHEN 15 THEN '275' 
79374                 WHEN 16 THEN '275' 
79375                 WHEN 17 THEN '275' 
79376                 WHEN 18 THEN '275' 
79377                 WHEN 19 THEN '275' 
79378                 WHEN 20 THEN '275' 
79379                 WHEN 21 THEN '275' 
79380                 WHEN 22 THEN '275' 
79381                 WHEN 23 THEN '275' 
79382                 WHEN 24 THEN '275' 
79383                 WHEN 25 THEN '275' 
79384                 WHEN 26 THEN '275' 
79385                 WHEN 27 THEN '275' 
79386                 WHEN 28 THEN '275' 
79387                 WHEN 29 THEN '275' 
79388                 WHEN 30 THEN '275' 
79389                 WHEN 31 THEN '275' 
79390                 WHEN 32 THEN '275' 
79391                 WHEN 33 THEN '275' 
79392                 WHEN 34 THEN '275' 
79393                 WHEN 35 THEN '275' 
79394                 WHEN 36 THEN '275' 
79395                 WHEN 37 THEN '275' 
79396                 WHEN 38 THEN '275' 
79397                 WHEN 39 THEN '275' 
79398                 WHEN 40 THEN '275' 
79399                 WHEN 41 THEN '275' 
79400                 WHEN 42 THEN '275' 
79401                 WHEN 43 THEN '275' 
79402                 WHEN 44 THEN '275' 
79403                 WHEN 45 THEN '275' 
79404                 WHEN 46 THEN '275' 
79405                 WHEN 47 THEN '275' 
79406                 WHEN 48 THEN '275' 
79407                 
79408                 ELSE null
79409               END                           source_application_id
79410             , 'S'             source_type_code
79411             , CASE r
79412                 WHEN 1 THEN 'BUDGET_CCID' 
79413                 WHEN 2 THEN 'COST_CCID' 
79414                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
79415                 WHEN 4 THEN 'ADJ_COST_CCID' 
79416                 WHEN 5 THEN 'COST_CLEARING_CCID' 
79417                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
79418                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
79419                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
79420                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
79421                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
79422                 WHEN 11 THEN 'EXCHANGE_RATE' 
79423                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
79424                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
79425                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
79426                 WHEN 15 THEN 'LINE_NUMBER' 
79427                 WHEN 16 THEN 'LINE_TYPE' 
79428                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
79429                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
79430                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
79431                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
79432                 WHEN 21 THEN 'PA_APPLICATION_ID' 
79433                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
79434                 WHEN 23 THEN 'PA_ENTITY_CODE' 
79435                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
79436                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
79437                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
79438                 WHEN 27 THEN 'ENC_UPG_CR_ACCT_CLASS' 
79439                 WHEN 28 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
79440                 WHEN 29 THEN 'ENCUMBRANCE_TYPE_ID' 
79441                 WHEN 30 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
79442                 WHEN 31 THEN 'DOCUMENT_TYPE' 
79443                 WHEN 32 THEN 'ENC_JE_LINES_REVERSED_FLAG' 
79444                 WHEN 33 THEN 'PO_RELEASE_ID' 
79445                 WHEN 34 THEN 'CWK_RATE_BASED_TC_FLAG' 
79446                 WHEN 35 THEN 'INVOICE_APPLICATION_ID' 
79447                 WHEN 36 THEN 'INVOICE_DISTRIBUTION_TYPE' 
79448                 WHEN 37 THEN 'INVOICE_ENTITY_CODE' 
79449                 WHEN 38 THEN 'INVOICE_FIRST_DIST_ID' 
79450                 WHEN 39 THEN 'INVOICE_FIRST_SYS_TRANS_ID' 
79451                 WHEN 40 THEN 'INVOICE_SECOND_DIST_ID' 
79452                 WHEN 41 THEN 'PO_APPLICATION_ID' 
79453                 WHEN 42 THEN 'PO_DISTRIBUTION_TYPE' 
79454                 WHEN 43 THEN 'PO_ENTITY_CODE' 
79455                 WHEN 44 THEN 'PO_FIRST_DIST_ID' 
79456                 WHEN 45 THEN 'PO_FIRST_SYS_TRANS_ID' 
79457                 WHEN 46 THEN 'PO_SECOND_DIST_ID' 
79458                 WHEN 47 THEN 'ENC_ACCT_ENABLED' 
79459                 WHEN 48 THEN 'LIQUIDATE_ENCUM_FLAG' 
79460                 
79461                 ELSE null
79462               END                           source_code
79463             , CASE r
79464                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
79465                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
79466                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
79467                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
79468                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
79469                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
79470                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
79471                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
79472                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
79473                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
79474                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
79475                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
79476                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
79477                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
79478                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
79479                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
79480                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
79484                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
79481                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
79482                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
79483                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
79485                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
79486                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
79487                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
79488                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
79489                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
79490                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
79491                 WHEN 28 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
79492                 WHEN 29 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
79493                 WHEN 30 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
79494                 WHEN 31 THEN TO_CHAR(l1.DOCUMENT_TYPE)
79495                 WHEN 32 THEN TO_CHAR(l1.ENC_JE_LINES_REVERSED_FLAG)
79496                 WHEN 33 THEN TO_CHAR(l1.PO_RELEASE_ID)
79497                 WHEN 34 THEN TO_CHAR(l1.CWK_RATE_BASED_TC_FLAG)
79498                 WHEN 35 THEN TO_CHAR(l1.INVOICE_APPLICATION_ID)
79499                 WHEN 36 THEN TO_CHAR(l1.INVOICE_DISTRIBUTION_TYPE)
79500                 WHEN 37 THEN TO_CHAR(l1.INVOICE_ENTITY_CODE)
79501                 WHEN 38 THEN TO_CHAR(l1.INVOICE_FIRST_DIST_ID)
79502                 WHEN 39 THEN TO_CHAR(l1.INVOICE_FIRST_SYS_TRANS_ID)
79503                 WHEN 40 THEN TO_CHAR(l1.INVOICE_SECOND_DIST_ID)
79504                 WHEN 41 THEN TO_CHAR(l1.PO_APPLICATION_ID)
79505                 WHEN 42 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
79506                 WHEN 43 THEN TO_CHAR(l1.PO_ENTITY_CODE)
79507                 WHEN 44 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
79508                 WHEN 45 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
79509                 WHEN 46 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
79510                 WHEN 47 THEN TO_CHAR(l1.ENC_ACCT_ENABLED)
79511                 WHEN 48 THEN TO_CHAR(l1.LIQUIDATE_ENCUM_FLAG)
79512                 
79513                 ELSE null
79514               END                           source_value
79515             , CASE r
79516                 WHEN 3 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
79517                           103371
79518                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
79519                          ,'ALLOW_OVERRIDE_CCID_FLAG'
79520                          ,'S'
79521                          ,275)
79522                 WHEN 16 THEN fvl34.meaning
79523                 WHEN 31 THEN fvl70.meaning
79524                 
79525                 ELSE null
79526               END               source_meaning
79527          FROM  xla_events_gt     xet  
79528         , PA_XLA_CDL_LINES_V  l1
79529   , fnd_lookup_values    fvl34
79530   , fnd_lookup_values    fvl70
79531             , (select rownum r from all_objects where rownum <= 48 and owner = p_apps_owner)
79532         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79533           AND xet.event_class_code = C_EVENT_CLASS_CODE
79534             AND l1.event_id          = xet.event_id
79535    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
79536   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
79537   AND fvl34.view_application_id(+) = 275
79538   AND fvl34.language(+)            = USERENV('LANG')
79539      AND fvl70.lookup_type(+)         = 'FC_DOC_TYPE'
79540   AND fvl70.lookup_code(+)         = l1.DOCUMENT_TYPE
79541   AND fvl70.view_application_id(+) = 275
79542   AND fvl70.language(+)            = USERENV('LANG')
79543   
79544 )
79545 ;
79546 --
79547 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79548 
79549       trace
79550          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
79551          ,p_level    => C_LEVEL_STATEMENT
79552          ,p_module   => l_log_module);
79553 
79554 END IF;
79555 
79556 
79557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79558       trace
79559          (p_msg      => 'END of insert_sources_127'
79560          ,p_level    => C_LEVEL_PROCEDURE
79561          ,p_module   => l_log_module);
79562 END IF;
79563 EXCEPTION
79564   WHEN xla_exceptions_pkg.application_exception THEN
79565       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79566             trace
79567                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79568                ,p_level    => C_LEVEL_EXCEPTION
79569                ,p_module   => l_log_module);
79570       END IF;
79571       RAISE;
79572   WHEN OTHERS THEN
79573       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79574             trace
79575                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79576                ,p_level    => C_LEVEL_EXCEPTION
79577                ,p_module   => l_log_module);
79578        END IF;
79579        xla_exceptions_pkg.raise_message
79580            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_127');
79581 END insert_sources_127;
79582 --
79583 
79584 ---------------------------------------
79585 --
79586 -- PRIVATE FUNCTION
79587 --         EventClass_127
79588 --
79589 ----------------------------------------
79590 --
79591 FUNCTION EventClass_127
79592        (p_application_id         IN NUMBER
79593        ,p_base_ledger_id         IN NUMBER
79594        ,p_target_ledger_id       IN NUMBER
79595        ,p_language               IN VARCHAR2
79596        ,p_currency_code          IN VARCHAR2
79597        ,p_sla_ledger_id          IN NUMBER
79598        ,p_pad_start_date         IN DATE
79599        ,p_pad_end_date           IN DATE
79600        ,p_primary_ledger_id      IN NUMBER)
79601 RETURN BOOLEAN IS
79602 --
79603 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ADJ_ALL';
79604 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST_ADJ';
79605 
79606 l_calculate_acctd_flag   VARCHAR2(1) :='N';
79610 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79607 l_calculate_g_l_flag     VARCHAR2(1) :='N';
79608 --
79609 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79611 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79612 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79613 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79614 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79615 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79616 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79617 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79618 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79619 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79620 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79621 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79622 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79623 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79624 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79625 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79626 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79627 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79628 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79629 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79630 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79631 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
79632 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79633 
79634 l_event_id                             NUMBER;
79635 l_previous_event_id                    NUMBER;
79636 l_first_event_id                       NUMBER;
79637 l_last_event_id                        NUMBER;
79638 
79639 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
79640 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
79641 --
79642 --
79643 l_result                    BOOLEAN := TRUE;
79644 l_rows                      NUMBER  := 1000;
79645 l_event_type_name           VARCHAR2(80) := 'All';
79646 l_event_class_name          VARCHAR2(80) := 'Total Burdened Cost Adjustment';
79647 l_description               VARCHAR2(4000);
79648 l_transaction_reversal      NUMBER;
79649 l_ae_header_id              NUMBER;
79650 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
79651 l_log_module                VARCHAR2(240);
79652 --
79653 l_acct_reversal_source      VARCHAR2(30);
79654 l_trx_reversal_source       VARCHAR2(30);
79655 
79656 l_continue_with_lines       BOOLEAN := TRUE;
79657 --
79658 l_acc_rev_gl_date_source    DATE;                      -- 4262811
79659 --
79660 type t_array_event_id is table of number index by binary_integer;
79661 
79662 l_rec_array_event                    t_rec_array_event;
79663 l_null_rec_array_event               t_rec_array_event;
79664 l_array_ae_header_id                 xla_number_array_type;
79665 l_actual_flag                        VARCHAR2(1) := NULL;
79666 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
79667 l_balance_type_code                  VARCHAR2(1) :=NULL;
79668 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
79669 
79670 --
79671 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
79672 --
79673 
79674 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
79675 TYPE t_array_source_37 IS TABLE OF PA_XLA_EXP_HEADER_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
79676 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
79677 
79678 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
79679 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
79680 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
79681 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
79682 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
79683 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
79684 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
79685 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
79686 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
79687 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
79688 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
79689 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
79690 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
79691 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
79692 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
79693 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
79694 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
79695 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
79696 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
79700 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
79697 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
79698 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
79699 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79701 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79702 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
79703 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79704 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
79705 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
79706 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
79707 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
79708 TYPE t_array_source_70 IS TABLE OF PA_XLA_CDL_LINES_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
79709 TYPE t_array_source_71 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_JE_LINES_REVERSED_FLAG%TYPE INDEX BY BINARY_INTEGER;
79710 TYPE t_array_source_72 IS TABLE OF PA_XLA_CDL_LINES_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
79711 TYPE t_array_source_73 IS TABLE OF PA_XLA_CDL_LINES_V.CWK_RATE_BASED_TC_FLAG%TYPE INDEX BY BINARY_INTEGER;
79712 TYPE t_array_source_74 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
79713 TYPE t_array_source_75 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79714 TYPE t_array_source_76 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
79715 TYPE t_array_source_77 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79716 TYPE t_array_source_78 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
79717 TYPE t_array_source_79 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79718 TYPE t_array_source_80 IS TABLE OF PA_XLA_CDL_LINES_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
79719 TYPE t_array_source_81 IS TABLE OF PA_XLA_CDL_LINES_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79720 TYPE t_array_source_82 IS TABLE OF PA_XLA_CDL_LINES_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
79721 TYPE t_array_source_83 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79722 TYPE t_array_source_84 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
79723 TYPE t_array_source_85 IS TABLE OF PA_XLA_CDL_LINES_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79724 TYPE t_array_source_86 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_ACCT_ENABLED%TYPE INDEX BY BINARY_INTEGER;
79725 TYPE t_array_source_87 IS TABLE OF PA_XLA_CDL_LINES_V.LIQUIDATE_ENCUM_FLAG%TYPE INDEX BY BINARY_INTEGER;
79726 
79727 l_array_source_32              t_array_source_32;
79728 l_array_source_37              t_array_source_37;
79729 l_array_source_88              t_array_source_88;
79730 
79731 l_array_source_2      t_array_source_2;
79732 l_array_source_3      t_array_source_3;
79733 l_array_source_4      t_array_source_4;
79734 l_array_source_5      t_array_source_5;
79735 l_array_source_6      t_array_source_6;
79736 l_array_source_7      t_array_source_7;
79737 l_array_source_22      t_array_source_22;
79738 l_array_source_23      t_array_source_23;
79739 l_array_source_25      t_array_source_25;
79740 l_array_source_27      t_array_source_27;
79741 l_array_source_28      t_array_source_28;
79742 l_array_source_29      t_array_source_29;
79743 l_array_source_30      t_array_source_30;
79744 l_array_source_31      t_array_source_31;
79745 l_array_source_33      t_array_source_33;
79746 l_array_source_34      t_array_source_34;
79747 l_array_source_34_meaning      t_array_lookup_meaning;
79748 l_array_source_35      t_array_source_35;
79749 l_array_source_44      t_array_source_44;
79750 l_array_source_45      t_array_source_45;
79751 l_array_source_46      t_array_source_46;
79752 l_array_source_47      t_array_source_47;
79753 l_array_source_48      t_array_source_48;
79754 l_array_source_49      t_array_source_49;
79755 l_array_source_50      t_array_source_50;
79756 l_array_source_51      t_array_source_51;
79757 l_array_source_52      t_array_source_52;
79758 l_array_source_54      t_array_source_54;
79759 l_array_source_55      t_array_source_55;
79760 l_array_source_56      t_array_source_56;
79761 l_array_source_57      t_array_source_57;
79762 l_array_source_70      t_array_source_70;
79763 l_array_source_70_meaning      t_array_lookup_meaning;
79764 l_array_source_71      t_array_source_71;
79765 l_array_source_72      t_array_source_72;
79766 l_array_source_73      t_array_source_73;
79767 l_array_source_74      t_array_source_74;
79768 l_array_source_75      t_array_source_75;
79769 l_array_source_76      t_array_source_76;
79770 l_array_source_77      t_array_source_77;
79771 l_array_source_78      t_array_source_78;
79772 l_array_source_79      t_array_source_79;
79773 l_array_source_80      t_array_source_80;
79774 l_array_source_81      t_array_source_81;
79775 l_array_source_82      t_array_source_82;
79776 l_array_source_83      t_array_source_83;
79777 l_array_source_84      t_array_source_84;
79778 l_array_source_85      t_array_source_85;
79779 l_array_source_86      t_array_source_86;
79780 l_array_source_87      t_array_source_87;
79781 
79782 --
79783 CURSOR header_cur
79784 IS
79785 SELECT /*+ leading(xet) cardinality(xet,1) */
79786 -- Event Class Code: TOT_BURDENED_COST_ADJ
79787     xet.entity_id
79788    ,xet.legal_entity_id
79789    ,xet.entity_code
79790    ,xet.transaction_number
79791    ,xet.event_id
79792    ,xet.event_class_code
79793    ,xet.event_type_code
79794    ,xet.event_number
79795    ,xet.event_date
79796    ,xet.transaction_date
79797    ,xet.reference_num_1
79801    ,xet.reference_char_1
79798    ,xet.reference_num_2
79799    ,xet.reference_num_3
79800    ,xet.reference_num_4
79802    ,xet.reference_char_2
79803    ,xet.reference_char_3
79804    ,xet.reference_char_4
79805    ,xet.reference_date_1
79806    ,xet.reference_date_2
79807    ,xet.reference_date_3
79808    ,xet.reference_date_4
79809    ,xet.event_created_by
79810    ,xet.budgetary_control_flag 
79811   , h2.EXPENDITURE_ITEM_ID    source_32
79812   , h2.SYSTEM_LINKAGE_FUNCTION    source_37
79813   , h2.GL_DATE    source_88
79814   FROM xla_events_gt     xet 
79815   , PA_XLA_EXP_HEADER_V  h2
79816  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
79817    and xet.event_class_code = C_EVENT_CLASS_CODE
79818    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
79819 
79820  ORDER BY event_id
79821 ;
79822 
79823 
79824 --
79825 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
79826 IS
79827 SELECT  /*+ leading(xet) cardinality(xet,1) */
79828 -- Event Class Code: TOT_BURDENED_COST_ADJ
79829     xet.entity_id
79830    ,xet.legal_entity_id
79831    ,xet.entity_code
79832    ,xet.transaction_number
79833    ,xet.event_id
79834    ,xet.event_class_code
79835    ,xet.event_type_code
79836    ,xet.event_number
79837    ,xet.event_date
79838    ,xet.transaction_date
79839    ,xet.reference_num_1
79840    ,xet.reference_num_2
79841    ,xet.reference_num_3
79842    ,xet.reference_num_4
79843    ,xet.reference_char_1
79844    ,xet.reference_char_2
79845    ,xet.reference_char_3
79846    ,xet.reference_char_4
79847    ,xet.reference_date_1
79848    ,xet.reference_date_2
79849    ,xet.reference_date_3
79850    ,xet.reference_date_4
79851    ,xet.event_created_by
79852    ,xet.budgetary_control_flag
79853  , l1.LINE_NUMBER  
79854   , l1.BUDGET_CCID    source_2
79855   , l1.COST_CCID    source_3
79856   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
79857   , l1.ADJ_COST_CCID    source_5
79858   , l1.COST_CLEARING_CCID    source_6
79859   , l1.ADJ_COST_CLEARING_CCID    source_7
79860   , l1.REVERSING_LINE_FLAG    source_22
79861   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
79862   , l1.ENTERED_CURRENCY_CODE    source_25
79863   , l1.EXCHANGE_RATE_DATE    source_27
79864   , l1.EXCHANGE_RATE    source_28
79865   , l1.EXCHANGE_RATE_TYPE    source_29
79866   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
79867   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
79868   , l1.LINE_NUMBER    source_33
79869   , l1.LINE_TYPE    source_34
79870   , fvl34.meaning   source_34_meaning
79871   , l1.LINE_NUM_REVERSED    source_35
79872   , l1.ENTERED_BURDENED_COST    source_44
79873   , l1.ACCT_BURDENED_COST    source_45
79874   , l1.ENCUMBRANCE_AMOUNT    source_46
79875   , l1.PA_APPLICATION_ID    source_47
79876   , l1.PA_DISTRIBUTION_TYPE    source_48
79877   , l1.PA_ENTITY_CODE    source_49
79878   , l1.PA_FIRST_DIST_ID    source_50
79879   , l1.PA_FIRST_SYS_TRANS_ID    source_51
79880   , l1.PA_SECOND_DIST_ID    source_52
79881   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
79882   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
79883   , l1.ENCUMBRANCE_TYPE_ID    source_56
79884   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
79885   , l1.DOCUMENT_TYPE    source_70
79886   , fvl70.meaning   source_70_meaning
79887   , l1.ENC_JE_LINES_REVERSED_FLAG    source_71
79888   , l1.PO_RELEASE_ID    source_72
79889   , l1.CWK_RATE_BASED_TC_FLAG    source_73
79890   , l1.INVOICE_APPLICATION_ID    source_74
79891   , l1.INVOICE_DISTRIBUTION_TYPE    source_75
79892   , l1.INVOICE_ENTITY_CODE    source_76
79893   , l1.INVOICE_FIRST_DIST_ID    source_77
79894   , l1.INVOICE_FIRST_SYS_TRANS_ID    source_78
79895   , l1.INVOICE_SECOND_DIST_ID    source_79
79896   , l1.PO_APPLICATION_ID    source_80
79897   , l1.PO_DISTRIBUTION_TYPE    source_81
79898   , l1.PO_ENTITY_CODE    source_82
79899   , l1.PO_FIRST_DIST_ID    source_83
79900   , l1.PO_FIRST_SYS_TRANS_ID    source_84
79901   , l1.PO_SECOND_DIST_ID    source_85
79902   , l1.ENC_ACCT_ENABLED    source_86
79903   , l1.LIQUIDATE_ENCUM_FLAG    source_87
79904   FROM xla_events_gt     xet 
79905   , PA_XLA_CDL_LINES_V  l1
79906   , fnd_lookup_values    fvl34
79907   , fnd_lookup_values    fvl70
79908  WHERE xet.event_id between x_first_event_id and x_last_event_id
79909    and xet.event_date between p_pad_start_date and p_pad_end_date
79910    and xet.event_class_code = C_EVENT_CLASS_CODE
79911    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
79912    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
79913   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
79914   AND fvl34.view_application_id(+) = 275
79915   AND fvl34.language(+)            = USERENV('LANG')
79916      AND fvl70.lookup_type(+)         = 'FC_DOC_TYPE'
79917   AND fvl70.lookup_code(+)         = l1.DOCUMENT_TYPE
79918   AND fvl70.view_application_id(+) = 275
79919   AND fvl70.language(+)            = USERENV('LANG')
79920   ;
79921 
79922 --
79923 BEGIN
79924 IF g_log_enabled THEN
79925    l_log_module := C_DEFAULT_MODULE||'.EventClass_127';
79926 END IF;
79927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79928    trace
79929       (p_msg      => 'BEGIN of EventClass_127'
79930       ,p_level    => C_LEVEL_PROCEDURE
79931       ,p_module   => l_log_module);
79932 END IF;
79933 
79934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79935    trace
79936       (p_msg      => 'p_application_id = '||p_application_id||
79937                      ' - p_base_ledger_id = '||p_base_ledger_id||
79938                      ' - p_target_ledger_id  = '||p_target_ledger_id||
79939                      ' - p_language = '||p_language||
79940                      ' - p_currency_code = '||p_currency_code||
79941                      ' - p_sla_ledger_id = '||p_sla_ledger_id
79945 --
79942       ,p_level    => C_LEVEL_STATEMENT
79943       ,p_module   => l_log_module);
79944 END IF;
79946 -- initialze arrays
79947 --
79948 g_array_event.DELETE;
79949 l_rec_array_event := l_null_rec_array_event;
79950 --
79951 --------------------------------------
79952 -- 4262811 Initialze MPA Line Number
79953 --------------------------------------
79954 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
79955 
79956 --
79957 
79958 --
79959 OPEN header_cur;
79960 --
79961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79962    trace
79963    (p_msg      => 'SQL - FETCH header_cur'
79964    ,p_level    => C_LEVEL_STATEMENT
79965    ,p_module   => l_log_module);
79966 END IF;
79967 --
79968 LOOP
79969 FETCH header_cur BULK COLLECT INTO
79970         l_array_entity_id
79971       , l_array_legal_entity_id
79972       , l_array_entity_code
79973       , l_array_transaction_num
79974       , l_array_event_id
79975       , l_array_class_code
79976       , l_array_event_type
79977       , l_array_event_number
79978       , l_array_event_date
79979       , l_array_transaction_date
79980       , l_array_reference_num_1
79981       , l_array_reference_num_2
79982       , l_array_reference_num_3
79983       , l_array_reference_num_4
79984       , l_array_reference_char_1
79985       , l_array_reference_char_2
79986       , l_array_reference_char_3
79987       , l_array_reference_char_4
79988       , l_array_reference_date_1
79989       , l_array_reference_date_2
79990       , l_array_reference_date_3
79991       , l_array_reference_date_4
79992       , l_array_event_created_by
79993       , l_array_budgetary_control_flag 
79994       , l_array_source_32
79995       , l_array_source_37
79996       , l_array_source_88
79997       LIMIT l_rows;
79998 --
79999 IF (C_LEVEL_EVENT >= g_log_level) THEN
80000    trace
80001    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
80002    ,p_level    => C_LEVEL_EVENT
80003    ,p_module   => l_log_module);
80004 END IF;
80005 --
80006 EXIT WHEN l_array_entity_id.COUNT = 0;
80007 
80008 -- initialize arrays
80009 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
80010 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
80011 
80012 --
80013 -- Bug 4458708
80014 --
80015 XLA_AE_LINES_PKG.g_LineNumber := 0;
80016 
80017 
80018 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
80019 g_last_hdr_idx := l_array_event_id.LAST;
80020 --
80021 -- loop for the headers. Each iteration is for each header extract row
80022 -- fetched in header cursor
80023 --
80024 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
80025 
80026 --
80027 -- set event info as cache for other routines to refer event attributes
80028 --
80029 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80030    (p_application_id           => p_application_id
80031    ,p_primary_ledger_id        => p_primary_ledger_id
80032    ,p_base_ledger_id           => p_base_ledger_id
80033    ,p_target_ledger_id         => p_target_ledger_id
80034    ,p_entity_id                => l_array_entity_id(hdr_idx)
80035    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
80036    ,p_entity_code              => l_array_entity_code(hdr_idx)
80037    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
80038    ,p_event_id                 => l_array_event_id(hdr_idx)
80039    ,p_event_class_code         => l_array_class_code(hdr_idx)
80040    ,p_event_type_code          => l_array_event_type(hdr_idx)
80041    ,p_event_number             => l_array_event_number(hdr_idx)
80042    ,p_event_date               => l_array_event_date(hdr_idx)
80043    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
80044    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
80045    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
80046    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
80047    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
80048    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
80049    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
80050    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
80051    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
80052    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
80053    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
80054    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
80055    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
80056    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
80057    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
80058 
80059 --
80060 -- set the status of entry to C_VALID (0)
80061 --
80062 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80063 
80064 --
80065 -- initialize a row for ae header
80066 --
80067 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
80068 
80069 l_event_id := l_array_event_id(hdr_idx);
80070 
80071 --
80072 -- storing the hdr_idx for event. May be used by line cursor.
80073 --
80074 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
80075 
80076 --
80077 -- store sources from header extract. This can be improved to
80078 -- store only those sources from header extract that may be used in lines
80079 --
80080 
80081 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
80082 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
80083 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
80084 
80085 --
80089 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80086 -- initilaize the status of ae headers for diffrent balance types
80087 -- the status is initialised to C_NOT_CREATED (2)
80088 --
80090 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80091 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80092 
80093 --
80094 -- call api to validate and store accounting attributes for header
80095 --
80096 
80097 ------------------------------------------------------------
80098 -- Accrual Reversal : to get date for Standard Source (NONE)
80099 ------------------------------------------------------------
80100 l_acc_rev_gl_date_source := NULL;
80101 
80102      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
80103       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
80104 
80105 
80106 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
80107 
80108 XLA_AE_HEADER_PKG.SetJeCategoryName;
80109 
80110 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
80111 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
80112 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
80113 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
80114 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
80115 
80116 
80117 -- No header level analytical criteria
80118 
80119 --
80120 --accounting attribute enhancement, bug 3612931
80121 --
80122 l_trx_reversal_source := SUBSTR(NULL, 1,30);
80123 
80124 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
80125    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80126 
80127    xla_accounting_err_pkg.build_message
80128       (p_appli_s_name            => 'XLA'
80129       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
80130       ,p_token_1                 => 'ACCT_ATTR_NAME'
80131       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
80132       ,p_token_2                 => 'PRODUCT_NAME'
80133       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80134       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80135       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80136       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80137 
80138 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
80139    --
80140    -- following sets the accounting attributes needed to reverse
80141    -- accounting for a distributeion
80142    --
80143    xla_ae_lines_pkg.SetTrxReversalAttrs
80144       (p_event_id              => l_event_id
80145       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
80146       ,p_trx_reversal_source   => l_trx_reversal_source);
80147 
80148 END IF;
80149 
80150 
80151 ----------------------------------------------------------------
80152 -- 4262811 -  update the header statuses to invalid in need be
80153 ----------------------------------------------------------------
80154 --
80155 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
80156 
80157 
80158   -----------------------------------------------
80159   -- No accrual reversal for the event class/type
80160   -----------------------------------------------
80161 ----------------------------------------------------------------
80162 
80163 --
80164 -- this ends the header loop iteration for one bulk fetch
80165 --
80166 END LOOP;
80167 
80168 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
80169 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
80170 
80171 --
80172 -- insert dummy rows into lines gt table that were created due to
80173 -- transaction reversals
80174 --
80175 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
80176    l_result := XLA_AE_LINES_PKG.InsertLines;
80177 END IF;
80178 
80179 --
80180 -- reset the temp_line_num for each set of events fetched from header
80181 -- cursor rather than doing it for each new event in line cursor
80182 -- Bug 3939231
80183 --
80184 xla_ae_lines_pkg.g_temp_line_num := 0;
80185 
80186 
80187 
80188 --
80189 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
80190 --
80191 --
80192 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80193 
80194       trace
80195          (p_msg      => 'SQL - FETCH line_cur'
80196          ,p_level    => C_LEVEL_STATEMENT
80197          ,p_module   => l_log_module);
80198 
80199 END IF;
80200 --
80201 --
80202 LOOP
80203   --
80204   FETCH line_cur BULK COLLECT INTO
80205         l_array_entity_id
80206       , l_array_legal_entity_id
80207       , l_array_entity_code
80208       , l_array_transaction_num
80209       , l_array_event_id
80210       , l_array_class_code
80211       , l_array_event_type
80212       , l_array_event_number
80213       , l_array_event_date
80214       , l_array_transaction_date
80215       , l_array_reference_num_1
80216       , l_array_reference_num_2
80217       , l_array_reference_num_3
80218       , l_array_reference_num_4
80219       , l_array_reference_char_1
80220       , l_array_reference_char_2
80221       , l_array_reference_char_3
80222       , l_array_reference_char_4
80223       , l_array_reference_date_1
80224       , l_array_reference_date_2
80225       , l_array_reference_date_3
80226       , l_array_reference_date_4
80230       , l_array_source_2
80227       , l_array_event_created_by
80228       , l_array_budgetary_control_flag
80229       , l_array_extract_line_num 
80231       , l_array_source_3
80232       , l_array_source_4
80233       , l_array_source_5
80234       , l_array_source_6
80235       , l_array_source_7
80236       , l_array_source_22
80237       , l_array_source_23
80238       , l_array_source_25
80239       , l_array_source_27
80240       , l_array_source_28
80241       , l_array_source_29
80242       , l_array_source_30
80243       , l_array_source_31
80244       , l_array_source_33
80245       , l_array_source_34
80246       , l_array_source_34_meaning
80247       , l_array_source_35
80248       , l_array_source_44
80249       , l_array_source_45
80250       , l_array_source_46
80251       , l_array_source_47
80252       , l_array_source_48
80253       , l_array_source_49
80254       , l_array_source_50
80255       , l_array_source_51
80256       , l_array_source_52
80257       , l_array_source_54
80258       , l_array_source_55
80259       , l_array_source_56
80260       , l_array_source_57
80261       , l_array_source_70
80262       , l_array_source_70_meaning
80263       , l_array_source_71
80264       , l_array_source_72
80265       , l_array_source_73
80266       , l_array_source_74
80267       , l_array_source_75
80268       , l_array_source_76
80269       , l_array_source_77
80270       , l_array_source_78
80271       , l_array_source_79
80272       , l_array_source_80
80273       , l_array_source_81
80274       , l_array_source_82
80275       , l_array_source_83
80276       , l_array_source_84
80277       , l_array_source_85
80278       , l_array_source_86
80279       , l_array_source_87
80280       LIMIT l_rows;
80281 
80282   --
80283   IF (C_LEVEL_EVENT >= g_log_level) THEN
80284             trace
80285                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
80286                ,p_level    => C_LEVEL_EVENT
80287                ,p_module   => l_log_module);
80288   END IF;
80289   --
80290   EXIT WHEN l_array_entity_id.count = 0;
80291 
80292   XLA_AE_LINES_PKG.g_rec_lines := null;
80293 
80294 --
80295 -- Bug 4458708
80296 --
80297 XLA_AE_LINES_PKG.g_LineNumber := 0;
80298 --
80299 --
80300 
80301 FOR Idx IN 1..l_array_event_id.count LOOP
80302    --
80303    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
80304    --
80305    l_event_id := l_array_event_id(idx);  -- 5648433
80306 
80307    --
80308    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
80309    --
80310 
80311    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
80312              (g_array_event(l_event_id).array_value_num('header_index'))
80313          ,'N'
80314          ) <> 'Y'
80315    THEN
80316       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80317          trace
80318             (p_msg      => 'Trancaction revesal option is not Y '
80319             ,p_level    => C_LEVEL_STATEMENT
80320             ,p_module   => l_log_module);
80321       END IF;
80322 
80323 --
80324 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
80325 --
80326 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80327 --
80328 -- set event info as cache for other routines to refer event attributes
80329 --
80330 
80331 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
80332    l_previous_event_id := l_event_id;
80333 
80334    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80335       (p_application_id           => p_application_id
80336       ,p_primary_ledger_id        => p_primary_ledger_id
80337       ,p_base_ledger_id           => p_base_ledger_id
80338       ,p_target_ledger_id         => p_target_ledger_id
80339       ,p_entity_id                => l_array_entity_id(Idx)
80340       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
80341       ,p_entity_code              => l_array_entity_code(Idx)
80342       ,p_transaction_num          => l_array_transaction_num(Idx)
80343       ,p_event_id                 => l_array_event_id(Idx)
80344       ,p_event_class_code         => l_array_class_code(Idx)
80345       ,p_event_type_code          => l_array_event_type(Idx)
80346       ,p_event_number             => l_array_event_number(Idx)
80347       ,p_event_date               => l_array_event_date(Idx)
80348       ,p_transaction_date         => l_array_transaction_date(Idx)
80349       ,p_reference_num_1          => l_array_reference_num_1(Idx)
80350       ,p_reference_num_2          => l_array_reference_num_2(Idx)
80351       ,p_reference_num_3          => l_array_reference_num_3(Idx)
80352       ,p_reference_num_4          => l_array_reference_num_4(Idx)
80353       ,p_reference_char_1         => l_array_reference_char_1(Idx)
80354       ,p_reference_char_2         => l_array_reference_char_2(Idx)
80355       ,p_reference_char_3         => l_array_reference_char_3(Idx)
80356       ,p_reference_char_4         => l_array_reference_char_4(Idx)
80357       ,p_reference_date_1         => l_array_reference_date_1(Idx)
80358       ,p_reference_date_2         => l_array_reference_date_2(Idx)
80359       ,p_reference_date_3         => l_array_reference_date_3(Idx)
80360       ,p_reference_date_4         => l_array_reference_date_4(Idx)
80361       ,p_event_created_by         => l_array_event_created_by(Idx)
80362       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
80363        --
80364 END IF;
80365 
80366 
80367 
80368 --
80369 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
80370 
80371 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
80372 
80373 IF l_continue_with_lines THEN
80377       xla_accounting_err_pkg.build_message
80374    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
80375       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80376 
80378          (p_appli_s_name            => 'XLA'
80379          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
80380          ,p_token_1                 => 'LINE_NUMBER'
80381          ,p_value_1                 => l_array_extract_line_num(Idx)
80382          ,p_token_2                 => 'PRODUCT_NAME'
80383          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80384          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80385          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80386          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80387 
80388    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
80389       --
80390       -- following sets the accounting attributes needed to reverse
80391       -- accounting for a distributeion
80392       --
80393 
80394       --
80395       -- 5217187
80396       --
80397       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
80398       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
80399                                        g_array_event(l_event_id).array_value_num('header_index'));
80400       --
80401       --
80402 
80403       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
80404       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
80405       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
80406       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
80407       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
80408       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
80409       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
80410       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
80411       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
80412       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
80413       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
80414       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
80415       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
80416       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
80417       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
80418       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
80419       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
80420       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
80421       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
80422       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
80423       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
80424       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
80425       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
80426       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
80427       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
80428       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
80429       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
80430       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
80431       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
80432       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
80433       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
80434       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
80435       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
80436       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
80437       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
80438       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
80439       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
80440       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
80441       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
80442       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
80443       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
80444       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
80445       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ACCT_CLASS';
80446       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_54(Idx);
80447       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_CCID';
80448       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
80449       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_AMT';
80450       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
80451       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_ENTERED_CURR';
80452       l_rec_rev_acct_attrs.array_char_value(26)  := 
80453 xla_ae_sources_pkg.GetSystemSourceChar(
80454    p_source_code           => 'XLA_CURRENCY_CODE'
80455  , p_source_type_code      => 'Y'
80456  , p_source_application_id =>  602
80457 );
80458       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_DR_LEDGER_AMT';
80459       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
80460       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_OPTION';
80461       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_55(Idx);
80462       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
80466       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
80463       l_rec_rev_acct_attrs.array_num_value(29)  := g_array_event(l_event_id).array_value_num('source_32');
80464       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID2';
80465       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_35(Idx);
80467       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_34(Idx);
80468       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'UPG_CR_ENC_TYPE_ID';
80469       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_56(Idx);
80470       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'UPG_DR_ENC_TYPE_ID';
80471       l_rec_rev_acct_attrs.array_num_value(33)  := l_array_source_57(Idx);
80472 
80473 
80474       xla_ae_lines_pkg.SetAcctReversalAttrs
80475          (p_event_id             => l_event_id
80476          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
80477          ,p_calculate_acctd_flag => l_calculate_acctd_flag
80478          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
80479    END IF;
80480 
80481    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
80482        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
80483 
80484 --
80485 AcctLineType_79 (
80486  p_application_id  => p_application_id
80487  ,p_event_id     => l_event_id
80488  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80489  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80490  ,p_actual_flag => l_actual_flag
80491  ,p_balance_type_code => l_balance_type_code
80492  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80493  
80494  , p_source_2 => l_array_source_2(Idx)
80495  , p_source_3 => l_array_source_3(Idx)
80496  , p_source_4 => l_array_source_4(Idx)
80497  , p_source_5 => l_array_source_5(Idx)
80498  , p_source_6 => l_array_source_6(Idx)
80499  , p_source_22 => l_array_source_22(Idx)
80500  , p_source_23 => l_array_source_23(Idx)
80501  , p_source_25 => l_array_source_25(Idx)
80502  , p_source_27 => l_array_source_27(Idx)
80503  , p_source_28 => l_array_source_28(Idx)
80504  , p_source_29 => l_array_source_29(Idx)
80505  , p_source_30 => l_array_source_30(Idx)
80506  , p_source_31 => l_array_source_31(Idx)
80507  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80508  , p_source_33 => l_array_source_33(Idx)
80509  , p_source_34 => l_array_source_34(Idx)
80510  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80511  , p_source_35 => l_array_source_35(Idx)
80512  , p_source_44 => l_array_source_44(Idx)
80513  , p_source_45 => l_array_source_45(Idx)
80514  , p_source_46 => l_array_source_46(Idx)
80515  , p_source_47 => l_array_source_47(Idx)
80516  , p_source_48 => l_array_source_48(Idx)
80517  , p_source_49 => l_array_source_49(Idx)
80518  , p_source_50 => l_array_source_50(Idx)
80519  , p_source_51 => l_array_source_51(Idx)
80520  , p_source_52 => l_array_source_52(Idx)
80521  , p_source_54 => l_array_source_54(Idx)
80522  , p_source_55 => l_array_source_55(Idx)
80523  , p_source_56 => l_array_source_56(Idx)
80524  , p_source_57 => l_array_source_57(Idx)
80525  );
80526 If(l_balance_type_code = 'A') THEN
80527   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80528 END IF;
80529 
80530 --
80531 
80532 
80533 --
80534 AcctLineType_81 (
80535  p_application_id  => p_application_id
80536  ,p_event_id     => l_event_id
80537  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80538  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80539  ,p_actual_flag => l_actual_flag
80540  ,p_balance_type_code => l_balance_type_code
80541  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80542  
80543  , p_source_2 => l_array_source_2(Idx)
80544  , p_source_3 => l_array_source_3(Idx)
80545  , p_source_4 => l_array_source_4(Idx)
80546  , p_source_6 => l_array_source_6(Idx)
80547  , p_source_7 => l_array_source_7(Idx)
80548  , p_source_22 => l_array_source_22(Idx)
80549  , p_source_23 => l_array_source_23(Idx)
80550  , p_source_25 => l_array_source_25(Idx)
80551  , p_source_27 => l_array_source_27(Idx)
80552  , p_source_28 => l_array_source_28(Idx)
80553  , p_source_29 => l_array_source_29(Idx)
80554  , p_source_30 => l_array_source_30(Idx)
80555  , p_source_31 => l_array_source_31(Idx)
80556  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80557  , p_source_33 => l_array_source_33(Idx)
80558  , p_source_34 => l_array_source_34(Idx)
80559  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80560  , p_source_35 => l_array_source_35(Idx)
80561  , p_source_44 => l_array_source_44(Idx)
80562  , p_source_45 => l_array_source_45(Idx)
80563  , p_source_46 => l_array_source_46(Idx)
80564  , p_source_47 => l_array_source_47(Idx)
80565  , p_source_48 => l_array_source_48(Idx)
80566  , p_source_49 => l_array_source_49(Idx)
80567  , p_source_50 => l_array_source_50(Idx)
80568  , p_source_51 => l_array_source_51(Idx)
80569  , p_source_52 => l_array_source_52(Idx)
80570  , p_source_54 => l_array_source_54(Idx)
80571  , p_source_55 => l_array_source_55(Idx)
80572  , p_source_56 => l_array_source_56(Idx)
80573  , p_source_57 => l_array_source_57(Idx)
80574  );
80575 If(l_balance_type_code = 'A') THEN
80576   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80577 END IF;
80578 
80579 --
80580 
80581 
80582 --
80583 AcctLineType_89 (
80584  p_application_id  => p_application_id
80585  ,p_event_id     => l_event_id
80586  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80587  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80588  ,p_actual_flag => l_actual_flag
80589  ,p_balance_type_code => l_balance_type_code
80590  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80591  
80592  , p_source_2 => l_array_source_2(Idx)
80593  , p_source_3 => l_array_source_3(Idx)
80594  , p_source_6 => l_array_source_6(Idx)
80595  , p_source_22 => l_array_source_22(Idx)
80596  , p_source_23 => l_array_source_23(Idx)
80597  , p_source_25 => l_array_source_25(Idx)
80601  , p_source_30 => l_array_source_30(Idx)
80598  , p_source_27 => l_array_source_27(Idx)
80599  , p_source_28 => l_array_source_28(Idx)
80600  , p_source_29 => l_array_source_29(Idx)
80602  , p_source_31 => l_array_source_31(Idx)
80603  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80604  , p_source_33 => l_array_source_33(Idx)
80605  , p_source_34 => l_array_source_34(Idx)
80606  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80607  , p_source_35 => l_array_source_35(Idx)
80608  , p_source_44 => l_array_source_44(Idx)
80609  , p_source_45 => l_array_source_45(Idx)
80610  , p_source_46 => l_array_source_46(Idx)
80611  , p_source_47 => l_array_source_47(Idx)
80612  , p_source_48 => l_array_source_48(Idx)
80613  , p_source_49 => l_array_source_49(Idx)
80614  , p_source_50 => l_array_source_50(Idx)
80615  , p_source_51 => l_array_source_51(Idx)
80616  , p_source_52 => l_array_source_52(Idx)
80617  , p_source_54 => l_array_source_54(Idx)
80618  , p_source_55 => l_array_source_55(Idx)
80619  , p_source_56 => l_array_source_56(Idx)
80620  , p_source_57 => l_array_source_57(Idx)
80621  );
80622 If(l_balance_type_code = 'A') THEN
80623   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80624 END IF;
80625 
80626 --
80627 
80628 
80629 --
80630 AcctLineType_92 (
80631  p_application_id  => p_application_id
80632  ,p_event_id     => l_event_id
80633  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80634  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80635  ,p_actual_flag => l_actual_flag
80636  ,p_balance_type_code => l_balance_type_code
80637  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80638  
80639  , p_source_2 => l_array_source_2(Idx)
80640  , p_source_3 => l_array_source_3(Idx)
80641  , p_source_6 => l_array_source_6(Idx)
80642  , p_source_22 => l_array_source_22(Idx)
80643  , p_source_23 => l_array_source_23(Idx)
80644  , p_source_25 => l_array_source_25(Idx)
80645  , p_source_27 => l_array_source_27(Idx)
80646  , p_source_28 => l_array_source_28(Idx)
80647  , p_source_29 => l_array_source_29(Idx)
80648  , p_source_30 => l_array_source_30(Idx)
80649  , p_source_31 => l_array_source_31(Idx)
80650  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80651  , p_source_33 => l_array_source_33(Idx)
80652  , p_source_34 => l_array_source_34(Idx)
80653  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80654  , p_source_35 => l_array_source_35(Idx)
80655  , p_source_44 => l_array_source_44(Idx)
80656  , p_source_45 => l_array_source_45(Idx)
80657  , p_source_46 => l_array_source_46(Idx)
80658  , p_source_47 => l_array_source_47(Idx)
80659  , p_source_48 => l_array_source_48(Idx)
80660  , p_source_49 => l_array_source_49(Idx)
80661  , p_source_50 => l_array_source_50(Idx)
80662  , p_source_51 => l_array_source_51(Idx)
80663  , p_source_52 => l_array_source_52(Idx)
80664  , p_source_54 => l_array_source_54(Idx)
80665  , p_source_55 => l_array_source_55(Idx)
80666  , p_source_56 => l_array_source_56(Idx)
80667  , p_source_57 => l_array_source_57(Idx)
80668  , p_source_70 => l_array_source_70(Idx)
80669  , p_source_70_meaning => l_array_source_70_meaning(Idx)
80670  , p_source_71 => l_array_source_71(Idx)
80671  );
80672 If(l_balance_type_code = 'A') THEN
80673   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80674 END IF;
80675 
80676 --
80677 
80678 
80679 --
80680 AcctLineType_95 (
80681  p_application_id  => p_application_id
80682  ,p_event_id     => l_event_id
80683  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80684  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80685  ,p_actual_flag => l_actual_flag
80686  ,p_balance_type_code => l_balance_type_code
80687  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80688  
80689  , p_source_2 => l_array_source_2(Idx)
80690  , p_source_3 => l_array_source_3(Idx)
80691  , p_source_6 => l_array_source_6(Idx)
80692  , p_source_22 => l_array_source_22(Idx)
80693  , p_source_23 => l_array_source_23(Idx)
80694  , p_source_25 => l_array_source_25(Idx)
80695  , p_source_27 => l_array_source_27(Idx)
80696  , p_source_28 => l_array_source_28(Idx)
80697  , p_source_29 => l_array_source_29(Idx)
80698  , p_source_30 => l_array_source_30(Idx)
80699  , p_source_31 => l_array_source_31(Idx)
80700  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80701  , p_source_33 => l_array_source_33(Idx)
80702  , p_source_34 => l_array_source_34(Idx)
80703  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80704  , p_source_35 => l_array_source_35(Idx)
80705  , p_source_44 => l_array_source_44(Idx)
80706  , p_source_45 => l_array_source_45(Idx)
80707  , p_source_46 => l_array_source_46(Idx)
80708  , p_source_47 => l_array_source_47(Idx)
80709  , p_source_48 => l_array_source_48(Idx)
80710  , p_source_49 => l_array_source_49(Idx)
80711  , p_source_50 => l_array_source_50(Idx)
80712  , p_source_51 => l_array_source_51(Idx)
80713  , p_source_52 => l_array_source_52(Idx)
80714  , p_source_54 => l_array_source_54(Idx)
80715  , p_source_55 => l_array_source_55(Idx)
80716  , p_source_56 => l_array_source_56(Idx)
80717  , p_source_57 => l_array_source_57(Idx)
80718  , p_source_70 => l_array_source_70(Idx)
80719  , p_source_70_meaning => l_array_source_70_meaning(Idx)
80720  , p_source_72 => l_array_source_72(Idx)
80721  , p_source_73 => l_array_source_73(Idx)
80722  );
80723 If(l_balance_type_code = 'A') THEN
80724   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80725 END IF;
80726 
80727 --
80728 
80729 
80730 --
80731 AcctLineType_99 (
80732  p_application_id  => p_application_id
80733  ,p_event_id     => l_event_id
80734  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80735  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80736  ,p_actual_flag => l_actual_flag
80737  ,p_balance_type_code => l_balance_type_code
80738  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80739  
80743  , p_source_22 => l_array_source_22(Idx)
80740  , p_source_2 => l_array_source_2(Idx)
80741  , p_source_3 => l_array_source_3(Idx)
80742  , p_source_6 => l_array_source_6(Idx)
80744  , p_source_23 => l_array_source_23(Idx)
80745  , p_source_25 => l_array_source_25(Idx)
80746  , p_source_27 => l_array_source_27(Idx)
80747  , p_source_28 => l_array_source_28(Idx)
80748  , p_source_29 => l_array_source_29(Idx)
80749  , p_source_30 => l_array_source_30(Idx)
80750  , p_source_31 => l_array_source_31(Idx)
80751  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80752  , p_source_33 => l_array_source_33(Idx)
80753  , p_source_34 => l_array_source_34(Idx)
80754  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80755  , p_source_35 => l_array_source_35(Idx)
80756  , p_source_44 => l_array_source_44(Idx)
80757  , p_source_45 => l_array_source_45(Idx)
80758  , p_source_46 => l_array_source_46(Idx)
80759  , p_source_54 => l_array_source_54(Idx)
80760  , p_source_55 => l_array_source_55(Idx)
80761  , p_source_56 => l_array_source_56(Idx)
80762  , p_source_57 => l_array_source_57(Idx)
80763  , p_source_70 => l_array_source_70(Idx)
80764  , p_source_70_meaning => l_array_source_70_meaning(Idx)
80765  , p_source_71 => l_array_source_71(Idx)
80766  , p_source_74 => l_array_source_74(Idx)
80767  , p_source_75 => l_array_source_75(Idx)
80768  , p_source_76 => l_array_source_76(Idx)
80769  , p_source_77 => l_array_source_77(Idx)
80770  , p_source_78 => l_array_source_78(Idx)
80771  , p_source_79 => l_array_source_79(Idx)
80772  );
80773 If(l_balance_type_code = 'A') THEN
80774   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80775 END IF;
80776 
80777 --
80778 
80779 
80780 --
80781 AcctLineType_101 (
80782  p_application_id  => p_application_id
80783  ,p_event_id     => l_event_id
80784  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80785  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80786  ,p_actual_flag => l_actual_flag
80787  ,p_balance_type_code => l_balance_type_code
80788  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80789  
80790  , p_source_2 => l_array_source_2(Idx)
80791  , p_source_3 => l_array_source_3(Idx)
80792  , p_source_6 => l_array_source_6(Idx)
80793  , p_source_22 => l_array_source_22(Idx)
80794  , p_source_23 => l_array_source_23(Idx)
80795  , p_source_25 => l_array_source_25(Idx)
80796  , p_source_27 => l_array_source_27(Idx)
80797  , p_source_28 => l_array_source_28(Idx)
80798  , p_source_29 => l_array_source_29(Idx)
80799  , p_source_30 => l_array_source_30(Idx)
80800  , p_source_31 => l_array_source_31(Idx)
80801  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80802  , p_source_33 => l_array_source_33(Idx)
80803  , p_source_34 => l_array_source_34(Idx)
80804  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80805  , p_source_35 => l_array_source_35(Idx)
80806  , p_source_44 => l_array_source_44(Idx)
80807  , p_source_45 => l_array_source_45(Idx)
80808  , p_source_46 => l_array_source_46(Idx)
80809  , p_source_54 => l_array_source_54(Idx)
80810  , p_source_55 => l_array_source_55(Idx)
80811  , p_source_56 => l_array_source_56(Idx)
80812  , p_source_57 => l_array_source_57(Idx)
80813  , p_source_70 => l_array_source_70(Idx)
80814  , p_source_70_meaning => l_array_source_70_meaning(Idx)
80815  , p_source_72 => l_array_source_72(Idx)
80816  , p_source_73 => l_array_source_73(Idx)
80817  , p_source_80 => l_array_source_80(Idx)
80818  , p_source_81 => l_array_source_81(Idx)
80819  , p_source_82 => l_array_source_82(Idx)
80820  , p_source_83 => l_array_source_83(Idx)
80821  , p_source_84 => l_array_source_84(Idx)
80822  , p_source_85 => l_array_source_85(Idx)
80823  );
80824 If(l_balance_type_code = 'A') THEN
80825   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80826 END IF;
80827 
80828 --
80829 
80830 
80831 --
80832 AcctLineType_104 (
80833  p_application_id  => p_application_id
80834  ,p_event_id     => l_event_id
80835  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80836  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80837  ,p_actual_flag => l_actual_flag
80838  ,p_balance_type_code => l_balance_type_code
80839  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80840  
80841  , p_source_2 => l_array_source_2(Idx)
80842  , p_source_3 => l_array_source_3(Idx)
80843  , p_source_6 => l_array_source_6(Idx)
80844  , p_source_22 => l_array_source_22(Idx)
80845  , p_source_23 => l_array_source_23(Idx)
80846  , p_source_25 => l_array_source_25(Idx)
80847  , p_source_27 => l_array_source_27(Idx)
80848  , p_source_28 => l_array_source_28(Idx)
80849  , p_source_29 => l_array_source_29(Idx)
80850  , p_source_30 => l_array_source_30(Idx)
80851  , p_source_31 => l_array_source_31(Idx)
80852  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80853  , p_source_33 => l_array_source_33(Idx)
80854  , p_source_34 => l_array_source_34(Idx)
80855  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80856  , p_source_35 => l_array_source_35(Idx)
80857  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
80858  , p_source_44 => l_array_source_44(Idx)
80859  , p_source_45 => l_array_source_45(Idx)
80860  , p_source_46 => l_array_source_46(Idx)
80861  , p_source_47 => l_array_source_47(Idx)
80862  , p_source_48 => l_array_source_48(Idx)
80863  , p_source_49 => l_array_source_49(Idx)
80864  , p_source_50 => l_array_source_50(Idx)
80865  , p_source_51 => l_array_source_51(Idx)
80866  , p_source_52 => l_array_source_52(Idx)
80867  , p_source_54 => l_array_source_54(Idx)
80868  , p_source_55 => l_array_source_55(Idx)
80869  , p_source_56 => l_array_source_56(Idx)
80870  , p_source_57 => l_array_source_57(Idx)
80871  , p_source_73 => l_array_source_73(Idx)
80872  , p_source_86 => l_array_source_86(Idx)
80873  , p_source_87 => l_array_source_87(Idx)
80874  );
80875 If(l_balance_type_code = 'A') THEN
80879 --
80876   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80877 END IF;
80878 
80880 
80881 
80882 --
80883 AcctLineType_108 (
80884  p_application_id  => p_application_id
80885  ,p_event_id     => l_event_id
80886  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80887  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80888  ,p_actual_flag => l_actual_flag
80889  ,p_balance_type_code => l_balance_type_code
80890  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80891  
80892  , p_source_2 => l_array_source_2(Idx)
80893  , p_source_3 => l_array_source_3(Idx)
80894  , p_source_6 => l_array_source_6(Idx)
80895  , p_source_22 => l_array_source_22(Idx)
80896  , p_source_23 => l_array_source_23(Idx)
80897  , p_source_25 => l_array_source_25(Idx)
80898  , p_source_27 => l_array_source_27(Idx)
80899  , p_source_28 => l_array_source_28(Idx)
80900  , p_source_29 => l_array_source_29(Idx)
80901  , p_source_30 => l_array_source_30(Idx)
80902  , p_source_31 => l_array_source_31(Idx)
80903  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80904  , p_source_33 => l_array_source_33(Idx)
80905  , p_source_34 => l_array_source_34(Idx)
80906  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80907  , p_source_35 => l_array_source_35(Idx)
80908  , p_source_44 => l_array_source_44(Idx)
80909  , p_source_45 => l_array_source_45(Idx)
80910  , p_source_46 => l_array_source_46(Idx)
80911  , p_source_54 => l_array_source_54(Idx)
80912  , p_source_55 => l_array_source_55(Idx)
80913  , p_source_56 => l_array_source_56(Idx)
80914  , p_source_57 => l_array_source_57(Idx)
80915  , p_source_70 => l_array_source_70(Idx)
80916  , p_source_70_meaning => l_array_source_70_meaning(Idx)
80917  , p_source_72 => l_array_source_72(Idx)
80918  , p_source_73 => l_array_source_73(Idx)
80919  , p_source_80 => l_array_source_80(Idx)
80920  , p_source_81 => l_array_source_81(Idx)
80921  , p_source_82 => l_array_source_82(Idx)
80922  , p_source_83 => l_array_source_83(Idx)
80923  , p_source_84 => l_array_source_84(Idx)
80924  , p_source_85 => l_array_source_85(Idx)
80925  );
80926 If(l_balance_type_code = 'A') THEN
80927   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80928 END IF;
80929 
80930 --
80931 
80932       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
80933       -- or secondary ledger that has different currency with primary
80934       -- or alc that is calculated by sla
80935       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
80936             (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'))
80937 
80938 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
80939 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
80940           AND (l_actual_flag = 'A')) THEN
80941         XLA_AE_LINES_PKG.CreateGainOrLossLines(
80942           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
80943          ,p_application_id   => p_application_id
80944          ,p_amb_context_code => 'DEFAULT'
80945          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
80946          ,p_event_class_code => C_EVENT_CLASS_CODE
80947          ,p_event_type_code  => C_EVENT_TYPE_CODE
80948          
80949          ,p_gain_ccid        => -1
80950          ,p_loss_ccid        => -1
80951 
80952          ,p_actual_flag      => l_actual_flag
80953          ,p_enc_flag         => null
80954          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
80955          ,p_enc_g_l_ref      => null
80956          );
80957       END IF;
80958    END IF;
80959 END IF;
80960 
80961    ELSE
80962       --
80963       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
80964       --
80965       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80966          trace
80967             (p_msg      => 'Trancaction revesal option is Y'
80968             ,p_level    => C_LEVEL_STATEMENT
80969             ,p_module   => l_log_module);
80970       END IF;
80971    END IF;
80972 
80973 END LOOP;
80974 l_result := XLA_AE_LINES_PKG.InsertLines ;
80975 end loop;
80976 close line_cur;
80977 
80978 
80979 --
80980 -- insert headers into xla_ae_headers_gt table
80981 --
80982 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
80983 
80984 -- insert into errors table here.
80985 
80986 END LOOP;
80987 
80988 --
80989 -- 4865292
80990 --
80991 -- Compare g_hdr_extract_count with event count in
80992 -- CreateHeadersAndLines.
80993 --
80994 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
80995 
80996 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80997    trace (p_msg     => '# rows extracted from header extract objects '
80998                     || ' (running total): '
80999                     || g_hdr_extract_count
81000          ,p_level   => C_LEVEL_STATEMENT
81001          ,p_module  => l_log_module);
81002 END IF;
81003 
81004 CLOSE header_cur;
81005 --
81006 
81007 --
81008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81009    trace
81010       (p_msg      => 'END of EventClass_127'
81011       ,p_level    => C_LEVEL_PROCEDURE
81012       ,p_module   => l_log_module);
81013 END IF;
81014 --
81015 RETURN l_result;
81016 EXCEPTION
81017 WHEN xla_exceptions_pkg.application_exception THEN
81018    
81019 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
81020 
81021    
81022 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
81023 
81024    RAISE;
81025 WHEN OTHERS THEN
81026    xla_exceptions_pkg.raise_message
81027       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_127');
81031 ---------------------------------------
81028 END EventClass_127;
81029 --
81030 
81032 --
81033 -- PRIVATE PROCEDURE
81034 --         insert_sources_128
81035 --
81036 ----------------------------------------
81037 --
81038 PROCEDURE insert_sources_128(
81039                                 p_target_ledger_id       IN NUMBER
81040                               , p_language               IN VARCHAR2
81041                               , p_sla_ledger_id          IN NUMBER
81042                               , p_pad_start_date         IN DATE
81043                               , p_pad_end_date           IN DATE
81044                          )
81045 IS
81046 
81047 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ALL';
81048 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST';
81049 p_apps_owner                   VARCHAR2(30);
81050 l_log_module                   VARCHAR2(240);
81051 BEGIN
81052 IF g_log_enabled THEN
81053       l_log_module := C_DEFAULT_MODULE||'.insert_sources_128';
81054 END IF;
81055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81056 
81057       trace
81058          (p_msg      => 'BEGIN of insert_sources_128'
81059          ,p_level    => C_LEVEL_PROCEDURE
81060          ,p_module   => l_log_module);
81061 
81062 END IF;
81063 
81064 -- select APPS owner
81065 SELECT oracle_username
81066   INTO p_apps_owner
81067   FROM fnd_oracle_userid
81068  WHERE read_only_flag = 'U'
81069 ;
81070 
81071 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81072       trace
81073          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
81074                         ' - p_language = '||p_language||
81075                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
81076                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
81077                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
81078                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
81079          ,p_level    => C_LEVEL_STATEMENT
81080          ,p_module   => l_log_module);
81081 END IF;
81082 
81083 
81084 --
81085 INSERT INTO xla_diag_sources --hdr2
81086 (
81087         event_id
81088       , ledger_id
81089       , sla_ledger_id
81090       , description_language
81091       , object_name
81092       , object_type_code
81093       , line_number
81094       , source_application_id
81095       , source_type_code
81096       , source_code
81097       , source_value
81098       , source_meaning
81099       , created_by
81100       , creation_date
81101       , last_update_date
81102       , last_updated_by
81103       , last_update_login
81104       , program_update_date
81105       , program_application_id
81106       , program_id
81107       , request_id
81108 )
81109 SELECT
81110         event_id
81111       , p_target_ledger_id
81112       , p_sla_ledger_id
81113       , p_language
81114       , object_name
81115       , object_type_code
81116       , line_number
81117       , source_application_id
81118       , source_type_code
81119       , source_code
81120       , SUBSTR(source_value ,1,1996)
81121       , SUBSTR(source_meaning ,1,200)
81122       , xla_environment_pkg.g_Usr_Id
81123       , TRUNC(SYSDATE)
81124       , TRUNC(SYSDATE)
81125       , xla_environment_pkg.g_Usr_Id
81126       , xla_environment_pkg.g_Login_Id
81127       , TRUNC(SYSDATE)
81128       , xla_environment_pkg.g_Prog_Appl_Id
81129       , xla_environment_pkg.g_Prog_Id
81130       , xla_environment_pkg.g_Req_Id
81131   FROM (
81132        SELECT xet.event_id                  event_id
81133             , 0                          line_number
81134             , CASE r
81135                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
81136                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
81137                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
81138                 
81139                ELSE null
81140               END                           object_name
81141             , CASE r
81142                 WHEN 1 THEN 'HEADER' 
81143                 WHEN 2 THEN 'HEADER' 
81144                 WHEN 3 THEN 'HEADER' 
81145                 
81146                 ELSE null
81147               END                           object_type_code
81148             , CASE r
81149                 WHEN 1 THEN '275' 
81150                 WHEN 2 THEN '275' 
81151                 WHEN 3 THEN '275' 
81152                 
81153                 ELSE null
81154               END                           source_application_id
81155             , 'S'             source_type_code
81156             , CASE r
81157                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
81158                 WHEN 2 THEN 'SYSTEM_LINKAGE_FUNCTION' 
81159                 WHEN 3 THEN 'GL_DATE' 
81160                 
81161                 ELSE null
81162               END                           source_code
81163             , CASE r
81164                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
81165                 WHEN 2 THEN TO_CHAR(h2.SYSTEM_LINKAGE_FUNCTION)
81166                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
81167                 
81168                 ELSE null
81169               END                           source_value
81170             , null              source_meaning
81171          FROM xla_events_gt     xet  
81172       , PA_XLA_EXP_HEADER_V  h2
81173              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
81174          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81175            AND xet.event_class_code = C_EVENT_CLASS_CODE
81176               AND h2.event_id = xet.event_id
81177 
81178 )
81179 ;
81180 --
81181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81182 
81186          ,p_module   => l_log_module);
81183       trace
81184          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
81185          ,p_level    => C_LEVEL_STATEMENT
81187 
81188 END IF;
81189 --
81190 
81191 
81192 
81193 --
81194 INSERT INTO xla_diag_sources  --line2
81195 (
81196         event_id
81197       , ledger_id
81198       , sla_ledger_id
81199       , description_language
81200       , object_name
81201       , object_type_code
81202       , line_number
81203       , source_application_id
81204       , source_type_code
81205       , source_code
81206       , source_value
81207       , source_meaning
81208       , created_by
81209       , creation_date
81210       , last_update_date
81211       , last_updated_by
81212       , last_update_login
81213       , program_update_date
81214       , program_application_id
81215       , program_id
81216       , request_id
81217 )
81218 SELECT  event_id
81219       , p_target_ledger_id
81220       , p_sla_ledger_id
81221       , p_language
81222       , object_name
81223       , object_type_code
81224       , line_number
81225       , source_application_id
81226       , source_type_code
81227       , source_code
81228       , SUBSTR(source_value,1,1996)
81229       , SUBSTR(source_meaning ,1,200)
81230       , xla_environment_pkg.g_Usr_Id
81231       , TRUNC(SYSDATE)
81232       , TRUNC(SYSDATE)
81233       , xla_environment_pkg.g_Usr_Id
81234       , xla_environment_pkg.g_Login_Id
81235       , TRUNC(SYSDATE)
81236       , xla_environment_pkg.g_Prog_Appl_Id
81237       , xla_environment_pkg.g_Prog_Id
81238       , xla_environment_pkg.g_Req_Id
81239   FROM (
81240        SELECT xet.event_id                  event_id
81241             , l1.line_number                 line_number
81242             , CASE r
81243                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
81244                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
81245                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
81246                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
81247                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
81248                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
81249                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
81250                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
81251                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
81252                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
81253                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
81254                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
81255                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
81256                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
81257                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
81258                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
81259                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
81260                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
81261                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
81262                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
81263                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
81264                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
81265                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
81266                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
81267                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
81268                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
81269                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
81270                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
81271                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
81272                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
81273                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
81274                 WHEN 32 THEN 'PA_XLA_CDL_LINES_V' 
81275                 WHEN 33 THEN 'PA_XLA_CDL_LINES_V' 
81276                 WHEN 34 THEN 'PA_XLA_CDL_LINES_V' 
81277                 WHEN 35 THEN 'PA_XLA_CDL_LINES_V' 
81278                 WHEN 36 THEN 'PA_XLA_CDL_LINES_V' 
81279                 WHEN 37 THEN 'PA_XLA_CDL_LINES_V' 
81280                 WHEN 38 THEN 'PA_XLA_CDL_LINES_V' 
81281                 WHEN 39 THEN 'PA_XLA_CDL_LINES_V' 
81282                 WHEN 40 THEN 'PA_XLA_CDL_LINES_V' 
81283                 WHEN 41 THEN 'PA_XLA_CDL_LINES_V' 
81284                 WHEN 42 THEN 'PA_XLA_CDL_LINES_V' 
81285                 WHEN 43 THEN 'PA_XLA_CDL_LINES_V' 
81286                 WHEN 44 THEN 'PA_XLA_CDL_LINES_V' 
81287                 WHEN 45 THEN 'PA_XLA_CDL_LINES_V' 
81288                 WHEN 46 THEN 'PA_XLA_CDL_LINES_V' 
81289                 WHEN 47 THEN 'PA_XLA_CDL_LINES_V' 
81290                 WHEN 48 THEN 'PA_XLA_CDL_LINES_V' 
81291                 WHEN 49 THEN 'PA_XLA_CDL_LINES_V' 
81292                 
81293                ELSE null
81294               END                           object_name
81295             , CASE r
81296                 WHEN 1 THEN 'LINE' 
81297                 WHEN 2 THEN 'LINE' 
81298                 WHEN 3 THEN 'LINE' 
81299                 WHEN 4 THEN 'LINE' 
81300                 WHEN 5 THEN 'LINE' 
81301                 WHEN 6 THEN 'LINE' 
81302                 WHEN 7 THEN 'LINE' 
81303                 WHEN 8 THEN 'LINE' 
81304                 WHEN 9 THEN 'LINE' 
81305                 WHEN 10 THEN 'LINE' 
81306                 WHEN 11 THEN 'LINE' 
81307                 WHEN 12 THEN 'LINE' 
81308                 WHEN 13 THEN 'LINE' 
81309                 WHEN 14 THEN 'LINE' 
81310                 WHEN 15 THEN 'LINE' 
81311                 WHEN 16 THEN 'LINE' 
81312                 WHEN 17 THEN 'LINE' 
81313                 WHEN 18 THEN 'LINE' 
81314                 WHEN 19 THEN 'LINE' 
81315                 WHEN 20 THEN 'LINE' 
81316                 WHEN 21 THEN 'LINE' 
81317                 WHEN 22 THEN 'LINE' 
81318                 WHEN 23 THEN 'LINE' 
81319                 WHEN 24 THEN 'LINE' 
81320                 WHEN 25 THEN 'LINE' 
81321                 WHEN 26 THEN 'LINE' 
81322                 WHEN 27 THEN 'LINE' 
81326                 WHEN 31 THEN 'LINE' 
81323                 WHEN 28 THEN 'LINE' 
81324                 WHEN 29 THEN 'LINE' 
81325                 WHEN 30 THEN 'LINE' 
81327                 WHEN 32 THEN 'LINE' 
81328                 WHEN 33 THEN 'LINE' 
81329                 WHEN 34 THEN 'LINE' 
81330                 WHEN 35 THEN 'LINE' 
81331                 WHEN 36 THEN 'LINE' 
81332                 WHEN 37 THEN 'LINE' 
81333                 WHEN 38 THEN 'LINE' 
81334                 WHEN 39 THEN 'LINE' 
81335                 WHEN 40 THEN 'LINE' 
81336                 WHEN 41 THEN 'LINE' 
81337                 WHEN 42 THEN 'LINE' 
81338                 WHEN 43 THEN 'LINE' 
81339                 WHEN 44 THEN 'LINE' 
81340                 WHEN 45 THEN 'LINE' 
81341                 WHEN 46 THEN 'LINE' 
81342                 WHEN 47 THEN 'LINE' 
81343                 WHEN 48 THEN 'LINE' 
81344                 WHEN 49 THEN 'LINE' 
81345                 
81346                 ELSE null
81347               END                           object_type_code
81348             , CASE r
81349                 WHEN 1 THEN '275' 
81350                 WHEN 2 THEN '275' 
81351                 WHEN 3 THEN '275' 
81352                 WHEN 4 THEN '275' 
81353                 WHEN 5 THEN '275' 
81354                 WHEN 6 THEN '275' 
81355                 WHEN 7 THEN '275' 
81356                 WHEN 8 THEN '275' 
81357                 WHEN 9 THEN '275' 
81358                 WHEN 10 THEN '275' 
81359                 WHEN 11 THEN '275' 
81360                 WHEN 12 THEN '275' 
81361                 WHEN 13 THEN '275' 
81362                 WHEN 14 THEN '275' 
81363                 WHEN 15 THEN '275' 
81364                 WHEN 16 THEN '275' 
81365                 WHEN 17 THEN '275' 
81366                 WHEN 18 THEN '275' 
81367                 WHEN 19 THEN '275' 
81368                 WHEN 20 THEN '275' 
81369                 WHEN 21 THEN '275' 
81370                 WHEN 22 THEN '275' 
81371                 WHEN 23 THEN '275' 
81372                 WHEN 24 THEN '275' 
81373                 WHEN 25 THEN '275' 
81374                 WHEN 26 THEN '275' 
81375                 WHEN 27 THEN '275' 
81376                 WHEN 28 THEN '275' 
81377                 WHEN 29 THEN '275' 
81378                 WHEN 30 THEN '275' 
81379                 WHEN 31 THEN '275' 
81380                 WHEN 32 THEN '275' 
81381                 WHEN 33 THEN '275' 
81382                 WHEN 34 THEN '275' 
81383                 WHEN 35 THEN '275' 
81384                 WHEN 36 THEN '275' 
81385                 WHEN 37 THEN '275' 
81386                 WHEN 38 THEN '275' 
81387                 WHEN 39 THEN '275' 
81388                 WHEN 40 THEN '275' 
81389                 WHEN 41 THEN '275' 
81390                 WHEN 42 THEN '275' 
81391                 WHEN 43 THEN '275' 
81392                 WHEN 44 THEN '275' 
81393                 WHEN 45 THEN '275' 
81394                 WHEN 46 THEN '275' 
81395                 WHEN 47 THEN '275' 
81396                 WHEN 48 THEN '275' 
81397                 WHEN 49 THEN '275' 
81398                 
81399                 ELSE null
81400               END                           source_application_id
81401             , 'S'             source_type_code
81402             , CASE r
81403                 WHEN 1 THEN 'BUDGET_CCID' 
81404                 WHEN 2 THEN 'COST_CCID' 
81405                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
81406                 WHEN 4 THEN 'ADJ_COST_CCID' 
81407                 WHEN 5 THEN 'COST_CLEARING_CCID' 
81408                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
81409                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
81410                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
81411                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
81412                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
81413                 WHEN 11 THEN 'EXCHANGE_RATE' 
81414                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
81415                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
81416                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
81417                 WHEN 15 THEN 'LINE_NUMBER' 
81418                 WHEN 16 THEN 'LINE_TYPE' 
81419                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
81420                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
81421                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
81422                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
81423                 WHEN 21 THEN 'PA_APPLICATION_ID' 
81424                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
81425                 WHEN 23 THEN 'PA_ENTITY_CODE' 
81426                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
81427                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
81428                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
81429                 WHEN 27 THEN 'ENC_UPG_DR_ACCT_CLASS' 
81430                 WHEN 28 THEN 'ENC_UPG_CR_ACCT_CLASS' 
81431                 WHEN 29 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
81432                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
81433                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
81434                 WHEN 32 THEN 'DOCUMENT_TYPE' 
81435                 WHEN 33 THEN 'ENC_JE_LINES_REVERSED_FLAG' 
81436                 WHEN 34 THEN 'PO_RELEASE_ID' 
81437                 WHEN 35 THEN 'CWK_RATE_BASED_TC_FLAG' 
81438                 WHEN 36 THEN 'INVOICE_APPLICATION_ID' 
81439                 WHEN 37 THEN 'INVOICE_DISTRIBUTION_TYPE' 
81440                 WHEN 38 THEN 'INVOICE_ENTITY_CODE' 
81441                 WHEN 39 THEN 'INVOICE_FIRST_DIST_ID' 
81442                 WHEN 40 THEN 'INVOICE_FIRST_SYS_TRANS_ID' 
81443                 WHEN 41 THEN 'INVOICE_SECOND_DIST_ID' 
81444                 WHEN 42 THEN 'PO_APPLICATION_ID' 
81445                 WHEN 43 THEN 'PO_DISTRIBUTION_TYPE' 
81446                 WHEN 44 THEN 'PO_ENTITY_CODE' 
81447                 WHEN 45 THEN 'PO_FIRST_DIST_ID' 
81448                 WHEN 46 THEN 'PO_FIRST_SYS_TRANS_ID' 
81452                 
81449                 WHEN 47 THEN 'PO_SECOND_DIST_ID' 
81450                 WHEN 48 THEN 'ENC_ACCT_ENABLED' 
81451                 WHEN 49 THEN 'LIQUIDATE_ENCUM_FLAG' 
81453                 ELSE null
81454               END                           source_code
81455             , CASE r
81456                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
81457                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
81458                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
81459                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
81460                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
81461                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
81462                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
81463                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
81464                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
81465                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
81466                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
81467                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
81468                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
81469                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
81470                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
81471                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
81472                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
81473                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
81474                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
81475                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
81476                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
81477                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
81478                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
81479                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
81480                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
81481                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
81482                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
81483                 WHEN 28 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
81484                 WHEN 29 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
81485                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
81486                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
81487                 WHEN 32 THEN TO_CHAR(l1.DOCUMENT_TYPE)
81488                 WHEN 33 THEN TO_CHAR(l1.ENC_JE_LINES_REVERSED_FLAG)
81489                 WHEN 34 THEN TO_CHAR(l1.PO_RELEASE_ID)
81490                 WHEN 35 THEN TO_CHAR(l1.CWK_RATE_BASED_TC_FLAG)
81491                 WHEN 36 THEN TO_CHAR(l1.INVOICE_APPLICATION_ID)
81492                 WHEN 37 THEN TO_CHAR(l1.INVOICE_DISTRIBUTION_TYPE)
81493                 WHEN 38 THEN TO_CHAR(l1.INVOICE_ENTITY_CODE)
81494                 WHEN 39 THEN TO_CHAR(l1.INVOICE_FIRST_DIST_ID)
81495                 WHEN 40 THEN TO_CHAR(l1.INVOICE_FIRST_SYS_TRANS_ID)
81496                 WHEN 41 THEN TO_CHAR(l1.INVOICE_SECOND_DIST_ID)
81497                 WHEN 42 THEN TO_CHAR(l1.PO_APPLICATION_ID)
81498                 WHEN 43 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
81499                 WHEN 44 THEN TO_CHAR(l1.PO_ENTITY_CODE)
81500                 WHEN 45 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
81501                 WHEN 46 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
81502                 WHEN 47 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
81503                 WHEN 48 THEN TO_CHAR(l1.ENC_ACCT_ENABLED)
81504                 WHEN 49 THEN TO_CHAR(l1.LIQUIDATE_ENCUM_FLAG)
81505                 
81506                 ELSE null
81507               END                           source_value
81508             , CASE r
81509                 WHEN 3 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
81510                           103371
81511                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
81512                          ,'ALLOW_OVERRIDE_CCID_FLAG'
81513                          ,'S'
81514                          ,275)
81515                 WHEN 16 THEN fvl34.meaning
81516                 WHEN 32 THEN fvl70.meaning
81517                 
81518                 ELSE null
81519               END               source_meaning
81520          FROM  xla_events_gt     xet  
81521         , PA_XLA_CDL_LINES_V  l1
81522   , fnd_lookup_values    fvl34
81523   , fnd_lookup_values    fvl70
81524             , (select rownum r from all_objects where rownum <= 49 and owner = p_apps_owner)
81525         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81526           AND xet.event_class_code = C_EVENT_CLASS_CODE
81527             AND l1.event_id          = xet.event_id
81528    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
81529   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
81530   AND fvl34.view_application_id(+) = 275
81531   AND fvl34.language(+)            = USERENV('LANG')
81532      AND fvl70.lookup_type(+)         = 'FC_DOC_TYPE'
81533   AND fvl70.lookup_code(+)         = l1.DOCUMENT_TYPE
81534   AND fvl70.view_application_id(+) = 275
81535   AND fvl70.language(+)            = USERENV('LANG')
81536   
81537 )
81538 ;
81539 --
81540 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81541 
81542       trace
81543          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
81544          ,p_level    => C_LEVEL_STATEMENT
81545          ,p_module   => l_log_module);
81546 
81547 END IF;
81548 
81549 
81550 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81551       trace
81552          (p_msg      => 'END of insert_sources_128'
81553          ,p_level    => C_LEVEL_PROCEDURE
81554          ,p_module   => l_log_module);
81555 END IF;
81556 EXCEPTION
81557   WHEN xla_exceptions_pkg.application_exception THEN
81558       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81559             trace
81560                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81561                ,p_level    => C_LEVEL_EXCEPTION
81562                ,p_module   => l_log_module);
81563       END IF;
81564       RAISE;
81565   WHEN OTHERS THEN
81569                ,p_level    => C_LEVEL_EXCEPTION
81566       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81567             trace
81568                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81570                ,p_module   => l_log_module);
81571        END IF;
81572        xla_exceptions_pkg.raise_message
81573            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_128');
81574 END insert_sources_128;
81575 --
81576 
81577 ---------------------------------------
81578 --
81579 -- PRIVATE FUNCTION
81580 --         EventClass_128
81581 --
81582 ----------------------------------------
81583 --
81584 FUNCTION EventClass_128
81585        (p_application_id         IN NUMBER
81586        ,p_base_ledger_id         IN NUMBER
81587        ,p_target_ledger_id       IN NUMBER
81588        ,p_language               IN VARCHAR2
81589        ,p_currency_code          IN VARCHAR2
81590        ,p_sla_ledger_id          IN NUMBER
81591        ,p_pad_start_date         IN DATE
81592        ,p_pad_end_date           IN DATE
81593        ,p_primary_ledger_id      IN NUMBER)
81594 RETURN BOOLEAN IS
81595 --
81596 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ALL';
81597 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST';
81598 
81599 l_calculate_acctd_flag   VARCHAR2(1) :='N';
81600 l_calculate_g_l_flag     VARCHAR2(1) :='N';
81601 --
81602 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81603 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81604 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81605 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81606 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81607 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81608 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81609 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81610 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81611 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81612 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81613 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81614 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81615 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81616 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81617 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81618 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81619 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81620 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81621 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81622 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81623 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81624 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
81625 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81626 
81627 l_event_id                             NUMBER;
81628 l_previous_event_id                    NUMBER;
81629 l_first_event_id                       NUMBER;
81630 l_last_event_id                        NUMBER;
81631 
81632 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
81633 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
81634 --
81635 --
81636 l_result                    BOOLEAN := TRUE;
81637 l_rows                      NUMBER  := 1000;
81638 l_event_type_name           VARCHAR2(80) := 'All';
81639 l_event_class_name          VARCHAR2(80) := 'Total Burdened Cost';
81640 l_description               VARCHAR2(4000);
81641 l_transaction_reversal      NUMBER;
81642 l_ae_header_id              NUMBER;
81643 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
81644 l_log_module                VARCHAR2(240);
81645 --
81646 l_acct_reversal_source      VARCHAR2(30);
81647 l_trx_reversal_source       VARCHAR2(30);
81648 
81649 l_continue_with_lines       BOOLEAN := TRUE;
81650 --
81651 l_acc_rev_gl_date_source    DATE;                      -- 4262811
81652 --
81653 type t_array_event_id is table of number index by binary_integer;
81654 
81655 l_rec_array_event                    t_rec_array_event;
81656 l_null_rec_array_event               t_rec_array_event;
81657 l_array_ae_header_id                 xla_number_array_type;
81658 l_actual_flag                        VARCHAR2(1) := NULL;
81659 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
81660 l_balance_type_code                  VARCHAR2(1) :=NULL;
81661 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
81662 
81663 --
81664 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
81665 --
81666 
81667 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
81668 TYPE t_array_source_37 IS TABLE OF PA_XLA_EXP_HEADER_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
81669 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
81670 
81671 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
81672 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
81673 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
81674 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
81675 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
81679 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
81676 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
81677 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
81678 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81680 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
81681 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
81682 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
81683 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81684 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
81685 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
81686 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
81687 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
81688 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
81689 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
81690 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
81691 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
81692 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
81693 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
81694 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81695 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
81696 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81697 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81698 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81699 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
81700 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
81701 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
81702 TYPE t_array_source_70 IS TABLE OF PA_XLA_CDL_LINES_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
81703 TYPE t_array_source_71 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_JE_LINES_REVERSED_FLAG%TYPE INDEX BY BINARY_INTEGER;
81704 TYPE t_array_source_72 IS TABLE OF PA_XLA_CDL_LINES_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
81705 TYPE t_array_source_73 IS TABLE OF PA_XLA_CDL_LINES_V.CWK_RATE_BASED_TC_FLAG%TYPE INDEX BY BINARY_INTEGER;
81706 TYPE t_array_source_74 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
81707 TYPE t_array_source_75 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
81708 TYPE t_array_source_76 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
81709 TYPE t_array_source_77 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81710 TYPE t_array_source_78 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
81711 TYPE t_array_source_79 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81712 TYPE t_array_source_80 IS TABLE OF PA_XLA_CDL_LINES_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
81713 TYPE t_array_source_81 IS TABLE OF PA_XLA_CDL_LINES_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
81714 TYPE t_array_source_82 IS TABLE OF PA_XLA_CDL_LINES_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
81715 TYPE t_array_source_83 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81716 TYPE t_array_source_84 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
81717 TYPE t_array_source_85 IS TABLE OF PA_XLA_CDL_LINES_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81718 TYPE t_array_source_86 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_ACCT_ENABLED%TYPE INDEX BY BINARY_INTEGER;
81719 TYPE t_array_source_87 IS TABLE OF PA_XLA_CDL_LINES_V.LIQUIDATE_ENCUM_FLAG%TYPE INDEX BY BINARY_INTEGER;
81720 
81721 l_array_source_32              t_array_source_32;
81722 l_array_source_37              t_array_source_37;
81723 l_array_source_88              t_array_source_88;
81724 
81725 l_array_source_2      t_array_source_2;
81726 l_array_source_3      t_array_source_3;
81727 l_array_source_4      t_array_source_4;
81728 l_array_source_5      t_array_source_5;
81729 l_array_source_6      t_array_source_6;
81730 l_array_source_7      t_array_source_7;
81731 l_array_source_22      t_array_source_22;
81732 l_array_source_23      t_array_source_23;
81733 l_array_source_25      t_array_source_25;
81734 l_array_source_27      t_array_source_27;
81735 l_array_source_28      t_array_source_28;
81736 l_array_source_29      t_array_source_29;
81737 l_array_source_30      t_array_source_30;
81738 l_array_source_31      t_array_source_31;
81739 l_array_source_33      t_array_source_33;
81740 l_array_source_34      t_array_source_34;
81741 l_array_source_34_meaning      t_array_lookup_meaning;
81742 l_array_source_35      t_array_source_35;
81743 l_array_source_44      t_array_source_44;
81744 l_array_source_45      t_array_source_45;
81745 l_array_source_46      t_array_source_46;
81746 l_array_source_47      t_array_source_47;
81747 l_array_source_48      t_array_source_48;
81748 l_array_source_49      t_array_source_49;
81749 l_array_source_50      t_array_source_50;
81750 l_array_source_51      t_array_source_51;
81751 l_array_source_52      t_array_source_52;
81752 l_array_source_53      t_array_source_53;
81753 l_array_source_54      t_array_source_54;
81754 l_array_source_55      t_array_source_55;
81758 l_array_source_70_meaning      t_array_lookup_meaning;
81755 l_array_source_56      t_array_source_56;
81756 l_array_source_57      t_array_source_57;
81757 l_array_source_70      t_array_source_70;
81759 l_array_source_71      t_array_source_71;
81760 l_array_source_72      t_array_source_72;
81761 l_array_source_73      t_array_source_73;
81762 l_array_source_74      t_array_source_74;
81763 l_array_source_75      t_array_source_75;
81764 l_array_source_76      t_array_source_76;
81765 l_array_source_77      t_array_source_77;
81766 l_array_source_78      t_array_source_78;
81767 l_array_source_79      t_array_source_79;
81768 l_array_source_80      t_array_source_80;
81769 l_array_source_81      t_array_source_81;
81770 l_array_source_82      t_array_source_82;
81771 l_array_source_83      t_array_source_83;
81772 l_array_source_84      t_array_source_84;
81773 l_array_source_85      t_array_source_85;
81774 l_array_source_86      t_array_source_86;
81775 l_array_source_87      t_array_source_87;
81776 
81777 --
81778 CURSOR header_cur
81779 IS
81780 SELECT /*+ leading(xet) cardinality(xet,1) */
81781 -- Event Class Code: TOT_BURDENED_COST
81782     xet.entity_id
81783    ,xet.legal_entity_id
81784    ,xet.entity_code
81785    ,xet.transaction_number
81786    ,xet.event_id
81787    ,xet.event_class_code
81788    ,xet.event_type_code
81789    ,xet.event_number
81790    ,xet.event_date
81791    ,xet.transaction_date
81792    ,xet.reference_num_1
81793    ,xet.reference_num_2
81794    ,xet.reference_num_3
81795    ,xet.reference_num_4
81796    ,xet.reference_char_1
81797    ,xet.reference_char_2
81798    ,xet.reference_char_3
81799    ,xet.reference_char_4
81800    ,xet.reference_date_1
81801    ,xet.reference_date_2
81802    ,xet.reference_date_3
81803    ,xet.reference_date_4
81804    ,xet.event_created_by
81805    ,xet.budgetary_control_flag 
81806   , h2.EXPENDITURE_ITEM_ID    source_32
81807   , h2.SYSTEM_LINKAGE_FUNCTION    source_37
81808   , h2.GL_DATE    source_88
81809   FROM xla_events_gt     xet 
81810   , PA_XLA_EXP_HEADER_V  h2
81811  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
81812    and xet.event_class_code = C_EVENT_CLASS_CODE
81813    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
81814 
81815  ORDER BY event_id
81816 ;
81817 
81818 
81819 --
81820 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
81821 IS
81822 SELECT  /*+ leading(xet) cardinality(xet,1) */
81823 -- Event Class Code: TOT_BURDENED_COST
81824     xet.entity_id
81825    ,xet.legal_entity_id
81826    ,xet.entity_code
81827    ,xet.transaction_number
81828    ,xet.event_id
81829    ,xet.event_class_code
81830    ,xet.event_type_code
81831    ,xet.event_number
81832    ,xet.event_date
81833    ,xet.transaction_date
81834    ,xet.reference_num_1
81835    ,xet.reference_num_2
81836    ,xet.reference_num_3
81837    ,xet.reference_num_4
81838    ,xet.reference_char_1
81839    ,xet.reference_char_2
81840    ,xet.reference_char_3
81841    ,xet.reference_char_4
81842    ,xet.reference_date_1
81843    ,xet.reference_date_2
81844    ,xet.reference_date_3
81845    ,xet.reference_date_4
81846    ,xet.event_created_by
81847    ,xet.budgetary_control_flag
81848  , l1.LINE_NUMBER  
81849   , l1.BUDGET_CCID    source_2
81850   , l1.COST_CCID    source_3
81851   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
81852   , l1.ADJ_COST_CCID    source_5
81853   , l1.COST_CLEARING_CCID    source_6
81854   , l1.ADJ_COST_CLEARING_CCID    source_7
81855   , l1.REVERSING_LINE_FLAG    source_22
81856   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
81857   , l1.ENTERED_CURRENCY_CODE    source_25
81858   , l1.EXCHANGE_RATE_DATE    source_27
81859   , l1.EXCHANGE_RATE    source_28
81860   , l1.EXCHANGE_RATE_TYPE    source_29
81861   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
81862   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
81863   , l1.LINE_NUMBER    source_33
81864   , l1.LINE_TYPE    source_34
81865   , fvl34.meaning   source_34_meaning
81866   , l1.LINE_NUM_REVERSED    source_35
81867   , l1.ENTERED_BURDENED_COST    source_44
81868   , l1.ACCT_BURDENED_COST    source_45
81869   , l1.ENCUMBRANCE_AMOUNT    source_46
81870   , l1.PA_APPLICATION_ID    source_47
81871   , l1.PA_DISTRIBUTION_TYPE    source_48
81872   , l1.PA_ENTITY_CODE    source_49
81873   , l1.PA_FIRST_DIST_ID    source_50
81874   , l1.PA_FIRST_SYS_TRANS_ID    source_51
81875   , l1.PA_SECOND_DIST_ID    source_52
81876   , l1.ENC_UPG_DR_ACCT_CLASS    source_53
81877   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
81878   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
81879   , l1.ENCUMBRANCE_TYPE_ID    source_56
81880   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
81881   , l1.DOCUMENT_TYPE    source_70
81882   , fvl70.meaning   source_70_meaning
81883   , l1.ENC_JE_LINES_REVERSED_FLAG    source_71
81884   , l1.PO_RELEASE_ID    source_72
81885   , l1.CWK_RATE_BASED_TC_FLAG    source_73
81886   , l1.INVOICE_APPLICATION_ID    source_74
81887   , l1.INVOICE_DISTRIBUTION_TYPE    source_75
81888   , l1.INVOICE_ENTITY_CODE    source_76
81889   , l1.INVOICE_FIRST_DIST_ID    source_77
81890   , l1.INVOICE_FIRST_SYS_TRANS_ID    source_78
81891   , l1.INVOICE_SECOND_DIST_ID    source_79
81892   , l1.PO_APPLICATION_ID    source_80
81893   , l1.PO_DISTRIBUTION_TYPE    source_81
81894   , l1.PO_ENTITY_CODE    source_82
81895   , l1.PO_FIRST_DIST_ID    source_83
81896   , l1.PO_FIRST_SYS_TRANS_ID    source_84
81897   , l1.PO_SECOND_DIST_ID    source_85
81898   , l1.ENC_ACCT_ENABLED    source_86
81899   , l1.LIQUIDATE_ENCUM_FLAG    source_87
81900   FROM xla_events_gt     xet 
81901   , PA_XLA_CDL_LINES_V  l1
81902   , fnd_lookup_values    fvl34
81903   , fnd_lookup_values    fvl70
81907    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
81904  WHERE xet.event_id between x_first_event_id and x_last_event_id
81905    and xet.event_date between p_pad_start_date and p_pad_end_date
81906    and xet.event_class_code = C_EVENT_CLASS_CODE
81908    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
81909   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
81910   AND fvl34.view_application_id(+) = 275
81911   AND fvl34.language(+)            = USERENV('LANG')
81912      AND fvl70.lookup_type(+)         = 'FC_DOC_TYPE'
81913   AND fvl70.lookup_code(+)         = l1.DOCUMENT_TYPE
81914   AND fvl70.view_application_id(+) = 275
81915   AND fvl70.language(+)            = USERENV('LANG')
81916   ;
81917 
81918 --
81919 BEGIN
81920 IF g_log_enabled THEN
81921    l_log_module := C_DEFAULT_MODULE||'.EventClass_128';
81922 END IF;
81923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81924    trace
81925       (p_msg      => 'BEGIN of EventClass_128'
81926       ,p_level    => C_LEVEL_PROCEDURE
81927       ,p_module   => l_log_module);
81928 END IF;
81929 
81930 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81931    trace
81932       (p_msg      => 'p_application_id = '||p_application_id||
81933                      ' - p_base_ledger_id = '||p_base_ledger_id||
81934                      ' - p_target_ledger_id  = '||p_target_ledger_id||
81935                      ' - p_language = '||p_language||
81936                      ' - p_currency_code = '||p_currency_code||
81937                      ' - p_sla_ledger_id = '||p_sla_ledger_id
81938       ,p_level    => C_LEVEL_STATEMENT
81939       ,p_module   => l_log_module);
81940 END IF;
81941 --
81942 -- initialze arrays
81943 --
81944 g_array_event.DELETE;
81945 l_rec_array_event := l_null_rec_array_event;
81946 --
81947 --------------------------------------
81948 -- 4262811 Initialze MPA Line Number
81949 --------------------------------------
81950 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
81951 
81952 --
81953 
81954 --
81955 OPEN header_cur;
81956 --
81957 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81958    trace
81959    (p_msg      => 'SQL - FETCH header_cur'
81960    ,p_level    => C_LEVEL_STATEMENT
81961    ,p_module   => l_log_module);
81962 END IF;
81963 --
81964 LOOP
81965 FETCH header_cur BULK COLLECT INTO
81966         l_array_entity_id
81967       , l_array_legal_entity_id
81968       , l_array_entity_code
81969       , l_array_transaction_num
81970       , l_array_event_id
81971       , l_array_class_code
81972       , l_array_event_type
81973       , l_array_event_number
81974       , l_array_event_date
81975       , l_array_transaction_date
81976       , l_array_reference_num_1
81977       , l_array_reference_num_2
81978       , l_array_reference_num_3
81979       , l_array_reference_num_4
81980       , l_array_reference_char_1
81981       , l_array_reference_char_2
81982       , l_array_reference_char_3
81983       , l_array_reference_char_4
81984       , l_array_reference_date_1
81985       , l_array_reference_date_2
81986       , l_array_reference_date_3
81987       , l_array_reference_date_4
81988       , l_array_event_created_by
81989       , l_array_budgetary_control_flag 
81990       , l_array_source_32
81991       , l_array_source_37
81992       , l_array_source_88
81993       LIMIT l_rows;
81994 --
81995 IF (C_LEVEL_EVENT >= g_log_level) THEN
81996    trace
81997    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
81998    ,p_level    => C_LEVEL_EVENT
81999    ,p_module   => l_log_module);
82000 END IF;
82001 --
82002 EXIT WHEN l_array_entity_id.COUNT = 0;
82003 
82004 -- initialize arrays
82005 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
82006 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
82007 
82008 --
82009 -- Bug 4458708
82010 --
82011 XLA_AE_LINES_PKG.g_LineNumber := 0;
82012 
82013 
82014 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
82015 g_last_hdr_idx := l_array_event_id.LAST;
82016 --
82017 -- loop for the headers. Each iteration is for each header extract row
82018 -- fetched in header cursor
82019 --
82020 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
82021 
82022 --
82023 -- set event info as cache for other routines to refer event attributes
82024 --
82025 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
82026    (p_application_id           => p_application_id
82027    ,p_primary_ledger_id        => p_primary_ledger_id
82028    ,p_base_ledger_id           => p_base_ledger_id
82029    ,p_target_ledger_id         => p_target_ledger_id
82030    ,p_entity_id                => l_array_entity_id(hdr_idx)
82031    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
82032    ,p_entity_code              => l_array_entity_code(hdr_idx)
82033    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
82034    ,p_event_id                 => l_array_event_id(hdr_idx)
82035    ,p_event_class_code         => l_array_class_code(hdr_idx)
82036    ,p_event_type_code          => l_array_event_type(hdr_idx)
82037    ,p_event_number             => l_array_event_number(hdr_idx)
82038    ,p_event_date               => l_array_event_date(hdr_idx)
82039    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
82040    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
82041    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
82042    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
82043    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
82044    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
82045    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
82049    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
82046    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
82047    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
82048    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
82050    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
82051    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
82052    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
82053    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
82054 
82055 --
82056 -- set the status of entry to C_VALID (0)
82057 --
82058 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
82059 
82060 --
82061 -- initialize a row for ae header
82062 --
82063 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
82064 
82065 l_event_id := l_array_event_id(hdr_idx);
82066 
82067 --
82068 -- storing the hdr_idx for event. May be used by line cursor.
82069 --
82070 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
82071 
82072 --
82073 -- store sources from header extract. This can be improved to
82074 -- store only those sources from header extract that may be used in lines
82075 --
82076 
82077 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
82078 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
82079 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
82080 
82081 --
82082 -- initilaize the status of ae headers for diffrent balance types
82083 -- the status is initialised to C_NOT_CREATED (2)
82084 --
82085 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82086 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82087 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82088 
82089 --
82090 -- call api to validate and store accounting attributes for header
82091 --
82092 
82093 ------------------------------------------------------------
82094 -- Accrual Reversal : to get date for Standard Source (NONE)
82095 ------------------------------------------------------------
82096 l_acc_rev_gl_date_source := NULL;
82097 
82098      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
82099       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
82100 
82101 
82102 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
82103 
82104 XLA_AE_HEADER_PKG.SetJeCategoryName;
82105 
82106 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
82107 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
82108 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
82109 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
82110 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
82111 
82112 
82113 -- No header level analytical criteria
82114 
82115 --
82116 --accounting attribute enhancement, bug 3612931
82117 --
82118 l_trx_reversal_source := SUBSTR(NULL, 1,30);
82119 
82120 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
82121    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82122 
82123    xla_accounting_err_pkg.build_message
82124       (p_appli_s_name            => 'XLA'
82125       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
82126       ,p_token_1                 => 'ACCT_ATTR_NAME'
82127       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
82128       ,p_token_2                 => 'PRODUCT_NAME'
82129       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82130       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82131       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82132       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82133 
82134 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
82135    --
82136    -- following sets the accounting attributes needed to reverse
82137    -- accounting for a distributeion
82138    --
82139    xla_ae_lines_pkg.SetTrxReversalAttrs
82140       (p_event_id              => l_event_id
82141       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
82142       ,p_trx_reversal_source   => l_trx_reversal_source);
82143 
82144 END IF;
82145 
82146 
82147 ----------------------------------------------------------------
82148 -- 4262811 -  update the header statuses to invalid in need be
82149 ----------------------------------------------------------------
82150 --
82151 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
82152 
82153 
82154   -----------------------------------------------
82155   -- No accrual reversal for the event class/type
82156   -----------------------------------------------
82157 ----------------------------------------------------------------
82158 
82159 --
82160 -- this ends the header loop iteration for one bulk fetch
82161 --
82162 END LOOP;
82163 
82164 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
82165 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
82166 
82167 --
82168 -- insert dummy rows into lines gt table that were created due to
82169 -- transaction reversals
82170 --
82171 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
82172    l_result := XLA_AE_LINES_PKG.InsertLines;
82173 END IF;
82174 
82175 --
82179 --
82176 -- reset the temp_line_num for each set of events fetched from header
82177 -- cursor rather than doing it for each new event in line cursor
82178 -- Bug 3939231
82180 xla_ae_lines_pkg.g_temp_line_num := 0;
82181 
82182 
82183 
82184 --
82185 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
82186 --
82187 --
82188 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82189 
82190       trace
82191          (p_msg      => 'SQL - FETCH line_cur'
82192          ,p_level    => C_LEVEL_STATEMENT
82193          ,p_module   => l_log_module);
82194 
82195 END IF;
82196 --
82197 --
82198 LOOP
82199   --
82200   FETCH line_cur BULK COLLECT INTO
82201         l_array_entity_id
82202       , l_array_legal_entity_id
82203       , l_array_entity_code
82204       , l_array_transaction_num
82205       , l_array_event_id
82206       , l_array_class_code
82207       , l_array_event_type
82208       , l_array_event_number
82209       , l_array_event_date
82210       , l_array_transaction_date
82211       , l_array_reference_num_1
82212       , l_array_reference_num_2
82213       , l_array_reference_num_3
82214       , l_array_reference_num_4
82215       , l_array_reference_char_1
82216       , l_array_reference_char_2
82217       , l_array_reference_char_3
82218       , l_array_reference_char_4
82219       , l_array_reference_date_1
82220       , l_array_reference_date_2
82221       , l_array_reference_date_3
82222       , l_array_reference_date_4
82223       , l_array_event_created_by
82224       , l_array_budgetary_control_flag
82225       , l_array_extract_line_num 
82226       , l_array_source_2
82227       , l_array_source_3
82228       , l_array_source_4
82229       , l_array_source_5
82230       , l_array_source_6
82231       , l_array_source_7
82232       , l_array_source_22
82233       , l_array_source_23
82234       , l_array_source_25
82235       , l_array_source_27
82236       , l_array_source_28
82237       , l_array_source_29
82238       , l_array_source_30
82239       , l_array_source_31
82240       , l_array_source_33
82241       , l_array_source_34
82242       , l_array_source_34_meaning
82243       , l_array_source_35
82244       , l_array_source_44
82245       , l_array_source_45
82246       , l_array_source_46
82247       , l_array_source_47
82248       , l_array_source_48
82249       , l_array_source_49
82250       , l_array_source_50
82251       , l_array_source_51
82252       , l_array_source_52
82253       , l_array_source_53
82254       , l_array_source_54
82255       , l_array_source_55
82256       , l_array_source_56
82257       , l_array_source_57
82258       , l_array_source_70
82259       , l_array_source_70_meaning
82260       , l_array_source_71
82261       , l_array_source_72
82262       , l_array_source_73
82263       , l_array_source_74
82264       , l_array_source_75
82265       , l_array_source_76
82266       , l_array_source_77
82267       , l_array_source_78
82268       , l_array_source_79
82269       , l_array_source_80
82270       , l_array_source_81
82271       , l_array_source_82
82272       , l_array_source_83
82273       , l_array_source_84
82274       , l_array_source_85
82275       , l_array_source_86
82276       , l_array_source_87
82277       LIMIT l_rows;
82278 
82279   --
82280   IF (C_LEVEL_EVENT >= g_log_level) THEN
82281             trace
82282                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
82283                ,p_level    => C_LEVEL_EVENT
82284                ,p_module   => l_log_module);
82285   END IF;
82286   --
82287   EXIT WHEN l_array_entity_id.count = 0;
82288 
82289   XLA_AE_LINES_PKG.g_rec_lines := null;
82290 
82291 --
82292 -- Bug 4458708
82293 --
82294 XLA_AE_LINES_PKG.g_LineNumber := 0;
82295 --
82296 --
82297 
82298 FOR Idx IN 1..l_array_event_id.count LOOP
82299    --
82300    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
82301    --
82302    l_event_id := l_array_event_id(idx);  -- 5648433
82303 
82304    --
82305    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82306    --
82307 
82308    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
82309              (g_array_event(l_event_id).array_value_num('header_index'))
82310          ,'N'
82311          ) <> 'Y'
82312    THEN
82313       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82314          trace
82315             (p_msg      => 'Trancaction revesal option is not Y '
82316             ,p_level    => C_LEVEL_STATEMENT
82317             ,p_module   => l_log_module);
82318       END IF;
82319 
82320 --
82321 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
82322 --
82323 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
82324 --
82325 -- set event info as cache for other routines to refer event attributes
82326 --
82327 
82328 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
82329    l_previous_event_id := l_event_id;
82330 
82331    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
82332       (p_application_id           => p_application_id
82333       ,p_primary_ledger_id        => p_primary_ledger_id
82334       ,p_base_ledger_id           => p_base_ledger_id
82335       ,p_target_ledger_id         => p_target_ledger_id
82336       ,p_entity_id                => l_array_entity_id(Idx)
82337       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
82338       ,p_entity_code              => l_array_entity_code(Idx)
82339       ,p_transaction_num          => l_array_transaction_num(Idx)
82343       ,p_event_number             => l_array_event_number(Idx)
82340       ,p_event_id                 => l_array_event_id(Idx)
82341       ,p_event_class_code         => l_array_class_code(Idx)
82342       ,p_event_type_code          => l_array_event_type(Idx)
82344       ,p_event_date               => l_array_event_date(Idx)
82345       ,p_transaction_date         => l_array_transaction_date(Idx)
82346       ,p_reference_num_1          => l_array_reference_num_1(Idx)
82347       ,p_reference_num_2          => l_array_reference_num_2(Idx)
82348       ,p_reference_num_3          => l_array_reference_num_3(Idx)
82349       ,p_reference_num_4          => l_array_reference_num_4(Idx)
82350       ,p_reference_char_1         => l_array_reference_char_1(Idx)
82351       ,p_reference_char_2         => l_array_reference_char_2(Idx)
82352       ,p_reference_char_3         => l_array_reference_char_3(Idx)
82353       ,p_reference_char_4         => l_array_reference_char_4(Idx)
82354       ,p_reference_date_1         => l_array_reference_date_1(Idx)
82355       ,p_reference_date_2         => l_array_reference_date_2(Idx)
82356       ,p_reference_date_3         => l_array_reference_date_3(Idx)
82357       ,p_reference_date_4         => l_array_reference_date_4(Idx)
82358       ,p_event_created_by         => l_array_event_created_by(Idx)
82359       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
82360        --
82361 END IF;
82362 
82363 
82364 
82365 --
82366 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
82367 
82368 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
82369 
82370 IF l_continue_with_lines THEN
82371    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
82372       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82373 
82374       xla_accounting_err_pkg.build_message
82375          (p_appli_s_name            => 'XLA'
82376          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
82377          ,p_token_1                 => 'LINE_NUMBER'
82378          ,p_value_1                 => l_array_extract_line_num(Idx)
82379          ,p_token_2                 => 'PRODUCT_NAME'
82380          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82381          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82382          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82383          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82384 
82385    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
82386       --
82387       -- following sets the accounting attributes needed to reverse
82388       -- accounting for a distributeion
82389       --
82390 
82391       --
82392       -- 5217187
82393       --
82394       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
82395       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
82396                                        g_array_event(l_event_id).array_value_num('header_index'));
82397       --
82398       --
82399 
82400       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
82401       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
82402       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
82403       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
82404       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
82405       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
82406       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
82407       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
82408       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
82409       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
82410       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
82411       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
82412       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
82413       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
82414       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
82415       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
82416       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
82417       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
82418       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
82419       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
82420       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
82421       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
82422       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
82423       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
82424       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
82425       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
82426       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
82427       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
82428       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
82429       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
82430       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
82431       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
82432       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
82433       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
82434       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
82435       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
82439       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
82436       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
82437       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
82438       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
82440       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
82441       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
82442       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
82443       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_53(Idx);
82444       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
82445       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
82446       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
82447       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
82448       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
82449       l_rec_rev_acct_attrs.array_char_value(26)  := 
82450 xla_ae_sources_pkg.GetSystemSourceChar(
82451    p_source_code           => 'XLA_CURRENCY_CODE'
82452  , p_source_type_code      => 'Y'
82453  , p_source_application_id =>  602
82454 );
82455       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
82456       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
82457       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
82458       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_54(Idx);
82459       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
82460       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_2(Idx);
82461       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
82462       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_46(Idx);
82463       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
82464       l_rec_rev_acct_attrs.array_char_value(31)  := 
82465 xla_ae_sources_pkg.GetSystemSourceChar(
82466    p_source_code           => 'XLA_CURRENCY_CODE'
82467  , p_source_type_code      => 'Y'
82468  , p_source_application_id =>  602
82469 );
82470       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
82471       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_46(Idx);
82472       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
82473       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_55(Idx);
82474       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'GAIN_LOSS_REFERENCE';
82475       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_32');
82476       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID1';
82477       l_rec_rev_acct_attrs.array_num_value(35)  := g_array_event(l_event_id).array_value_num('source_32');
82478       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID2';
82479       l_rec_rev_acct_attrs.array_num_value(36)  := l_array_source_35(Idx);
82480       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
82481       l_rec_rev_acct_attrs.array_char_value(37)  := l_array_source_34(Idx);
82482       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_CR_ENC_TYPE_ID';
82483       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_56(Idx);
82484       l_rec_rev_acct_attrs.array_acct_attr_code(39) := 'UPG_DR_ENC_TYPE_ID';
82485       l_rec_rev_acct_attrs.array_num_value(39)  := l_array_source_57(Idx);
82486 
82487 
82488       xla_ae_lines_pkg.SetAcctReversalAttrs
82489          (p_event_id             => l_event_id
82490          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
82491          ,p_calculate_acctd_flag => l_calculate_acctd_flag
82492          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
82493    END IF;
82494 
82495    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
82496        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
82497 
82498 --
82499 AcctLineType_78 (
82500  p_application_id  => p_application_id
82501  ,p_event_id     => l_event_id
82502  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82503  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82504  ,p_actual_flag => l_actual_flag
82505  ,p_balance_type_code => l_balance_type_code
82506  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82507  
82508  , p_source_2 => l_array_source_2(Idx)
82509  , p_source_3 => l_array_source_3(Idx)
82510  , p_source_4 => l_array_source_4(Idx)
82511  , p_source_5 => l_array_source_5(Idx)
82512  , p_source_6 => l_array_source_6(Idx)
82513  , p_source_22 => l_array_source_22(Idx)
82514  , p_source_23 => l_array_source_23(Idx)
82515  , p_source_25 => l_array_source_25(Idx)
82516  , p_source_27 => l_array_source_27(Idx)
82517  , p_source_28 => l_array_source_28(Idx)
82518  , p_source_29 => l_array_source_29(Idx)
82519  , p_source_30 => l_array_source_30(Idx)
82520  , p_source_31 => l_array_source_31(Idx)
82521  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82522  , p_source_33 => l_array_source_33(Idx)
82523  , p_source_34 => l_array_source_34(Idx)
82524  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82525  , p_source_35 => l_array_source_35(Idx)
82526  , p_source_44 => l_array_source_44(Idx)
82527  , p_source_45 => l_array_source_45(Idx)
82528  , p_source_46 => l_array_source_46(Idx)
82529  , p_source_47 => l_array_source_47(Idx)
82530  , p_source_48 => l_array_source_48(Idx)
82531  , p_source_49 => l_array_source_49(Idx)
82532  , p_source_50 => l_array_source_50(Idx)
82533  , p_source_51 => l_array_source_51(Idx)
82534  , p_source_52 => l_array_source_52(Idx)
82535  , p_source_53 => l_array_source_53(Idx)
82536  , p_source_54 => l_array_source_54(Idx)
82537  , p_source_55 => l_array_source_55(Idx)
82538  , p_source_56 => l_array_source_56(Idx)
82539  , p_source_57 => l_array_source_57(Idx)
82540  );
82541 If(l_balance_type_code = 'A') THEN
82545 --
82542   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82543 END IF;
82544 
82546 
82547 
82548 --
82549 AcctLineType_80 (
82550  p_application_id  => p_application_id
82551  ,p_event_id     => l_event_id
82552  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82553  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82554  ,p_actual_flag => l_actual_flag
82555  ,p_balance_type_code => l_balance_type_code
82556  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82557  
82558  , p_source_2 => l_array_source_2(Idx)
82559  , p_source_3 => l_array_source_3(Idx)
82560  , p_source_4 => l_array_source_4(Idx)
82561  , p_source_6 => l_array_source_6(Idx)
82562  , p_source_7 => l_array_source_7(Idx)
82563  , p_source_22 => l_array_source_22(Idx)
82564  , p_source_23 => l_array_source_23(Idx)
82565  , p_source_25 => l_array_source_25(Idx)
82566  , p_source_27 => l_array_source_27(Idx)
82567  , p_source_28 => l_array_source_28(Idx)
82568  , p_source_29 => l_array_source_29(Idx)
82569  , p_source_30 => l_array_source_30(Idx)
82570  , p_source_31 => l_array_source_31(Idx)
82571  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82572  , p_source_33 => l_array_source_33(Idx)
82573  , p_source_34 => l_array_source_34(Idx)
82574  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82575  , p_source_35 => l_array_source_35(Idx)
82576  , p_source_44 => l_array_source_44(Idx)
82577  , p_source_45 => l_array_source_45(Idx)
82578  , p_source_46 => l_array_source_46(Idx)
82579  , p_source_47 => l_array_source_47(Idx)
82580  , p_source_48 => l_array_source_48(Idx)
82581  , p_source_49 => l_array_source_49(Idx)
82582  , p_source_50 => l_array_source_50(Idx)
82583  , p_source_51 => l_array_source_51(Idx)
82584  , p_source_52 => l_array_source_52(Idx)
82585  , p_source_53 => l_array_source_53(Idx)
82586  , p_source_54 => l_array_source_54(Idx)
82587  , p_source_55 => l_array_source_55(Idx)
82588  , p_source_56 => l_array_source_56(Idx)
82589  , p_source_57 => l_array_source_57(Idx)
82590  );
82591 If(l_balance_type_code = 'A') THEN
82592   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82593 END IF;
82594 
82595 --
82596 
82597 
82598 --
82599 AcctLineType_91 (
82600  p_application_id  => p_application_id
82601  ,p_event_id     => l_event_id
82602  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82603  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82604  ,p_actual_flag => l_actual_flag
82605  ,p_balance_type_code => l_balance_type_code
82606  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82607  
82608  , p_source_2 => l_array_source_2(Idx)
82609  , p_source_3 => l_array_source_3(Idx)
82610  , p_source_6 => l_array_source_6(Idx)
82611  , p_source_22 => l_array_source_22(Idx)
82612  , p_source_23 => l_array_source_23(Idx)
82613  , p_source_25 => l_array_source_25(Idx)
82614  , p_source_27 => l_array_source_27(Idx)
82615  , p_source_28 => l_array_source_28(Idx)
82616  , p_source_29 => l_array_source_29(Idx)
82617  , p_source_30 => l_array_source_30(Idx)
82618  , p_source_31 => l_array_source_31(Idx)
82619  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82620  , p_source_33 => l_array_source_33(Idx)
82621  , p_source_34 => l_array_source_34(Idx)
82622  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82623  , p_source_35 => l_array_source_35(Idx)
82624  , p_source_44 => l_array_source_44(Idx)
82625  , p_source_45 => l_array_source_45(Idx)
82626  , p_source_46 => l_array_source_46(Idx)
82627  , p_source_47 => l_array_source_47(Idx)
82628  , p_source_48 => l_array_source_48(Idx)
82629  , p_source_49 => l_array_source_49(Idx)
82630  , p_source_50 => l_array_source_50(Idx)
82631  , p_source_51 => l_array_source_51(Idx)
82632  , p_source_52 => l_array_source_52(Idx)
82633  , p_source_53 => l_array_source_53(Idx)
82634  , p_source_54 => l_array_source_54(Idx)
82635  , p_source_55 => l_array_source_55(Idx)
82636  , p_source_56 => l_array_source_56(Idx)
82637  , p_source_57 => l_array_source_57(Idx)
82638  );
82639 If(l_balance_type_code = 'A') THEN
82640   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82641 END IF;
82642 
82643 --
82644 
82645 
82646 --
82647 AcctLineType_93 (
82648  p_application_id  => p_application_id
82649  ,p_event_id     => l_event_id
82650  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82651  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82652  ,p_actual_flag => l_actual_flag
82653  ,p_balance_type_code => l_balance_type_code
82654  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82655  
82656  , p_source_2 => l_array_source_2(Idx)
82657  , p_source_3 => l_array_source_3(Idx)
82658  , p_source_6 => l_array_source_6(Idx)
82659  , p_source_22 => l_array_source_22(Idx)
82660  , p_source_23 => l_array_source_23(Idx)
82661  , p_source_25 => l_array_source_25(Idx)
82662  , p_source_27 => l_array_source_27(Idx)
82663  , p_source_28 => l_array_source_28(Idx)
82664  , p_source_29 => l_array_source_29(Idx)
82665  , p_source_30 => l_array_source_30(Idx)
82666  , p_source_31 => l_array_source_31(Idx)
82667  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82668  , p_source_33 => l_array_source_33(Idx)
82669  , p_source_34 => l_array_source_34(Idx)
82670  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82671  , p_source_35 => l_array_source_35(Idx)
82672  , p_source_44 => l_array_source_44(Idx)
82673  , p_source_45 => l_array_source_45(Idx)
82674  , p_source_46 => l_array_source_46(Idx)
82675  , p_source_47 => l_array_source_47(Idx)
82676  , p_source_48 => l_array_source_48(Idx)
82677  , p_source_49 => l_array_source_49(Idx)
82678  , p_source_50 => l_array_source_50(Idx)
82679  , p_source_51 => l_array_source_51(Idx)
82680  , p_source_52 => l_array_source_52(Idx)
82681  , p_source_53 => l_array_source_53(Idx)
82682  , p_source_54 => l_array_source_54(Idx)
82683  , p_source_55 => l_array_source_55(Idx)
82687  , p_source_70_meaning => l_array_source_70_meaning(Idx)
82684  , p_source_56 => l_array_source_56(Idx)
82685  , p_source_57 => l_array_source_57(Idx)
82686  , p_source_70 => l_array_source_70(Idx)
82688  , p_source_71 => l_array_source_71(Idx)
82689  );
82690 If(l_balance_type_code = 'A') THEN
82691   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82692 END IF;
82693 
82694 --
82695 
82696 
82697 --
82698 AcctLineType_96 (
82699  p_application_id  => p_application_id
82700  ,p_event_id     => l_event_id
82701  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82702  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82703  ,p_actual_flag => l_actual_flag
82704  ,p_balance_type_code => l_balance_type_code
82705  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82706  
82707  , p_source_2 => l_array_source_2(Idx)
82708  , p_source_3 => l_array_source_3(Idx)
82709  , p_source_6 => l_array_source_6(Idx)
82710  , p_source_22 => l_array_source_22(Idx)
82711  , p_source_23 => l_array_source_23(Idx)
82712  , p_source_25 => l_array_source_25(Idx)
82713  , p_source_27 => l_array_source_27(Idx)
82714  , p_source_28 => l_array_source_28(Idx)
82715  , p_source_29 => l_array_source_29(Idx)
82716  , p_source_30 => l_array_source_30(Idx)
82717  , p_source_31 => l_array_source_31(Idx)
82718  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82719  , p_source_33 => l_array_source_33(Idx)
82720  , p_source_34 => l_array_source_34(Idx)
82721  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82722  , p_source_35 => l_array_source_35(Idx)
82723  , p_source_44 => l_array_source_44(Idx)
82724  , p_source_45 => l_array_source_45(Idx)
82725  , p_source_46 => l_array_source_46(Idx)
82726  , p_source_47 => l_array_source_47(Idx)
82727  , p_source_48 => l_array_source_48(Idx)
82728  , p_source_49 => l_array_source_49(Idx)
82729  , p_source_50 => l_array_source_50(Idx)
82730  , p_source_51 => l_array_source_51(Idx)
82731  , p_source_52 => l_array_source_52(Idx)
82732  , p_source_53 => l_array_source_53(Idx)
82733  , p_source_54 => l_array_source_54(Idx)
82734  , p_source_55 => l_array_source_55(Idx)
82735  , p_source_56 => l_array_source_56(Idx)
82736  , p_source_57 => l_array_source_57(Idx)
82737  , p_source_70 => l_array_source_70(Idx)
82738  , p_source_70_meaning => l_array_source_70_meaning(Idx)
82739  , p_source_72 => l_array_source_72(Idx)
82740  , p_source_73 => l_array_source_73(Idx)
82741  );
82742 If(l_balance_type_code = 'A') THEN
82743   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82744 END IF;
82745 
82746 --
82747 
82748 
82749 --
82750 AcctLineType_98 (
82751  p_application_id  => p_application_id
82752  ,p_event_id     => l_event_id
82753  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82754  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82755  ,p_actual_flag => l_actual_flag
82756  ,p_balance_type_code => l_balance_type_code
82757  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82758  
82759  , p_source_2 => l_array_source_2(Idx)
82760  , p_source_3 => l_array_source_3(Idx)
82761  , p_source_6 => l_array_source_6(Idx)
82762  , p_source_22 => l_array_source_22(Idx)
82763  , p_source_23 => l_array_source_23(Idx)
82764  , p_source_25 => l_array_source_25(Idx)
82765  , p_source_27 => l_array_source_27(Idx)
82766  , p_source_28 => l_array_source_28(Idx)
82767  , p_source_29 => l_array_source_29(Idx)
82768  , p_source_30 => l_array_source_30(Idx)
82769  , p_source_31 => l_array_source_31(Idx)
82770  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82771  , p_source_33 => l_array_source_33(Idx)
82772  , p_source_34 => l_array_source_34(Idx)
82773  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82774  , p_source_35 => l_array_source_35(Idx)
82775  , p_source_44 => l_array_source_44(Idx)
82776  , p_source_45 => l_array_source_45(Idx)
82777  , p_source_46 => l_array_source_46(Idx)
82778  , p_source_53 => l_array_source_53(Idx)
82779  , p_source_54 => l_array_source_54(Idx)
82780  , p_source_55 => l_array_source_55(Idx)
82781  , p_source_56 => l_array_source_56(Idx)
82782  , p_source_57 => l_array_source_57(Idx)
82783  , p_source_70 => l_array_source_70(Idx)
82784  , p_source_70_meaning => l_array_source_70_meaning(Idx)
82785  , p_source_71 => l_array_source_71(Idx)
82786  , p_source_74 => l_array_source_74(Idx)
82787  , p_source_75 => l_array_source_75(Idx)
82788  , p_source_76 => l_array_source_76(Idx)
82789  , p_source_77 => l_array_source_77(Idx)
82790  , p_source_78 => l_array_source_78(Idx)
82791  , p_source_79 => l_array_source_79(Idx)
82792  );
82793 If(l_balance_type_code = 'A') THEN
82794   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82795 END IF;
82796 
82797 --
82798 
82799 
82800 --
82801 AcctLineType_102 (
82802  p_application_id  => p_application_id
82803  ,p_event_id     => l_event_id
82804  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82805  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82806  ,p_actual_flag => l_actual_flag
82807  ,p_balance_type_code => l_balance_type_code
82808  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82809  
82810  , p_source_2 => l_array_source_2(Idx)
82811  , p_source_3 => l_array_source_3(Idx)
82812  , p_source_6 => l_array_source_6(Idx)
82813  , p_source_22 => l_array_source_22(Idx)
82814  , p_source_23 => l_array_source_23(Idx)
82815  , p_source_25 => l_array_source_25(Idx)
82816  , p_source_27 => l_array_source_27(Idx)
82817  , p_source_28 => l_array_source_28(Idx)
82818  , p_source_29 => l_array_source_29(Idx)
82819  , p_source_30 => l_array_source_30(Idx)
82820  , p_source_31 => l_array_source_31(Idx)
82821  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82822  , p_source_33 => l_array_source_33(Idx)
82823  , p_source_34 => l_array_source_34(Idx)
82824  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82825  , p_source_35 => l_array_source_35(Idx)
82829  , p_source_53 => l_array_source_53(Idx)
82826  , p_source_44 => l_array_source_44(Idx)
82827  , p_source_45 => l_array_source_45(Idx)
82828  , p_source_46 => l_array_source_46(Idx)
82830  , p_source_54 => l_array_source_54(Idx)
82831  , p_source_55 => l_array_source_55(Idx)
82832  , p_source_56 => l_array_source_56(Idx)
82833  , p_source_57 => l_array_source_57(Idx)
82834  , p_source_70 => l_array_source_70(Idx)
82835  , p_source_70_meaning => l_array_source_70_meaning(Idx)
82836  , p_source_72 => l_array_source_72(Idx)
82837  , p_source_73 => l_array_source_73(Idx)
82838  , p_source_80 => l_array_source_80(Idx)
82839  , p_source_81 => l_array_source_81(Idx)
82840  , p_source_82 => l_array_source_82(Idx)
82841  , p_source_83 => l_array_source_83(Idx)
82842  , p_source_84 => l_array_source_84(Idx)
82843  , p_source_85 => l_array_source_85(Idx)
82844  );
82845 If(l_balance_type_code = 'A') THEN
82846   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82847 END IF;
82848 
82849 --
82850 
82851 
82852 --
82853 AcctLineType_106 (
82854  p_application_id  => p_application_id
82855  ,p_event_id     => l_event_id
82856  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82857  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82858  ,p_actual_flag => l_actual_flag
82859  ,p_balance_type_code => l_balance_type_code
82860  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82861  
82862  , p_source_2 => l_array_source_2(Idx)
82863  , p_source_3 => l_array_source_3(Idx)
82864  , p_source_6 => l_array_source_6(Idx)
82865  , p_source_22 => l_array_source_22(Idx)
82866  , p_source_23 => l_array_source_23(Idx)
82867  , p_source_25 => l_array_source_25(Idx)
82868  , p_source_27 => l_array_source_27(Idx)
82869  , p_source_28 => l_array_source_28(Idx)
82870  , p_source_29 => l_array_source_29(Idx)
82871  , p_source_30 => l_array_source_30(Idx)
82872  , p_source_31 => l_array_source_31(Idx)
82873  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82874  , p_source_33 => l_array_source_33(Idx)
82875  , p_source_34 => l_array_source_34(Idx)
82876  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82877  , p_source_35 => l_array_source_35(Idx)
82878  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
82879  , p_source_44 => l_array_source_44(Idx)
82880  , p_source_45 => l_array_source_45(Idx)
82881  , p_source_46 => l_array_source_46(Idx)
82882  , p_source_47 => l_array_source_47(Idx)
82883  , p_source_48 => l_array_source_48(Idx)
82884  , p_source_49 => l_array_source_49(Idx)
82885  , p_source_50 => l_array_source_50(Idx)
82886  , p_source_51 => l_array_source_51(Idx)
82887  , p_source_52 => l_array_source_52(Idx)
82888  , p_source_53 => l_array_source_53(Idx)
82889  , p_source_54 => l_array_source_54(Idx)
82890  , p_source_55 => l_array_source_55(Idx)
82891  , p_source_56 => l_array_source_56(Idx)
82892  , p_source_57 => l_array_source_57(Idx)
82893  , p_source_73 => l_array_source_73(Idx)
82894  , p_source_86 => l_array_source_86(Idx)
82895  , p_source_87 => l_array_source_87(Idx)
82896  );
82897 If(l_balance_type_code = 'A') THEN
82898   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82899 END IF;
82900 
82901 --
82902 
82903 
82904 --
82905 AcctLineType_107 (
82906  p_application_id  => p_application_id
82907  ,p_event_id     => l_event_id
82908  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82909  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82910  ,p_actual_flag => l_actual_flag
82911  ,p_balance_type_code => l_balance_type_code
82912  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82913  
82914  , p_source_2 => l_array_source_2(Idx)
82915  , p_source_3 => l_array_source_3(Idx)
82916  , p_source_6 => l_array_source_6(Idx)
82917  , p_source_22 => l_array_source_22(Idx)
82918  , p_source_23 => l_array_source_23(Idx)
82919  , p_source_25 => l_array_source_25(Idx)
82920  , p_source_27 => l_array_source_27(Idx)
82921  , p_source_28 => l_array_source_28(Idx)
82922  , p_source_29 => l_array_source_29(Idx)
82923  , p_source_30 => l_array_source_30(Idx)
82924  , p_source_31 => l_array_source_31(Idx)
82925  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82926  , p_source_33 => l_array_source_33(Idx)
82927  , p_source_34 => l_array_source_34(Idx)
82928  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82929  , p_source_35 => l_array_source_35(Idx)
82930  , p_source_44 => l_array_source_44(Idx)
82931  , p_source_45 => l_array_source_45(Idx)
82932  , p_source_46 => l_array_source_46(Idx)
82933  , p_source_53 => l_array_source_53(Idx)
82934  , p_source_54 => l_array_source_54(Idx)
82935  , p_source_55 => l_array_source_55(Idx)
82936  , p_source_56 => l_array_source_56(Idx)
82937  , p_source_57 => l_array_source_57(Idx)
82938  , p_source_70 => l_array_source_70(Idx)
82939  , p_source_70_meaning => l_array_source_70_meaning(Idx)
82940  , p_source_72 => l_array_source_72(Idx)
82941  , p_source_73 => l_array_source_73(Idx)
82942  , p_source_80 => l_array_source_80(Idx)
82943  , p_source_81 => l_array_source_81(Idx)
82944  , p_source_82 => l_array_source_82(Idx)
82945  , p_source_83 => l_array_source_83(Idx)
82946  , p_source_84 => l_array_source_84(Idx)
82947  , p_source_85 => l_array_source_85(Idx)
82948  );
82949 If(l_balance_type_code = 'A') THEN
82950   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82951 END IF;
82952 
82953 --
82954 
82955       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
82956       -- or secondary ledger that has different currency with primary
82957       -- or alc that is calculated by sla
82958       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
82959             (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'))
82960 
82964         XLA_AE_LINES_PKG.CreateGainOrLossLines(
82961 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
82962 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
82963           AND (l_actual_flag = 'A')) THEN
82965           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
82966          ,p_application_id   => p_application_id
82967          ,p_amb_context_code => 'DEFAULT'
82968          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
82969          ,p_event_class_code => C_EVENT_CLASS_CODE
82970          ,p_event_type_code  => C_EVENT_TYPE_CODE
82971          
82972          ,p_gain_ccid        => -1
82973          ,p_loss_ccid        => -1
82974 
82975          ,p_actual_flag      => l_actual_flag
82976          ,p_enc_flag         => null
82977          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
82978          ,p_enc_g_l_ref      => null
82979          );
82980       END IF;
82981    END IF;
82982 END IF;
82983 
82984    ELSE
82985       --
82986       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82987       --
82988       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82989          trace
82990             (p_msg      => 'Trancaction revesal option is Y'
82991             ,p_level    => C_LEVEL_STATEMENT
82992             ,p_module   => l_log_module);
82993       END IF;
82994    END IF;
82995 
82996 END LOOP;
82997 l_result := XLA_AE_LINES_PKG.InsertLines ;
82998 end loop;
82999 close line_cur;
83000 
83001 
83002 --
83003 -- insert headers into xla_ae_headers_gt table
83004 --
83005 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
83006 
83007 -- insert into errors table here.
83008 
83009 END LOOP;
83010 
83011 --
83012 -- 4865292
83013 --
83014 -- Compare g_hdr_extract_count with event count in
83015 -- CreateHeadersAndLines.
83016 --
83017 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
83018 
83019 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83020    trace (p_msg     => '# rows extracted from header extract objects '
83021                     || ' (running total): '
83022                     || g_hdr_extract_count
83023          ,p_level   => C_LEVEL_STATEMENT
83024          ,p_module  => l_log_module);
83025 END IF;
83026 
83027 CLOSE header_cur;
83028 --
83029 
83030 --
83031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83032    trace
83033       (p_msg      => 'END of EventClass_128'
83034       ,p_level    => C_LEVEL_PROCEDURE
83035       ,p_module   => l_log_module);
83036 END IF;
83037 --
83038 RETURN l_result;
83039 EXCEPTION
83040 WHEN xla_exceptions_pkg.application_exception THEN
83041    
83042 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
83043 
83044    
83045 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
83046 
83047    RAISE;
83048 WHEN OTHERS THEN
83049    xla_exceptions_pkg.raise_message
83050       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_128');
83051 END EventClass_128;
83052 --
83053 
83054 ---------------------------------------
83055 --
83056 -- PRIVATE PROCEDURE
83057 --         insert_sources_129
83058 --
83059 ----------------------------------------
83060 --
83061 PROCEDURE insert_sources_129(
83062                                 p_target_ledger_id       IN NUMBER
83063                               , p_language               IN VARCHAR2
83064                               , p_sla_ledger_id          IN NUMBER
83065                               , p_pad_start_date         IN DATE
83066                               , p_pad_end_date           IN DATE
83067                          )
83068 IS
83069 
83070 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ADJ_ALL';
83071 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USG_COST_ADJ';
83072 p_apps_owner                   VARCHAR2(30);
83073 l_log_module                   VARCHAR2(240);
83074 BEGIN
83075 IF g_log_enabled THEN
83076       l_log_module := C_DEFAULT_MODULE||'.insert_sources_129';
83077 END IF;
83078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83079 
83080       trace
83081          (p_msg      => 'BEGIN of insert_sources_129'
83082          ,p_level    => C_LEVEL_PROCEDURE
83083          ,p_module   => l_log_module);
83084 
83085 END IF;
83086 
83087 -- select APPS owner
83088 SELECT oracle_username
83089   INTO p_apps_owner
83090   FROM fnd_oracle_userid
83091  WHERE read_only_flag = 'U'
83092 ;
83093 
83094 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83095       trace
83096          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
83097                         ' - p_language = '||p_language||
83098                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
83099                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
83100                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
83101                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
83102          ,p_level    => C_LEVEL_STATEMENT
83103          ,p_module   => l_log_module);
83104 END IF;
83105 
83106 
83107 --
83108 INSERT INTO xla_diag_sources --hdr2
83109 (
83110         event_id
83111       , ledger_id
83112       , sla_ledger_id
83113       , description_language
83114       , object_name
83115       , object_type_code
83116       , line_number
83117       , source_application_id
83118       , source_type_code
83119       , source_code
83120       , source_value
83121       , source_meaning
83122       , created_by
83123       , creation_date
83124       , last_update_date
83125       , last_updated_by
83129       , program_id
83126       , last_update_login
83127       , program_update_date
83128       , program_application_id
83130       , request_id
83131 )
83132 SELECT
83133         event_id
83134       , p_target_ledger_id
83135       , p_sla_ledger_id
83136       , p_language
83137       , object_name
83138       , object_type_code
83139       , line_number
83140       , source_application_id
83141       , source_type_code
83142       , source_code
83143       , SUBSTR(source_value ,1,1996)
83144       , SUBSTR(source_meaning ,1,200)
83145       , xla_environment_pkg.g_Usr_Id
83146       , TRUNC(SYSDATE)
83147       , TRUNC(SYSDATE)
83148       , xla_environment_pkg.g_Usr_Id
83149       , xla_environment_pkg.g_Login_Id
83150       , TRUNC(SYSDATE)
83151       , xla_environment_pkg.g_Prog_Appl_Id
83152       , xla_environment_pkg.g_Prog_Id
83153       , xla_environment_pkg.g_Req_Id
83154   FROM (
83155        SELECT xet.event_id                  event_id
83156             , 0                          line_number
83157             , CASE r
83158                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
83159                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
83160                 
83161                ELSE null
83162               END                           object_name
83163             , CASE r
83164                 WHEN 1 THEN 'HEADER' 
83165                 WHEN 2 THEN 'HEADER' 
83166                 
83167                 ELSE null
83168               END                           object_type_code
83169             , CASE r
83170                 WHEN 1 THEN '275' 
83171                 WHEN 2 THEN '275' 
83172                 
83173                 ELSE null
83174               END                           source_application_id
83175             , 'S'             source_type_code
83176             , CASE r
83177                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
83178                 WHEN 2 THEN 'GL_DATE' 
83179                 
83180                 ELSE null
83181               END                           source_code
83182             , CASE r
83183                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
83184                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
83185                 
83186                 ELSE null
83187               END                           source_value
83188             , null              source_meaning
83189          FROM xla_events_gt     xet  
83190       , PA_XLA_EXP_HEADER_V  h2
83191              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
83192          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
83193            AND xet.event_class_code = C_EVENT_CLASS_CODE
83194               AND h2.event_id = xet.event_id
83195 
83196 )
83197 ;
83198 --
83199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83200 
83201       trace
83202          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
83203          ,p_level    => C_LEVEL_STATEMENT
83204          ,p_module   => l_log_module);
83205 
83206 END IF;
83207 --
83208 
83209 
83210 
83211 --
83212 INSERT INTO xla_diag_sources  --line2
83213 (
83214         event_id
83215       , ledger_id
83216       , sla_ledger_id
83217       , description_language
83218       , object_name
83219       , object_type_code
83220       , line_number
83221       , source_application_id
83222       , source_type_code
83223       , source_code
83224       , source_value
83225       , source_meaning
83226       , created_by
83227       , creation_date
83228       , last_update_date
83229       , last_updated_by
83230       , last_update_login
83231       , program_update_date
83232       , program_application_id
83233       , program_id
83234       , request_id
83235 )
83236 SELECT  event_id
83237       , p_target_ledger_id
83238       , p_sla_ledger_id
83239       , p_language
83240       , object_name
83241       , object_type_code
83242       , line_number
83243       , source_application_id
83244       , source_type_code
83245       , source_code
83246       , SUBSTR(source_value,1,1996)
83247       , SUBSTR(source_meaning ,1,200)
83248       , xla_environment_pkg.g_Usr_Id
83249       , TRUNC(SYSDATE)
83250       , TRUNC(SYSDATE)
83251       , xla_environment_pkg.g_Usr_Id
83252       , xla_environment_pkg.g_Login_Id
83253       , TRUNC(SYSDATE)
83254       , xla_environment_pkg.g_Prog_Appl_Id
83255       , xla_environment_pkg.g_Prog_Id
83256       , xla_environment_pkg.g_Req_Id
83257   FROM (
83258        SELECT xet.event_id                  event_id
83259             , l1.line_number                 line_number
83260             , CASE r
83261                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
83262                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
83263                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
83264                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
83265                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
83266                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
83267                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
83268                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
83269                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
83270                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
83271                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
83272                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
83273                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
83274                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
83275                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
83276                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
83277                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
83278                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
83279                 
83280                ELSE null
83284                 WHEN 2 THEN 'LINE' 
83281               END                           object_name
83282             , CASE r
83283                 WHEN 1 THEN 'LINE' 
83285                 WHEN 3 THEN 'LINE' 
83286                 WHEN 4 THEN 'LINE' 
83287                 WHEN 5 THEN 'LINE' 
83288                 WHEN 6 THEN 'LINE' 
83289                 WHEN 7 THEN 'LINE' 
83290                 WHEN 8 THEN 'LINE' 
83291                 WHEN 9 THEN 'LINE' 
83292                 WHEN 10 THEN 'LINE' 
83293                 WHEN 11 THEN 'LINE' 
83294                 WHEN 12 THEN 'LINE' 
83295                 WHEN 13 THEN 'LINE' 
83296                 WHEN 14 THEN 'LINE' 
83297                 WHEN 15 THEN 'LINE' 
83298                 WHEN 16 THEN 'LINE' 
83299                 WHEN 17 THEN 'LINE' 
83300                 WHEN 18 THEN 'LINE' 
83301                 
83302                 ELSE null
83303               END                           object_type_code
83304             , CASE r
83305                 WHEN 1 THEN '275' 
83306                 WHEN 2 THEN '275' 
83307                 WHEN 3 THEN '275' 
83308                 WHEN 4 THEN '275' 
83309                 WHEN 5 THEN '275' 
83310                 WHEN 6 THEN '275' 
83311                 WHEN 7 THEN '275' 
83312                 WHEN 8 THEN '275' 
83313                 WHEN 9 THEN '275' 
83314                 WHEN 10 THEN '275' 
83315                 WHEN 11 THEN '275' 
83316                 WHEN 12 THEN '275' 
83317                 WHEN 13 THEN '275' 
83318                 WHEN 14 THEN '275' 
83319                 WHEN 15 THEN '275' 
83320                 WHEN 16 THEN '275' 
83321                 WHEN 17 THEN '275' 
83322                 WHEN 18 THEN '275' 
83323                 
83324                 ELSE null
83325               END                           source_application_id
83326             , 'S'             source_type_code
83327             , CASE r
83328                 WHEN 1 THEN 'COST_CCID' 
83329                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
83330                 WHEN 3 THEN 'ADJ_COST_CCID' 
83331                 WHEN 4 THEN 'COST_CLEARING_CCID' 
83332                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
83333                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
83334                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
83335                 WHEN 8 THEN 'ENTERED_RAW_COST' 
83336                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
83337                 WHEN 10 THEN 'ACCT_RAW_COST' 
83338                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
83339                 WHEN 12 THEN 'EXCHANGE_RATE' 
83340                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
83341                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
83342                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
83343                 WHEN 16 THEN 'LINE_NUMBER' 
83344                 WHEN 17 THEN 'LINE_TYPE' 
83345                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
83346                 
83347                 ELSE null
83348               END                           source_code
83349             , CASE r
83350                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
83351                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
83352                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
83353                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
83354                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
83355                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
83356                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
83357                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
83358                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
83359                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
83360                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
83361                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
83362                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
83363                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
83364                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
83365                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
83366                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
83367                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
83368                 
83369                 ELSE null
83370               END                           source_value
83371             , CASE r
83372                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
83373                           103371
83374                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
83375                          ,'ALLOW_OVERRIDE_CCID_FLAG'
83376                          ,'S'
83377                          ,275)
83378                 WHEN 17 THEN fvl34.meaning
83379                 
83380                 ELSE null
83381               END               source_meaning
83382          FROM  xla_events_gt     xet  
83383         , PA_XLA_CDL_LINES_V  l1
83384   , fnd_lookup_values    fvl34
83385             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
83386         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
83387           AND xet.event_class_code = C_EVENT_CLASS_CODE
83388             AND l1.event_id          = xet.event_id
83389    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
83390   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
83391   AND fvl34.view_application_id(+) = 275
83392   AND fvl34.language(+)            = USERENV('LANG')
83393   
83394 )
83395 ;
83396 --
83397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83398 
83399       trace
83400          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
83401          ,p_level    => C_LEVEL_STATEMENT
83402          ,p_module   => l_log_module);
83403 
83404 END IF;
83405 
83406 
83407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83408       trace
83409          (p_msg      => 'END of insert_sources_129'
83413 EXCEPTION
83410          ,p_level    => C_LEVEL_PROCEDURE
83411          ,p_module   => l_log_module);
83412 END IF;
83414   WHEN xla_exceptions_pkg.application_exception THEN
83415       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
83416             trace
83417                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
83418                ,p_level    => C_LEVEL_EXCEPTION
83419                ,p_module   => l_log_module);
83420       END IF;
83421       RAISE;
83422   WHEN OTHERS THEN
83423       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
83424             trace
83425                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
83426                ,p_level    => C_LEVEL_EXCEPTION
83427                ,p_module   => l_log_module);
83428        END IF;
83429        xla_exceptions_pkg.raise_message
83430            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_129');
83431 END insert_sources_129;
83432 --
83433 
83434 ---------------------------------------
83435 --
83436 -- PRIVATE FUNCTION
83437 --         EventClass_129
83438 --
83439 ----------------------------------------
83440 --
83441 FUNCTION EventClass_129
83442        (p_application_id         IN NUMBER
83443        ,p_base_ledger_id         IN NUMBER
83444        ,p_target_ledger_id       IN NUMBER
83445        ,p_language               IN VARCHAR2
83446        ,p_currency_code          IN VARCHAR2
83447        ,p_sla_ledger_id          IN NUMBER
83448        ,p_pad_start_date         IN DATE
83449        ,p_pad_end_date           IN DATE
83450        ,p_primary_ledger_id      IN NUMBER)
83451 RETURN BOOLEAN IS
83452 --
83453 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ADJ_ALL';
83454 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USG_COST_ADJ';
83455 
83456 l_calculate_acctd_flag   VARCHAR2(1) :='N';
83457 l_calculate_g_l_flag     VARCHAR2(1) :='N';
83458 --
83459 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83460 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83461 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83462 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83463 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83464 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83465 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83466 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83467 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83468 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83469 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83470 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83471 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83472 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83473 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83474 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83475 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83476 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83477 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83478 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83479 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83480 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83481 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
83482 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83483 
83484 l_event_id                             NUMBER;
83485 l_previous_event_id                    NUMBER;
83486 l_first_event_id                       NUMBER;
83487 l_last_event_id                        NUMBER;
83488 
83489 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
83490 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
83491 --
83492 --
83493 l_result                    BOOLEAN := TRUE;
83494 l_rows                      NUMBER  := 1000;
83495 l_event_type_name           VARCHAR2(80) := 'All';
83496 l_event_class_name          VARCHAR2(80) := 'Usage Cost Adjustment';
83497 l_description               VARCHAR2(4000);
83498 l_transaction_reversal      NUMBER;
83499 l_ae_header_id              NUMBER;
83500 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
83501 l_log_module                VARCHAR2(240);
83502 --
83503 l_acct_reversal_source      VARCHAR2(30);
83504 l_trx_reversal_source       VARCHAR2(30);
83505 
83506 l_continue_with_lines       BOOLEAN := TRUE;
83507 --
83508 l_acc_rev_gl_date_source    DATE;                      -- 4262811
83509 --
83510 type t_array_event_id is table of number index by binary_integer;
83511 
83512 l_rec_array_event                    t_rec_array_event;
83513 l_null_rec_array_event               t_rec_array_event;
83514 l_array_ae_header_id                 xla_number_array_type;
83515 l_actual_flag                        VARCHAR2(1) := NULL;
83516 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
83517 l_balance_type_code                  VARCHAR2(1) :=NULL;
83518 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
83519 
83520 --
83521 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
83522 --
83523 
83524 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
83525 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
83526 
83527 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
83531 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
83528 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
83529 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
83530 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
83532 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
83533 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
83534 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
83535 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
83536 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
83537 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
83538 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
83539 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
83540 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
83541 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
83542 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
83543 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
83544 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
83545 
83546 l_array_source_32              t_array_source_32;
83547 l_array_source_88              t_array_source_88;
83548 
83549 l_array_source_3      t_array_source_3;
83550 l_array_source_4      t_array_source_4;
83551 l_array_source_5      t_array_source_5;
83552 l_array_source_6      t_array_source_6;
83553 l_array_source_7      t_array_source_7;
83554 l_array_source_22      t_array_source_22;
83555 l_array_source_23      t_array_source_23;
83556 l_array_source_24      t_array_source_24;
83557 l_array_source_25      t_array_source_25;
83558 l_array_source_26      t_array_source_26;
83559 l_array_source_27      t_array_source_27;
83560 l_array_source_28      t_array_source_28;
83561 l_array_source_29      t_array_source_29;
83562 l_array_source_30      t_array_source_30;
83563 l_array_source_31      t_array_source_31;
83564 l_array_source_33      t_array_source_33;
83565 l_array_source_34      t_array_source_34;
83566 l_array_source_34_meaning      t_array_lookup_meaning;
83567 l_array_source_35      t_array_source_35;
83568 
83569 --
83570 CURSOR header_cur
83571 IS
83572 SELECT /*+ leading(xet) cardinality(xet,1) */
83573 -- Event Class Code: USG_COST_ADJ
83574     xet.entity_id
83575    ,xet.legal_entity_id
83576    ,xet.entity_code
83577    ,xet.transaction_number
83578    ,xet.event_id
83579    ,xet.event_class_code
83580    ,xet.event_type_code
83581    ,xet.event_number
83582    ,xet.event_date
83583    ,xet.transaction_date
83584    ,xet.reference_num_1
83585    ,xet.reference_num_2
83586    ,xet.reference_num_3
83587    ,xet.reference_num_4
83588    ,xet.reference_char_1
83589    ,xet.reference_char_2
83590    ,xet.reference_char_3
83591    ,xet.reference_char_4
83592    ,xet.reference_date_1
83593    ,xet.reference_date_2
83594    ,xet.reference_date_3
83595    ,xet.reference_date_4
83596    ,xet.event_created_by
83597    ,xet.budgetary_control_flag 
83598   , h2.EXPENDITURE_ITEM_ID    source_32
83599   , h2.GL_DATE    source_88
83600   FROM xla_events_gt     xet 
83601   , PA_XLA_EXP_HEADER_V  h2
83602  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
83603    and xet.event_class_code = C_EVENT_CLASS_CODE
83604    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
83605 
83606  ORDER BY event_id
83607 ;
83608 
83609 
83610 --
83611 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
83612 IS
83613 SELECT  /*+ leading(xet) cardinality(xet,1) */
83614 -- Event Class Code: USG_COST_ADJ
83615     xet.entity_id
83616    ,xet.legal_entity_id
83617    ,xet.entity_code
83618    ,xet.transaction_number
83619    ,xet.event_id
83620    ,xet.event_class_code
83621    ,xet.event_type_code
83622    ,xet.event_number
83623    ,xet.event_date
83624    ,xet.transaction_date
83625    ,xet.reference_num_1
83626    ,xet.reference_num_2
83627    ,xet.reference_num_3
83628    ,xet.reference_num_4
83629    ,xet.reference_char_1
83630    ,xet.reference_char_2
83631    ,xet.reference_char_3
83632    ,xet.reference_char_4
83633    ,xet.reference_date_1
83634    ,xet.reference_date_2
83635    ,xet.reference_date_3
83636    ,xet.reference_date_4
83637    ,xet.event_created_by
83638    ,xet.budgetary_control_flag
83639  , l1.LINE_NUMBER  
83640   , l1.COST_CCID    source_3
83641   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
83642   , l1.ADJ_COST_CCID    source_5
83643   , l1.COST_CLEARING_CCID    source_6
83644   , l1.ADJ_COST_CLEARING_CCID    source_7
83645   , l1.REVERSING_LINE_FLAG    source_22
83646   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
83647   , l1.ENTERED_RAW_COST    source_24
83648   , l1.ENTERED_CURRENCY_CODE    source_25
83649   , l1.ACCT_RAW_COST    source_26
83650   , l1.EXCHANGE_RATE_DATE    source_27
83651   , l1.EXCHANGE_RATE    source_28
83652   , l1.EXCHANGE_RATE_TYPE    source_29
83653   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
83654   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
83655   , l1.LINE_NUMBER    source_33
83656   , l1.LINE_TYPE    source_34
83657   , fvl34.meaning   source_34_meaning
83658   , l1.LINE_NUM_REVERSED    source_35
83659   FROM xla_events_gt     xet 
83663    and xet.event_date between p_pad_start_date and p_pad_end_date
83660   , PA_XLA_CDL_LINES_V  l1
83661   , fnd_lookup_values    fvl34
83662  WHERE xet.event_id between x_first_event_id and x_last_event_id
83664    and xet.event_class_code = C_EVENT_CLASS_CODE
83665    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
83666    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
83667   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
83668   AND fvl34.view_application_id(+) = 275
83669   AND fvl34.language(+)            = USERENV('LANG')
83670   ;
83671 
83672 --
83673 BEGIN
83674 IF g_log_enabled THEN
83675    l_log_module := C_DEFAULT_MODULE||'.EventClass_129';
83676 END IF;
83677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83678    trace
83679       (p_msg      => 'BEGIN of EventClass_129'
83680       ,p_level    => C_LEVEL_PROCEDURE
83681       ,p_module   => l_log_module);
83682 END IF;
83683 
83684 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83685    trace
83686       (p_msg      => 'p_application_id = '||p_application_id||
83687                      ' - p_base_ledger_id = '||p_base_ledger_id||
83688                      ' - p_target_ledger_id  = '||p_target_ledger_id||
83689                      ' - p_language = '||p_language||
83690                      ' - p_currency_code = '||p_currency_code||
83691                      ' - p_sla_ledger_id = '||p_sla_ledger_id
83692       ,p_level    => C_LEVEL_STATEMENT
83693       ,p_module   => l_log_module);
83694 END IF;
83695 --
83696 -- initialze arrays
83697 --
83698 g_array_event.DELETE;
83699 l_rec_array_event := l_null_rec_array_event;
83700 --
83701 --------------------------------------
83702 -- 4262811 Initialze MPA Line Number
83703 --------------------------------------
83704 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
83705 
83706 --
83707 
83708 --
83709 OPEN header_cur;
83710 --
83711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83712    trace
83713    (p_msg      => 'SQL - FETCH header_cur'
83714    ,p_level    => C_LEVEL_STATEMENT
83715    ,p_module   => l_log_module);
83716 END IF;
83717 --
83718 LOOP
83719 FETCH header_cur BULK COLLECT INTO
83720         l_array_entity_id
83721       , l_array_legal_entity_id
83722       , l_array_entity_code
83723       , l_array_transaction_num
83724       , l_array_event_id
83725       , l_array_class_code
83726       , l_array_event_type
83727       , l_array_event_number
83728       , l_array_event_date
83729       , l_array_transaction_date
83730       , l_array_reference_num_1
83731       , l_array_reference_num_2
83732       , l_array_reference_num_3
83733       , l_array_reference_num_4
83734       , l_array_reference_char_1
83735       , l_array_reference_char_2
83736       , l_array_reference_char_3
83737       , l_array_reference_char_4
83738       , l_array_reference_date_1
83739       , l_array_reference_date_2
83740       , l_array_reference_date_3
83741       , l_array_reference_date_4
83742       , l_array_event_created_by
83743       , l_array_budgetary_control_flag 
83744       , l_array_source_32
83745       , l_array_source_88
83746       LIMIT l_rows;
83747 --
83748 IF (C_LEVEL_EVENT >= g_log_level) THEN
83749    trace
83750    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
83751    ,p_level    => C_LEVEL_EVENT
83752    ,p_module   => l_log_module);
83753 END IF;
83754 --
83755 EXIT WHEN l_array_entity_id.COUNT = 0;
83756 
83757 -- initialize arrays
83758 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
83759 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
83760 
83761 --
83762 -- Bug 4458708
83763 --
83764 XLA_AE_LINES_PKG.g_LineNumber := 0;
83765 
83766 
83767 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
83768 g_last_hdr_idx := l_array_event_id.LAST;
83769 --
83770 -- loop for the headers. Each iteration is for each header extract row
83771 -- fetched in header cursor
83772 --
83773 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
83774 
83775 --
83776 -- set event info as cache for other routines to refer event attributes
83777 --
83778 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
83779    (p_application_id           => p_application_id
83780    ,p_primary_ledger_id        => p_primary_ledger_id
83781    ,p_base_ledger_id           => p_base_ledger_id
83782    ,p_target_ledger_id         => p_target_ledger_id
83783    ,p_entity_id                => l_array_entity_id(hdr_idx)
83784    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
83785    ,p_entity_code              => l_array_entity_code(hdr_idx)
83786    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
83787    ,p_event_id                 => l_array_event_id(hdr_idx)
83788    ,p_event_class_code         => l_array_class_code(hdr_idx)
83789    ,p_event_type_code          => l_array_event_type(hdr_idx)
83790    ,p_event_number             => l_array_event_number(hdr_idx)
83791    ,p_event_date               => l_array_event_date(hdr_idx)
83792    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
83793    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
83794    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
83795    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
83796    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
83797    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
83798    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
83799    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
83800    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
83801    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
83805    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
83802    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
83803    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
83804    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
83806    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
83807 
83808 --
83809 -- set the status of entry to C_VALID (0)
83810 --
83811 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
83812 
83813 --
83814 -- initialize a row for ae header
83815 --
83816 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
83817 
83818 l_event_id := l_array_event_id(hdr_idx);
83819 
83820 --
83821 -- storing the hdr_idx for event. May be used by line cursor.
83822 --
83823 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
83824 
83825 --
83826 -- store sources from header extract. This can be improved to
83827 -- store only those sources from header extract that may be used in lines
83828 --
83829 
83830 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
83831 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
83832 
83833 --
83834 -- initilaize the status of ae headers for diffrent balance types
83835 -- the status is initialised to C_NOT_CREATED (2)
83836 --
83837 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83838 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83839 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83840 
83841 --
83842 -- call api to validate and store accounting attributes for header
83843 --
83844 
83845 ------------------------------------------------------------
83846 -- Accrual Reversal : to get date for Standard Source (NONE)
83847 ------------------------------------------------------------
83848 l_acc_rev_gl_date_source := NULL;
83849 
83850      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
83851       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
83852 
83853 
83854 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
83855 
83856 XLA_AE_HEADER_PKG.SetJeCategoryName;
83857 
83858 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
83859 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
83860 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
83861 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
83862 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
83863 
83864 
83865 -- No header level analytical criteria
83866 
83867 --
83868 --accounting attribute enhancement, bug 3612931
83869 --
83870 l_trx_reversal_source := SUBSTR(NULL, 1,30);
83871 
83872 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
83873    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
83874 
83875    xla_accounting_err_pkg.build_message
83876       (p_appli_s_name            => 'XLA'
83877       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
83878       ,p_token_1                 => 'ACCT_ATTR_NAME'
83879       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
83880       ,p_token_2                 => 'PRODUCT_NAME'
83881       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
83882       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
83883       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
83884       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
83885 
83886 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
83887    --
83888    -- following sets the accounting attributes needed to reverse
83889    -- accounting for a distributeion
83890    --
83891    xla_ae_lines_pkg.SetTrxReversalAttrs
83892       (p_event_id              => l_event_id
83893       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
83894       ,p_trx_reversal_source   => l_trx_reversal_source);
83895 
83896 END IF;
83897 
83898 
83899 ----------------------------------------------------------------
83900 -- 4262811 -  update the header statuses to invalid in need be
83901 ----------------------------------------------------------------
83902 --
83903 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
83904 
83905 
83906   -----------------------------------------------
83907   -- No accrual reversal for the event class/type
83908   -----------------------------------------------
83909 ----------------------------------------------------------------
83910 
83911 --
83912 -- this ends the header loop iteration for one bulk fetch
83913 --
83914 END LOOP;
83915 
83916 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
83917 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
83918 
83919 --
83920 -- insert dummy rows into lines gt table that were created due to
83921 -- transaction reversals
83922 --
83923 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
83924    l_result := XLA_AE_LINES_PKG.InsertLines;
83925 END IF;
83926 
83927 --
83928 -- reset the temp_line_num for each set of events fetched from header
83929 -- cursor rather than doing it for each new event in line cursor
83930 -- Bug 3939231
83931 --
83932 xla_ae_lines_pkg.g_temp_line_num := 0;
83933 
83934 
83935 
83936 --
83940 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83937 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
83938 --
83939 --
83941 
83942       trace
83943          (p_msg      => 'SQL - FETCH line_cur'
83944          ,p_level    => C_LEVEL_STATEMENT
83945          ,p_module   => l_log_module);
83946 
83947 END IF;
83948 --
83949 --
83950 LOOP
83951   --
83952   FETCH line_cur BULK COLLECT INTO
83953         l_array_entity_id
83954       , l_array_legal_entity_id
83955       , l_array_entity_code
83956       , l_array_transaction_num
83957       , l_array_event_id
83958       , l_array_class_code
83959       , l_array_event_type
83960       , l_array_event_number
83961       , l_array_event_date
83962       , l_array_transaction_date
83963       , l_array_reference_num_1
83964       , l_array_reference_num_2
83965       , l_array_reference_num_3
83966       , l_array_reference_num_4
83967       , l_array_reference_char_1
83968       , l_array_reference_char_2
83969       , l_array_reference_char_3
83970       , l_array_reference_char_4
83971       , l_array_reference_date_1
83972       , l_array_reference_date_2
83973       , l_array_reference_date_3
83974       , l_array_reference_date_4
83975       , l_array_event_created_by
83976       , l_array_budgetary_control_flag
83977       , l_array_extract_line_num 
83978       , l_array_source_3
83979       , l_array_source_4
83980       , l_array_source_5
83981       , l_array_source_6
83982       , l_array_source_7
83983       , l_array_source_22
83984       , l_array_source_23
83985       , l_array_source_24
83986       , l_array_source_25
83987       , l_array_source_26
83988       , l_array_source_27
83989       , l_array_source_28
83990       , l_array_source_29
83991       , l_array_source_30
83992       , l_array_source_31
83993       , l_array_source_33
83994       , l_array_source_34
83995       , l_array_source_34_meaning
83996       , l_array_source_35
83997       LIMIT l_rows;
83998 
83999   --
84000   IF (C_LEVEL_EVENT >= g_log_level) THEN
84001             trace
84002                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
84003                ,p_level    => C_LEVEL_EVENT
84004                ,p_module   => l_log_module);
84005   END IF;
84006   --
84007   EXIT WHEN l_array_entity_id.count = 0;
84008 
84009   XLA_AE_LINES_PKG.g_rec_lines := null;
84010 
84011 --
84012 -- Bug 4458708
84013 --
84014 XLA_AE_LINES_PKG.g_LineNumber := 0;
84015 --
84016 --
84017 
84018 FOR Idx IN 1..l_array_event_id.count LOOP
84019    --
84020    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
84021    --
84022    l_event_id := l_array_event_id(idx);  -- 5648433
84023 
84024    --
84025    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
84026    --
84027 
84028    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
84029              (g_array_event(l_event_id).array_value_num('header_index'))
84030          ,'N'
84031          ) <> 'Y'
84032    THEN
84033       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84034          trace
84035             (p_msg      => 'Trancaction revesal option is not Y '
84036             ,p_level    => C_LEVEL_STATEMENT
84037             ,p_module   => l_log_module);
84038       END IF;
84039 
84040 --
84041 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
84042 --
84043 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
84044 --
84045 -- set event info as cache for other routines to refer event attributes
84046 --
84047 
84048 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
84049    l_previous_event_id := l_event_id;
84050 
84051    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
84052       (p_application_id           => p_application_id
84053       ,p_primary_ledger_id        => p_primary_ledger_id
84054       ,p_base_ledger_id           => p_base_ledger_id
84055       ,p_target_ledger_id         => p_target_ledger_id
84056       ,p_entity_id                => l_array_entity_id(Idx)
84057       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
84058       ,p_entity_code              => l_array_entity_code(Idx)
84059       ,p_transaction_num          => l_array_transaction_num(Idx)
84060       ,p_event_id                 => l_array_event_id(Idx)
84061       ,p_event_class_code         => l_array_class_code(Idx)
84062       ,p_event_type_code          => l_array_event_type(Idx)
84063       ,p_event_number             => l_array_event_number(Idx)
84064       ,p_event_date               => l_array_event_date(Idx)
84065       ,p_transaction_date         => l_array_transaction_date(Idx)
84066       ,p_reference_num_1          => l_array_reference_num_1(Idx)
84067       ,p_reference_num_2          => l_array_reference_num_2(Idx)
84068       ,p_reference_num_3          => l_array_reference_num_3(Idx)
84069       ,p_reference_num_4          => l_array_reference_num_4(Idx)
84070       ,p_reference_char_1         => l_array_reference_char_1(Idx)
84071       ,p_reference_char_2         => l_array_reference_char_2(Idx)
84072       ,p_reference_char_3         => l_array_reference_char_3(Idx)
84073       ,p_reference_char_4         => l_array_reference_char_4(Idx)
84074       ,p_reference_date_1         => l_array_reference_date_1(Idx)
84075       ,p_reference_date_2         => l_array_reference_date_2(Idx)
84076       ,p_reference_date_3         => l_array_reference_date_3(Idx)
84077       ,p_reference_date_4         => l_array_reference_date_4(Idx)
84078       ,p_event_created_by         => l_array_event_created_by(Idx)
84079       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
84080        --
84081 END IF;
84082 
84086 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
84083 
84084 
84085 --
84087 
84088 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
84089 
84090 IF l_continue_with_lines THEN
84091    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
84092       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
84093 
84094       xla_accounting_err_pkg.build_message
84095          (p_appli_s_name            => 'XLA'
84096          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
84097          ,p_token_1                 => 'LINE_NUMBER'
84098          ,p_value_1                 => l_array_extract_line_num(Idx)
84099          ,p_token_2                 => 'PRODUCT_NAME'
84100          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
84101          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
84102          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
84103          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
84104 
84105    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
84106       --
84107       -- following sets the accounting attributes needed to reverse
84108       -- accounting for a distributeion
84109       --
84110 
84111       --
84112       -- 5217187
84113       --
84114       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
84115       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
84116                                        g_array_event(l_event_id).array_value_num('header_index'));
84117       --
84118       --
84119 
84120       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
84121       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
84122       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
84123       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
84124       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
84125       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
84126       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
84127       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
84128       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
84129       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
84130       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
84131       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
84132       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
84133       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
84134       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
84135       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
84136       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
84137       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
84138       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
84139       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
84140       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
84141       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
84142       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
84143       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
84144       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
84145       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
84146       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
84147       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
84148       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
84149       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
84150       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
84151       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
84152       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
84153       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
84154       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
84155       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
84156       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
84157       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
84158       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
84159       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
84160       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
84161       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
84162       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
84163       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
84164       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
84165       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
84166       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
84167       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
84168 
84169 
84170       xla_ae_lines_pkg.SetAcctReversalAttrs
84171          (p_event_id             => l_event_id
84172          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
84173          ,p_calculate_acctd_flag => l_calculate_acctd_flag
84174          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
84175    END IF;
84176 
84177    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
84181 AcctLineType_49 (
84178        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
84179 
84180 --
84182  p_application_id  => p_application_id
84183  ,p_event_id     => l_event_id
84184  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84185  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84186  ,p_actual_flag => l_actual_flag
84187  ,p_balance_type_code => l_balance_type_code
84188  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84189  
84190  , p_source_3 => l_array_source_3(Idx)
84191  , p_source_4 => l_array_source_4(Idx)
84192  , p_source_5 => l_array_source_5(Idx)
84193  , p_source_6 => l_array_source_6(Idx)
84194  , p_source_22 => l_array_source_22(Idx)
84195  , p_source_23 => l_array_source_23(Idx)
84196  , p_source_24 => l_array_source_24(Idx)
84197  , p_source_25 => l_array_source_25(Idx)
84198  , p_source_26 => l_array_source_26(Idx)
84199  , p_source_27 => l_array_source_27(Idx)
84200  , p_source_28 => l_array_source_28(Idx)
84201  , p_source_29 => l_array_source_29(Idx)
84202  , p_source_30 => l_array_source_30(Idx)
84203  , p_source_31 => l_array_source_31(Idx)
84204  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
84205  , p_source_33 => l_array_source_33(Idx)
84206  , p_source_34 => l_array_source_34(Idx)
84207  , p_source_34_meaning => l_array_source_34_meaning(Idx)
84208  , p_source_35 => l_array_source_35(Idx)
84209  );
84210 If(l_balance_type_code = 'A') THEN
84211   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84212 END IF;
84213 
84214 --
84215 
84216 
84217 --
84218 AcctLineType_61 (
84219  p_application_id  => p_application_id
84220  ,p_event_id     => l_event_id
84221  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84222  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84223  ,p_actual_flag => l_actual_flag
84224  ,p_balance_type_code => l_balance_type_code
84225  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84226  
84227  , p_source_3 => l_array_source_3(Idx)
84228  , p_source_4 => l_array_source_4(Idx)
84229  , p_source_6 => l_array_source_6(Idx)
84230  , p_source_7 => l_array_source_7(Idx)
84231  , p_source_22 => l_array_source_22(Idx)
84232  , p_source_23 => l_array_source_23(Idx)
84233  , p_source_24 => l_array_source_24(Idx)
84234  , p_source_25 => l_array_source_25(Idx)
84235  , p_source_26 => l_array_source_26(Idx)
84236  , p_source_27 => l_array_source_27(Idx)
84237  , p_source_28 => l_array_source_28(Idx)
84238  , p_source_29 => l_array_source_29(Idx)
84239  , p_source_30 => l_array_source_30(Idx)
84240  , p_source_31 => l_array_source_31(Idx)
84241  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
84242  , p_source_33 => l_array_source_33(Idx)
84243  , p_source_34 => l_array_source_34(Idx)
84244  , p_source_34_meaning => l_array_source_34_meaning(Idx)
84245  , p_source_35 => l_array_source_35(Idx)
84246  );
84247 If(l_balance_type_code = 'A') THEN
84248   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84249 END IF;
84250 
84251 --
84252 
84253       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
84254       -- or secondary ledger that has different currency with primary
84255       -- or alc that is calculated by sla
84256       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
84257             (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'))
84258 
84259 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
84260 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
84261           AND (l_actual_flag = 'A')) THEN
84262         XLA_AE_LINES_PKG.CreateGainOrLossLines(
84263           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
84264          ,p_application_id   => p_application_id
84265          ,p_amb_context_code => 'DEFAULT'
84266          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
84267          ,p_event_class_code => C_EVENT_CLASS_CODE
84268          ,p_event_type_code  => C_EVENT_TYPE_CODE
84269          
84270          ,p_gain_ccid        => -1
84271          ,p_loss_ccid        => -1
84272 
84273          ,p_actual_flag      => l_actual_flag
84274          ,p_enc_flag         => null
84275          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
84276          ,p_enc_g_l_ref      => null
84277          );
84278       END IF;
84279    END IF;
84280 END IF;
84281 
84282    ELSE
84283       --
84284       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
84285       --
84286       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84287          trace
84288             (p_msg      => 'Trancaction revesal option is Y'
84289             ,p_level    => C_LEVEL_STATEMENT
84290             ,p_module   => l_log_module);
84291       END IF;
84292    END IF;
84293 
84294 END LOOP;
84295 l_result := XLA_AE_LINES_PKG.InsertLines ;
84296 end loop;
84297 close line_cur;
84298 
84299 
84300 --
84301 -- insert headers into xla_ae_headers_gt table
84302 --
84303 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
84304 
84305 -- insert into errors table here.
84306 
84307 END LOOP;
84308 
84309 --
84310 -- 4865292
84311 --
84312 -- Compare g_hdr_extract_count with event count in
84313 -- CreateHeadersAndLines.
84314 --
84315 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
84316 
84317 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84318    trace (p_msg     => '# rows extracted from header extract objects '
84319                     || ' (running total): '
84320                     || g_hdr_extract_count
84321          ,p_level   => C_LEVEL_STATEMENT
84322          ,p_module  => l_log_module);
84326 --
84323 END IF;
84324 
84325 CLOSE header_cur;
84327 
84328 --
84329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84330    trace
84331       (p_msg      => 'END of EventClass_129'
84332       ,p_level    => C_LEVEL_PROCEDURE
84333       ,p_module   => l_log_module);
84334 END IF;
84335 --
84336 RETURN l_result;
84337 EXCEPTION
84338 WHEN xla_exceptions_pkg.application_exception THEN
84339    
84340 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
84341 
84342    
84343 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
84344 
84345    RAISE;
84346 WHEN OTHERS THEN
84347    xla_exceptions_pkg.raise_message
84348       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_129');
84349 END EventClass_129;
84350 --
84351 
84352 ---------------------------------------
84353 --
84354 -- PRIVATE PROCEDURE
84355 --         insert_sources_130
84356 --
84357 ----------------------------------------
84358 --
84359 PROCEDURE insert_sources_130(
84360                                 p_target_ledger_id       IN NUMBER
84361                               , p_language               IN VARCHAR2
84362                               , p_sla_ledger_id          IN NUMBER
84363                               , p_pad_start_date         IN DATE
84364                               , p_pad_end_date           IN DATE
84365                          )
84366 IS
84367 
84368 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ALL';
84369 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USG_COST';
84370 p_apps_owner                   VARCHAR2(30);
84371 l_log_module                   VARCHAR2(240);
84372 BEGIN
84373 IF g_log_enabled THEN
84374       l_log_module := C_DEFAULT_MODULE||'.insert_sources_130';
84375 END IF;
84376 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84377 
84378       trace
84379          (p_msg      => 'BEGIN of insert_sources_130'
84380          ,p_level    => C_LEVEL_PROCEDURE
84381          ,p_module   => l_log_module);
84382 
84383 END IF;
84384 
84385 -- select APPS owner
84386 SELECT oracle_username
84387   INTO p_apps_owner
84388   FROM fnd_oracle_userid
84389  WHERE read_only_flag = 'U'
84390 ;
84391 
84392 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84393       trace
84394          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
84395                         ' - p_language = '||p_language||
84396                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
84397                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
84398                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
84399                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
84400          ,p_level    => C_LEVEL_STATEMENT
84401          ,p_module   => l_log_module);
84402 END IF;
84403 
84404 
84405 --
84406 INSERT INTO xla_diag_sources --hdr2
84407 (
84408         event_id
84409       , ledger_id
84410       , sla_ledger_id
84411       , description_language
84412       , object_name
84413       , object_type_code
84414       , line_number
84415       , source_application_id
84416       , source_type_code
84417       , source_code
84418       , source_value
84419       , source_meaning
84420       , created_by
84421       , creation_date
84422       , last_update_date
84423       , last_updated_by
84424       , last_update_login
84425       , program_update_date
84426       , program_application_id
84427       , program_id
84428       , request_id
84429 )
84430 SELECT
84431         event_id
84432       , p_target_ledger_id
84433       , p_sla_ledger_id
84434       , p_language
84435       , object_name
84436       , object_type_code
84437       , line_number
84438       , source_application_id
84439       , source_type_code
84440       , source_code
84441       , SUBSTR(source_value ,1,1996)
84442       , SUBSTR(source_meaning ,1,200)
84443       , xla_environment_pkg.g_Usr_Id
84444       , TRUNC(SYSDATE)
84445       , TRUNC(SYSDATE)
84446       , xla_environment_pkg.g_Usr_Id
84447       , xla_environment_pkg.g_Login_Id
84448       , TRUNC(SYSDATE)
84449       , xla_environment_pkg.g_Prog_Appl_Id
84450       , xla_environment_pkg.g_Prog_Id
84451       , xla_environment_pkg.g_Req_Id
84452   FROM (
84453        SELECT xet.event_id                  event_id
84454             , 0                          line_number
84455             , CASE r
84456                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
84457                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
84458                 
84459                ELSE null
84460               END                           object_name
84461             , CASE r
84462                 WHEN 1 THEN 'HEADER' 
84463                 WHEN 2 THEN 'HEADER' 
84464                 
84465                 ELSE null
84466               END                           object_type_code
84467             , CASE r
84468                 WHEN 1 THEN '275' 
84469                 WHEN 2 THEN '275' 
84470                 
84471                 ELSE null
84472               END                           source_application_id
84473             , 'S'             source_type_code
84474             , CASE r
84475                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
84476                 WHEN 2 THEN 'GL_DATE' 
84477                 
84478                 ELSE null
84479               END                           source_code
84480             , CASE r
84481                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
84482                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
84483                 
84484                 ELSE null
84485               END                           source_value
84489              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
84486             , null              source_meaning
84487          FROM xla_events_gt     xet  
84488       , PA_XLA_EXP_HEADER_V  h2
84490          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
84491            AND xet.event_class_code = C_EVENT_CLASS_CODE
84492               AND h2.event_id = xet.event_id
84493 
84494 )
84495 ;
84496 --
84497 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84498 
84499       trace
84500          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
84501          ,p_level    => C_LEVEL_STATEMENT
84502          ,p_module   => l_log_module);
84503 
84504 END IF;
84505 --
84506 
84507 
84508 
84509 --
84510 INSERT INTO xla_diag_sources  --line2
84511 (
84512         event_id
84513       , ledger_id
84514       , sla_ledger_id
84515       , description_language
84516       , object_name
84517       , object_type_code
84518       , line_number
84519       , source_application_id
84520       , source_type_code
84521       , source_code
84522       , source_value
84523       , source_meaning
84524       , created_by
84525       , creation_date
84526       , last_update_date
84527       , last_updated_by
84528       , last_update_login
84529       , program_update_date
84530       , program_application_id
84531       , program_id
84532       , request_id
84533 )
84534 SELECT  event_id
84535       , p_target_ledger_id
84536       , p_sla_ledger_id
84537       , p_language
84538       , object_name
84539       , object_type_code
84540       , line_number
84541       , source_application_id
84542       , source_type_code
84543       , source_code
84544       , SUBSTR(source_value,1,1996)
84545       , SUBSTR(source_meaning ,1,200)
84546       , xla_environment_pkg.g_Usr_Id
84547       , TRUNC(SYSDATE)
84548       , TRUNC(SYSDATE)
84549       , xla_environment_pkg.g_Usr_Id
84550       , xla_environment_pkg.g_Login_Id
84551       , TRUNC(SYSDATE)
84552       , xla_environment_pkg.g_Prog_Appl_Id
84553       , xla_environment_pkg.g_Prog_Id
84554       , xla_environment_pkg.g_Req_Id
84555   FROM (
84556        SELECT xet.event_id                  event_id
84557             , l1.line_number                 line_number
84558             , CASE r
84559                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
84560                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
84561                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
84562                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
84563                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
84564                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
84565                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
84566                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
84567                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
84568                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
84569                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
84570                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
84571                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
84572                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
84573                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
84574                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
84575                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
84576                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
84577                 
84578                ELSE null
84579               END                           object_name
84580             , CASE r
84581                 WHEN 1 THEN 'LINE' 
84582                 WHEN 2 THEN 'LINE' 
84583                 WHEN 3 THEN 'LINE' 
84584                 WHEN 4 THEN 'LINE' 
84585                 WHEN 5 THEN 'LINE' 
84586                 WHEN 6 THEN 'LINE' 
84587                 WHEN 7 THEN 'LINE' 
84588                 WHEN 8 THEN 'LINE' 
84589                 WHEN 9 THEN 'LINE' 
84590                 WHEN 10 THEN 'LINE' 
84591                 WHEN 11 THEN 'LINE' 
84592                 WHEN 12 THEN 'LINE' 
84593                 WHEN 13 THEN 'LINE' 
84594                 WHEN 14 THEN 'LINE' 
84595                 WHEN 15 THEN 'LINE' 
84596                 WHEN 16 THEN 'LINE' 
84597                 WHEN 17 THEN 'LINE' 
84598                 WHEN 18 THEN 'LINE' 
84599                 
84600                 ELSE null
84601               END                           object_type_code
84602             , CASE r
84603                 WHEN 1 THEN '275' 
84604                 WHEN 2 THEN '275' 
84605                 WHEN 3 THEN '275' 
84606                 WHEN 4 THEN '275' 
84607                 WHEN 5 THEN '275' 
84608                 WHEN 6 THEN '275' 
84609                 WHEN 7 THEN '275' 
84610                 WHEN 8 THEN '275' 
84611                 WHEN 9 THEN '275' 
84612                 WHEN 10 THEN '275' 
84613                 WHEN 11 THEN '275' 
84614                 WHEN 12 THEN '275' 
84615                 WHEN 13 THEN '275' 
84616                 WHEN 14 THEN '275' 
84617                 WHEN 15 THEN '275' 
84618                 WHEN 16 THEN '275' 
84619                 WHEN 17 THEN '275' 
84620                 WHEN 18 THEN '275' 
84621                 
84622                 ELSE null
84623               END                           source_application_id
84624             , 'S'             source_type_code
84625             , CASE r
84626                 WHEN 1 THEN 'COST_CCID' 
84627                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
84628                 WHEN 3 THEN 'ADJ_COST_CCID' 
84629                 WHEN 4 THEN 'COST_CLEARING_CCID' 
84630                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
84631                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
84632                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
84633                 WHEN 8 THEN 'ENTERED_RAW_COST' 
84637                 WHEN 12 THEN 'EXCHANGE_RATE' 
84634                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
84635                 WHEN 10 THEN 'ACCT_RAW_COST' 
84636                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
84638                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
84639                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
84640                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
84641                 WHEN 16 THEN 'LINE_NUMBER' 
84642                 WHEN 17 THEN 'LINE_TYPE' 
84643                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
84644                 
84645                 ELSE null
84646               END                           source_code
84647             , CASE r
84648                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
84649                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
84650                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
84651                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
84652                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
84653                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
84654                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
84655                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
84656                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
84657                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
84658                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
84659                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
84660                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
84661                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
84662                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
84663                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
84664                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
84665                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
84666                 
84667                 ELSE null
84668               END                           source_value
84669             , CASE r
84670                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
84671                           103371
84672                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
84673                          ,'ALLOW_OVERRIDE_CCID_FLAG'
84674                          ,'S'
84675                          ,275)
84676                 WHEN 17 THEN fvl34.meaning
84677                 
84678                 ELSE null
84679               END               source_meaning
84680          FROM  xla_events_gt     xet  
84681         , PA_XLA_CDL_LINES_V  l1
84682   , fnd_lookup_values    fvl34
84683             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
84684         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
84685           AND xet.event_class_code = C_EVENT_CLASS_CODE
84686             AND l1.event_id          = xet.event_id
84687    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
84688   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
84689   AND fvl34.view_application_id(+) = 275
84690   AND fvl34.language(+)            = USERENV('LANG')
84691   
84692 )
84693 ;
84694 --
84695 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84696 
84697       trace
84698          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
84699          ,p_level    => C_LEVEL_STATEMENT
84700          ,p_module   => l_log_module);
84701 
84702 END IF;
84703 
84704 
84705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84706       trace
84707          (p_msg      => 'END of insert_sources_130'
84708          ,p_level    => C_LEVEL_PROCEDURE
84709          ,p_module   => l_log_module);
84710 END IF;
84711 EXCEPTION
84712   WHEN xla_exceptions_pkg.application_exception THEN
84713       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
84714             trace
84715                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
84716                ,p_level    => C_LEVEL_EXCEPTION
84717                ,p_module   => l_log_module);
84718       END IF;
84719       RAISE;
84720   WHEN OTHERS THEN
84721       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
84722             trace
84723                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
84724                ,p_level    => C_LEVEL_EXCEPTION
84725                ,p_module   => l_log_module);
84726        END IF;
84727        xla_exceptions_pkg.raise_message
84728            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_130');
84729 END insert_sources_130;
84730 --
84731 
84732 ---------------------------------------
84733 --
84734 -- PRIVATE FUNCTION
84735 --         EventClass_130
84736 --
84737 ----------------------------------------
84738 --
84739 FUNCTION EventClass_130
84740        (p_application_id         IN NUMBER
84741        ,p_base_ledger_id         IN NUMBER
84742        ,p_target_ledger_id       IN NUMBER
84743        ,p_language               IN VARCHAR2
84744        ,p_currency_code          IN VARCHAR2
84745        ,p_sla_ledger_id          IN NUMBER
84746        ,p_pad_start_date         IN DATE
84747        ,p_pad_end_date           IN DATE
84748        ,p_primary_ledger_id      IN NUMBER)
84749 RETURN BOOLEAN IS
84750 --
84751 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ALL';
84752 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USG_COST';
84753 
84754 l_calculate_acctd_flag   VARCHAR2(1) :='N';
84755 l_calculate_g_l_flag     VARCHAR2(1) :='N';
84756 --
84757 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84758 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84759 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84760 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84761 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84762 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84766 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84763 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84764 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84765 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84767 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84768 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84769 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84770 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84771 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84772 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84773 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84774 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84775 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84776 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84777 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84778 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84779 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
84780 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84781 
84782 l_event_id                             NUMBER;
84783 l_previous_event_id                    NUMBER;
84784 l_first_event_id                       NUMBER;
84785 l_last_event_id                        NUMBER;
84786 
84787 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
84788 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
84789 --
84790 --
84791 l_result                    BOOLEAN := TRUE;
84792 l_rows                      NUMBER  := 1000;
84793 l_event_type_name           VARCHAR2(80) := 'All';
84794 l_event_class_name          VARCHAR2(80) := 'Usage Cost';
84795 l_description               VARCHAR2(4000);
84796 l_transaction_reversal      NUMBER;
84797 l_ae_header_id              NUMBER;
84798 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
84799 l_log_module                VARCHAR2(240);
84800 --
84801 l_acct_reversal_source      VARCHAR2(30);
84802 l_trx_reversal_source       VARCHAR2(30);
84803 
84804 l_continue_with_lines       BOOLEAN := TRUE;
84805 --
84806 l_acc_rev_gl_date_source    DATE;                      -- 4262811
84807 --
84808 type t_array_event_id is table of number index by binary_integer;
84809 
84810 l_rec_array_event                    t_rec_array_event;
84811 l_null_rec_array_event               t_rec_array_event;
84812 l_array_ae_header_id                 xla_number_array_type;
84813 l_actual_flag                        VARCHAR2(1) := NULL;
84814 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
84815 l_balance_type_code                  VARCHAR2(1) :=NULL;
84816 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
84817 
84818 --
84819 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
84820 --
84821 
84822 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
84823 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
84824 
84825 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
84826 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
84827 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
84828 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
84829 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
84830 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
84831 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
84832 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
84833 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
84834 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
84835 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
84836 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
84837 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
84838 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
84839 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
84840 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
84841 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
84842 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
84843 
84844 l_array_source_32              t_array_source_32;
84845 l_array_source_88              t_array_source_88;
84846 
84847 l_array_source_3      t_array_source_3;
84848 l_array_source_4      t_array_source_4;
84849 l_array_source_5      t_array_source_5;
84850 l_array_source_6      t_array_source_6;
84851 l_array_source_7      t_array_source_7;
84852 l_array_source_22      t_array_source_22;
84853 l_array_source_23      t_array_source_23;
84854 l_array_source_24      t_array_source_24;
84855 l_array_source_25      t_array_source_25;
84856 l_array_source_26      t_array_source_26;
84857 l_array_source_27      t_array_source_27;
84858 l_array_source_28      t_array_source_28;
84859 l_array_source_29      t_array_source_29;
84860 l_array_source_30      t_array_source_30;
84864 l_array_source_34_meaning      t_array_lookup_meaning;
84861 l_array_source_31      t_array_source_31;
84862 l_array_source_33      t_array_source_33;
84863 l_array_source_34      t_array_source_34;
84865 l_array_source_35      t_array_source_35;
84866 
84867 --
84868 CURSOR header_cur
84869 IS
84870 SELECT /*+ leading(xet) cardinality(xet,1) */
84871 -- Event Class Code: USG_COST
84872     xet.entity_id
84873    ,xet.legal_entity_id
84874    ,xet.entity_code
84875    ,xet.transaction_number
84876    ,xet.event_id
84877    ,xet.event_class_code
84878    ,xet.event_type_code
84879    ,xet.event_number
84880    ,xet.event_date
84881    ,xet.transaction_date
84882    ,xet.reference_num_1
84883    ,xet.reference_num_2
84884    ,xet.reference_num_3
84885    ,xet.reference_num_4
84886    ,xet.reference_char_1
84887    ,xet.reference_char_2
84888    ,xet.reference_char_3
84889    ,xet.reference_char_4
84890    ,xet.reference_date_1
84891    ,xet.reference_date_2
84892    ,xet.reference_date_3
84893    ,xet.reference_date_4
84894    ,xet.event_created_by
84895    ,xet.budgetary_control_flag 
84896   , h2.EXPENDITURE_ITEM_ID    source_32
84897   , h2.GL_DATE    source_88
84898   FROM xla_events_gt     xet 
84899   , PA_XLA_EXP_HEADER_V  h2
84900  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
84901    and xet.event_class_code = C_EVENT_CLASS_CODE
84902    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
84903 
84904  ORDER BY event_id
84905 ;
84906 
84907 
84908 --
84909 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
84910 IS
84911 SELECT  /*+ leading(xet) cardinality(xet,1) */
84912 -- Event Class Code: USG_COST
84913     xet.entity_id
84914    ,xet.legal_entity_id
84915    ,xet.entity_code
84916    ,xet.transaction_number
84917    ,xet.event_id
84918    ,xet.event_class_code
84919    ,xet.event_type_code
84920    ,xet.event_number
84921    ,xet.event_date
84922    ,xet.transaction_date
84923    ,xet.reference_num_1
84924    ,xet.reference_num_2
84925    ,xet.reference_num_3
84926    ,xet.reference_num_4
84927    ,xet.reference_char_1
84928    ,xet.reference_char_2
84929    ,xet.reference_char_3
84930    ,xet.reference_char_4
84931    ,xet.reference_date_1
84932    ,xet.reference_date_2
84933    ,xet.reference_date_3
84934    ,xet.reference_date_4
84935    ,xet.event_created_by
84936    ,xet.budgetary_control_flag
84937  , l1.LINE_NUMBER  
84938   , l1.COST_CCID    source_3
84939   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
84940   , l1.ADJ_COST_CCID    source_5
84941   , l1.COST_CLEARING_CCID    source_6
84942   , l1.ADJ_COST_CLEARING_CCID    source_7
84943   , l1.REVERSING_LINE_FLAG    source_22
84944   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
84945   , l1.ENTERED_RAW_COST    source_24
84946   , l1.ENTERED_CURRENCY_CODE    source_25
84947   , l1.ACCT_RAW_COST    source_26
84948   , l1.EXCHANGE_RATE_DATE    source_27
84949   , l1.EXCHANGE_RATE    source_28
84950   , l1.EXCHANGE_RATE_TYPE    source_29
84951   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
84952   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
84953   , l1.LINE_NUMBER    source_33
84954   , l1.LINE_TYPE    source_34
84955   , fvl34.meaning   source_34_meaning
84956   , l1.LINE_NUM_REVERSED    source_35
84957   FROM xla_events_gt     xet 
84958   , PA_XLA_CDL_LINES_V  l1
84959   , fnd_lookup_values    fvl34
84960  WHERE xet.event_id between x_first_event_id and x_last_event_id
84961    and xet.event_date between p_pad_start_date and p_pad_end_date
84962    and xet.event_class_code = C_EVENT_CLASS_CODE
84963    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
84964    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
84965   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
84966   AND fvl34.view_application_id(+) = 275
84967   AND fvl34.language(+)            = USERENV('LANG')
84968   ;
84969 
84970 --
84971 BEGIN
84972 IF g_log_enabled THEN
84973    l_log_module := C_DEFAULT_MODULE||'.EventClass_130';
84974 END IF;
84975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84976    trace
84977       (p_msg      => 'BEGIN of EventClass_130'
84978       ,p_level    => C_LEVEL_PROCEDURE
84979       ,p_module   => l_log_module);
84980 END IF;
84981 
84982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84983    trace
84984       (p_msg      => 'p_application_id = '||p_application_id||
84985                      ' - p_base_ledger_id = '||p_base_ledger_id||
84986                      ' - p_target_ledger_id  = '||p_target_ledger_id||
84987                      ' - p_language = '||p_language||
84988                      ' - p_currency_code = '||p_currency_code||
84989                      ' - p_sla_ledger_id = '||p_sla_ledger_id
84990       ,p_level    => C_LEVEL_STATEMENT
84991       ,p_module   => l_log_module);
84992 END IF;
84993 --
84994 -- initialze arrays
84995 --
84996 g_array_event.DELETE;
84997 l_rec_array_event := l_null_rec_array_event;
84998 --
84999 --------------------------------------
85000 -- 4262811 Initialze MPA Line Number
85001 --------------------------------------
85002 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
85003 
85004 --
85005 
85006 --
85007 OPEN header_cur;
85008 --
85009 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85010    trace
85011    (p_msg      => 'SQL - FETCH header_cur'
85012    ,p_level    => C_LEVEL_STATEMENT
85013    ,p_module   => l_log_module);
85014 END IF;
85015 --
85016 LOOP
85017 FETCH header_cur BULK COLLECT INTO
85018         l_array_entity_id
85019       , l_array_legal_entity_id
85020       , l_array_entity_code
85021       , l_array_transaction_num
85022       , l_array_event_id
85026       , l_array_event_date
85023       , l_array_class_code
85024       , l_array_event_type
85025       , l_array_event_number
85027       , l_array_transaction_date
85028       , l_array_reference_num_1
85029       , l_array_reference_num_2
85030       , l_array_reference_num_3
85031       , l_array_reference_num_4
85032       , l_array_reference_char_1
85033       , l_array_reference_char_2
85034       , l_array_reference_char_3
85035       , l_array_reference_char_4
85036       , l_array_reference_date_1
85037       , l_array_reference_date_2
85038       , l_array_reference_date_3
85039       , l_array_reference_date_4
85040       , l_array_event_created_by
85041       , l_array_budgetary_control_flag 
85042       , l_array_source_32
85043       , l_array_source_88
85044       LIMIT l_rows;
85045 --
85046 IF (C_LEVEL_EVENT >= g_log_level) THEN
85047    trace
85048    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
85049    ,p_level    => C_LEVEL_EVENT
85050    ,p_module   => l_log_module);
85051 END IF;
85052 --
85053 EXIT WHEN l_array_entity_id.COUNT = 0;
85054 
85055 -- initialize arrays
85056 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
85057 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
85058 
85059 --
85060 -- Bug 4458708
85061 --
85062 XLA_AE_LINES_PKG.g_LineNumber := 0;
85063 
85064 
85065 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
85066 g_last_hdr_idx := l_array_event_id.LAST;
85067 --
85068 -- loop for the headers. Each iteration is for each header extract row
85069 -- fetched in header cursor
85070 --
85071 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
85072 
85073 --
85074 -- set event info as cache for other routines to refer event attributes
85075 --
85076 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
85077    (p_application_id           => p_application_id
85078    ,p_primary_ledger_id        => p_primary_ledger_id
85079    ,p_base_ledger_id           => p_base_ledger_id
85080    ,p_target_ledger_id         => p_target_ledger_id
85081    ,p_entity_id                => l_array_entity_id(hdr_idx)
85082    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
85083    ,p_entity_code              => l_array_entity_code(hdr_idx)
85084    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
85085    ,p_event_id                 => l_array_event_id(hdr_idx)
85086    ,p_event_class_code         => l_array_class_code(hdr_idx)
85087    ,p_event_type_code          => l_array_event_type(hdr_idx)
85088    ,p_event_number             => l_array_event_number(hdr_idx)
85089    ,p_event_date               => l_array_event_date(hdr_idx)
85090    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
85091    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
85092    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
85093    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
85094    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
85095    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
85096    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
85097    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
85098    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
85099    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
85100    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
85101    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
85102    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
85103    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
85104    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
85105 
85106 --
85107 -- set the status of entry to C_VALID (0)
85108 --
85109 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
85110 
85111 --
85112 -- initialize a row for ae header
85113 --
85114 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
85115 
85116 l_event_id := l_array_event_id(hdr_idx);
85117 
85118 --
85119 -- storing the hdr_idx for event. May be used by line cursor.
85120 --
85121 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
85122 
85123 --
85124 -- store sources from header extract. This can be improved to
85125 -- store only those sources from header extract that may be used in lines
85126 --
85127 
85128 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
85129 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
85130 
85131 --
85132 -- initilaize the status of ae headers for diffrent balance types
85133 -- the status is initialised to C_NOT_CREATED (2)
85134 --
85135 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
85136 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
85137 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
85138 
85139 --
85140 -- call api to validate and store accounting attributes for header
85141 --
85142 
85143 ------------------------------------------------------------
85144 -- Accrual Reversal : to get date for Standard Source (NONE)
85145 ------------------------------------------------------------
85146 l_acc_rev_gl_date_source := NULL;
85147 
85148      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
85149       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
85150 
85151 
85152 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
85153 
85154 XLA_AE_HEADER_PKG.SetJeCategoryName;
85155 
85159 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
85156 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
85157 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
85158 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
85160 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
85161 
85162 
85163 -- No header level analytical criteria
85164 
85165 --
85166 --accounting attribute enhancement, bug 3612931
85167 --
85168 l_trx_reversal_source := SUBSTR(NULL, 1,30);
85169 
85170 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
85171    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
85172 
85173    xla_accounting_err_pkg.build_message
85174       (p_appli_s_name            => 'XLA'
85175       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
85176       ,p_token_1                 => 'ACCT_ATTR_NAME'
85177       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
85178       ,p_token_2                 => 'PRODUCT_NAME'
85179       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
85180       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
85181       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
85182       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
85183 
85184 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
85185    --
85186    -- following sets the accounting attributes needed to reverse
85187    -- accounting for a distributeion
85188    --
85189    xla_ae_lines_pkg.SetTrxReversalAttrs
85190       (p_event_id              => l_event_id
85191       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
85192       ,p_trx_reversal_source   => l_trx_reversal_source);
85193 
85194 END IF;
85195 
85196 
85197 ----------------------------------------------------------------
85198 -- 4262811 -  update the header statuses to invalid in need be
85199 ----------------------------------------------------------------
85200 --
85201 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
85202 
85203 
85204   -----------------------------------------------
85205   -- No accrual reversal for the event class/type
85206   -----------------------------------------------
85207 ----------------------------------------------------------------
85208 
85209 --
85210 -- this ends the header loop iteration for one bulk fetch
85211 --
85212 END LOOP;
85213 
85214 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
85215 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
85216 
85217 --
85218 -- insert dummy rows into lines gt table that were created due to
85219 -- transaction reversals
85220 --
85221 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
85222    l_result := XLA_AE_LINES_PKG.InsertLines;
85223 END IF;
85224 
85225 --
85226 -- reset the temp_line_num for each set of events fetched from header
85227 -- cursor rather than doing it for each new event in line cursor
85228 -- Bug 3939231
85229 --
85230 xla_ae_lines_pkg.g_temp_line_num := 0;
85231 
85232 
85233 
85234 --
85235 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
85236 --
85237 --
85238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85239 
85240       trace
85241          (p_msg      => 'SQL - FETCH line_cur'
85242          ,p_level    => C_LEVEL_STATEMENT
85243          ,p_module   => l_log_module);
85244 
85245 END IF;
85246 --
85247 --
85248 LOOP
85249   --
85250   FETCH line_cur BULK COLLECT INTO
85251         l_array_entity_id
85252       , l_array_legal_entity_id
85253       , l_array_entity_code
85254       , l_array_transaction_num
85255       , l_array_event_id
85256       , l_array_class_code
85257       , l_array_event_type
85258       , l_array_event_number
85259       , l_array_event_date
85260       , l_array_transaction_date
85261       , l_array_reference_num_1
85262       , l_array_reference_num_2
85263       , l_array_reference_num_3
85264       , l_array_reference_num_4
85265       , l_array_reference_char_1
85266       , l_array_reference_char_2
85267       , l_array_reference_char_3
85268       , l_array_reference_char_4
85269       , l_array_reference_date_1
85270       , l_array_reference_date_2
85271       , l_array_reference_date_3
85272       , l_array_reference_date_4
85273       , l_array_event_created_by
85274       , l_array_budgetary_control_flag
85275       , l_array_extract_line_num 
85276       , l_array_source_3
85277       , l_array_source_4
85278       , l_array_source_5
85279       , l_array_source_6
85280       , l_array_source_7
85281       , l_array_source_22
85282       , l_array_source_23
85283       , l_array_source_24
85284       , l_array_source_25
85285       , l_array_source_26
85286       , l_array_source_27
85287       , l_array_source_28
85288       , l_array_source_29
85289       , l_array_source_30
85290       , l_array_source_31
85291       , l_array_source_33
85292       , l_array_source_34
85293       , l_array_source_34_meaning
85294       , l_array_source_35
85295       LIMIT l_rows;
85296 
85297   --
85298   IF (C_LEVEL_EVENT >= g_log_level) THEN
85299             trace
85300                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
85301                ,p_level    => C_LEVEL_EVENT
85302                ,p_module   => l_log_module);
85303   END IF;
85307   XLA_AE_LINES_PKG.g_rec_lines := null;
85304   --
85305   EXIT WHEN l_array_entity_id.count = 0;
85306 
85308 
85309 --
85310 -- Bug 4458708
85311 --
85312 XLA_AE_LINES_PKG.g_LineNumber := 0;
85313 --
85314 --
85315 
85316 FOR Idx IN 1..l_array_event_id.count LOOP
85317    --
85318    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
85319    --
85320    l_event_id := l_array_event_id(idx);  -- 5648433
85321 
85322    --
85323    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
85324    --
85325 
85326    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
85327              (g_array_event(l_event_id).array_value_num('header_index'))
85328          ,'N'
85329          ) <> 'Y'
85330    THEN
85331       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85332          trace
85333             (p_msg      => 'Trancaction revesal option is not Y '
85334             ,p_level    => C_LEVEL_STATEMENT
85335             ,p_module   => l_log_module);
85336       END IF;
85337 
85338 --
85339 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
85340 --
85341 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
85342 --
85343 -- set event info as cache for other routines to refer event attributes
85344 --
85345 
85346 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
85347    l_previous_event_id := l_event_id;
85348 
85349    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
85350       (p_application_id           => p_application_id
85351       ,p_primary_ledger_id        => p_primary_ledger_id
85352       ,p_base_ledger_id           => p_base_ledger_id
85353       ,p_target_ledger_id         => p_target_ledger_id
85354       ,p_entity_id                => l_array_entity_id(Idx)
85355       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
85356       ,p_entity_code              => l_array_entity_code(Idx)
85357       ,p_transaction_num          => l_array_transaction_num(Idx)
85358       ,p_event_id                 => l_array_event_id(Idx)
85359       ,p_event_class_code         => l_array_class_code(Idx)
85360       ,p_event_type_code          => l_array_event_type(Idx)
85361       ,p_event_number             => l_array_event_number(Idx)
85362       ,p_event_date               => l_array_event_date(Idx)
85363       ,p_transaction_date         => l_array_transaction_date(Idx)
85364       ,p_reference_num_1          => l_array_reference_num_1(Idx)
85365       ,p_reference_num_2          => l_array_reference_num_2(Idx)
85366       ,p_reference_num_3          => l_array_reference_num_3(Idx)
85367       ,p_reference_num_4          => l_array_reference_num_4(Idx)
85368       ,p_reference_char_1         => l_array_reference_char_1(Idx)
85369       ,p_reference_char_2         => l_array_reference_char_2(Idx)
85370       ,p_reference_char_3         => l_array_reference_char_3(Idx)
85371       ,p_reference_char_4         => l_array_reference_char_4(Idx)
85372       ,p_reference_date_1         => l_array_reference_date_1(Idx)
85373       ,p_reference_date_2         => l_array_reference_date_2(Idx)
85374       ,p_reference_date_3         => l_array_reference_date_3(Idx)
85375       ,p_reference_date_4         => l_array_reference_date_4(Idx)
85376       ,p_event_created_by         => l_array_event_created_by(Idx)
85377       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
85378        --
85379 END IF;
85380 
85381 
85382 
85383 --
85384 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
85385 
85386 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
85387 
85388 IF l_continue_with_lines THEN
85389    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
85390       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
85391 
85392       xla_accounting_err_pkg.build_message
85393          (p_appli_s_name            => 'XLA'
85394          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
85395          ,p_token_1                 => 'LINE_NUMBER'
85396          ,p_value_1                 => l_array_extract_line_num(Idx)
85397          ,p_token_2                 => 'PRODUCT_NAME'
85398          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
85399          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
85400          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
85401          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
85402 
85403    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
85404       --
85405       -- following sets the accounting attributes needed to reverse
85406       -- accounting for a distributeion
85407       --
85408 
85409       --
85410       -- 5217187
85411       --
85412       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
85413       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
85414                                        g_array_event(l_event_id).array_value_num('header_index'));
85415       --
85416       --
85417 
85418       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
85419       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
85420       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
85421       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
85422       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
85423       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
85424       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
85425       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
85426       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
85430       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
85427       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
85428       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
85429       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
85431       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
85432       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
85433       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
85434       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
85435       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
85436       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
85437       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
85438       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
85439       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
85440       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
85441       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
85442       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
85443       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
85444       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
85445       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
85446       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
85447       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
85448       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
85449       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
85450       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
85451       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
85452       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
85453       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
85454       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
85455       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
85456       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
85457       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
85458       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
85459       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
85460       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
85461       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
85462       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
85463       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
85464       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
85465       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
85466 
85467 
85468       xla_ae_lines_pkg.SetAcctReversalAttrs
85469          (p_event_id             => l_event_id
85470          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
85471          ,p_calculate_acctd_flag => l_calculate_acctd_flag
85472          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
85473    END IF;
85474 
85475    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
85476        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
85477 
85478 --
85479 AcctLineType_42 (
85480  p_application_id  => p_application_id
85481  ,p_event_id     => l_event_id
85482  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85483  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85484  ,p_actual_flag => l_actual_flag
85485  ,p_balance_type_code => l_balance_type_code
85486  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85487  
85488  , p_source_3 => l_array_source_3(Idx)
85489  , p_source_4 => l_array_source_4(Idx)
85490  , p_source_5 => l_array_source_5(Idx)
85491  , p_source_6 => l_array_source_6(Idx)
85492  , p_source_22 => l_array_source_22(Idx)
85493  , p_source_23 => l_array_source_23(Idx)
85494  , p_source_24 => l_array_source_24(Idx)
85495  , p_source_25 => l_array_source_25(Idx)
85496  , p_source_26 => l_array_source_26(Idx)
85497  , p_source_27 => l_array_source_27(Idx)
85498  , p_source_28 => l_array_source_28(Idx)
85499  , p_source_29 => l_array_source_29(Idx)
85500  , p_source_30 => l_array_source_30(Idx)
85501  , p_source_31 => l_array_source_31(Idx)
85502  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
85503  , p_source_33 => l_array_source_33(Idx)
85504  , p_source_34 => l_array_source_34(Idx)
85505  , p_source_34_meaning => l_array_source_34_meaning(Idx)
85506  , p_source_35 => l_array_source_35(Idx)
85507  );
85508 If(l_balance_type_code = 'A') THEN
85509   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85510 END IF;
85511 
85512 --
85513 
85514 
85515 --
85516 AcctLineType_54 (
85517  p_application_id  => p_application_id
85518  ,p_event_id     => l_event_id
85519  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85520  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85521  ,p_actual_flag => l_actual_flag
85522  ,p_balance_type_code => l_balance_type_code
85523  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85524  
85525  , p_source_3 => l_array_source_3(Idx)
85526  , p_source_4 => l_array_source_4(Idx)
85527  , p_source_6 => l_array_source_6(Idx)
85528  , p_source_7 => l_array_source_7(Idx)
85529  , p_source_22 => l_array_source_22(Idx)
85530  , p_source_23 => l_array_source_23(Idx)
85531  , p_source_24 => l_array_source_24(Idx)
85532  , p_source_25 => l_array_source_25(Idx)
85533  , p_source_26 => l_array_source_26(Idx)
85534  , p_source_27 => l_array_source_27(Idx)
85535  , p_source_28 => l_array_source_28(Idx)
85539  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
85536  , p_source_29 => l_array_source_29(Idx)
85537  , p_source_30 => l_array_source_30(Idx)
85538  , p_source_31 => l_array_source_31(Idx)
85540  , p_source_33 => l_array_source_33(Idx)
85541  , p_source_34 => l_array_source_34(Idx)
85542  , p_source_34_meaning => l_array_source_34_meaning(Idx)
85543  , p_source_35 => l_array_source_35(Idx)
85544  );
85545 If(l_balance_type_code = 'A') THEN
85546   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85547 END IF;
85548 
85549 --
85550 
85551       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
85552       -- or secondary ledger that has different currency with primary
85553       -- or alc that is calculated by sla
85554       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
85555             (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'))
85556 
85557 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
85558 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
85559           AND (l_actual_flag = 'A')) THEN
85560         XLA_AE_LINES_PKG.CreateGainOrLossLines(
85561           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
85562          ,p_application_id   => p_application_id
85563          ,p_amb_context_code => 'DEFAULT'
85564          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
85565          ,p_event_class_code => C_EVENT_CLASS_CODE
85566          ,p_event_type_code  => C_EVENT_TYPE_CODE
85567          
85568          ,p_gain_ccid        => -1
85569          ,p_loss_ccid        => -1
85570 
85571          ,p_actual_flag      => l_actual_flag
85572          ,p_enc_flag         => null
85573          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
85574          ,p_enc_g_l_ref      => null
85575          );
85576       END IF;
85577    END IF;
85578 END IF;
85579 
85580    ELSE
85581       --
85582       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
85583       --
85584       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85585          trace
85586             (p_msg      => 'Trancaction revesal option is Y'
85587             ,p_level    => C_LEVEL_STATEMENT
85588             ,p_module   => l_log_module);
85589       END IF;
85590    END IF;
85591 
85592 END LOOP;
85593 l_result := XLA_AE_LINES_PKG.InsertLines ;
85594 end loop;
85595 close line_cur;
85596 
85597 
85598 --
85599 -- insert headers into xla_ae_headers_gt table
85600 --
85601 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
85602 
85603 -- insert into errors table here.
85604 
85605 END LOOP;
85606 
85607 --
85608 -- 4865292
85609 --
85610 -- Compare g_hdr_extract_count with event count in
85611 -- CreateHeadersAndLines.
85612 --
85613 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
85614 
85615 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85616    trace (p_msg     => '# rows extracted from header extract objects '
85617                     || ' (running total): '
85618                     || g_hdr_extract_count
85619          ,p_level   => C_LEVEL_STATEMENT
85620          ,p_module  => l_log_module);
85621 END IF;
85622 
85623 CLOSE header_cur;
85624 --
85625 
85626 --
85627 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85628    trace
85629       (p_msg      => 'END of EventClass_130'
85630       ,p_level    => C_LEVEL_PROCEDURE
85631       ,p_module   => l_log_module);
85632 END IF;
85633 --
85634 RETURN l_result;
85635 EXCEPTION
85636 WHEN xla_exceptions_pkg.application_exception THEN
85637    
85638 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
85639 
85640    
85641 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
85642 
85643    RAISE;
85644 WHEN OTHERS THEN
85645    xla_exceptions_pkg.raise_message
85646       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_130');
85647 END EventClass_130;
85648 --
85649 
85650 ---------------------------------------
85651 --
85652 -- PRIVATE PROCEDURE
85653 --         insert_sources_131
85654 --
85655 ----------------------------------------
85656 --
85657 PROCEDURE insert_sources_131(
85658                                 p_target_ledger_id       IN NUMBER
85659                               , p_language               IN VARCHAR2
85660                               , p_sla_ledger_id          IN NUMBER
85661                               , p_pad_start_date         IN DATE
85662                               , p_pad_end_date           IN DATE
85663                          )
85664 IS
85665 
85666 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ADJ_ALL';
85667 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST_ADJ';
85668 p_apps_owner                   VARCHAR2(30);
85669 l_log_module                   VARCHAR2(240);
85670 BEGIN
85671 IF g_log_enabled THEN
85672       l_log_module := C_DEFAULT_MODULE||'.insert_sources_131';
85673 END IF;
85674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85675 
85676       trace
85677          (p_msg      => 'BEGIN of insert_sources_131'
85678          ,p_level    => C_LEVEL_PROCEDURE
85679          ,p_module   => l_log_module);
85680 
85681 END IF;
85682 
85683 -- select APPS owner
85684 SELECT oracle_username
85685   INTO p_apps_owner
85686   FROM fnd_oracle_userid
85687  WHERE read_only_flag = 'U'
85688 ;
85689 
85690 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85691       trace
85692          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
85696                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
85693                         ' - p_language = '||p_language||
85694                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
85695                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
85697                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
85698          ,p_level    => C_LEVEL_STATEMENT
85699          ,p_module   => l_log_module);
85700 END IF;
85701 
85702 
85703 --
85704 INSERT INTO xla_diag_sources --hdr2
85705 (
85706         event_id
85707       , ledger_id
85708       , sla_ledger_id
85709       , description_language
85710       , object_name
85711       , object_type_code
85712       , line_number
85713       , source_application_id
85714       , source_type_code
85715       , source_code
85716       , source_value
85717       , source_meaning
85718       , created_by
85719       , creation_date
85720       , last_update_date
85721       , last_updated_by
85722       , last_update_login
85723       , program_update_date
85724       , program_application_id
85725       , program_id
85726       , request_id
85727 )
85728 SELECT
85729         event_id
85730       , p_target_ledger_id
85731       , p_sla_ledger_id
85732       , p_language
85733       , object_name
85734       , object_type_code
85735       , line_number
85736       , source_application_id
85737       , source_type_code
85738       , source_code
85739       , SUBSTR(source_value ,1,1996)
85740       , SUBSTR(source_meaning ,1,200)
85741       , xla_environment_pkg.g_Usr_Id
85742       , TRUNC(SYSDATE)
85743       , TRUNC(SYSDATE)
85744       , xla_environment_pkg.g_Usr_Id
85745       , xla_environment_pkg.g_Login_Id
85746       , TRUNC(SYSDATE)
85747       , xla_environment_pkg.g_Prog_Appl_Id
85748       , xla_environment_pkg.g_Prog_Id
85749       , xla_environment_pkg.g_Req_Id
85750   FROM (
85751        SELECT xet.event_id                  event_id
85752             , 0                          line_number
85753             , CASE r
85754                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
85755                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
85756                 
85757                ELSE null
85758               END                           object_name
85759             , CASE r
85760                 WHEN 1 THEN 'HEADER' 
85761                 WHEN 2 THEN 'HEADER' 
85762                 
85763                 ELSE null
85764               END                           object_type_code
85765             , CASE r
85766                 WHEN 1 THEN '275' 
85767                 WHEN 2 THEN '275' 
85768                 
85769                 ELSE null
85770               END                           source_application_id
85771             , 'S'             source_type_code
85772             , CASE r
85773                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
85774                 WHEN 2 THEN 'GL_DATE' 
85775                 
85776                 ELSE null
85777               END                           source_code
85778             , CASE r
85779                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
85780                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
85781                 
85782                 ELSE null
85783               END                           source_value
85784             , null              source_meaning
85785          FROM xla_events_gt     xet  
85786       , PA_XLA_EXP_HEADER_V  h2
85787              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
85788          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
85789            AND xet.event_class_code = C_EVENT_CLASS_CODE
85790               AND h2.event_id = xet.event_id
85791 
85792 )
85793 ;
85794 --
85795 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85796 
85797       trace
85798          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
85799          ,p_level    => C_LEVEL_STATEMENT
85800          ,p_module   => l_log_module);
85801 
85802 END IF;
85803 --
85804 
85805 
85806 
85807 --
85808 INSERT INTO xla_diag_sources  --line2
85809 (
85810         event_id
85811       , ledger_id
85812       , sla_ledger_id
85813       , description_language
85814       , object_name
85815       , object_type_code
85816       , line_number
85817       , source_application_id
85818       , source_type_code
85819       , source_code
85820       , source_value
85821       , source_meaning
85822       , created_by
85823       , creation_date
85824       , last_update_date
85825       , last_updated_by
85826       , last_update_login
85827       , program_update_date
85828       , program_application_id
85829       , program_id
85830       , request_id
85831 )
85832 SELECT  event_id
85833       , p_target_ledger_id
85834       , p_sla_ledger_id
85835       , p_language
85836       , object_name
85837       , object_type_code
85838       , line_number
85839       , source_application_id
85840       , source_type_code
85841       , source_code
85842       , SUBSTR(source_value,1,1996)
85843       , SUBSTR(source_meaning ,1,200)
85844       , xla_environment_pkg.g_Usr_Id
85845       , TRUNC(SYSDATE)
85846       , TRUNC(SYSDATE)
85847       , xla_environment_pkg.g_Usr_Id
85848       , xla_environment_pkg.g_Login_Id
85849       , TRUNC(SYSDATE)
85850       , xla_environment_pkg.g_Prog_Appl_Id
85851       , xla_environment_pkg.g_Prog_Id
85852       , xla_environment_pkg.g_Req_Id
85853   FROM (
85854        SELECT xet.event_id                  event_id
85855             , l1.line_number                 line_number
85859                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
85856             , CASE r
85857                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
85858                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
85860                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
85861                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
85862                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
85863                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
85864                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
85865                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
85866                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
85867                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
85868                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
85869                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
85870                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
85871                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
85872                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
85873                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
85874                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
85875                 
85876                ELSE null
85877               END                           object_name
85878             , CASE r
85879                 WHEN 1 THEN 'LINE' 
85880                 WHEN 2 THEN 'LINE' 
85881                 WHEN 3 THEN 'LINE' 
85882                 WHEN 4 THEN 'LINE' 
85883                 WHEN 5 THEN 'LINE' 
85884                 WHEN 6 THEN 'LINE' 
85885                 WHEN 7 THEN 'LINE' 
85886                 WHEN 8 THEN 'LINE' 
85887                 WHEN 9 THEN 'LINE' 
85888                 WHEN 10 THEN 'LINE' 
85889                 WHEN 11 THEN 'LINE' 
85890                 WHEN 12 THEN 'LINE' 
85891                 WHEN 13 THEN 'LINE' 
85892                 WHEN 14 THEN 'LINE' 
85893                 WHEN 15 THEN 'LINE' 
85894                 WHEN 16 THEN 'LINE' 
85895                 WHEN 17 THEN 'LINE' 
85896                 WHEN 18 THEN 'LINE' 
85897                 
85898                 ELSE null
85899               END                           object_type_code
85900             , CASE r
85901                 WHEN 1 THEN '275' 
85902                 WHEN 2 THEN '275' 
85903                 WHEN 3 THEN '275' 
85904                 WHEN 4 THEN '275' 
85905                 WHEN 5 THEN '275' 
85906                 WHEN 6 THEN '275' 
85907                 WHEN 7 THEN '275' 
85908                 WHEN 8 THEN '275' 
85909                 WHEN 9 THEN '275' 
85910                 WHEN 10 THEN '275' 
85911                 WHEN 11 THEN '275' 
85912                 WHEN 12 THEN '275' 
85913                 WHEN 13 THEN '275' 
85914                 WHEN 14 THEN '275' 
85915                 WHEN 15 THEN '275' 
85916                 WHEN 16 THEN '275' 
85917                 WHEN 17 THEN '275' 
85918                 WHEN 18 THEN '275' 
85919                 
85920                 ELSE null
85921               END                           source_application_id
85922             , 'S'             source_type_code
85923             , CASE r
85924                 WHEN 1 THEN 'COST_CCID' 
85925                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
85926                 WHEN 3 THEN 'ADJ_COST_CCID' 
85927                 WHEN 4 THEN 'COST_CLEARING_CCID' 
85928                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
85929                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
85930                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
85931                 WHEN 8 THEN 'ENTERED_RAW_COST' 
85932                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
85933                 WHEN 10 THEN 'ACCT_RAW_COST' 
85934                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
85935                 WHEN 12 THEN 'EXCHANGE_RATE' 
85936                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
85937                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
85938                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
85939                 WHEN 16 THEN 'LINE_NUMBER' 
85940                 WHEN 17 THEN 'LINE_TYPE' 
85941                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
85942                 
85943                 ELSE null
85944               END                           source_code
85945             , CASE r
85946                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
85947                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
85948                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
85949                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
85950                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
85951                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
85952                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
85953                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
85954                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
85955                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
85956                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
85957                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
85958                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
85959                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
85960                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
85961                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
85962                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
85963                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
85964                 
85965                 ELSE null
85966               END                           source_value
85967             , CASE r
85968                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
85969                           103371
85970                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
85971                          ,'ALLOW_OVERRIDE_CCID_FLAG'
85972                          ,'S'
85973                          ,275)
85974                 WHEN 17 THEN fvl34.meaning
85975                 
85976                 ELSE null
85977               END               source_meaning
85978          FROM  xla_events_gt     xet  
85982         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
85979         , PA_XLA_CDL_LINES_V  l1
85980   , fnd_lookup_values    fvl34
85981             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
85983           AND xet.event_class_code = C_EVENT_CLASS_CODE
85984             AND l1.event_id          = xet.event_id
85985    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
85986   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
85987   AND fvl34.view_application_id(+) = 275
85988   AND fvl34.language(+)            = USERENV('LANG')
85989   
85990 )
85991 ;
85992 --
85993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85994 
85995       trace
85996          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
85997          ,p_level    => C_LEVEL_STATEMENT
85998          ,p_module   => l_log_module);
85999 
86000 END IF;
86001 
86002 
86003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86004       trace
86005          (p_msg      => 'END of insert_sources_131'
86006          ,p_level    => C_LEVEL_PROCEDURE
86007          ,p_module   => l_log_module);
86008 END IF;
86009 EXCEPTION
86010   WHEN xla_exceptions_pkg.application_exception THEN
86011       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
86012             trace
86013                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
86014                ,p_level    => C_LEVEL_EXCEPTION
86015                ,p_module   => l_log_module);
86016       END IF;
86017       RAISE;
86018   WHEN OTHERS THEN
86019       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
86020             trace
86021                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
86022                ,p_level    => C_LEVEL_EXCEPTION
86023                ,p_module   => l_log_module);
86024        END IF;
86025        xla_exceptions_pkg.raise_message
86026            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_131');
86027 END insert_sources_131;
86028 --
86029 
86030 ---------------------------------------
86031 --
86032 -- PRIVATE FUNCTION
86033 --         EventClass_131
86034 --
86035 ----------------------------------------
86036 --
86037 FUNCTION EventClass_131
86038        (p_application_id         IN NUMBER
86039        ,p_base_ledger_id         IN NUMBER
86040        ,p_target_ledger_id       IN NUMBER
86041        ,p_language               IN VARCHAR2
86042        ,p_currency_code          IN VARCHAR2
86043        ,p_sla_ledger_id          IN NUMBER
86044        ,p_pad_start_date         IN DATE
86045        ,p_pad_end_date           IN DATE
86046        ,p_primary_ledger_id      IN NUMBER)
86047 RETURN BOOLEAN IS
86048 --
86049 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ADJ_ALL';
86050 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST_ADJ';
86051 
86052 l_calculate_acctd_flag   VARCHAR2(1) :='N';
86053 l_calculate_g_l_flag     VARCHAR2(1) :='N';
86054 --
86055 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86056 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86057 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
86058 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
86059 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86060 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
86061 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
86062 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86063 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
86064 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
86065 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86066 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86067 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86068 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
86069 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
86070 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
86071 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
86072 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
86073 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
86074 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
86075 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
86076 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
86077 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
86078 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
86079 
86080 l_event_id                             NUMBER;
86081 l_previous_event_id                    NUMBER;
86082 l_first_event_id                       NUMBER;
86083 l_last_event_id                        NUMBER;
86084 
86085 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
86086 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
86087 --
86088 --
86089 l_result                    BOOLEAN := TRUE;
86090 l_rows                      NUMBER  := 1000;
86091 l_event_type_name           VARCHAR2(80) := 'All';
86092 l_event_class_name          VARCHAR2(80) := 'Work in Process Cost Adjustment';
86093 l_description               VARCHAR2(4000);
86094 l_transaction_reversal      NUMBER;
86095 l_ae_header_id              NUMBER;
86096 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
86097 l_log_module                VARCHAR2(240);
86098 --
86099 l_acct_reversal_source      VARCHAR2(30);
86100 l_trx_reversal_source       VARCHAR2(30);
86101 
86102 l_continue_with_lines       BOOLEAN := TRUE;
86106 type t_array_event_id is table of number index by binary_integer;
86103 --
86104 l_acc_rev_gl_date_source    DATE;                      -- 4262811
86105 --
86107 
86108 l_rec_array_event                    t_rec_array_event;
86109 l_null_rec_array_event               t_rec_array_event;
86110 l_array_ae_header_id                 xla_number_array_type;
86111 l_actual_flag                        VARCHAR2(1) := NULL;
86112 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
86113 l_balance_type_code                  VARCHAR2(1) :=NULL;
86114 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
86115 
86116 --
86117 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
86118 --
86119 
86120 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
86121 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
86122 
86123 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
86124 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
86125 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
86126 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
86127 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
86128 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
86129 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
86130 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
86131 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
86132 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
86133 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
86134 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
86135 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
86136 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
86137 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
86138 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
86139 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
86140 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
86141 
86142 l_array_source_32              t_array_source_32;
86143 l_array_source_88              t_array_source_88;
86144 
86145 l_array_source_3      t_array_source_3;
86146 l_array_source_4      t_array_source_4;
86147 l_array_source_5      t_array_source_5;
86148 l_array_source_6      t_array_source_6;
86149 l_array_source_7      t_array_source_7;
86150 l_array_source_22      t_array_source_22;
86151 l_array_source_23      t_array_source_23;
86152 l_array_source_24      t_array_source_24;
86153 l_array_source_25      t_array_source_25;
86154 l_array_source_26      t_array_source_26;
86155 l_array_source_27      t_array_source_27;
86156 l_array_source_28      t_array_source_28;
86157 l_array_source_29      t_array_source_29;
86158 l_array_source_30      t_array_source_30;
86159 l_array_source_31      t_array_source_31;
86160 l_array_source_33      t_array_source_33;
86161 l_array_source_34      t_array_source_34;
86162 l_array_source_34_meaning      t_array_lookup_meaning;
86163 l_array_source_35      t_array_source_35;
86164 
86165 --
86166 CURSOR header_cur
86167 IS
86168 SELECT /*+ leading(xet) cardinality(xet,1) */
86169 -- Event Class Code: WIP_COST_ADJ
86170     xet.entity_id
86171    ,xet.legal_entity_id
86172    ,xet.entity_code
86173    ,xet.transaction_number
86174    ,xet.event_id
86175    ,xet.event_class_code
86176    ,xet.event_type_code
86177    ,xet.event_number
86178    ,xet.event_date
86179    ,xet.transaction_date
86180    ,xet.reference_num_1
86181    ,xet.reference_num_2
86182    ,xet.reference_num_3
86183    ,xet.reference_num_4
86184    ,xet.reference_char_1
86185    ,xet.reference_char_2
86186    ,xet.reference_char_3
86187    ,xet.reference_char_4
86188    ,xet.reference_date_1
86189    ,xet.reference_date_2
86190    ,xet.reference_date_3
86191    ,xet.reference_date_4
86192    ,xet.event_created_by
86193    ,xet.budgetary_control_flag 
86194   , h2.EXPENDITURE_ITEM_ID    source_32
86195   , h2.GL_DATE    source_88
86196   FROM xla_events_gt     xet 
86197   , PA_XLA_EXP_HEADER_V  h2
86198  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
86199    and xet.event_class_code = C_EVENT_CLASS_CODE
86200    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
86201 
86202  ORDER BY event_id
86203 ;
86204 
86205 
86206 --
86207 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
86208 IS
86209 SELECT  /*+ leading(xet) cardinality(xet,1) */
86210 -- Event Class Code: WIP_COST_ADJ
86211     xet.entity_id
86212    ,xet.legal_entity_id
86213    ,xet.entity_code
86214    ,xet.transaction_number
86215    ,xet.event_id
86216    ,xet.event_class_code
86217    ,xet.event_type_code
86218    ,xet.event_number
86219    ,xet.event_date
86220    ,xet.transaction_date
86221    ,xet.reference_num_1
86222    ,xet.reference_num_2
86223    ,xet.reference_num_3
86224    ,xet.reference_num_4
86225    ,xet.reference_char_1
86226    ,xet.reference_char_2
86227    ,xet.reference_char_3
86228    ,xet.reference_char_4
86229    ,xet.reference_date_1
86230    ,xet.reference_date_2
86234    ,xet.budgetary_control_flag
86231    ,xet.reference_date_3
86232    ,xet.reference_date_4
86233    ,xet.event_created_by
86235  , l1.LINE_NUMBER  
86236   , l1.COST_CCID    source_3
86237   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
86238   , l1.ADJ_COST_CCID    source_5
86239   , l1.COST_CLEARING_CCID    source_6
86240   , l1.ADJ_COST_CLEARING_CCID    source_7
86241   , l1.REVERSING_LINE_FLAG    source_22
86242   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
86243   , l1.ENTERED_RAW_COST    source_24
86244   , l1.ENTERED_CURRENCY_CODE    source_25
86245   , l1.ACCT_RAW_COST    source_26
86246   , l1.EXCHANGE_RATE_DATE    source_27
86247   , l1.EXCHANGE_RATE    source_28
86248   , l1.EXCHANGE_RATE_TYPE    source_29
86249   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
86250   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
86251   , l1.LINE_NUMBER    source_33
86252   , l1.LINE_TYPE    source_34
86253   , fvl34.meaning   source_34_meaning
86254   , l1.LINE_NUM_REVERSED    source_35
86255   FROM xla_events_gt     xet 
86256   , PA_XLA_CDL_LINES_V  l1
86257   , fnd_lookup_values    fvl34
86258  WHERE xet.event_id between x_first_event_id and x_last_event_id
86259    and xet.event_date between p_pad_start_date and p_pad_end_date
86260    and xet.event_class_code = C_EVENT_CLASS_CODE
86261    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
86262    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
86263   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
86264   AND fvl34.view_application_id(+) = 275
86265   AND fvl34.language(+)            = USERENV('LANG')
86266   ;
86267 
86268 --
86269 BEGIN
86270 IF g_log_enabled THEN
86271    l_log_module := C_DEFAULT_MODULE||'.EventClass_131';
86272 END IF;
86273 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86274    trace
86275       (p_msg      => 'BEGIN of EventClass_131'
86276       ,p_level    => C_LEVEL_PROCEDURE
86277       ,p_module   => l_log_module);
86278 END IF;
86279 
86280 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86281    trace
86282       (p_msg      => 'p_application_id = '||p_application_id||
86283                      ' - p_base_ledger_id = '||p_base_ledger_id||
86284                      ' - p_target_ledger_id  = '||p_target_ledger_id||
86285                      ' - p_language = '||p_language||
86286                      ' - p_currency_code = '||p_currency_code||
86287                      ' - p_sla_ledger_id = '||p_sla_ledger_id
86288       ,p_level    => C_LEVEL_STATEMENT
86289       ,p_module   => l_log_module);
86290 END IF;
86291 --
86292 -- initialze arrays
86293 --
86294 g_array_event.DELETE;
86295 l_rec_array_event := l_null_rec_array_event;
86296 --
86297 --------------------------------------
86298 -- 4262811 Initialze MPA Line Number
86299 --------------------------------------
86300 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
86301 
86302 --
86303 
86304 --
86305 OPEN header_cur;
86306 --
86307 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86308    trace
86309    (p_msg      => 'SQL - FETCH header_cur'
86310    ,p_level    => C_LEVEL_STATEMENT
86311    ,p_module   => l_log_module);
86312 END IF;
86313 --
86314 LOOP
86315 FETCH header_cur BULK COLLECT INTO
86316         l_array_entity_id
86317       , l_array_legal_entity_id
86318       , l_array_entity_code
86319       , l_array_transaction_num
86320       , l_array_event_id
86321       , l_array_class_code
86322       , l_array_event_type
86323       , l_array_event_number
86324       , l_array_event_date
86325       , l_array_transaction_date
86326       , l_array_reference_num_1
86327       , l_array_reference_num_2
86328       , l_array_reference_num_3
86329       , l_array_reference_num_4
86330       , l_array_reference_char_1
86331       , l_array_reference_char_2
86332       , l_array_reference_char_3
86333       , l_array_reference_char_4
86334       , l_array_reference_date_1
86335       , l_array_reference_date_2
86336       , l_array_reference_date_3
86337       , l_array_reference_date_4
86338       , l_array_event_created_by
86339       , l_array_budgetary_control_flag 
86340       , l_array_source_32
86341       , l_array_source_88
86342       LIMIT l_rows;
86343 --
86344 IF (C_LEVEL_EVENT >= g_log_level) THEN
86345    trace
86346    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
86347    ,p_level    => C_LEVEL_EVENT
86348    ,p_module   => l_log_module);
86349 END IF;
86350 --
86351 EXIT WHEN l_array_entity_id.COUNT = 0;
86352 
86353 -- initialize arrays
86354 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
86355 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
86356 
86357 --
86358 -- Bug 4458708
86359 --
86360 XLA_AE_LINES_PKG.g_LineNumber := 0;
86361 
86362 
86363 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
86364 g_last_hdr_idx := l_array_event_id.LAST;
86365 --
86366 -- loop for the headers. Each iteration is for each header extract row
86367 -- fetched in header cursor
86368 --
86369 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
86370 
86371 --
86372 -- set event info as cache for other routines to refer event attributes
86373 --
86374 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
86375    (p_application_id           => p_application_id
86376    ,p_primary_ledger_id        => p_primary_ledger_id
86377    ,p_base_ledger_id           => p_base_ledger_id
86378    ,p_target_ledger_id         => p_target_ledger_id
86379    ,p_entity_id                => l_array_entity_id(hdr_idx)
86380    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
86381    ,p_entity_code              => l_array_entity_code(hdr_idx)
86385    ,p_event_type_code          => l_array_event_type(hdr_idx)
86382    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
86383    ,p_event_id                 => l_array_event_id(hdr_idx)
86384    ,p_event_class_code         => l_array_class_code(hdr_idx)
86386    ,p_event_number             => l_array_event_number(hdr_idx)
86387    ,p_event_date               => l_array_event_date(hdr_idx)
86388    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
86389    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
86390    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
86391    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
86392    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
86393    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
86394    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
86395    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
86396    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
86397    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
86398    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
86399    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
86400    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
86401    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
86402    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
86403 
86404 --
86405 -- set the status of entry to C_VALID (0)
86406 --
86407 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
86408 
86409 --
86410 -- initialize a row for ae header
86411 --
86412 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
86413 
86414 l_event_id := l_array_event_id(hdr_idx);
86415 
86416 --
86417 -- storing the hdr_idx for event. May be used by line cursor.
86418 --
86419 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
86420 
86421 --
86422 -- store sources from header extract. This can be improved to
86423 -- store only those sources from header extract that may be used in lines
86424 --
86425 
86426 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
86427 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
86428 
86429 --
86430 -- initilaize the status of ae headers for diffrent balance types
86431 -- the status is initialised to C_NOT_CREATED (2)
86432 --
86433 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86434 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86435 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86436 
86437 --
86438 -- call api to validate and store accounting attributes for header
86439 --
86440 
86441 ------------------------------------------------------------
86442 -- Accrual Reversal : to get date for Standard Source (NONE)
86443 ------------------------------------------------------------
86444 l_acc_rev_gl_date_source := NULL;
86445 
86446      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
86447       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
86448 
86449 
86450 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
86451 
86452 XLA_AE_HEADER_PKG.SetJeCategoryName;
86453 
86454 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
86455 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
86456 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
86457 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
86458 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
86459 
86460 
86461 -- No header level analytical criteria
86462 
86463 --
86464 --accounting attribute enhancement, bug 3612931
86465 --
86466 l_trx_reversal_source := SUBSTR(NULL, 1,30);
86467 
86468 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
86469    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
86470 
86471    xla_accounting_err_pkg.build_message
86472       (p_appli_s_name            => 'XLA'
86473       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
86474       ,p_token_1                 => 'ACCT_ATTR_NAME'
86475       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
86476       ,p_token_2                 => 'PRODUCT_NAME'
86477       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
86478       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
86479       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
86480       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
86481 
86482 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
86483    --
86484    -- following sets the accounting attributes needed to reverse
86485    -- accounting for a distributeion
86486    --
86487    xla_ae_lines_pkg.SetTrxReversalAttrs
86488       (p_event_id              => l_event_id
86489       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
86490       ,p_trx_reversal_source   => l_trx_reversal_source);
86491 
86492 END IF;
86493 
86494 
86495 ----------------------------------------------------------------
86496 -- 4262811 -  update the header statuses to invalid in need be
86497 ----------------------------------------------------------------
86498 --
86499 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
86500 
86501 
86502   -----------------------------------------------
86506 
86503   -- No accrual reversal for the event class/type
86504   -----------------------------------------------
86505 ----------------------------------------------------------------
86507 --
86508 -- this ends the header loop iteration for one bulk fetch
86509 --
86510 END LOOP;
86511 
86512 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
86513 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
86514 
86515 --
86516 -- insert dummy rows into lines gt table that were created due to
86517 -- transaction reversals
86518 --
86519 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
86520    l_result := XLA_AE_LINES_PKG.InsertLines;
86521 END IF;
86522 
86523 --
86524 -- reset the temp_line_num for each set of events fetched from header
86525 -- cursor rather than doing it for each new event in line cursor
86526 -- Bug 3939231
86527 --
86528 xla_ae_lines_pkg.g_temp_line_num := 0;
86529 
86530 
86531 
86532 --
86533 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
86534 --
86535 --
86536 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86537 
86538       trace
86539          (p_msg      => 'SQL - FETCH line_cur'
86540          ,p_level    => C_LEVEL_STATEMENT
86541          ,p_module   => l_log_module);
86542 
86543 END IF;
86544 --
86545 --
86546 LOOP
86547   --
86548   FETCH line_cur BULK COLLECT INTO
86549         l_array_entity_id
86550       , l_array_legal_entity_id
86551       , l_array_entity_code
86552       , l_array_transaction_num
86553       , l_array_event_id
86554       , l_array_class_code
86555       , l_array_event_type
86556       , l_array_event_number
86557       , l_array_event_date
86558       , l_array_transaction_date
86559       , l_array_reference_num_1
86560       , l_array_reference_num_2
86561       , l_array_reference_num_3
86562       , l_array_reference_num_4
86563       , l_array_reference_char_1
86564       , l_array_reference_char_2
86565       , l_array_reference_char_3
86566       , l_array_reference_char_4
86567       , l_array_reference_date_1
86568       , l_array_reference_date_2
86569       , l_array_reference_date_3
86570       , l_array_reference_date_4
86571       , l_array_event_created_by
86572       , l_array_budgetary_control_flag
86573       , l_array_extract_line_num 
86574       , l_array_source_3
86575       , l_array_source_4
86576       , l_array_source_5
86577       , l_array_source_6
86578       , l_array_source_7
86579       , l_array_source_22
86580       , l_array_source_23
86581       , l_array_source_24
86582       , l_array_source_25
86583       , l_array_source_26
86584       , l_array_source_27
86585       , l_array_source_28
86586       , l_array_source_29
86587       , l_array_source_30
86588       , l_array_source_31
86589       , l_array_source_33
86590       , l_array_source_34
86591       , l_array_source_34_meaning
86592       , l_array_source_35
86593       LIMIT l_rows;
86594 
86595   --
86596   IF (C_LEVEL_EVENT >= g_log_level) THEN
86597             trace
86598                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
86599                ,p_level    => C_LEVEL_EVENT
86600                ,p_module   => l_log_module);
86601   END IF;
86602   --
86603   EXIT WHEN l_array_entity_id.count = 0;
86604 
86605   XLA_AE_LINES_PKG.g_rec_lines := null;
86606 
86607 --
86608 -- Bug 4458708
86609 --
86610 XLA_AE_LINES_PKG.g_LineNumber := 0;
86611 --
86612 --
86613 
86614 FOR Idx IN 1..l_array_event_id.count LOOP
86615    --
86616    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
86617    --
86618    l_event_id := l_array_event_id(idx);  -- 5648433
86619 
86620    --
86621    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
86622    --
86623 
86624    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
86625              (g_array_event(l_event_id).array_value_num('header_index'))
86626          ,'N'
86627          ) <> 'Y'
86628    THEN
86629       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86630          trace
86631             (p_msg      => 'Trancaction revesal option is not Y '
86632             ,p_level    => C_LEVEL_STATEMENT
86633             ,p_module   => l_log_module);
86634       END IF;
86635 
86636 --
86637 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
86638 --
86639 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
86640 --
86641 -- set event info as cache for other routines to refer event attributes
86642 --
86643 
86644 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
86645    l_previous_event_id := l_event_id;
86646 
86647    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
86648       (p_application_id           => p_application_id
86649       ,p_primary_ledger_id        => p_primary_ledger_id
86650       ,p_base_ledger_id           => p_base_ledger_id
86651       ,p_target_ledger_id         => p_target_ledger_id
86652       ,p_entity_id                => l_array_entity_id(Idx)
86653       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
86654       ,p_entity_code              => l_array_entity_code(Idx)
86655       ,p_transaction_num          => l_array_transaction_num(Idx)
86656       ,p_event_id                 => l_array_event_id(Idx)
86657       ,p_event_class_code         => l_array_class_code(Idx)
86658       ,p_event_type_code          => l_array_event_type(Idx)
86659       ,p_event_number             => l_array_event_number(Idx)
86660       ,p_event_date               => l_array_event_date(Idx)
86664       ,p_reference_num_3          => l_array_reference_num_3(Idx)
86661       ,p_transaction_date         => l_array_transaction_date(Idx)
86662       ,p_reference_num_1          => l_array_reference_num_1(Idx)
86663       ,p_reference_num_2          => l_array_reference_num_2(Idx)
86665       ,p_reference_num_4          => l_array_reference_num_4(Idx)
86666       ,p_reference_char_1         => l_array_reference_char_1(Idx)
86667       ,p_reference_char_2         => l_array_reference_char_2(Idx)
86668       ,p_reference_char_3         => l_array_reference_char_3(Idx)
86669       ,p_reference_char_4         => l_array_reference_char_4(Idx)
86670       ,p_reference_date_1         => l_array_reference_date_1(Idx)
86671       ,p_reference_date_2         => l_array_reference_date_2(Idx)
86672       ,p_reference_date_3         => l_array_reference_date_3(Idx)
86673       ,p_reference_date_4         => l_array_reference_date_4(Idx)
86674       ,p_event_created_by         => l_array_event_created_by(Idx)
86675       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
86676        --
86677 END IF;
86678 
86679 
86680 
86681 --
86682 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
86683 
86684 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
86685 
86686 IF l_continue_with_lines THEN
86687    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
86688       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
86689 
86690       xla_accounting_err_pkg.build_message
86691          (p_appli_s_name            => 'XLA'
86692          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
86693          ,p_token_1                 => 'LINE_NUMBER'
86694          ,p_value_1                 => l_array_extract_line_num(Idx)
86695          ,p_token_2                 => 'PRODUCT_NAME'
86696          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
86697          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
86698          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
86699          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
86700 
86701    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
86702       --
86703       -- following sets the accounting attributes needed to reverse
86704       -- accounting for a distributeion
86705       --
86706 
86707       --
86708       -- 5217187
86709       --
86710       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
86711       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
86712                                        g_array_event(l_event_id).array_value_num('header_index'));
86713       --
86714       --
86715 
86716       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
86717       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
86718       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
86719       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
86720       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
86721       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
86722       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
86723       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
86724       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
86725       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
86726       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
86727       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
86728       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
86729       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
86730       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
86731       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
86732       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
86733       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
86734       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
86735       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
86736       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
86737       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
86738       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
86739       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
86740       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
86741       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
86742       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
86743       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
86744       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
86745       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
86746       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
86747       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
86748       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
86749       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
86750       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
86751       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
86752       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
86753       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
86754       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
86755       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
86759       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
86756       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
86757       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
86758       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
86760       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
86761       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
86762       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
86763       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
86764 
86765 
86766       xla_ae_lines_pkg.SetAcctReversalAttrs
86767          (p_event_id             => l_event_id
86768          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
86769          ,p_calculate_acctd_flag => l_calculate_acctd_flag
86770          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
86771    END IF;
86772 
86773    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
86774        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
86775 
86776 --
86777 AcctLineType_52 (
86778  p_application_id  => p_application_id
86779  ,p_event_id     => l_event_id
86780  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86781  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86782  ,p_actual_flag => l_actual_flag
86783  ,p_balance_type_code => l_balance_type_code
86784  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86785  
86786  , p_source_3 => l_array_source_3(Idx)
86787  , p_source_4 => l_array_source_4(Idx)
86788  , p_source_5 => l_array_source_5(Idx)
86789  , p_source_6 => l_array_source_6(Idx)
86790  , p_source_22 => l_array_source_22(Idx)
86791  , p_source_23 => l_array_source_23(Idx)
86792  , p_source_24 => l_array_source_24(Idx)
86793  , p_source_25 => l_array_source_25(Idx)
86794  , p_source_26 => l_array_source_26(Idx)
86795  , p_source_27 => l_array_source_27(Idx)
86796  , p_source_28 => l_array_source_28(Idx)
86797  , p_source_29 => l_array_source_29(Idx)
86798  , p_source_30 => l_array_source_30(Idx)
86799  , p_source_31 => l_array_source_31(Idx)
86800  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
86801  , p_source_33 => l_array_source_33(Idx)
86802  , p_source_34 => l_array_source_34(Idx)
86803  , p_source_34_meaning => l_array_source_34_meaning(Idx)
86804  , p_source_35 => l_array_source_35(Idx)
86805  );
86806 If(l_balance_type_code = 'A') THEN
86807   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86808 END IF;
86809 
86810 --
86811 
86812 
86813 --
86814 AcctLineType_63 (
86815  p_application_id  => p_application_id
86816  ,p_event_id     => l_event_id
86817  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86818  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86819  ,p_actual_flag => l_actual_flag
86820  ,p_balance_type_code => l_balance_type_code
86821  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86822  
86823  , p_source_3 => l_array_source_3(Idx)
86824  , p_source_4 => l_array_source_4(Idx)
86825  , p_source_6 => l_array_source_6(Idx)
86826  , p_source_7 => l_array_source_7(Idx)
86827  , p_source_22 => l_array_source_22(Idx)
86828  , p_source_23 => l_array_source_23(Idx)
86829  , p_source_24 => l_array_source_24(Idx)
86830  , p_source_25 => l_array_source_25(Idx)
86831  , p_source_26 => l_array_source_26(Idx)
86832  , p_source_27 => l_array_source_27(Idx)
86833  , p_source_28 => l_array_source_28(Idx)
86834  , p_source_29 => l_array_source_29(Idx)
86835  , p_source_30 => l_array_source_30(Idx)
86836  , p_source_31 => l_array_source_31(Idx)
86837  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
86838  , p_source_33 => l_array_source_33(Idx)
86839  , p_source_34 => l_array_source_34(Idx)
86840  , p_source_34_meaning => l_array_source_34_meaning(Idx)
86841  , p_source_35 => l_array_source_35(Idx)
86842  );
86843 If(l_balance_type_code = 'A') THEN
86844   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86845 END IF;
86846 
86847 --
86848 
86849       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
86850       -- or secondary ledger that has different currency with primary
86851       -- or alc that is calculated by sla
86852       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
86853             (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'))
86854 
86855 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
86856 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
86857           AND (l_actual_flag = 'A')) THEN
86858         XLA_AE_LINES_PKG.CreateGainOrLossLines(
86859           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
86860          ,p_application_id   => p_application_id
86861          ,p_amb_context_code => 'DEFAULT'
86862          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
86863          ,p_event_class_code => C_EVENT_CLASS_CODE
86864          ,p_event_type_code  => C_EVENT_TYPE_CODE
86865          
86866          ,p_gain_ccid        => -1
86867          ,p_loss_ccid        => -1
86868 
86869          ,p_actual_flag      => l_actual_flag
86870          ,p_enc_flag         => null
86871          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
86872          ,p_enc_g_l_ref      => null
86873          );
86874       END IF;
86875    END IF;
86876 END IF;
86877 
86878    ELSE
86879       --
86880       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
86881       --
86882       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86883          trace
86884             (p_msg      => 'Trancaction revesal option is Y'
86888    END IF;
86885             ,p_level    => C_LEVEL_STATEMENT
86886             ,p_module   => l_log_module);
86887       END IF;
86889 
86890 END LOOP;
86891 l_result := XLA_AE_LINES_PKG.InsertLines ;
86892 end loop;
86893 close line_cur;
86894 
86895 
86896 --
86897 -- insert headers into xla_ae_headers_gt table
86898 --
86899 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
86900 
86901 -- insert into errors table here.
86902 
86903 END LOOP;
86904 
86905 --
86906 -- 4865292
86907 --
86908 -- Compare g_hdr_extract_count with event count in
86909 -- CreateHeadersAndLines.
86910 --
86911 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
86912 
86913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86914    trace (p_msg     => '# rows extracted from header extract objects '
86915                     || ' (running total): '
86916                     || g_hdr_extract_count
86917          ,p_level   => C_LEVEL_STATEMENT
86918          ,p_module  => l_log_module);
86919 END IF;
86920 
86921 CLOSE header_cur;
86922 --
86923 
86924 --
86925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86926    trace
86927       (p_msg      => 'END of EventClass_131'
86928       ,p_level    => C_LEVEL_PROCEDURE
86929       ,p_module   => l_log_module);
86930 END IF;
86931 --
86932 RETURN l_result;
86933 EXCEPTION
86934 WHEN xla_exceptions_pkg.application_exception THEN
86935    
86936 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
86937 
86938    
86939 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
86940 
86941    RAISE;
86942 WHEN OTHERS THEN
86943    xla_exceptions_pkg.raise_message
86944       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_131');
86945 END EventClass_131;
86946 --
86947 
86948 ---------------------------------------
86949 --
86950 -- PRIVATE PROCEDURE
86951 --         insert_sources_132
86952 --
86953 ----------------------------------------
86954 --
86955 PROCEDURE insert_sources_132(
86956                                 p_target_ledger_id       IN NUMBER
86957                               , p_language               IN VARCHAR2
86958                               , p_sla_ledger_id          IN NUMBER
86959                               , p_pad_start_date         IN DATE
86960                               , p_pad_end_date           IN DATE
86961                          )
86962 IS
86963 
86964 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ALL';
86965 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST';
86966 p_apps_owner                   VARCHAR2(30);
86967 l_log_module                   VARCHAR2(240);
86968 BEGIN
86969 IF g_log_enabled THEN
86970       l_log_module := C_DEFAULT_MODULE||'.insert_sources_132';
86971 END IF;
86972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86973 
86974       trace
86975          (p_msg      => 'BEGIN of insert_sources_132'
86976          ,p_level    => C_LEVEL_PROCEDURE
86977          ,p_module   => l_log_module);
86978 
86979 END IF;
86980 
86981 -- select APPS owner
86982 SELECT oracle_username
86983   INTO p_apps_owner
86984   FROM fnd_oracle_userid
86985  WHERE read_only_flag = 'U'
86986 ;
86987 
86988 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86989       trace
86990          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
86991                         ' - p_language = '||p_language||
86992                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
86993                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
86994                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
86995                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
86996          ,p_level    => C_LEVEL_STATEMENT
86997          ,p_module   => l_log_module);
86998 END IF;
86999 
87000 
87001 --
87002 INSERT INTO xla_diag_sources --hdr2
87003 (
87004         event_id
87005       , ledger_id
87006       , sla_ledger_id
87007       , description_language
87008       , object_name
87009       , object_type_code
87010       , line_number
87011       , source_application_id
87012       , source_type_code
87013       , source_code
87014       , source_value
87015       , source_meaning
87016       , created_by
87017       , creation_date
87018       , last_update_date
87019       , last_updated_by
87020       , last_update_login
87021       , program_update_date
87022       , program_application_id
87023       , program_id
87024       , request_id
87025 )
87026 SELECT
87027         event_id
87028       , p_target_ledger_id
87029       , p_sla_ledger_id
87030       , p_language
87031       , object_name
87032       , object_type_code
87033       , line_number
87034       , source_application_id
87035       , source_type_code
87036       , source_code
87037       , SUBSTR(source_value ,1,1996)
87038       , SUBSTR(source_meaning ,1,200)
87039       , xla_environment_pkg.g_Usr_Id
87040       , TRUNC(SYSDATE)
87041       , TRUNC(SYSDATE)
87042       , xla_environment_pkg.g_Usr_Id
87043       , xla_environment_pkg.g_Login_Id
87044       , TRUNC(SYSDATE)
87045       , xla_environment_pkg.g_Prog_Appl_Id
87046       , xla_environment_pkg.g_Prog_Id
87047       , xla_environment_pkg.g_Req_Id
87048   FROM (
87049        SELECT xet.event_id                  event_id
87050             , 0                          line_number
87051             , CASE r
87052                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
87053                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
87054                 
87055                ELSE null
87059                 WHEN 2 THEN 'HEADER' 
87056               END                           object_name
87057             , CASE r
87058                 WHEN 1 THEN 'HEADER' 
87060                 
87061                 ELSE null
87062               END                           object_type_code
87063             , CASE r
87064                 WHEN 1 THEN '275' 
87065                 WHEN 2 THEN '275' 
87066                 
87067                 ELSE null
87068               END                           source_application_id
87069             , 'S'             source_type_code
87070             , CASE r
87071                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
87072                 WHEN 2 THEN 'GL_DATE' 
87073                 
87074                 ELSE null
87075               END                           source_code
87076             , CASE r
87077                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
87078                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
87079                 
87080                 ELSE null
87081               END                           source_value
87082             , null              source_meaning
87083          FROM xla_events_gt     xet  
87084       , PA_XLA_EXP_HEADER_V  h2
87085              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
87086          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
87087            AND xet.event_class_code = C_EVENT_CLASS_CODE
87088               AND h2.event_id = xet.event_id
87089 
87090 )
87091 ;
87092 --
87093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87094 
87095       trace
87096          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
87097          ,p_level    => C_LEVEL_STATEMENT
87098          ,p_module   => l_log_module);
87099 
87100 END IF;
87101 --
87102 
87103 
87104 
87105 --
87106 INSERT INTO xla_diag_sources  --line2
87107 (
87108         event_id
87109       , ledger_id
87110       , sla_ledger_id
87111       , description_language
87112       , object_name
87113       , object_type_code
87114       , line_number
87115       , source_application_id
87116       , source_type_code
87117       , source_code
87118       , source_value
87119       , source_meaning
87120       , created_by
87121       , creation_date
87122       , last_update_date
87123       , last_updated_by
87124       , last_update_login
87125       , program_update_date
87126       , program_application_id
87127       , program_id
87128       , request_id
87129 )
87130 SELECT  event_id
87131       , p_target_ledger_id
87132       , p_sla_ledger_id
87133       , p_language
87134       , object_name
87135       , object_type_code
87136       , line_number
87137       , source_application_id
87138       , source_type_code
87139       , source_code
87140       , SUBSTR(source_value,1,1996)
87141       , SUBSTR(source_meaning ,1,200)
87142       , xla_environment_pkg.g_Usr_Id
87143       , TRUNC(SYSDATE)
87144       , TRUNC(SYSDATE)
87145       , xla_environment_pkg.g_Usr_Id
87146       , xla_environment_pkg.g_Login_Id
87147       , TRUNC(SYSDATE)
87148       , xla_environment_pkg.g_Prog_Appl_Id
87149       , xla_environment_pkg.g_Prog_Id
87150       , xla_environment_pkg.g_Req_Id
87151   FROM (
87152        SELECT xet.event_id                  event_id
87153             , l1.line_number                 line_number
87154             , CASE r
87155                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
87156                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
87157                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
87158                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
87159                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
87160                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
87161                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
87162                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
87163                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
87164                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
87165                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
87166                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
87167                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
87168                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
87169                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
87170                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
87171                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
87172                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
87173                 
87174                ELSE null
87175               END                           object_name
87176             , CASE r
87177                 WHEN 1 THEN 'LINE' 
87178                 WHEN 2 THEN 'LINE' 
87179                 WHEN 3 THEN 'LINE' 
87180                 WHEN 4 THEN 'LINE' 
87181                 WHEN 5 THEN 'LINE' 
87182                 WHEN 6 THEN 'LINE' 
87183                 WHEN 7 THEN 'LINE' 
87184                 WHEN 8 THEN 'LINE' 
87185                 WHEN 9 THEN 'LINE' 
87186                 WHEN 10 THEN 'LINE' 
87187                 WHEN 11 THEN 'LINE' 
87188                 WHEN 12 THEN 'LINE' 
87189                 WHEN 13 THEN 'LINE' 
87190                 WHEN 14 THEN 'LINE' 
87191                 WHEN 15 THEN 'LINE' 
87192                 WHEN 16 THEN 'LINE' 
87193                 WHEN 17 THEN 'LINE' 
87194                 WHEN 18 THEN 'LINE' 
87195                 
87196                 ELSE null
87197               END                           object_type_code
87198             , CASE r
87199                 WHEN 1 THEN '275' 
87200                 WHEN 2 THEN '275' 
87201                 WHEN 3 THEN '275' 
87202                 WHEN 4 THEN '275' 
87203                 WHEN 5 THEN '275' 
87204                 WHEN 6 THEN '275' 
87205                 WHEN 7 THEN '275' 
87209                 WHEN 11 THEN '275' 
87206                 WHEN 8 THEN '275' 
87207                 WHEN 9 THEN '275' 
87208                 WHEN 10 THEN '275' 
87210                 WHEN 12 THEN '275' 
87211                 WHEN 13 THEN '275' 
87212                 WHEN 14 THEN '275' 
87213                 WHEN 15 THEN '275' 
87214                 WHEN 16 THEN '275' 
87215                 WHEN 17 THEN '275' 
87216                 WHEN 18 THEN '275' 
87217                 
87218                 ELSE null
87219               END                           source_application_id
87220             , 'S'             source_type_code
87221             , CASE r
87222                 WHEN 1 THEN 'COST_CCID' 
87223                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
87224                 WHEN 3 THEN 'ADJ_COST_CCID' 
87225                 WHEN 4 THEN 'COST_CLEARING_CCID' 
87226                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
87227                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
87228                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
87229                 WHEN 8 THEN 'ENTERED_RAW_COST' 
87230                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
87231                 WHEN 10 THEN 'ACCT_RAW_COST' 
87232                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
87233                 WHEN 12 THEN 'EXCHANGE_RATE' 
87234                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
87235                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
87236                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
87237                 WHEN 16 THEN 'LINE_NUMBER' 
87238                 WHEN 17 THEN 'LINE_TYPE' 
87239                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
87240                 
87241                 ELSE null
87242               END                           source_code
87243             , CASE r
87244                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
87245                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
87246                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
87247                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
87248                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
87249                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
87250                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
87251                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
87252                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
87253                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
87254                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
87255                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
87256                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
87257                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
87258                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
87259                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
87260                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
87261                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
87262                 
87263                 ELSE null
87264               END                           source_value
87265             , CASE r
87266                 WHEN 2 THEN XLA_00275_AAD_S_000016_PKG.GetMeaning(
87267                           103371
87268                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
87269                          ,'ALLOW_OVERRIDE_CCID_FLAG'
87270                          ,'S'
87271                          ,275)
87272                 WHEN 17 THEN fvl34.meaning
87273                 
87274                 ELSE null
87275               END               source_meaning
87276          FROM  xla_events_gt     xet  
87277         , PA_XLA_CDL_LINES_V  l1
87278   , fnd_lookup_values    fvl34
87279             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
87280         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
87281           AND xet.event_class_code = C_EVENT_CLASS_CODE
87282             AND l1.event_id          = xet.event_id
87283    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
87284   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
87285   AND fvl34.view_application_id(+) = 275
87286   AND fvl34.language(+)            = USERENV('LANG')
87287   
87288 )
87289 ;
87290 --
87291 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87292 
87293       trace
87294          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
87295          ,p_level    => C_LEVEL_STATEMENT
87296          ,p_module   => l_log_module);
87297 
87298 END IF;
87299 
87300 
87301 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87302       trace
87303          (p_msg      => 'END of insert_sources_132'
87304          ,p_level    => C_LEVEL_PROCEDURE
87305          ,p_module   => l_log_module);
87306 END IF;
87307 EXCEPTION
87308   WHEN xla_exceptions_pkg.application_exception THEN
87309       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
87310             trace
87311                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
87312                ,p_level    => C_LEVEL_EXCEPTION
87313                ,p_module   => l_log_module);
87314       END IF;
87315       RAISE;
87316   WHEN OTHERS THEN
87317       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
87318             trace
87319                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
87320                ,p_level    => C_LEVEL_EXCEPTION
87321                ,p_module   => l_log_module);
87322        END IF;
87323        xla_exceptions_pkg.raise_message
87324            (p_location => 'XLA_00275_AAD_S_000016_PKG.insert_sources_132');
87325 END insert_sources_132;
87326 --
87327 
87328 ---------------------------------------
87329 --
87330 -- PRIVATE FUNCTION
87331 --         EventClass_132
87332 --
87333 ----------------------------------------
87334 --
87335 FUNCTION EventClass_132
87336        (p_application_id         IN NUMBER
87337        ,p_base_ledger_id         IN NUMBER
87341        ,p_sla_ledger_id          IN NUMBER
87338        ,p_target_ledger_id       IN NUMBER
87339        ,p_language               IN VARCHAR2
87340        ,p_currency_code          IN VARCHAR2
87342        ,p_pad_start_date         IN DATE
87343        ,p_pad_end_date           IN DATE
87344        ,p_primary_ledger_id      IN NUMBER)
87345 RETURN BOOLEAN IS
87346 --
87347 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ALL';
87348 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST';
87349 
87350 l_calculate_acctd_flag   VARCHAR2(1) :='N';
87351 l_calculate_g_l_flag     VARCHAR2(1) :='N';
87352 --
87353 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87354 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87355 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87356 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87357 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87358 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87359 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87360 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87361 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87362 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87363 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87364 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87365 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87366 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87367 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87368 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87369 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87370 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87371 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87372 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87373 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87374 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87375 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
87376 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87377 
87378 l_event_id                             NUMBER;
87379 l_previous_event_id                    NUMBER;
87380 l_first_event_id                       NUMBER;
87381 l_last_event_id                        NUMBER;
87382 
87383 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
87384 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
87385 --
87386 --
87387 l_result                    BOOLEAN := TRUE;
87388 l_rows                      NUMBER  := 1000;
87389 l_event_type_name           VARCHAR2(80) := 'All';
87390 l_event_class_name          VARCHAR2(80) := 'Work in Process Cost';
87391 l_description               VARCHAR2(4000);
87392 l_transaction_reversal      NUMBER;
87393 l_ae_header_id              NUMBER;
87394 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
87395 l_log_module                VARCHAR2(240);
87396 --
87397 l_acct_reversal_source      VARCHAR2(30);
87398 l_trx_reversal_source       VARCHAR2(30);
87399 
87400 l_continue_with_lines       BOOLEAN := TRUE;
87401 --
87402 l_acc_rev_gl_date_source    DATE;                      -- 4262811
87403 --
87404 type t_array_event_id is table of number index by binary_integer;
87405 
87406 l_rec_array_event                    t_rec_array_event;
87407 l_null_rec_array_event               t_rec_array_event;
87408 l_array_ae_header_id                 xla_number_array_type;
87409 l_actual_flag                        VARCHAR2(1) := NULL;
87410 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
87411 l_balance_type_code                  VARCHAR2(1) :=NULL;
87412 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
87413 
87414 --
87415 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
87416 --
87417 
87418 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
87419 TYPE t_array_source_88 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
87420 
87421 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
87422 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
87423 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
87424 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
87425 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
87426 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
87427 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
87428 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
87429 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
87430 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
87431 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
87432 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
87433 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
87434 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
87435 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
87439 
87436 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
87437 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
87438 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
87440 l_array_source_32              t_array_source_32;
87441 l_array_source_88              t_array_source_88;
87442 
87443 l_array_source_3      t_array_source_3;
87444 l_array_source_4      t_array_source_4;
87445 l_array_source_5      t_array_source_5;
87446 l_array_source_6      t_array_source_6;
87447 l_array_source_7      t_array_source_7;
87448 l_array_source_22      t_array_source_22;
87449 l_array_source_23      t_array_source_23;
87450 l_array_source_24      t_array_source_24;
87451 l_array_source_25      t_array_source_25;
87452 l_array_source_26      t_array_source_26;
87453 l_array_source_27      t_array_source_27;
87454 l_array_source_28      t_array_source_28;
87455 l_array_source_29      t_array_source_29;
87456 l_array_source_30      t_array_source_30;
87457 l_array_source_31      t_array_source_31;
87458 l_array_source_33      t_array_source_33;
87459 l_array_source_34      t_array_source_34;
87460 l_array_source_34_meaning      t_array_lookup_meaning;
87461 l_array_source_35      t_array_source_35;
87462 
87463 --
87464 CURSOR header_cur
87465 IS
87466 SELECT /*+ leading(xet) cardinality(xet,1) */
87467 -- Event Class Code: WIP_COST
87468     xet.entity_id
87469    ,xet.legal_entity_id
87470    ,xet.entity_code
87471    ,xet.transaction_number
87472    ,xet.event_id
87473    ,xet.event_class_code
87474    ,xet.event_type_code
87475    ,xet.event_number
87476    ,xet.event_date
87477    ,xet.transaction_date
87478    ,xet.reference_num_1
87479    ,xet.reference_num_2
87480    ,xet.reference_num_3
87481    ,xet.reference_num_4
87482    ,xet.reference_char_1
87483    ,xet.reference_char_2
87484    ,xet.reference_char_3
87485    ,xet.reference_char_4
87486    ,xet.reference_date_1
87487    ,xet.reference_date_2
87488    ,xet.reference_date_3
87489    ,xet.reference_date_4
87490    ,xet.event_created_by
87491    ,xet.budgetary_control_flag 
87492   , h2.EXPENDITURE_ITEM_ID    source_32
87493   , h2.GL_DATE    source_88
87494   FROM xla_events_gt     xet 
87495   , PA_XLA_EXP_HEADER_V  h2
87496  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
87497    and xet.event_class_code = C_EVENT_CLASS_CODE
87498    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
87499 
87500  ORDER BY event_id
87501 ;
87502 
87503 
87504 --
87505 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
87506 IS
87507 SELECT  /*+ leading(xet) cardinality(xet,1) */
87508 -- Event Class Code: WIP_COST
87509     xet.entity_id
87510    ,xet.legal_entity_id
87511    ,xet.entity_code
87512    ,xet.transaction_number
87513    ,xet.event_id
87514    ,xet.event_class_code
87515    ,xet.event_type_code
87516    ,xet.event_number
87517    ,xet.event_date
87518    ,xet.transaction_date
87519    ,xet.reference_num_1
87520    ,xet.reference_num_2
87521    ,xet.reference_num_3
87522    ,xet.reference_num_4
87523    ,xet.reference_char_1
87524    ,xet.reference_char_2
87525    ,xet.reference_char_3
87526    ,xet.reference_char_4
87527    ,xet.reference_date_1
87528    ,xet.reference_date_2
87529    ,xet.reference_date_3
87530    ,xet.reference_date_4
87531    ,xet.event_created_by
87532    ,xet.budgetary_control_flag
87533  , l1.LINE_NUMBER  
87534   , l1.COST_CCID    source_3
87535   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
87536   , l1.ADJ_COST_CCID    source_5
87537   , l1.COST_CLEARING_CCID    source_6
87538   , l1.ADJ_COST_CLEARING_CCID    source_7
87539   , l1.REVERSING_LINE_FLAG    source_22
87540   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
87541   , l1.ENTERED_RAW_COST    source_24
87542   , l1.ENTERED_CURRENCY_CODE    source_25
87543   , l1.ACCT_RAW_COST    source_26
87544   , l1.EXCHANGE_RATE_DATE    source_27
87545   , l1.EXCHANGE_RATE    source_28
87546   , l1.EXCHANGE_RATE_TYPE    source_29
87547   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
87548   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
87549   , l1.LINE_NUMBER    source_33
87550   , l1.LINE_TYPE    source_34
87551   , fvl34.meaning   source_34_meaning
87552   , l1.LINE_NUM_REVERSED    source_35
87553   FROM xla_events_gt     xet 
87554   , PA_XLA_CDL_LINES_V  l1
87555   , fnd_lookup_values    fvl34
87556  WHERE xet.event_id between x_first_event_id and x_last_event_id
87557    and xet.event_date between p_pad_start_date and p_pad_end_date
87558    and xet.event_class_code = C_EVENT_CLASS_CODE
87559    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
87560    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
87561   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
87562   AND fvl34.view_application_id(+) = 275
87563   AND fvl34.language(+)            = USERENV('LANG')
87564   ;
87565 
87566 --
87567 BEGIN
87568 IF g_log_enabled THEN
87569    l_log_module := C_DEFAULT_MODULE||'.EventClass_132';
87570 END IF;
87571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87572    trace
87573       (p_msg      => 'BEGIN of EventClass_132'
87574       ,p_level    => C_LEVEL_PROCEDURE
87575       ,p_module   => l_log_module);
87576 END IF;
87577 
87578 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87579    trace
87580       (p_msg      => 'p_application_id = '||p_application_id||
87581                      ' - p_base_ledger_id = '||p_base_ledger_id||
87582                      ' - p_target_ledger_id  = '||p_target_ledger_id||
87583                      ' - p_language = '||p_language||
87584                      ' - p_currency_code = '||p_currency_code||
87588 END IF;
87585                      ' - p_sla_ledger_id = '||p_sla_ledger_id
87586       ,p_level    => C_LEVEL_STATEMENT
87587       ,p_module   => l_log_module);
87589 --
87590 -- initialze arrays
87591 --
87592 g_array_event.DELETE;
87593 l_rec_array_event := l_null_rec_array_event;
87594 --
87595 --------------------------------------
87596 -- 4262811 Initialze MPA Line Number
87597 --------------------------------------
87598 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
87599 
87600 --
87601 
87602 --
87603 OPEN header_cur;
87604 --
87605 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87606    trace
87607    (p_msg      => 'SQL - FETCH header_cur'
87608    ,p_level    => C_LEVEL_STATEMENT
87609    ,p_module   => l_log_module);
87610 END IF;
87611 --
87612 LOOP
87613 FETCH header_cur BULK COLLECT INTO
87614         l_array_entity_id
87615       , l_array_legal_entity_id
87616       , l_array_entity_code
87617       , l_array_transaction_num
87618       , l_array_event_id
87619       , l_array_class_code
87620       , l_array_event_type
87621       , l_array_event_number
87622       , l_array_event_date
87623       , l_array_transaction_date
87624       , l_array_reference_num_1
87625       , l_array_reference_num_2
87626       , l_array_reference_num_3
87627       , l_array_reference_num_4
87628       , l_array_reference_char_1
87629       , l_array_reference_char_2
87630       , l_array_reference_char_3
87631       , l_array_reference_char_4
87632       , l_array_reference_date_1
87633       , l_array_reference_date_2
87634       , l_array_reference_date_3
87635       , l_array_reference_date_4
87636       , l_array_event_created_by
87637       , l_array_budgetary_control_flag 
87638       , l_array_source_32
87639       , l_array_source_88
87640       LIMIT l_rows;
87641 --
87642 IF (C_LEVEL_EVENT >= g_log_level) THEN
87643    trace
87644    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
87645    ,p_level    => C_LEVEL_EVENT
87646    ,p_module   => l_log_module);
87647 END IF;
87648 --
87649 EXIT WHEN l_array_entity_id.COUNT = 0;
87650 
87651 -- initialize arrays
87652 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
87653 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
87654 
87655 --
87656 -- Bug 4458708
87657 --
87658 XLA_AE_LINES_PKG.g_LineNumber := 0;
87659 
87660 
87661 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
87662 g_last_hdr_idx := l_array_event_id.LAST;
87663 --
87664 -- loop for the headers. Each iteration is for each header extract row
87665 -- fetched in header cursor
87666 --
87667 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
87668 
87669 --
87670 -- set event info as cache for other routines to refer event attributes
87671 --
87672 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
87673    (p_application_id           => p_application_id
87674    ,p_primary_ledger_id        => p_primary_ledger_id
87675    ,p_base_ledger_id           => p_base_ledger_id
87676    ,p_target_ledger_id         => p_target_ledger_id
87677    ,p_entity_id                => l_array_entity_id(hdr_idx)
87678    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
87679    ,p_entity_code              => l_array_entity_code(hdr_idx)
87680    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
87681    ,p_event_id                 => l_array_event_id(hdr_idx)
87682    ,p_event_class_code         => l_array_class_code(hdr_idx)
87683    ,p_event_type_code          => l_array_event_type(hdr_idx)
87684    ,p_event_number             => l_array_event_number(hdr_idx)
87685    ,p_event_date               => l_array_event_date(hdr_idx)
87686    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
87687    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
87688    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
87689    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
87690    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
87691    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
87692    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
87693    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
87694    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
87695    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
87696    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
87697    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
87698    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
87699    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
87700    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
87701 
87702 --
87703 -- set the status of entry to C_VALID (0)
87704 --
87705 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
87706 
87707 --
87708 -- initialize a row for ae header
87709 --
87710 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
87711 
87712 l_event_id := l_array_event_id(hdr_idx);
87713 
87714 --
87715 -- storing the hdr_idx for event. May be used by line cursor.
87716 --
87717 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
87718 
87719 --
87720 -- store sources from header extract. This can be improved to
87721 -- store only those sources from header extract that may be used in lines
87722 --
87723 
87724 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
87725 g_array_event(l_event_id).array_value_date('source_88') := l_array_source_88(hdr_idx);
87726 
87727 --
87728 -- initilaize the status of ae headers for diffrent balance types
87729 -- the status is initialised to C_NOT_CREATED (2)
87733 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87730 --
87731 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87732 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87734 
87735 --
87736 -- call api to validate and store accounting attributes for header
87737 --
87738 
87739 ------------------------------------------------------------
87740 -- Accrual Reversal : to get date for Standard Source (NONE)
87741 ------------------------------------------------------------
87742 l_acc_rev_gl_date_source := NULL;
87743 
87744      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
87745       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_88');
87746 
87747 
87748 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
87749 
87750 XLA_AE_HEADER_PKG.SetJeCategoryName;
87751 
87752 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
87753 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
87754 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
87755 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
87756 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
87757 
87758 
87759 -- No header level analytical criteria
87760 
87761 --
87762 --accounting attribute enhancement, bug 3612931
87763 --
87764 l_trx_reversal_source := SUBSTR(NULL, 1,30);
87765 
87766 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
87767    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
87768 
87769    xla_accounting_err_pkg.build_message
87770       (p_appli_s_name            => 'XLA'
87771       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
87772       ,p_token_1                 => 'ACCT_ATTR_NAME'
87773       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
87774       ,p_token_2                 => 'PRODUCT_NAME'
87775       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
87776       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
87777       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
87778       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
87779 
87780 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
87781    --
87782    -- following sets the accounting attributes needed to reverse
87783    -- accounting for a distributeion
87784    --
87785    xla_ae_lines_pkg.SetTrxReversalAttrs
87786       (p_event_id              => l_event_id
87787       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
87788       ,p_trx_reversal_source   => l_trx_reversal_source);
87789 
87790 END IF;
87791 
87792 
87793 ----------------------------------------------------------------
87794 -- 4262811 -  update the header statuses to invalid in need be
87795 ----------------------------------------------------------------
87796 --
87797 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
87798 
87799 
87800   -----------------------------------------------
87801   -- No accrual reversal for the event class/type
87802   -----------------------------------------------
87803 ----------------------------------------------------------------
87804 
87805 --
87806 -- this ends the header loop iteration for one bulk fetch
87807 --
87808 END LOOP;
87809 
87810 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
87811 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
87812 
87813 --
87814 -- insert dummy rows into lines gt table that were created due to
87815 -- transaction reversals
87816 --
87817 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
87818    l_result := XLA_AE_LINES_PKG.InsertLines;
87819 END IF;
87820 
87821 --
87822 -- reset the temp_line_num for each set of events fetched from header
87823 -- cursor rather than doing it for each new event in line cursor
87824 -- Bug 3939231
87825 --
87826 xla_ae_lines_pkg.g_temp_line_num := 0;
87827 
87828 
87829 
87830 --
87831 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
87832 --
87833 --
87834 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87835 
87836       trace
87837          (p_msg      => 'SQL - FETCH line_cur'
87838          ,p_level    => C_LEVEL_STATEMENT
87839          ,p_module   => l_log_module);
87840 
87841 END IF;
87842 --
87843 --
87844 LOOP
87845   --
87846   FETCH line_cur BULK COLLECT INTO
87847         l_array_entity_id
87848       , l_array_legal_entity_id
87849       , l_array_entity_code
87850       , l_array_transaction_num
87851       , l_array_event_id
87852       , l_array_class_code
87853       , l_array_event_type
87854       , l_array_event_number
87855       , l_array_event_date
87856       , l_array_transaction_date
87857       , l_array_reference_num_1
87858       , l_array_reference_num_2
87859       , l_array_reference_num_3
87860       , l_array_reference_num_4
87861       , l_array_reference_char_1
87862       , l_array_reference_char_2
87863       , l_array_reference_char_3
87864       , l_array_reference_char_4
87865       , l_array_reference_date_1
87866       , l_array_reference_date_2
87867       , l_array_reference_date_3
87868       , l_array_reference_date_4
87869       , l_array_event_created_by
87870       , l_array_budgetary_control_flag
87871       , l_array_extract_line_num 
87875       , l_array_source_6
87872       , l_array_source_3
87873       , l_array_source_4
87874       , l_array_source_5
87876       , l_array_source_7
87877       , l_array_source_22
87878       , l_array_source_23
87879       , l_array_source_24
87880       , l_array_source_25
87881       , l_array_source_26
87882       , l_array_source_27
87883       , l_array_source_28
87884       , l_array_source_29
87885       , l_array_source_30
87886       , l_array_source_31
87887       , l_array_source_33
87888       , l_array_source_34
87889       , l_array_source_34_meaning
87890       , l_array_source_35
87891       LIMIT l_rows;
87892 
87893   --
87894   IF (C_LEVEL_EVENT >= g_log_level) THEN
87895             trace
87896                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
87897                ,p_level    => C_LEVEL_EVENT
87898                ,p_module   => l_log_module);
87899   END IF;
87900   --
87901   EXIT WHEN l_array_entity_id.count = 0;
87902 
87903   XLA_AE_LINES_PKG.g_rec_lines := null;
87904 
87905 --
87906 -- Bug 4458708
87907 --
87908 XLA_AE_LINES_PKG.g_LineNumber := 0;
87909 --
87910 --
87911 
87912 FOR Idx IN 1..l_array_event_id.count LOOP
87913    --
87914    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
87915    --
87916    l_event_id := l_array_event_id(idx);  -- 5648433
87917 
87918    --
87919    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
87920    --
87921 
87922    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
87923              (g_array_event(l_event_id).array_value_num('header_index'))
87924          ,'N'
87925          ) <> 'Y'
87926    THEN
87927       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87928          trace
87929             (p_msg      => 'Trancaction revesal option is not Y '
87930             ,p_level    => C_LEVEL_STATEMENT
87931             ,p_module   => l_log_module);
87932       END IF;
87933 
87934 --
87935 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
87936 --
87937 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
87938 --
87939 -- set event info as cache for other routines to refer event attributes
87940 --
87941 
87942 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
87943    l_previous_event_id := l_event_id;
87944 
87945    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
87946       (p_application_id           => p_application_id
87947       ,p_primary_ledger_id        => p_primary_ledger_id
87948       ,p_base_ledger_id           => p_base_ledger_id
87949       ,p_target_ledger_id         => p_target_ledger_id
87950       ,p_entity_id                => l_array_entity_id(Idx)
87951       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
87952       ,p_entity_code              => l_array_entity_code(Idx)
87953       ,p_transaction_num          => l_array_transaction_num(Idx)
87954       ,p_event_id                 => l_array_event_id(Idx)
87955       ,p_event_class_code         => l_array_class_code(Idx)
87956       ,p_event_type_code          => l_array_event_type(Idx)
87957       ,p_event_number             => l_array_event_number(Idx)
87958       ,p_event_date               => l_array_event_date(Idx)
87959       ,p_transaction_date         => l_array_transaction_date(Idx)
87960       ,p_reference_num_1          => l_array_reference_num_1(Idx)
87961       ,p_reference_num_2          => l_array_reference_num_2(Idx)
87962       ,p_reference_num_3          => l_array_reference_num_3(Idx)
87963       ,p_reference_num_4          => l_array_reference_num_4(Idx)
87964       ,p_reference_char_1         => l_array_reference_char_1(Idx)
87965       ,p_reference_char_2         => l_array_reference_char_2(Idx)
87966       ,p_reference_char_3         => l_array_reference_char_3(Idx)
87967       ,p_reference_char_4         => l_array_reference_char_4(Idx)
87968       ,p_reference_date_1         => l_array_reference_date_1(Idx)
87969       ,p_reference_date_2         => l_array_reference_date_2(Idx)
87970       ,p_reference_date_3         => l_array_reference_date_3(Idx)
87971       ,p_reference_date_4         => l_array_reference_date_4(Idx)
87972       ,p_event_created_by         => l_array_event_created_by(Idx)
87973       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
87974        --
87975 END IF;
87976 
87977 
87978 
87979 --
87980 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
87981 
87982 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
87983 
87984 IF l_continue_with_lines THEN
87985    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
87986       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
87987 
87988       xla_accounting_err_pkg.build_message
87989          (p_appli_s_name            => 'XLA'
87990          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
87991          ,p_token_1                 => 'LINE_NUMBER'
87992          ,p_value_1                 => l_array_extract_line_num(Idx)
87993          ,p_token_2                 => 'PRODUCT_NAME'
87994          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
87995          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
87996          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
87997          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
87998 
87999    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
88000       --
88001       -- following sets the accounting attributes needed to reverse
88002       -- accounting for a distributeion
88003       --
88004 
88005       --
88006       -- 5217187
88007       --
88011       --
88008       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
88009       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
88010                                        g_array_event(l_event_id).array_value_num('header_index'));
88012       --
88013 
88014       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
88015       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
88016       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
88017       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
88018       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
88019       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
88020       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
88021       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
88022       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
88023       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
88024       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
88025       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
88026       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
88027       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
88028       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
88029       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
88030       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
88031       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
88032       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
88033       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
88034       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
88035       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
88036       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
88037       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
88038       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
88039       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
88040       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
88041       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
88042       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
88043       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
88044       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
88045       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
88046       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
88047       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
88048       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
88049       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
88050       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
88051       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
88052       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
88053       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
88054       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
88055       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
88056       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
88057       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
88058       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
88059       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
88060       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
88061       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
88062 
88063 
88064       xla_ae_lines_pkg.SetAcctReversalAttrs
88065          (p_event_id             => l_event_id
88066          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
88067          ,p_calculate_acctd_flag => l_calculate_acctd_flag
88068          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
88069    END IF;
88070 
88071    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
88072        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
88073 
88074 --
88075 AcctLineType_41 (
88076  p_application_id  => p_application_id
88077  ,p_event_id     => l_event_id
88078  ,p_calculate_acctd_flag => l_calculate_acctd_flag
88079  ,p_calculate_g_l_flag => l_calculate_g_l_flag
88080  ,p_actual_flag => l_actual_flag
88081  ,p_balance_type_code => l_balance_type_code
88082  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
88083  
88084  , p_source_3 => l_array_source_3(Idx)
88085  , p_source_4 => l_array_source_4(Idx)
88086  , p_source_5 => l_array_source_5(Idx)
88087  , p_source_6 => l_array_source_6(Idx)
88088  , p_source_22 => l_array_source_22(Idx)
88089  , p_source_23 => l_array_source_23(Idx)
88090  , p_source_24 => l_array_source_24(Idx)
88091  , p_source_25 => l_array_source_25(Idx)
88092  , p_source_26 => l_array_source_26(Idx)
88093  , p_source_27 => l_array_source_27(Idx)
88094  , p_source_28 => l_array_source_28(Idx)
88095  , p_source_29 => l_array_source_29(Idx)
88096  , p_source_30 => l_array_source_30(Idx)
88097  , p_source_31 => l_array_source_31(Idx)
88098  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
88099  , p_source_33 => l_array_source_33(Idx)
88100  , p_source_34 => l_array_source_34(Idx)
88101  , p_source_34_meaning => l_array_source_34_meaning(Idx)
88102  , p_source_35 => l_array_source_35(Idx)
88103  );
88104 If(l_balance_type_code = 'A') THEN
88108 --
88105   l_actual_gain_loss_ref := l_gain_or_loss_ref;
88106 END IF;
88107 
88109 
88110 
88111 --
88112 AcctLineType_53 (
88113  p_application_id  => p_application_id
88114  ,p_event_id     => l_event_id
88115  ,p_calculate_acctd_flag => l_calculate_acctd_flag
88116  ,p_calculate_g_l_flag => l_calculate_g_l_flag
88117  ,p_actual_flag => l_actual_flag
88118  ,p_balance_type_code => l_balance_type_code
88119  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
88120  
88121  , p_source_3 => l_array_source_3(Idx)
88122  , p_source_4 => l_array_source_4(Idx)
88123  , p_source_6 => l_array_source_6(Idx)
88124  , p_source_7 => l_array_source_7(Idx)
88125  , p_source_22 => l_array_source_22(Idx)
88126  , p_source_23 => l_array_source_23(Idx)
88127  , p_source_24 => l_array_source_24(Idx)
88128  , p_source_25 => l_array_source_25(Idx)
88129  , p_source_26 => l_array_source_26(Idx)
88130  , p_source_27 => l_array_source_27(Idx)
88131  , p_source_28 => l_array_source_28(Idx)
88132  , p_source_29 => l_array_source_29(Idx)
88133  , p_source_30 => l_array_source_30(Idx)
88134  , p_source_31 => l_array_source_31(Idx)
88135  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
88136  , p_source_33 => l_array_source_33(Idx)
88137  , p_source_34 => l_array_source_34(Idx)
88138  , p_source_34_meaning => l_array_source_34_meaning(Idx)
88139  , p_source_35 => l_array_source_35(Idx)
88140  );
88141 If(l_balance_type_code = 'A') THEN
88142   l_actual_gain_loss_ref := l_gain_or_loss_ref;
88143 END IF;
88144 
88145 --
88146 
88147       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
88148       -- or secondary ledger that has different currency with primary
88149       -- or alc that is calculated by sla
88150       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
88151             (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'))
88152 
88153 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
88154 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
88155           AND (l_actual_flag = 'A')) THEN
88156         XLA_AE_LINES_PKG.CreateGainOrLossLines(
88157           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
88158          ,p_application_id   => p_application_id
88159          ,p_amb_context_code => 'DEFAULT'
88160          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
88161          ,p_event_class_code => C_EVENT_CLASS_CODE
88162          ,p_event_type_code  => C_EVENT_TYPE_CODE
88163          
88164          ,p_gain_ccid        => -1
88165          ,p_loss_ccid        => -1
88166 
88167          ,p_actual_flag      => l_actual_flag
88168          ,p_enc_flag         => null
88169          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
88170          ,p_enc_g_l_ref      => null
88171          );
88172       END IF;
88173    END IF;
88174 END IF;
88175 
88176    ELSE
88177       --
88178       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
88179       --
88180       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88181          trace
88182             (p_msg      => 'Trancaction revesal option is Y'
88183             ,p_level    => C_LEVEL_STATEMENT
88184             ,p_module   => l_log_module);
88185       END IF;
88186    END IF;
88187 
88188 END LOOP;
88189 l_result := XLA_AE_LINES_PKG.InsertLines ;
88190 end loop;
88191 close line_cur;
88192 
88193 
88194 --
88195 -- insert headers into xla_ae_headers_gt table
88196 --
88197 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
88198 
88199 -- insert into errors table here.
88200 
88201 END LOOP;
88202 
88203 --
88204 -- 4865292
88205 --
88206 -- Compare g_hdr_extract_count with event count in
88207 -- CreateHeadersAndLines.
88208 --
88209 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
88210 
88211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88212    trace (p_msg     => '# rows extracted from header extract objects '
88213                     || ' (running total): '
88214                     || g_hdr_extract_count
88215          ,p_level   => C_LEVEL_STATEMENT
88216          ,p_module  => l_log_module);
88217 END IF;
88218 
88219 CLOSE header_cur;
88220 --
88221 
88222 --
88223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88224    trace
88225       (p_msg      => 'END of EventClass_132'
88226       ,p_level    => C_LEVEL_PROCEDURE
88227       ,p_module   => l_log_module);
88228 END IF;
88229 --
88230 RETURN l_result;
88231 EXCEPTION
88232 WHEN xla_exceptions_pkg.application_exception THEN
88233    
88234 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
88235 
88236    
88237 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
88238 
88239    RAISE;
88240 WHEN OTHERS THEN
88241    xla_exceptions_pkg.raise_message
88242       (p_location => 'XLA_00275_AAD_S_000016_PKG.EventClass_132');
88243 END EventClass_132;
88244 --
88245 
88246 --
88247 --+============================================+
88248 --|                                            |
88249 --|  PRIVATE FUNCTION                          |
88250 --|                                            |
88251 --+============================================+
88252 --
88253 FUNCTION CreateHeadersAndLines
88254        (p_application_id         IN NUMBER
88255        ,p_base_ledger_id         IN NUMBER
88256        ,p_target_ledger_id       IN NUMBER
88257        ,p_pad_start_date         IN DATE
88258        ,p_pad_end_date           IN DATE
88262 l_event_id                  NUMBER;
88259        ,p_primary_ledger_id      IN NUMBER)
88260 RETURN BOOLEAN IS
88261 l_created                   BOOLEAN:=FALSE;
88263 l_event_date                DATE;
88264 l_language                  VARCHAR2(30);
88265 l_currency_code             VARCHAR2(30);
88266 l_sla_ledger_id             NUMBER;
88267 l_log_module                VARCHAR2(240);
88268 
88269 BEGIN
88270 --
88271 IF g_log_enabled THEN
88272    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
88273 END IF;
88274 --
88275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88276    trace
88277       (p_msg      => 'BEGIN of CreateHeadersAndLines'
88278       ,p_level    => C_LEVEL_PROCEDURE
88279       ,p_module   => l_log_module);
88280 END IF;
88281 
88282 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
88283 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
88284 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
88285 
88286 --
88287 -- initialize array of lines with NULL
88288 --
88289 xla_ae_lines_pkg.SetNullLine;
88290 
88291 --
88292 -- initialize header extract count -- Bug 4865292
88293 --
88294 g_hdr_extract_count:= 0;
88295 
88296 
88297 l_created := EventClass_110(
88298    p_application_id         => p_application_id
88299  , p_base_ledger_id         => p_base_ledger_id
88300  , p_target_ledger_id       => p_target_ledger_id
88301  , p_language               => l_language
88302  , p_currency_code          => l_currency_code
88303  , p_sla_ledger_id          => l_sla_ledger_id
88304  , p_pad_start_date         => p_pad_start_date
88305  , p_pad_end_date           => p_pad_end_date
88306  , p_primary_ledger_id      => p_primary_ledger_id
88307 );
88308 
88309 
88310 
88311      IF ( g_diagnostics_mode ='Y' ) THEN
88312 
88313          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88314           trace
88315               (p_msg      => 'CALL Transaction Objects Diagnostics'
88316               ,p_level    => C_LEVEL_STATEMENT
88317               ,p_module   => l_log_module);
88318 
88319          END IF;
88320 
88321          insert_sources_110(
88322                           p_target_ledger_id => p_target_ledger_id
88323                         , p_language         => l_language
88324                         , p_sla_ledger_id    => l_sla_ledger_id
88325                         , p_pad_start_date   => p_pad_start_date
88326                         , p_pad_end_date     => p_pad_end_date
88327                           );
88328 
88329      END IF;
88330 
88331 l_created := EventClass_111(
88332    p_application_id         => p_application_id
88333  , p_base_ledger_id         => p_base_ledger_id
88334  , p_target_ledger_id       => p_target_ledger_id
88335  , p_language               => l_language
88336  , p_currency_code          => l_currency_code
88337  , p_sla_ledger_id          => l_sla_ledger_id
88338  , p_pad_start_date         => p_pad_start_date
88339  , p_pad_end_date           => p_pad_end_date
88340  , p_primary_ledger_id      => p_primary_ledger_id
88341 );
88342 
88343 
88344 
88345      IF ( g_diagnostics_mode ='Y' ) THEN
88346 
88347          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88348           trace
88349               (p_msg      => 'CALL Transaction Objects Diagnostics'
88350               ,p_level    => C_LEVEL_STATEMENT
88351               ,p_module   => l_log_module);
88352 
88353          END IF;
88354 
88355          insert_sources_111(
88356                           p_target_ledger_id => p_target_ledger_id
88357                         , p_language         => l_language
88358                         , p_sla_ledger_id    => l_sla_ledger_id
88359                         , p_pad_start_date   => p_pad_start_date
88360                         , p_pad_end_date     => p_pad_end_date
88361                           );
88362 
88363      END IF;
88364 
88365 l_created := EventClass_112(
88366    p_application_id         => p_application_id
88367  , p_base_ledger_id         => p_base_ledger_id
88368  , p_target_ledger_id       => p_target_ledger_id
88369  , p_language               => l_language
88370  , p_currency_code          => l_currency_code
88371  , p_sla_ledger_id          => l_sla_ledger_id
88372  , p_pad_start_date         => p_pad_start_date
88373  , p_pad_end_date           => p_pad_end_date
88374  , p_primary_ledger_id      => p_primary_ledger_id
88375 );
88376 
88377 
88378 
88379      IF ( g_diagnostics_mode ='Y' ) THEN
88380 
88381          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88382           trace
88383               (p_msg      => 'CALL Transaction Objects Diagnostics'
88384               ,p_level    => C_LEVEL_STATEMENT
88385               ,p_module   => l_log_module);
88386 
88387          END IF;
88388 
88389          insert_sources_112(
88390                           p_target_ledger_id => p_target_ledger_id
88391                         , p_language         => l_language
88392                         , p_sla_ledger_id    => l_sla_ledger_id
88393                         , p_pad_start_date   => p_pad_start_date
88394                         , p_pad_end_date     => p_pad_end_date
88395                           );
88396 
88397      END IF;
88398 
88399 l_created := EventClass_113(
88400    p_application_id         => p_application_id
88401  , p_base_ledger_id         => p_base_ledger_id
88402  , p_target_ledger_id       => p_target_ledger_id
88403  , p_language               => l_language
88404  , p_currency_code          => l_currency_code
88405  , p_sla_ledger_id          => l_sla_ledger_id
88406  , p_pad_start_date         => p_pad_start_date
88407  , p_pad_end_date           => p_pad_end_date
88411 
88408  , p_primary_ledger_id      => p_primary_ledger_id
88409 );
88410 
88412 
88413      IF ( g_diagnostics_mode ='Y' ) THEN
88414 
88415          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88416           trace
88417               (p_msg      => 'CALL Transaction Objects Diagnostics'
88418               ,p_level    => C_LEVEL_STATEMENT
88419               ,p_module   => l_log_module);
88420 
88421          END IF;
88422 
88423          insert_sources_113(
88424                           p_target_ledger_id => p_target_ledger_id
88425                         , p_language         => l_language
88426                         , p_sla_ledger_id    => l_sla_ledger_id
88427                         , p_pad_start_date   => p_pad_start_date
88428                         , p_pad_end_date     => p_pad_end_date
88429                           );
88430 
88431      END IF;
88432 
88433 l_created := EventClass_114(
88434    p_application_id         => p_application_id
88435  , p_base_ledger_id         => p_base_ledger_id
88436  , p_target_ledger_id       => p_target_ledger_id
88437  , p_language               => l_language
88438  , p_currency_code          => l_currency_code
88439  , p_sla_ledger_id          => l_sla_ledger_id
88440  , p_pad_start_date         => p_pad_start_date
88441  , p_pad_end_date           => p_pad_end_date
88442  , p_primary_ledger_id      => p_primary_ledger_id
88443 );
88444 
88445 
88446 
88447      IF ( g_diagnostics_mode ='Y' ) THEN
88448 
88449          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88450           trace
88451               (p_msg      => 'CALL Transaction Objects Diagnostics'
88452               ,p_level    => C_LEVEL_STATEMENT
88453               ,p_module   => l_log_module);
88454 
88455          END IF;
88456 
88457          insert_sources_114(
88458                           p_target_ledger_id => p_target_ledger_id
88459                         , p_language         => l_language
88460                         , p_sla_ledger_id    => l_sla_ledger_id
88461                         , p_pad_start_date   => p_pad_start_date
88462                         , p_pad_end_date     => p_pad_end_date
88463                           );
88464 
88465      END IF;
88466 
88467 l_created := EventClass_115(
88468    p_application_id         => p_application_id
88469  , p_base_ledger_id         => p_base_ledger_id
88470  , p_target_ledger_id       => p_target_ledger_id
88471  , p_language               => l_language
88472  , p_currency_code          => l_currency_code
88473  , p_sla_ledger_id          => l_sla_ledger_id
88474  , p_pad_start_date         => p_pad_start_date
88475  , p_pad_end_date           => p_pad_end_date
88476  , p_primary_ledger_id      => p_primary_ledger_id
88477 );
88478 
88479 
88480 
88481      IF ( g_diagnostics_mode ='Y' ) THEN
88482 
88483          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88484           trace
88485               (p_msg      => 'CALL Transaction Objects Diagnostics'
88486               ,p_level    => C_LEVEL_STATEMENT
88487               ,p_module   => l_log_module);
88488 
88489          END IF;
88490 
88491          insert_sources_115(
88492                           p_target_ledger_id => p_target_ledger_id
88493                         , p_language         => l_language
88494                         , p_sla_ledger_id    => l_sla_ledger_id
88495                         , p_pad_start_date   => p_pad_start_date
88496                         , p_pad_end_date     => p_pad_end_date
88497                           );
88498 
88499      END IF;
88500 
88501 l_created := EventClass_116(
88502    p_application_id         => p_application_id
88503  , p_base_ledger_id         => p_base_ledger_id
88504  , p_target_ledger_id       => p_target_ledger_id
88505  , p_language               => l_language
88506  , p_currency_code          => l_currency_code
88507  , p_sla_ledger_id          => l_sla_ledger_id
88508  , p_pad_start_date         => p_pad_start_date
88509  , p_pad_end_date           => p_pad_end_date
88510  , p_primary_ledger_id      => p_primary_ledger_id
88511 );
88512 
88513 
88514 
88515      IF ( g_diagnostics_mode ='Y' ) THEN
88516 
88517          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88518           trace
88519               (p_msg      => 'CALL Transaction Objects Diagnostics'
88520               ,p_level    => C_LEVEL_STATEMENT
88521               ,p_module   => l_log_module);
88522 
88523          END IF;
88524 
88525          insert_sources_116(
88526                           p_target_ledger_id => p_target_ledger_id
88527                         , p_language         => l_language
88528                         , p_sla_ledger_id    => l_sla_ledger_id
88529                         , p_pad_start_date   => p_pad_start_date
88530                         , p_pad_end_date     => p_pad_end_date
88531                           );
88532 
88533      END IF;
88534 
88535 l_created := EventClass_117(
88536    p_application_id         => p_application_id
88537  , p_base_ledger_id         => p_base_ledger_id
88538  , p_target_ledger_id       => p_target_ledger_id
88539  , p_language               => l_language
88540  , p_currency_code          => l_currency_code
88541  , p_sla_ledger_id          => l_sla_ledger_id
88542  , p_pad_start_date         => p_pad_start_date
88543  , p_pad_end_date           => p_pad_end_date
88544  , p_primary_ledger_id      => p_primary_ledger_id
88545 );
88546 
88547 
88548 
88549      IF ( g_diagnostics_mode ='Y' ) THEN
88550 
88551          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88552           trace
88553               (p_msg      => 'CALL Transaction Objects Diagnostics'
88554               ,p_level    => C_LEVEL_STATEMENT
88555               ,p_module   => l_log_module);
88556 
88560                           p_target_ledger_id => p_target_ledger_id
88557          END IF;
88558 
88559          insert_sources_117(
88561                         , p_language         => l_language
88562                         , p_sla_ledger_id    => l_sla_ledger_id
88563                         , p_pad_start_date   => p_pad_start_date
88564                         , p_pad_end_date     => p_pad_end_date
88565                           );
88566 
88567      END IF;
88568 
88569 l_created := EventClass_118(
88570    p_application_id         => p_application_id
88571  , p_base_ledger_id         => p_base_ledger_id
88572  , p_target_ledger_id       => p_target_ledger_id
88573  , p_language               => l_language
88574  , p_currency_code          => l_currency_code
88575  , p_sla_ledger_id          => l_sla_ledger_id
88576  , p_pad_start_date         => p_pad_start_date
88577  , p_pad_end_date           => p_pad_end_date
88578  , p_primary_ledger_id      => p_primary_ledger_id
88579 );
88580 
88581 
88582 
88583      IF ( g_diagnostics_mode ='Y' ) THEN
88584 
88585          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88586           trace
88587               (p_msg      => 'CALL Transaction Objects Diagnostics'
88588               ,p_level    => C_LEVEL_STATEMENT
88589               ,p_module   => l_log_module);
88590 
88591          END IF;
88592 
88593          insert_sources_118(
88594                           p_target_ledger_id => p_target_ledger_id
88595                         , p_language         => l_language
88596                         , p_sla_ledger_id    => l_sla_ledger_id
88597                         , p_pad_start_date   => p_pad_start_date
88598                         , p_pad_end_date     => p_pad_end_date
88599                           );
88600 
88601      END IF;
88602 
88603 l_created := EventClass_119(
88604    p_application_id         => p_application_id
88605  , p_base_ledger_id         => p_base_ledger_id
88606  , p_target_ledger_id       => p_target_ledger_id
88607  , p_language               => l_language
88608  , p_currency_code          => l_currency_code
88609  , p_sla_ledger_id          => l_sla_ledger_id
88610  , p_pad_start_date         => p_pad_start_date
88611  , p_pad_end_date           => p_pad_end_date
88612  , p_primary_ledger_id      => p_primary_ledger_id
88613 );
88614 
88615 
88616 
88617      IF ( g_diagnostics_mode ='Y' ) THEN
88618 
88619          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88620           trace
88621               (p_msg      => 'CALL Transaction Objects Diagnostics'
88622               ,p_level    => C_LEVEL_STATEMENT
88623               ,p_module   => l_log_module);
88624 
88625          END IF;
88626 
88627          insert_sources_119(
88628                           p_target_ledger_id => p_target_ledger_id
88629                         , p_language         => l_language
88630                         , p_sla_ledger_id    => l_sla_ledger_id
88631                         , p_pad_start_date   => p_pad_start_date
88632                         , p_pad_end_date     => p_pad_end_date
88633                           );
88634 
88635      END IF;
88636 
88637 l_created := EventClass_120(
88638    p_application_id         => p_application_id
88639  , p_base_ledger_id         => p_base_ledger_id
88640  , p_target_ledger_id       => p_target_ledger_id
88641  , p_language               => l_language
88642  , p_currency_code          => l_currency_code
88643  , p_sla_ledger_id          => l_sla_ledger_id
88644  , p_pad_start_date         => p_pad_start_date
88645  , p_pad_end_date           => p_pad_end_date
88646  , p_primary_ledger_id      => p_primary_ledger_id
88647 );
88648 
88649 
88650 
88651      IF ( g_diagnostics_mode ='Y' ) THEN
88652 
88653          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88654           trace
88655               (p_msg      => 'CALL Transaction Objects Diagnostics'
88656               ,p_level    => C_LEVEL_STATEMENT
88657               ,p_module   => l_log_module);
88658 
88659          END IF;
88660 
88661          insert_sources_120(
88662                           p_target_ledger_id => p_target_ledger_id
88663                         , p_language         => l_language
88664                         , p_sla_ledger_id    => l_sla_ledger_id
88665                         , p_pad_start_date   => p_pad_start_date
88666                         , p_pad_end_date     => p_pad_end_date
88667                           );
88668 
88669      END IF;
88670 
88671 l_created := EventClass_121(
88672    p_application_id         => p_application_id
88673  , p_base_ledger_id         => p_base_ledger_id
88674  , p_target_ledger_id       => p_target_ledger_id
88675  , p_language               => l_language
88676  , p_currency_code          => l_currency_code
88677  , p_sla_ledger_id          => l_sla_ledger_id
88678  , p_pad_start_date         => p_pad_start_date
88679  , p_pad_end_date           => p_pad_end_date
88680  , p_primary_ledger_id      => p_primary_ledger_id
88681 );
88682 
88683 
88684 
88685      IF ( g_diagnostics_mode ='Y' ) THEN
88686 
88687          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88688           trace
88689               (p_msg      => 'CALL Transaction Objects Diagnostics'
88690               ,p_level    => C_LEVEL_STATEMENT
88691               ,p_module   => l_log_module);
88692 
88693          END IF;
88694 
88695          insert_sources_121(
88696                           p_target_ledger_id => p_target_ledger_id
88697                         , p_language         => l_language
88698                         , p_sla_ledger_id    => l_sla_ledger_id
88699                         , p_pad_start_date   => p_pad_start_date
88700                         , p_pad_end_date     => p_pad_end_date
88701                           );
88705 l_created := EventClass_122(
88702 
88703      END IF;
88704 
88706    p_application_id         => p_application_id
88707  , p_base_ledger_id         => p_base_ledger_id
88708  , p_target_ledger_id       => p_target_ledger_id
88709  , p_language               => l_language
88710  , p_currency_code          => l_currency_code
88711  , p_sla_ledger_id          => l_sla_ledger_id
88712  , p_pad_start_date         => p_pad_start_date
88713  , p_pad_end_date           => p_pad_end_date
88714  , p_primary_ledger_id      => p_primary_ledger_id
88715 );
88716 
88717 
88718 
88719      IF ( g_diagnostics_mode ='Y' ) THEN
88720 
88721          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88722           trace
88723               (p_msg      => 'CALL Transaction Objects Diagnostics'
88724               ,p_level    => C_LEVEL_STATEMENT
88725               ,p_module   => l_log_module);
88726 
88727          END IF;
88728 
88729          insert_sources_122(
88730                           p_target_ledger_id => p_target_ledger_id
88731                         , p_language         => l_language
88732                         , p_sla_ledger_id    => l_sla_ledger_id
88733                         , p_pad_start_date   => p_pad_start_date
88734                         , p_pad_end_date     => p_pad_end_date
88735                           );
88736 
88737      END IF;
88738 
88739 l_created := EventClass_123(
88740    p_application_id         => p_application_id
88741  , p_base_ledger_id         => p_base_ledger_id
88742  , p_target_ledger_id       => p_target_ledger_id
88743  , p_language               => l_language
88744  , p_currency_code          => l_currency_code
88745  , p_sla_ledger_id          => l_sla_ledger_id
88746  , p_pad_start_date         => p_pad_start_date
88747  , p_pad_end_date           => p_pad_end_date
88748  , p_primary_ledger_id      => p_primary_ledger_id
88749 );
88750 
88751 
88752 
88753      IF ( g_diagnostics_mode ='Y' ) THEN
88754 
88755          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88756           trace
88757               (p_msg      => 'CALL Transaction Objects Diagnostics'
88758               ,p_level    => C_LEVEL_STATEMENT
88759               ,p_module   => l_log_module);
88760 
88761          END IF;
88762 
88763          insert_sources_123(
88764                           p_target_ledger_id => p_target_ledger_id
88765                         , p_language         => l_language
88766                         , p_sla_ledger_id    => l_sla_ledger_id
88767                         , p_pad_start_date   => p_pad_start_date
88768                         , p_pad_end_date     => p_pad_end_date
88769                           );
88770 
88771      END IF;
88772 
88773 l_created := EventClass_124(
88774    p_application_id         => p_application_id
88775  , p_base_ledger_id         => p_base_ledger_id
88776  , p_target_ledger_id       => p_target_ledger_id
88777  , p_language               => l_language
88778  , p_currency_code          => l_currency_code
88779  , p_sla_ledger_id          => l_sla_ledger_id
88780  , p_pad_start_date         => p_pad_start_date
88781  , p_pad_end_date           => p_pad_end_date
88782  , p_primary_ledger_id      => p_primary_ledger_id
88783 );
88784 
88785 
88786 
88787      IF ( g_diagnostics_mode ='Y' ) THEN
88788 
88789          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88790           trace
88791               (p_msg      => 'CALL Transaction Objects Diagnostics'
88792               ,p_level    => C_LEVEL_STATEMENT
88793               ,p_module   => l_log_module);
88794 
88795          END IF;
88796 
88797          insert_sources_124(
88798                           p_target_ledger_id => p_target_ledger_id
88799                         , p_language         => l_language
88800                         , p_sla_ledger_id    => l_sla_ledger_id
88801                         , p_pad_start_date   => p_pad_start_date
88802                         , p_pad_end_date     => p_pad_end_date
88803                           );
88804 
88805      END IF;
88806 
88807 l_created := EventClass_125(
88808    p_application_id         => p_application_id
88809  , p_base_ledger_id         => p_base_ledger_id
88810  , p_target_ledger_id       => p_target_ledger_id
88811  , p_language               => l_language
88812  , p_currency_code          => l_currency_code
88813  , p_sla_ledger_id          => l_sla_ledger_id
88814  , p_pad_start_date         => p_pad_start_date
88815  , p_pad_end_date           => p_pad_end_date
88816  , p_primary_ledger_id      => p_primary_ledger_id
88817 );
88818 
88819 
88820 
88821      IF ( g_diagnostics_mode ='Y' ) THEN
88822 
88823          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88824           trace
88825               (p_msg      => 'CALL Transaction Objects Diagnostics'
88826               ,p_level    => C_LEVEL_STATEMENT
88827               ,p_module   => l_log_module);
88828 
88829          END IF;
88830 
88831          insert_sources_125(
88832                           p_target_ledger_id => p_target_ledger_id
88833                         , p_language         => l_language
88834                         , p_sla_ledger_id    => l_sla_ledger_id
88835                         , p_pad_start_date   => p_pad_start_date
88836                         , p_pad_end_date     => p_pad_end_date
88837                           );
88838 
88839      END IF;
88840 
88841 l_created := EventClass_126(
88842    p_application_id         => p_application_id
88843  , p_base_ledger_id         => p_base_ledger_id
88844  , p_target_ledger_id       => p_target_ledger_id
88845  , p_language               => l_language
88846  , p_currency_code          => l_currency_code
88847  , p_sla_ledger_id          => l_sla_ledger_id
88848  , p_pad_start_date         => p_pad_start_date
88852 
88849  , p_pad_end_date           => p_pad_end_date
88850  , p_primary_ledger_id      => p_primary_ledger_id
88851 );
88853 
88854 
88855      IF ( g_diagnostics_mode ='Y' ) THEN
88856 
88857          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88858           trace
88859               (p_msg      => 'CALL Transaction Objects Diagnostics'
88860               ,p_level    => C_LEVEL_STATEMENT
88861               ,p_module   => l_log_module);
88862 
88863          END IF;
88864 
88865          insert_sources_126(
88866                           p_target_ledger_id => p_target_ledger_id
88867                         , p_language         => l_language
88868                         , p_sla_ledger_id    => l_sla_ledger_id
88869                         , p_pad_start_date   => p_pad_start_date
88870                         , p_pad_end_date     => p_pad_end_date
88871                           );
88872 
88873      END IF;
88874 
88875 l_created := EventClass_127(
88876    p_application_id         => p_application_id
88877  , p_base_ledger_id         => p_base_ledger_id
88878  , p_target_ledger_id       => p_target_ledger_id
88879  , p_language               => l_language
88880  , p_currency_code          => l_currency_code
88881  , p_sla_ledger_id          => l_sla_ledger_id
88882  , p_pad_start_date         => p_pad_start_date
88883  , p_pad_end_date           => p_pad_end_date
88884  , p_primary_ledger_id      => p_primary_ledger_id
88885 );
88886 
88887 
88888 
88889      IF ( g_diagnostics_mode ='Y' ) THEN
88890 
88891          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88892           trace
88893               (p_msg      => 'CALL Transaction Objects Diagnostics'
88894               ,p_level    => C_LEVEL_STATEMENT
88895               ,p_module   => l_log_module);
88896 
88897          END IF;
88898 
88899          insert_sources_127(
88900                           p_target_ledger_id => p_target_ledger_id
88901                         , p_language         => l_language
88902                         , p_sla_ledger_id    => l_sla_ledger_id
88903                         , p_pad_start_date   => p_pad_start_date
88904                         , p_pad_end_date     => p_pad_end_date
88905                           );
88906 
88907      END IF;
88908 
88909 l_created := EventClass_128(
88910    p_application_id         => p_application_id
88911  , p_base_ledger_id         => p_base_ledger_id
88912  , p_target_ledger_id       => p_target_ledger_id
88913  , p_language               => l_language
88914  , p_currency_code          => l_currency_code
88915  , p_sla_ledger_id          => l_sla_ledger_id
88916  , p_pad_start_date         => p_pad_start_date
88917  , p_pad_end_date           => p_pad_end_date
88918  , p_primary_ledger_id      => p_primary_ledger_id
88919 );
88920 
88921 
88922 
88923      IF ( g_diagnostics_mode ='Y' ) THEN
88924 
88925          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88926           trace
88927               (p_msg      => 'CALL Transaction Objects Diagnostics'
88928               ,p_level    => C_LEVEL_STATEMENT
88929               ,p_module   => l_log_module);
88930 
88931          END IF;
88932 
88933          insert_sources_128(
88934                           p_target_ledger_id => p_target_ledger_id
88935                         , p_language         => l_language
88936                         , p_sla_ledger_id    => l_sla_ledger_id
88937                         , p_pad_start_date   => p_pad_start_date
88938                         , p_pad_end_date     => p_pad_end_date
88939                           );
88940 
88941      END IF;
88942 
88943 l_created := EventClass_129(
88944    p_application_id         => p_application_id
88945  , p_base_ledger_id         => p_base_ledger_id
88946  , p_target_ledger_id       => p_target_ledger_id
88947  , p_language               => l_language
88948  , p_currency_code          => l_currency_code
88949  , p_sla_ledger_id          => l_sla_ledger_id
88950  , p_pad_start_date         => p_pad_start_date
88951  , p_pad_end_date           => p_pad_end_date
88952  , p_primary_ledger_id      => p_primary_ledger_id
88953 );
88954 
88955 
88956 
88957      IF ( g_diagnostics_mode ='Y' ) THEN
88958 
88959          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88960           trace
88961               (p_msg      => 'CALL Transaction Objects Diagnostics'
88962               ,p_level    => C_LEVEL_STATEMENT
88963               ,p_module   => l_log_module);
88964 
88965          END IF;
88966 
88967          insert_sources_129(
88968                           p_target_ledger_id => p_target_ledger_id
88969                         , p_language         => l_language
88970                         , p_sla_ledger_id    => l_sla_ledger_id
88971                         , p_pad_start_date   => p_pad_start_date
88972                         , p_pad_end_date     => p_pad_end_date
88973                           );
88974 
88975      END IF;
88976 
88977 l_created := EventClass_130(
88978    p_application_id         => p_application_id
88979  , p_base_ledger_id         => p_base_ledger_id
88980  , p_target_ledger_id       => p_target_ledger_id
88981  , p_language               => l_language
88982  , p_currency_code          => l_currency_code
88983  , p_sla_ledger_id          => l_sla_ledger_id
88984  , p_pad_start_date         => p_pad_start_date
88985  , p_pad_end_date           => p_pad_end_date
88986  , p_primary_ledger_id      => p_primary_ledger_id
88987 );
88988 
88989 
88990 
88991      IF ( g_diagnostics_mode ='Y' ) THEN
88992 
88993          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88994           trace
88995               (p_msg      => 'CALL Transaction Objects Diagnostics'
88996               ,p_level    => C_LEVEL_STATEMENT
89000 
88997               ,p_module   => l_log_module);
88998 
88999          END IF;
89001          insert_sources_130(
89002                           p_target_ledger_id => p_target_ledger_id
89003                         , p_language         => l_language
89004                         , p_sla_ledger_id    => l_sla_ledger_id
89005                         , p_pad_start_date   => p_pad_start_date
89006                         , p_pad_end_date     => p_pad_end_date
89007                           );
89008 
89009      END IF;
89010 
89011 l_created := EventClass_131(
89012    p_application_id         => p_application_id
89013  , p_base_ledger_id         => p_base_ledger_id
89014  , p_target_ledger_id       => p_target_ledger_id
89015  , p_language               => l_language
89016  , p_currency_code          => l_currency_code
89017  , p_sla_ledger_id          => l_sla_ledger_id
89018  , p_pad_start_date         => p_pad_start_date
89019  , p_pad_end_date           => p_pad_end_date
89020  , p_primary_ledger_id      => p_primary_ledger_id
89021 );
89022 
89023 
89024 
89025      IF ( g_diagnostics_mode ='Y' ) THEN
89026 
89027          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89028           trace
89029               (p_msg      => 'CALL Transaction Objects Diagnostics'
89030               ,p_level    => C_LEVEL_STATEMENT
89031               ,p_module   => l_log_module);
89032 
89033          END IF;
89034 
89035          insert_sources_131(
89036                           p_target_ledger_id => p_target_ledger_id
89037                         , p_language         => l_language
89038                         , p_sla_ledger_id    => l_sla_ledger_id
89039                         , p_pad_start_date   => p_pad_start_date
89040                         , p_pad_end_date     => p_pad_end_date
89041                           );
89042 
89043      END IF;
89044 
89045 l_created := EventClass_132(
89046    p_application_id         => p_application_id
89047  , p_base_ledger_id         => p_base_ledger_id
89048  , p_target_ledger_id       => p_target_ledger_id
89049  , p_language               => l_language
89050  , p_currency_code          => l_currency_code
89051  , p_sla_ledger_id          => l_sla_ledger_id
89052  , p_pad_start_date         => p_pad_start_date
89053  , p_pad_end_date           => p_pad_end_date
89054  , p_primary_ledger_id      => p_primary_ledger_id
89055 );
89056 
89057 
89058 
89059      IF ( g_diagnostics_mode ='Y' ) THEN
89060 
89061          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89062           trace
89063               (p_msg      => 'CALL Transaction Objects Diagnostics'
89064               ,p_level    => C_LEVEL_STATEMENT
89065               ,p_module   => l_log_module);
89066 
89067          END IF;
89068 
89069          insert_sources_132(
89070                           p_target_ledger_id => p_target_ledger_id
89071                         , p_language         => l_language
89072                         , p_sla_ledger_id    => l_sla_ledger_id
89073                         , p_pad_start_date   => p_pad_start_date
89074                         , p_pad_end_date     => p_pad_end_date
89075                           );
89076 
89077      END IF;
89078 
89079 
89080  --
89081  -- Bug 4865292
89082  -- When the number of events and that of header extract do not match,
89083  -- set the no header extract flag to indicate there are some issues
89084  -- in header extract.
89085  --
89086  -- Event count context is set in xla_accounting_pkg.unit_processor.
89087  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
89088  -- to report it as a general error.
89089  --
89090  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
89091  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
89092 
89093      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89094         trace
89095           (p_msg      => '# of extracted headers and events does not match'
89096           ,p_level    => C_LEVEL_STATEMENT
89097           ,p_module   => l_log_module);
89098 
89099         trace
89100           (p_msg      => '# of extracted headers: '
89101                          ||g_hdr_extract_count
89102           ,p_level    => C_LEVEL_STATEMENT
89103           ,p_module   => l_log_module);
89104 
89105         trace
89106           (p_msg      => '# of events in xla_events_gt: '
89107                          ||xla_context_pkg.get_event_count_context
89108           ,p_level    => C_LEVEL_STATEMENT
89109           ,p_module   => l_log_module);
89110 
89111         trace
89112           (p_msg      => 'Event No Header Extract Context: '
89113                          ||xla_context_pkg.get_event_nohdr_context
89114           ,p_level    => C_LEVEL_STATEMENT
89115           ,p_module   => l_log_module);
89116 
89117      END IF;
89118 
89119 
89120      xla_context_pkg.set_event_nohdr_context
89121        (p_nohdr_extract_flag => 'Y'
89122        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
89123 
89124      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89125         trace
89126           (p_msg      => 'No Header Extract Flag is set to Y'
89127           ,p_level    => C_LEVEL_STATEMENT
89128           ,p_module   => l_log_module);
89129      END IF;
89130 
89131  END IF;
89132 
89133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89134    trace
89135       (p_msg      => 'END of CreateHeadersAndLines'
89136       ,p_level    => C_LEVEL_PROCEDURE
89137       ,p_module   => l_log_module);
89138 END IF;
89139 
89140 RETURN l_created;
89141 EXCEPTION
89142 WHEN xla_exceptions_pkg.application_exception THEN
89143    RAISE;
89144 WHEN OTHERS THEN
89145    xla_exceptions_pkg.raise_message
89149 --
89146       (p_location => 'XLA_00275_AAD_S_000016_PKG.CreateHeadersAndLines');
89147 END CreateHeadersAndLines;
89148 --
89150 
89151 --
89152 --+============================================+
89153 --|                                            |
89154 --|  PUBLIC FUNCTION                           |
89155 --|                                            |
89156 --+============================================+
89157 --
89158 FUNCTION CreateJournalEntries
89159        (p_application_id         IN NUMBER
89160        ,p_base_ledger_id         IN NUMBER
89161        ,p_pad_start_date         IN DATE
89162        ,p_pad_end_date           IN DATE
89163        ,p_primary_ledger_id      IN NUMBER)
89164 RETURN NUMBER IS
89165 l_log_module                   VARCHAR2(240);
89166 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
89167 l_temp_result                  BOOLEAN;
89168 l_result                       NUMBER;
89169 BEGIN
89170 --
89171 IF g_log_enabled THEN
89172    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
89173 END IF;
89174 --
89175 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89176    trace
89177       (p_msg      => 'BEGIN of CreateJournalEntries'||
89178                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
89179       ,p_level    => C_LEVEL_PROCEDURE
89180       ,p_module   => l_log_module);
89181 
89182 END IF;
89183 
89184 --
89185 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
89186 
89187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89188    trace
89189       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
89190       ,p_level    => C_LEVEL_STATEMENT
89191       ,p_module   => l_log_module);
89192 END IF;
89193 --
89194 xla_ae_journal_entry_pkg.SetProductAcctDefinition
89195    (p_product_rule_code      => 'JA_CN_PA_DEFAULT_ACCRUAL'
89196    ,p_product_rule_type_code => 'S'
89197    ,p_product_rule_version   => ''
89198    ,p_product_rule_name      => 'China Projects Standard Accounting'
89199    ,p_amb_context_code       => 'DEFAULT'
89200    );
89201 
89202 l_array_ledgers :=
89203    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
89204       (p_base_ledger_id  => p_base_ledger_id);
89205 
89206 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
89207    l_temp_result :=
89208       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
89209          (p_application_id           => p_application_id
89210          ,p_base_ledger_id           => p_base_ledger_id
89211          ,p_target_ledger_id         => l_array_ledgers(Idx)
89212          ,p_primary_ledger_id        => p_primary_ledger_id
89213          ,p_pad_start_date           => p_pad_start_date
89214          ,p_pad_end_date             => p_pad_end_date);
89215 
89216    l_temp_result :=
89217       l_temp_result AND
89218       CreateHeadersAndLines
89219          (p_application_id             => p_application_id
89220          ,p_base_ledger_id             => p_base_ledger_id
89221          ,p_target_ledger_id           => l_array_ledgers(Idx)
89222          ,p_pad_start_date             => p_pad_start_date
89223          ,p_pad_end_date               => p_pad_end_date
89224          ,p_primary_ledger_id          => p_primary_ledger_id
89225          );
89226 END LOOP;
89227 
89228 
89229 IF (g_diagnostics_mode = 'Y' AND
89230     C_LEVEL_UNEXPECTED >= g_log_level AND
89231     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
89232 
89233    xla_accounting_dump_pkg.acctg_event_extract_log(
89234     p_application_id  => p_application_id
89235     ,p_request_id     => xla_environment_pkg.g_Req_Id
89236    );
89237 
89238 END IF;
89239 
89240 CASE l_temp_result
89241   WHEN TRUE THEN l_result := 0;
89242   ELSE l_result := 2;
89243 END CASE;
89244 
89245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89246    trace
89247       (p_msg      => 'return value. = '||TO_CHAR(l_result)
89248       ,p_level    => C_LEVEL_PROCEDURE
89249       ,p_module   => l_log_module);
89250    trace
89251       (p_msg      => 'END of CreateJournalEntries '
89252       ,p_level    => C_LEVEL_PROCEDURE
89253       ,p_module   => l_log_module);
89254 END IF;
89255 
89256 RETURN l_result;
89257 EXCEPTION
89258 WHEN xla_exceptions_pkg.application_exception THEN
89259    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89260    trace
89261       (p_msg      => 'ERROR. = '||sqlerrm
89262       ,p_level    => C_LEVEL_PROCEDURE
89263       ,p_module   => l_log_module);
89264    END IF;
89265    RAISE;
89266 WHEN OTHERS THEN
89267    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89268    trace
89269       (p_msg      => 'ERROR. = '||sqlerrm
89270       ,p_level    => C_LEVEL_PROCEDURE
89271       ,p_module   => l_log_module);
89272    END IF;
89273    xla_exceptions_pkg.raise_message
89274       (p_location => 'XLA_00275_AAD_S_000016_PKG.CreateJournalEntries');
89275 END CreateJournalEntries;
89276 --
89277 --=============================================================================
89278 --
89279 --
89280 --
89281 --
89282 --
89283 --
89284 --
89285 --
89286 --
89287 --
89288 --
89289 --
89290 --
89291 --
89292 --
89293 --
89294 --
89295 --
89296 --
89297 --
89298 --
89299 --
89300 --=============================================================================
89301 --=============================================================================
89302 --          *********** Initialization routine **********
89303 --=============================================================================
89304 
89305 BEGIN
89306    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
89307    g_log_enabled    := fnd_log.test
89308                           (log_level  => g_log_level
89309                           ,module     => C_DEFAULT_MODULE);
89310 
89311    IF NOT g_log_enabled  THEN
89312       g_log_level := C_LEVEL_LOG_DISABLED;
89313    END IF;
89314 --
89315 END XLA_00275_AAD_S_000016_PKG;
89316 --