DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00275_AAD_S_000004_PKG

Source


1 PACKAGE BODY XLA_00275_AAD_S_000004_PKG AS
2 --
3 /*======================================================================+
4 |                Copyright (c) 1997 Oracle Corporation                  |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | Package Name                                                          |
9 |     XLA_00275_AAD_S_000004_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Projects Standard Accounting                           |
14 |      Code    : PA_STANDARD_ACCOUNTING                                 |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 06-11-2008 at 02:11:54 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_000004_PKG';
82 
83 C_CHAR                CONSTANT       VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM                 CONSTANT       NUMBER       := 9.99E125;                 -- 4219869 Business flow
85 
86 g_log_level           NUMBER;
87 g_log_enabled         BOOLEAN;
88 
89 PROCEDURE trace
90            (p_msg                        IN VARCHAR2
91            ,p_level                      IN NUMBER
92            ,p_module                     IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98           fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100           fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102 
103 EXCEPTION
104        WHEN xla_exceptions_pkg.application_exception THEN
105           RAISE;
106        WHEN OTHERS THEN
107           xla_exceptions_pkg.raise_message
108              (p_location   => 'XLA_00275_AAD_S_000004_PKG.trace');
109 END trace;
110 
111 --
112 --+============================================+
113 --|                                            |
114 --|  PRIVATE  PROCEDURES/FUNCTIONS             |
115 --|                                            |
116 --+============================================+
117 --
118 
119 --
120 /*======================================================================+
121 |                                                                       |
122 | Private Function                                                      |
123 |    ValidateLookupMeaning                                              |
124 |                                                                       |
125 +======================================================================*/
126 FUNCTION ValidateLookupMeaning(
127   p_meaning                IN VARCHAR2
128 , p_lookup_code            IN VARCHAR2
129 , p_lookup_type            IN VARCHAR2
130 , p_source_code            IN VARCHAR2
131 , p_source_type_code       IN VARCHAR2
132 , p_source_application_id  IN INTEGER
133 )
134 RETURN VARCHAR2
135 IS
136 l_log_module         VARCHAR2(240);
137 BEGIN
138 IF g_log_enabled THEN
139       l_log_module := C_DEFAULT_MODULE||'.ValidateLookupMeaning';
140 END IF;
141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142       trace
143          (p_msg      => 'BEGIN of ValidateLookupMeaning'
144          ,p_level    => C_LEVEL_PROCEDURE
145          ,p_module   => l_log_module);
146 END IF;
147 --
148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149     trace
150          (p_msg      => 'p_source_code = '|| p_source_code||
151                         ' - p_source_type_code = '|| p_source_type_code||
152                         ' - p_source_application_id = '|| p_source_application_id||
153                         ' - p_lookup_code = '|| p_lookup_code||
154                         ' - p_lookup_type = '|| p_lookup_type||
155                         ' - p_meaning = '|| p_meaning
156          ,p_level    => C_LEVEL_PROCEDURE
157          ,p_module   => l_log_module);
158 
159 END IF;
160 
161 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
162    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163    xla_accounting_err_pkg. build_message
164                (p_appli_s_name            => 'XLA'
165                ,p_msg_name                => 'XLA_AP_NO_LOOKUP_MEANING'
166                ,p_token_1                 => 'SOURCE_NAME'
167                ,p_value_1                 =>  xla_ae_sources_pkg.GetSourceName(
168                                                            p_source_code
169                                                          , p_source_type_code
170                                                          , p_source_application_id
171                                                          )
172                ,p_token_2                 => 'LOOKUP_CODE'
173                ,p_value_2                 =>  p_lookup_code
174                ,p_token_3                 => 'LOOKUP_TYPE'
175                ,p_value_3                 =>  p_lookup_type
176                ,p_token_4                 => 'PRODUCT_NAME'
177                ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178                ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179                ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180                ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
181        );
182 
183    IF (C_LEVEL_ERROR >= g_log_level) THEN
184            trace
185                 (p_msg      => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
186                 ,p_level    => C_LEVEL_ERROR
187                 ,p_module   => l_log_module);
188    END IF;
189 END IF;
190 
191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192         trace
193           (p_msg      => 'END of ValidateLookupMeaning'
194           ,p_level    => C_LEVEL_PROCEDURE
195           ,p_module   => l_log_module);
196 END IF;
197 RETURN p_meaning;
198 EXCEPTION
199 WHEN xla_exceptions_pkg.application_exception THEN
200   RETURN p_meaning;
201 WHEN OTHERS  THEN
202    xla_exceptions_pkg.raise_message
203            (p_location => 'XLA_00275_AAD_S_000004_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 
302        l_meaning_meaning    := l_array_meaning(103371).array_meaning(l_Idx);
303 
304     ELSE
305 
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(
364                                                      )
361                                                      p_source_code
362                                                    , p_source_type_code
363                                                    , p_source_application_id
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
426                             ,p_module   => l_log_module);
427      END IF;
428 
429      RETURN NULL;
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_000004_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 
486          (p_msg      => 'END of AcctDerRule_1'
483  --
484   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
485       trace
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_000004_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       ;
564 l_amb_context_code     VARCHAR2(30)  ;
565 l_log_module           VARCHAR2(240) ;
566 l_output_value         NUMBER        ;
567 BEGIN
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;
609                  (p_appli_s_name            => 'XLA'
606 x_value_type_code := null;
607 l_output_value    := null;
608 xla_accounting_err_pkg.build_message
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_000004_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
703          ,p_module   => l_log_module);
704   END IF;
705   x_value_type_code := 'S';
706   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_3));
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;
736                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
733 l_output_value    := null;
734 xla_accounting_err_pkg.build_message
735                  (p_appli_s_name            => 'XLA'
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_000004_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;
842 x_value_type_code := null;
843 l_output_value    := null;
844 xla_accounting_err_pkg.build_message
845                  (p_appli_s_name            => 'XLA'
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
854                                                           )
851                                                           , l_component_type_code
852                                                           , l_component_appl_id
853                                                           , l_amb_context_code
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_000004_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
976                                                           , l_component_code
977                                                           , l_component_type_code
981                  ,p_token_2                 => 'OWNER'
978                                                           , l_component_appl_id
979                                                           , l_amb_context_code
980                                                           )
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_000004_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
1101                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1098                  ,p_token_4                 => 'PAD_OWNER'
1099                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1100                                                         'XLA_OWNER_TYPE'
1102                                                         )
1103                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
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_000004_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'
1226                                                         'XLA_OWNER_TYPE'
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(
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
1231                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1232                  ,p_ae_header_id            => NULL
1233 );
1234 RETURN l_output_value;
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_000004_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
1343 );
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
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_000004_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
1368 , x_transaction_coa_id         OUT NOCOPY NUMBER
1369 , x_accounting_coa_id          OUT NOCOPY NUMBER
1370 , x_value_type_code            OUT NOCOPY VARCHAR2
1371 )
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
1463 
1460            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctDerRule_9');
1461 END AcctDerRule_9;
1462 --
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';
1505 l_component_code         := 'PA_RECLASS_DEST_ACCT_RULE';
1506 l_component_type_code    := 'S';
1507 l_component_appl_id      :=  275;
1508 l_amb_context_code       := 'DEFAULT';
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
1589 
1586            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctDerRule_10');
1587 END AcctDerRule_10;
1588 --
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
1645          ,p_module   => l_log_module);
1646   END IF;
1647   x_value_type_code := 'S';
1648   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_12));
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_000004_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
1716 , x_transaction_coa_id         OUT NOCOPY NUMBER
1713  , p_source_13            IN NUMBER
1714 --Adjustment Provider Cost Source CCID
1715  , p_source_14            IN 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;
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;
1788 xla_accounting_err_pkg.build_message
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_000004_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
1843 )
1840 , x_transaction_coa_id         OUT NOCOPY NUMBER
1841 , x_accounting_coa_id          OUT NOCOPY NUMBER
1842 , x_value_type_code            OUT NOCOPY VARCHAR2
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'
1910                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1911                                                         'XLA_OWNER_TYPE'
1912                                                         ,l_component_type_code
1913                                                         )
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_000004_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       ;
1965 BEGIN
1962 l_amb_context_code     VARCHAR2(30)  ;
1963 l_log_module           VARCHAR2(240) ;
1964 l_output_value         NUMBER        ;
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
2042                  ,p_token_4                 => 'PAD_OWNER'
2043                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2044                                                         'XLA_OWNER_TYPE'
2045                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
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_000004_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
2091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2088 IF g_log_enabled THEN
2089       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
2090 END IF;
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_000004_PKG.AcctDerRule_15');
2163 END AcctDerRule_15;
2164 --
2165 
2166 ---------------------------------------
2167 --
2168 -- PRIVATE FUNCTION
2169 --         AcctDerRule_16
2170 --
2171 ---------------------------------------
2172 FUNCTION AcctDerRule_16 (
2173   p_application_id              IN NUMBER
2174 , p_ae_header_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'
2218   x_value_type_code := 'S';
2215          ,p_level    => C_LEVEL_PROCEDURE
2216          ,p_module   => l_log_module);
2217   END IF;
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_000004_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 --
2306 l_component_type         := 'AMB_ADR';
2307 l_component_code         := 'REVENUE_RULE';
2308 l_component_type_code    := 'S';
2309 l_component_appl_id      :=  275;
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'
2341                                                             l_component_type
2338                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2339                  ,p_token_1                 => 'COMPONENT_NAME'
2340                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
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_000004_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
2441                  (p_appli_s_name            => 'XLA'
2442                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2443                  ,p_token_1                 => 'COMPONENT_NAME'
2444                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
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'
2455                                                         )
2452                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2453                                                         'XLA_OWNER_TYPE'
2454                                                         ,l_component_type_code
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_000004_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
2562                  ,p_token_4                 => 'PAD_OWNER'
2563                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2564                                                         'XLA_OWNER_TYPE'
2565                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2569                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
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
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_000004_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 
2695 --
2692 ---------------------------------------------------------------------------------------------------------------
2693 
2694 
2696 -- bulk performance
2697 --
2698 l_balance_type_code           VARCHAR2(1);
2699 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2700 l_log_module                  VARCHAR2(240);
2701 
2702 --
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;
2832    --
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
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) :=
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
2843    
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 
2922    IF xla_accounting_cache_pkg.GetValueChar
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 
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;
2937 -- No business flow processing for business flow method of NONE.
2938    END IF;
2939 
2940    --
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
3032 
3029                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3030                                     ,p_ae_header_id            =>  NULL
3031                                        );
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    ----------------------------------------------------------------------------------
3057    -- 4219869 Business Flow
3058    -- Update journal entry status -- Need to generate this within IF <condition>
3059    ----------------------------------------------------------------------------------
3060    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
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;
3131                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3128       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3129 
3130       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
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_000004_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
3185  , p_source_6            IN NUMBER
3186 --Exchange Rate Variance Flag
3187  , p_source_21            IN VARCHAR2
3188 --Reversing Line Flag
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
3268 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3265 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3266 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3267 
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
3329 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3330 l_budgetary_control_flag     := 'N';
3331 
3332 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
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'
3402    --
3399          , p_ae_header_id           => l_ae_header_id
3400          );
3401 
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);
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';
3456    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
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);
3496    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
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    ---------------------------------------------------------------------------------------------------------------
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
3565   , p_side                         => 'NA'
3566   );
3567 
3568 
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
3607                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3604                                                                          )
3605                                     ,p_token_4                 => 'PRODUCT_NAME'
3606                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
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);
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
3677 
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) :=
3701 
3698                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3699 
3700       END IF;
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_000004_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
3813 l_segment                     VARCHAR2(30);
3814 l_ccid                        NUMBER;
3815 l_adr_transaction_coa_id      NUMBER;
3816 l_adr_accounting_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;
3841 l_recog_line_1                NUMBER;
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;
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(
3950            p_natural_side_code          => 'C'
3951          , p_gain_or_loss_flag          => 'Y'
3952          , p_gl_transfer_mode_code      => 'S'
3953          , p_acct_entry_type_code       => 'A'
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
3972       ,p_entity_code                => l_entity_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
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';
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;
4063    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
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);
4070    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
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';
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
4182                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4179                                                                            )
4180                                     ,p_token_3                 => 'OWNER'
4181                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4183                                                                           ,p_lookup_code    => l_component_type_code
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
4275                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
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) :=
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 
4280       END IF;
4281 
4282       -- 4955764
4283       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
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_000004_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 
4411 l_acc_rev_flag                VARCHAR2(1);
4408 -- 4262811 Variables ------------------------------------------------------------------------------------------
4409 l_entered_amt_idx             NUMBER;
4410 l_accted_amt_idx              NUMBER;
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 
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
4431 l_same_currency               BOOLEAN;        -- 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
4542    --
4539    -- 
4540    --
4541    -- set accounting line type info
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;
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
4573    --
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;
4642    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
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';
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')
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
4669          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
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
4758                                                                             ,l_entity_code
4755                                                                             ,l_component_type_code
4756                                                                             ,l_component_appl_id
4757                                                                             ,l_amb_context_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.
4788    ------------------------------------------------------------------------------------------------
4789    XLA_AE_LINES_PKG.ValidateCurrentLine;
4790 
4791    ------------------------------------------------------------------------------------
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
4850           -- 4262811a Switch Sign
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           ---------------------------------------------------------------------------------------------------
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_000004_PKG.AcctLineType_23');
4901 END AcctLineType_23;
4902 --
4903 
4904 ---------------------------------------
4905 --
4906 -- PRIVATE FUNCTION
4907 --         AcctLineType_24
4908 --
4909 ---------------------------------------
4910 PROCEDURE AcctLineType_24 (
4911   p_application_id        IN NUMBER
4912  ,p_event_id              IN NUMBER
4913  ,p_calculate_acctd_flag  IN VARCHAR2
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 ------------------------------------------------------------------------------------------
4980 l_accrual_line_num            NUMBER;
4977 l_entered_amt_idx             NUMBER;
4978 l_accted_amt_idx              NUMBER;
4979 l_acc_rev_flag                VARCHAR2(1);
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
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';
5059 
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
5117       ,p_accounting_line_type_code  => l_component_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
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    ---------------------------------------------------------------------------------------------------------------
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;
5187 
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;
5230   l_ccid := AcctDerRule_17(
5227    --
5228    --
5229    
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 
5300         IF (C_LEVEL_ERROR>= g_log_level) THEN
5301                  trace
5302                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5303                       ,p_level    => C_LEVEL_ERROR
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>
5329          ,p_balance_type_code => l_balance_type_code
5326    ----------------------------------------------------------------------------------
5327    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5328          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
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
5416       (p_msg      => 'END of AcctLineType_24'
5417       ,p_level    => C_LEVEL_PROCEDURE
5418       ,p_module   => l_log_module);
5419 END IF;
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_000004_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
5444  
5441  ,p_actual_flag           IN OUT VARCHAR2
5442  ,p_balance_type_code     OUT VARCHAR2
5443  ,p_gain_or_loss_ref      OUT VARCHAR2
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 
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
5562 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5563 
5564 ---------------------------------------------------------------------------------------------------------------
5565 
5566 
5567 --
5571 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5568 -- bulk performance
5569 --
5570 l_balance_type_code           VARCHAR2(1);
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;
5795    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
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';
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';
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;
5802    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
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
5916                                     ,p_token_1                 => 'LINE_NUMBER'
5913       xla_accounting_err_pkg.build_message
5914                                     (p_appli_s_name            => 'XLA'
5915                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
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
5922                                                                             ,l_component_type_code
5923                                                                             ,l_component_appl_id
5924                                                                             ,l_amb_context_code
5925                                                                             ,l_entity_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;
6006        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6003 
6004        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6005 
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) :=
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;
6024           -- 5132302
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_000004_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
6132  , p_source_49            IN VARCHAR2
6129 --Project Encumbrance Applied to Distribution Type
6130  , p_source_48            IN VARCHAR2
6131 --Project Encumbrance Applied to Entity Code
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;
6168 l_adr_accounting_coa_id       NUMBER;
6169 l_adr_flexfield_segment_code  VARCHAR2(30);
6170 l_adr_flex_value_set_id       NUMBER;
6171 l_adr_value_type_code         VARCHAR2(30);
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 
6262 l_budgetary_control_flag     := 'N';
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
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    --
6311    xla_ae_lines_pkg.SetAcctLineType
6312       (p_component_type             => l_component_type
6313       ,p_event_type_code            => l_event_type_code
6314       ,p_line_definition_owner_code => l_line_definition_owner_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;
6380    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
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';
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;
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';
6418    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
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);
6464    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
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    ---------------------------------------------------------------------------------------------------------------
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'
6527   , p_adr_type_code                => 'S'
6528   , p_component_type               => l_component_type
6529   , p_component_code               => l_component_code
6530   , p_component_type_code          => l_component_type_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'
6577                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
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
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 
6634        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6635        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6636 
6637        --
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) :=
6675       XLA_AE_LINES_PKG.ValidateCurrentLine;
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 
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_000004_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
6770  , p_source_48            IN VARCHAR2
6771 --Project Encumbrance Applied to Entity Code
6772  , p_source_49            IN VARCHAR2
6773 --Project Encumbrance Applied to First Distribution ID
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
6819 
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
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
6908 l_acc_rev_flag               := NULL;          -- 4262811
6909 l_accrual_line_num           := NULL;          -- 4262811
6910 l_tmp_amt                    := NULL;          -- 4262811
6911 --
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    -- 
6951    xla_ae_lines_pkg.SetAcctLineType
6948    --
6949    -- set accounting line type info
6950    --
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;
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';
7034    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
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);
7050    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
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';
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
7122            ,p_business_class_code     => l_bflow_class_code
7123            ,p_balance_type            => l_balance_type_code);
7124    ELSE
7125       NULL;
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    --
7144       )
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')
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    ------------------------------------------------------------------------------------
7242    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7243 
7247    ----------------------------------------------------------------------------------
7244    ----------------------------------------------------------------------------------
7245    -- 4219869 Business Flow
7246    -- Update journal entry status -- Need to generate this within IF <condition>
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_000004_PKG.AcctLineType_27');
7348 END AcctLineType_27;
7349 --
7350 
7351 ---------------------------------------
7352 --
7353 -- PRIVATE FUNCTION
7354 --         AcctLineType_28
7355 --
7356 ---------------------------------------
7357 PROCEDURE AcctLineType_28 (
7361  ,p_calculate_g_l_flag    IN VARCHAR2
7358   p_application_id        IN NUMBER
7359  ,p_event_id              IN NUMBER
7360  ,p_calculate_acctd_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
7369  , p_source_3            IN NUMBER
7370 --Allow Account Override Flag
7371  , p_source_4            IN VARCHAR2
7372 --Cost Clearing CCID
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
7486 
7483 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7484 
7485 ---------------------------------------------------------------------------------------------------------------
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'
7512          ,p_level    => C_LEVEL_PROCEDURE
7513          ,p_module   => l_log_module);
7514 
7515 END IF;
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    --
7625       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
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) :=
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;
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';
7650    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
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;
7714    l_rec_acct_attrs.array_num_value(38)  := 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';
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;
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 
7740    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
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    --
7822    -- Bug 4922099
7819    --
7820    END IF;
7821    --
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'
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
7858                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_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;
7919        -- Update the line information that should be overwritten
7916        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7917 
7918        --
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
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 
7963    END IF;
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_000004_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);
8045 l_line_definition_code        VARCHAR2(30);
8042 l_event_class_code            VARCHAR2(30);
8043 l_ae_header_id                NUMBER;
8044 l_event_type_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 --
8112 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8113 
8114       trace
8115          (p_msg      => 'BEGIN of AcctLineType_29'
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;
8174      p_actual_flag :='A';
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
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';
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;
8255    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
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
8287    THEN
8284    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8285          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8286        )
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
8373                                                                             ,l_event_class_code
8374                                                                            )
8375                                     ,p_token_3                 => 'OWNER'
8376                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
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    ------------------------------------------------------------------------------------------------
8402    ------------------------------------------------------------------------------------------------
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.
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
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 
8475       END IF;
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);
8510   WHEN xla_exceptions_pkg.application_exception THEN
8507 END IF;
8508 --
8509 EXCEPTION
8511       RAISE;
8512   WHEN OTHERS THEN
8513        xla_exceptions_pkg.raise_message
8514            (p_location => 'XLA_00275_AAD_S_000004_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
8615 
8616 ---------------------------------------------------------------------------------------------------------------
8617 
8618 
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 --
8651 l_component_appl_id          :=  275;
8648 l_component_type             := 'AMB_JLT';
8649 l_component_code             := 'PA_EVENT_REV';
8650 l_component_type_code        := 'S';
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) :=
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
8767    
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);
8779    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
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';
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'
8894                                                                              l_component_type
8891                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8892                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8893                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8895                                                                             ,l_component_code
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
8984       --
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 
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           ---------------------------------------------------------------------------------------------------
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
8994           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
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_000004_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);
9116 l_event_class_code            VARCHAR2(30);
9113 l_component_appl_id           INTEGER;
9114 l_amb_context_code            VARCHAR2(30);
9115 l_entity_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
9135 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9136 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9137 
9138 -- 4262811 Variables ------------------------------------------------------------------------------------------
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 
9247    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
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    
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
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
9281       ,p_amb_context_code           => l_amb_context_code
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';
9357    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
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;
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);
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 
9384    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
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 (
9463                                                                             ,l_component_appl_id
9460                                                                              l_component_type
9461                                                                             ,l_component_code
9462                                                                             ,l_component_type_code
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
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    ------------------------------------------------------------------------------------------------
9496    -- No ValidateCurrentLine for business flow method of Prior Entry
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       --
9554           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
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
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_000004_PKG.AcctLineType_31');
9608 END AcctLineType_31;
9609 --
9610 
9611 ---------------------------------------
9612 --
9613 -- PRIVATE FUNCTION
9614 --         AcctLineType_32
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
9685 l_entered_amt_idx             NUMBER;
9682 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9683 
9684 -- 4262811 Variables ------------------------------------------------------------------------------------------
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;
9758 l_adr_flex_value_set_id       := NULL;
9759 l_adr_value_type_code         := NULL;
9760 l_adr_value_combination_id    := NULL;
9761 l_adr_value_segment_code      := 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    --
9820       (p_component_type             => l_component_type
9817    -- set accounting line type info
9818    --
9819    xla_ae_lines_pkg.SetAcctLineType
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 
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 
9891    ---------------------------------------------------------------------------------------------------------------
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
9930         (NVL(l_actual_upg_option, 'N') = 'O') OR
9927    -- Bug 4922099
9928    --
9929    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') 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
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
10006                                        );
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    ------------------------------------------------------------------------------------
10032    -- 4219869 Business Flow
10029    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10030 
10031    ----------------------------------------------------------------------------------
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 
10111    -----------------------------------------------------------------------------------------
10112    -- 4262811 Multiperiod Accounting
10113    -----------------------------------------------------------------------------------------
10114      -- No MPA option is assigned.
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_000004_PKG.AcctLineType_32');
10135 END AcctLineType_32;
10136 --
10137 
10138 ---------------------------------------
10139 --
10143 ---------------------------------------
10140 -- PRIVATE FUNCTION
10141 --         AcctLineType_33
10142 --
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
10254 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10255 
10256 ---------------------------------------------------------------------------------------------------------------
10257 
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);
10273 BEGIN
10270 l_enc_upg_option           VARCHAR2(1);
10271 
10272 --
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 
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 
10402    -- 4955764
10403    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10407    
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
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);
10489          (p_source_code         => 'LEDGER_CATEGORY_CODE'
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
10490          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
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
10494          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
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 
10594    ------------------------------------------------------------------------------------
10591    ------------------------------------------------------------------------------------
10592    -- 4219869 Business Flow
10593    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
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')
10603          ,p_balance_type_code => l_balance_type_code
10604          );
10605 
10606    -------------------------------------------------------------------------------------------
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
10699        xla_exceptions_pkg.raise_message
10696   WHEN xla_exceptions_pkg.application_exception THEN
10697       RAISE;
10698   WHEN OTHERS THEN
10700            (p_location => 'XLA_00275_AAD_S_000004_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
10732  , p_source_37            IN VARCHAR2
10733 --Crediting Revenue Flag
10734  , p_source_38            IN VARCHAR2
10735 --Revenue First Distribution ID
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';
10837 l_amb_context_code           := 'DEFAULT';
10834 l_component_code             := 'PA_INV_REV';
10835 l_component_type_code        := 'S';
10836 l_component_appl_id          :=  275;
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  
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,'
10872 ') =  'Revenue - Normal Revenue' AND 
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);
10964    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
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';
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 
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')
10994    AND l_bflow_method_code = 'PRIOR_ENTRY'
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
11080                                                                             ,l_component_code
11077                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11078                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11079                                                                              l_component_type
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    --
11110    ------------------------------------------------------------------------------------------------
11111    -- 4219869 Business Flow
11112    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11113    -- Prior Entry.  Currently, the following code is always generated.
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
11169       --
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 
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
11225        xla_exceptions_pkg.raise_message
11226            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_34');
11227 END AcctLineType_34;
11228 --
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);
11295 l_adr_value_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;
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';
11371 l_segment                     := NULL;
11372 l_ccid                        := NULL;
11373 l_adr_transaction_coa_id      := NULL;
11374 l_adr_accounting_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 ,
11424    --
11421                                       p_header_num   => 0); -- 4262811
11422    --
11423    -- set accounting line options
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';
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);
11505    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
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
11528          xla_ae_lines_pkg.BflowUpgEntry
11525          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11526        )
11527    THEN
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
11619                                                                          )
11620                                     ,p_token_4                 => 'PRODUCT_NAME'
11621                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11622                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
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    --
11641    -- Prior Entry.  Currently, the following code is always generated.
11638    ------------------------------------------------------------------------------------------------
11639    -- 4219869 Business Flow
11640    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
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 
11722       XLA_AE_LINES_PKG.ValidateCurrentLine;
11723       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11724 
11725       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
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 
11740 
11737 END IF;
11738 END IF;
11739 --
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_000004_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 --
11868 l_actual_upg_option           VARCHAR2(1);
11869 l_enc_upg_option           VARCHAR2(1);
11870 
11871 --
11872 BEGIN
11873 --
11874 IF g_log_enabled THEN
11878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11875       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
11876 END IF;
11877 --
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) :=
12006    
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
12007    --
12008    -- set accounting attributes for the line type
12009    --
12010    l_entered_amt_idx := 4;
12011    l_accted_amt_idx  := 10;
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);
12015    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
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')
12120    THEN
12117         ) AND
12118         (l_bflow_method_code = 'PRIOR_ENTRY')
12119       )
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 (
12133                                                                              l_component_type
12134                                                                             ,l_component_code
12135                                                                             ,l_component_type_code
12136                                                                             ,l_component_appl_id
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        --
12216 
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;
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
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) :=
12234                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
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_000004_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
12340 IS
12337  , p_source_67            IN VARCHAR2
12338  , p_source_67_meaning    IN VARCHAR2
12339 )
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 
12370 -- 4262811 Variables ------------------------------------------------------------------------------------------
12371 l_entered_amt_idx             NUMBER;
12372 l_accted_amt_idx              NUMBER;
12373 l_acc_rev_flag                VARCHAR2(1);
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  
12466 ') =  'COST_TRANSFER' OR 
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,'
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
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
12513       ,p_entity_code                => l_entity_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';
12580    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
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;
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);
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    ---------------------------------------------------------------------------------------------------------------
12617    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
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
12683   , p_component_code               => l_component_code
12680   , p_adr_code                     => 'PA_PROV_COST_REV_ACCT_RULE'
12681   , p_adr_type_code                => 'S'
12682   , p_component_type               => l_component_type
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
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
12732                                     ,p_ae_header_id            =>  NULL
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
12777       WHEN OTHERS THEN
12774          l_acc_rev_flag := 'N';
12775       END IF;
12776    EXCEPTION
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')
12834                ,p_balance_type_code => l_balance_type_code);
12835 
12836    END IF;
12837 
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_000004_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
12898 --Exchange Rate Type
12895  , p_source_27            IN DATE
12896 --Exchange Rate
12897  , p_source_28            IN NUMBER
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 ---------------------------------------------------------------------------------------------------------------
12977 
12978 
12979 --
12980 -- bulk performance
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;
13028 l_adr_value_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;
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) :=
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
13126    
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;
13148    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
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';
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
13217            ,p_balance_type            => l_balance_type_code);
13218    ELSE
13219       NULL;
13220 -- No business flow processing for business flow method of NONE.
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    --
13246          , p_ae_header_id             => l_ae_header_id 
13243    
13244   l_ccid := AcctDerRule_8(
13245            p_application_id           => p_application_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>
13335    ------------------------------------------------------------------------------------
13336    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13337 
13338    ----------------------------------------------------------------------------------
13339    -- 4219869 Business Flow
13343          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13340    -- Update journal entry status -- Need to generate this within IF <condition>
13341    ----------------------------------------------------------------------------------
13342    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
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_000004_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';
13594 l_event_class_code           := 'BORROWED_AND_LENT';
13591 l_component_appl_id          :=  275;
13592 l_amb_context_code           := 'DEFAULT';
13593 l_entity_code                := 'EXPENDITURES';
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';
13600 l_segment                     := NULL;
13601 l_ccid                        := NULL;
13602 l_adr_transaction_coa_id      := NULL;
13603 l_adr_accounting_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;
13717    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
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';
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';
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;
13730    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
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.
13801    -- call analytical criteria
13798    END IF;
13799 
13800    --
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
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'
13840   , p_component_type               => l_component_type
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.
13910    ------------------------------------------------------------------------------------
13907    ------------------------------------------------------------------------------------------------
13908    XLA_AE_LINES_PKG.ValidateCurrentLine;
13909 
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  ------------------------------------------------------------------------------
13942        -- To allow MPA report to determine if it should generate report process
13943        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13944        ------------------------------------------------------------------------------------------
13945 
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
14018        xla_exceptions_pkg.raise_message
14015   WHEN xla_exceptions_pkg.application_exception THEN
14016       RAISE;
14017   WHEN OTHERS THEN
14019            (p_location => 'XLA_00275_AAD_S_000004_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
14074  , p_source_43            IN NUMBER
14075 --Transfer Amount Type
14076  , p_source_67            IN VARCHAR2
14077  , p_source_67_meaning    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 --
14150 --
14147 l_actual_upg_option           VARCHAR2(1);
14148 l_enc_upg_option           VARCHAR2(1);
14149 
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;
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
14215      p_actual_flag :='A';
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
14280    -- 4458381 Public Sector Enh
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 
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';
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;
14330    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
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'
14365    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
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
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'
14448                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14449                                                                              l_component_type
14450                                                                             ,l_component_code
14451                                                                             ,l_component_type_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 
14473                       ,p_level    => C_LEVEL_ERROR
14470         IF (C_LEVEL_ERROR>= g_log_level) THEN
14471                  trace
14472                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
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           ---------------------------------------------------------------------------------------------------
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
14549           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
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 
14576      -- No MPA option is assigned.
14573    -----------------------------------------------------------------------------------------
14574    -- 4262811 Multiperiod Accounting
14575    -----------------------------------------------------------------------------------------
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_000004_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;
14685 l_accted_amt_idx              NUMBER;
14686 l_acc_rev_flag                VARCHAR2(1);
14687 l_accrual_line_num            NUMBER;
14688 l_tmp_amt                     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
14709 
14706 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14707 
14708 ---------------------------------------------------------------------------------------------------------------
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
14824    --
14825    xla_ae_lines_pkg.SetAcctClass(
14826            p_accounting_class_code  => 'COST'
14827          , p_ae_header_id           => l_ae_header_id
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;
14841    --
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
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'
15038                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
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
15039                                     ,p_ae_header_id            =>  NULL
15040                                        );
15041 
15042         IF (C_LEVEL_ERROR>= g_log_level) THEN
15043                  trace
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) :=
15136       XLA_AE_LINES_PKG.ValidateCurrentLine;
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 
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;
15152 --
15153 
15154 --
15155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
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_000004_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;
15270 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15267 l_recog_line_1                NUMBER;
15268 l_recog_line_2                NUMBER;
15269 
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;
15301 --
15302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15303 
15304       trace
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'
15401    --
15398          , p_ae_header_id           => l_ae_header_id
15399          );
15400 
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);
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';
15439    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
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);
15495    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
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    ---------------------------------------------------------------------------------------------------------------
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(
15542            p_application_id           => p_application_id
15543          , p_ae_header_id             => l_ae_header_id 
15544 , p_source_3 => p_source_3
15545 , p_source_4 => p_source_4
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'
15606                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15603                                                                           ,p_lookup_code    => l_component_type_code
15604                                                                          )
15605                                     ,p_token_4                 => 'PRODUCT_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
15647    -------------------------------------------------------------------------------------------
15648    BEGIN
15649       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15650                               (g_array_event(p_event_id).array_value_num('header_index'));
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
15700       END IF;
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 
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_000004_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
15777 --Exchange Rate
15778  , p_source_28            IN NUMBER
15779 --Exchange Rate Type
15780  , p_source_29            IN VARCHAR2
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;
15837 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
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;
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
15915 l_tmp_amt                    := NULL;          -- 4262811
15916 --
15917  
15918 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
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
15964    --
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);
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;
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';
16038    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
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';
16059    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
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);
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'
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
16161                                     ,p_token_2                 => 'LINE_TYPE_NAME'
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
16173                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16170                                                                            )
16171                                     ,p_token_3                 => 'OWNER'
16172                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
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
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;
16258       ELSE
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) :=
16267           -- 5132302
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;
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_000004_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 
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
16399 l_entered_amt_idx             NUMBER;
16396 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16397 
16398 -- 4262811 Variables ------------------------------------------------------------------------------------------
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
16531       ,p_event_type_code            => l_event_type_code
16528    --
16529    xla_ae_lines_pkg.SetAcctLineType
16530       (p_component_type             => l_component_type
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
16535       ,p_accounting_line_type_code  => l_component_type_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;
16628    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
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';
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);
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 
16638    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
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
16744                                                                             ,l_entity_code
16741                                                                             ,l_component_type_code
16742                                                                             ,l_component_appl_id
16743                                                                             ,l_amb_context_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                                                                          )
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
16755                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_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;
16837           ---------------------------------------------------------------------------------------------------
16834       ELSE
16835           ---------------------------------------------------------------------------------------------------
16836           -- 4262811a Switch Sign
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;
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')
16859                ,p_balance_type_code => l_balance_type_code);
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_000004_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);
16968 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16965 l_adr_value_combination_id    NUMBER;
16966 l_adr_value_segment_code      VARCHAR2(30);
16967 
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 
16998 ---------------------------------------------------------------------------------------------------------------
16999 
17000 
17001 --
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'
17093          , p_merge_duplicate_code       => 'N'
17090          , p_gl_transfer_mode_code      => 'S'
17091          , p_acct_entry_type_code       => 'A'
17092          , p_switch_side_flag           => 'Y'
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 
17141    -- 4458381 Public Sector Enh
17142    
17143    --
17144    -- set accounting attributes for the line type
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;
17194    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
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';
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;
17236 -- No business flow processing for business flow method of NONE.
17237    END IF;
17238 
17239    --
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
17312                                                                             ,l_component_code
17309                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17310                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17311                                                                              l_component_type
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;
17354 
17355    ----------------------------------------------------------------------------------
17356    -- 4219869 Business Flow
17357    -- Update journal entry status -- Need to generate this within IF <condition>
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
17401       --
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 
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_000004_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
17478 --Allow Account Override Flag
17479  , p_source_4            IN VARCHAR2
17480 --Adjustment Cost CCID
17481  , p_source_5            IN NUMBER
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 )
17514 IS
17515 
17516 l_component_type              VARCHAR2(80);
17517 l_component_code              VARCHAR2(30);
17518 l_component_type_code         VARCHAR2(1);
17519 l_component_appl_id           INTEGER;
17520 l_amb_context_code            VARCHAR2(30);
17521 l_entity_code                 VARCHAR2(30);
17522 l_event_class_code            VARCHAR2(30);
17523 l_ae_header_id                NUMBER;
17527 --
17524 l_event_type_code             VARCHAR2(30);
17525 l_line_definition_code        VARCHAR2(30);
17526 l_line_definition_owner_code  VARCHAR2(1);
17528 -- adr variables
17529 l_segment                     VARCHAR2(30);
17530 l_ccid                        NUMBER;
17531 l_adr_transaction_coa_id      NUMBER;
17532 l_adr_accounting_coa_id       NUMBER;
17533 l_adr_flexfield_segment_code  VARCHAR2(30);
17534 l_adr_flex_value_set_id       NUMBER;
17535 l_adr_value_type_code         VARCHAR2(30);
17536 l_adr_value_combination_id    NUMBER;
17537 l_adr_value_segment_code      VARCHAR2(30);
17538 
17539 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17540 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17541 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17542 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17543 
17544 -- 4262811 Variables ------------------------------------------------------------------------------------------
17545 l_entered_amt_idx             NUMBER;
17546 l_accted_amt_idx              NUMBER;
17547 l_acc_rev_flag                VARCHAR2(1);
17548 l_accrual_line_num            NUMBER;
17549 l_tmp_amt                     NUMBER;
17550 l_acc_rev_natural_side_code   VARCHAR2(1);
17551 
17552 l_num_entries                 NUMBER;
17553 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17554 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17555 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17556 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17557 l_recog_line_1                NUMBER;
17558 l_recog_line_2                NUMBER;
17559 
17560 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17561 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17562 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17563 
17564 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17565 
17566 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17567 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17568 
17569 ---------------------------------------------------------------------------------------------------------------
17570 
17571 
17572 --
17573 -- bulk performance
17574 --
17575 l_balance_type_code           VARCHAR2(1);
17576 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17577 l_log_module                  VARCHAR2(240);
17578 
17579 --
17580 -- Upgrade strategy
17581 --
17582 l_actual_upg_option           VARCHAR2(1);
17583 l_enc_upg_option           VARCHAR2(1);
17584 
17585 --
17586 BEGIN
17587 --
17588 IF g_log_enabled THEN
17589       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
17590 END IF;
17591 --
17592 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17593 
17594       trace
17595          (p_msg      => 'BEGIN of AcctLineType_46'
17596          ,p_level    => C_LEVEL_PROCEDURE
17597          ,p_module   => l_log_module);
17598 
17599 END IF;
17600 --
17601 l_component_type             := 'AMB_JLT';
17602 l_component_code             := 'PA_RAW_COST';
17603 l_component_type_code        := 'S';
17604 l_component_appl_id          :=  275;
17605 l_amb_context_code           := 'DEFAULT';
17606 l_entity_code                := 'EXPENDITURES';
17607 l_event_class_code           := 'MISC_COST';
17608 l_event_type_code            := 'MISC_COST_ALL';
17609 l_line_definition_owner_code := 'S';
17610 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
17611 --
17612 l_balance_type_code          := 'A';
17613 l_segment                     := NULL;
17614 l_ccid                        := NULL;
17615 l_adr_transaction_coa_id      := NULL;
17616 l_adr_accounting_coa_id       := NULL;
17617 l_adr_flexfield_segment_code  := NULL;
17618 l_adr_flex_value_set_id       := NULL;
17619 l_adr_value_type_code         := NULL;
17620 l_adr_value_combination_id    := NULL;
17621 l_adr_value_segment_code      := NULL;
17622 
17623 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17624 l_bflow_class_code           := '';    -- 4219869 Business Flow
17625 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17626 l_budgetary_control_flag     := 'N';
17627 
17628 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17629 l_bflow_applied_to_amt       := NULL; -- 5132302
17630 l_entered_amt_idx            := NULL;          -- 4262811
17631 l_accted_amt_idx             := NULL;          -- 4262811
17632 l_acc_rev_flag               := NULL;          -- 4262811
17633 l_accrual_line_num           := NULL;          -- 4262811
17634 l_tmp_amt                    := NULL;          -- 4262811
17635 --
17636  
17637 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17638     l_balance_type_code <> 'B' THEN
17639 
17640    --
17641    XLA_AE_LINES_PKG.SetNewLine;
17642 
17643    p_balance_type_code          := l_balance_type_code;
17644    -- set the flag so later we will know whether the gain loss line needs to be created
17645    
17646    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17647      p_actual_flag :='A';
17648    END IF;
17649 
17650    --
17654                                       p_header_num   => 0); -- 4262811
17651    -- bulk performance
17652    --
17653    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17655    --
17656    -- set accounting line options
17657    --
17658    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17659            p_natural_side_code          => 'D'
17660          , p_gain_or_loss_flag          => 'N'
17661          , p_gl_transfer_mode_code      => 'S'
17662          , p_acct_entry_type_code       => 'A'
17663          , p_switch_side_flag           => 'Y'
17664          , p_merge_duplicate_code       => 'N'
17665          );
17666    --
17667    l_acc_rev_natural_side_code := 'C';  -- 4262811
17668    -- 
17669    --
17670    -- set accounting line type info
17671    --
17672    xla_ae_lines_pkg.SetAcctLineType
17673       (p_component_type             => l_component_type
17674       ,p_event_type_code            => l_event_type_code
17675       ,p_line_definition_owner_code => l_line_definition_owner_code
17676       ,p_line_definition_code       => l_line_definition_code
17677       ,p_accounting_line_code       => l_component_code
17678       ,p_accounting_line_type_code  => l_component_type_code
17679       ,p_accounting_line_appl_id    => l_component_appl_id
17680       ,p_amb_context_code           => l_amb_context_code
17681       ,p_entity_code                => l_entity_code
17682       ,p_event_class_code           => l_event_class_code);
17683    --
17684    -- set accounting class
17685    --
17686    xla_ae_lines_pkg.SetAcctClass(
17687            p_accounting_class_code  => 'COST'
17688          , p_ae_header_id           => l_ae_header_id
17689          );
17690 
17691    --
17692    -- set rounding class
17693    --
17694    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17695                       'COST';
17696 
17697    --
17698    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17699    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17700    --
17701    -- bulk performance
17702    --
17703    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17704 
17705    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17706       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17707 
17708    -- 4955764
17709    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17711 
17712    -- 4458381 Public Sector Enh
17713    
17714    --
17715    -- set accounting attributes for the line type
17716    --
17717    l_entered_amt_idx := 22;
17718    l_accted_amt_idx  := 27;
17719    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17720    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
17721    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
17722    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
17723    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
17724    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
17725    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
17726    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
17727    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
17728    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
17729    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
17730    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
17731    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
17732    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
17733    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
17734    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
17735    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
17736    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
17737    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
17738    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
17739    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
17740    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
17741    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
17742    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
17743    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
17744    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
17745    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
17746    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
17747    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
17748    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
17749    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
17750    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
17751    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
17752    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
17753    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
17754    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
17755    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
17759    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
17756    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
17757    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
17758    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
17760    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
17761    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
17762    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
17763    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
17764    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
17765    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
17766    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
17767    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
17768    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
17769    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
17770    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
17771    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
17772    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
17773    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
17774    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
17775    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
17776    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
17777    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
17778    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
17779    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
17780 
17781    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17782    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17783 
17784    ---------------------------------------------------------------------------------------------------------------
17785    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17786    ---------------------------------------------------------------------------------------------------------------
17787    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17788 
17789    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17790    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17791 
17792    IF xla_accounting_cache_pkg.GetValueChar
17793          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17794          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17795    AND l_bflow_method_code = 'PRIOR_ENTRY'
17796 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17797    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17798          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17799        )
17800    THEN
17801          xla_ae_lines_pkg.BflowUpgEntry
17802            (p_business_method_code    => l_bflow_method_code
17803            ,p_business_class_code     => l_bflow_class_code
17804            ,p_balance_type            => l_balance_type_code);
17805    ELSE
17806       NULL;
17807 -- No business flow processing for business flow method of NONE.
17808    END IF;
17809 
17810    --
17811    -- call analytical criteria
17812    --
17813    
17814    --
17815    -- call description
17816    --
17817    -- No description or it is inherited.
17818    --
17819    -- call ADRs
17820    -- Bug 4922099
17821    --
17822    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17823         (NVL(l_actual_upg_option, 'N') = 'O') OR
17824         (NVL(l_enc_upg_option, 'N') = 'O')
17825       )
17826    THEN
17827    NULL;
17828    --
17829    --
17830    
17831   l_ccid := AcctDerRule_3(
17832            p_application_id           => p_application_id
17833          , p_ae_header_id             => l_ae_header_id 
17834 , p_source_3 => p_source_3
17835 , p_source_4 => p_source_4
17836 , p_source_5 => p_source_5
17837          , x_transaction_coa_id       => l_adr_transaction_coa_id
17838          , x_accounting_coa_id        => l_adr_accounting_coa_id
17839          , x_value_type_code          => l_adr_value_type_code
17840          , p_side                     => 'NA'
17841    );
17842 
17843    xla_ae_lines_pkg.set_ccid(
17844     p_code_combination_id          => l_ccid
17845   , p_value_type_code              => l_adr_value_type_code
17846   , p_transaction_coa_id           => l_adr_transaction_coa_id
17847   , p_accounting_coa_id            => l_adr_accounting_coa_id
17848   , p_adr_code                     => 'PA_COST_ACCT_RULE'
17849   , p_adr_type_code                => 'S'
17850   , p_component_type               => l_component_type
17851   , p_component_code               => l_component_code
17852   , p_component_type_code          => l_component_type_code
17853   , p_component_appl_id            => l_component_appl_id
17854   , p_amb_context_code             => l_amb_context_code
17855   , p_side                         => 'NA'
17856   );
17857 
17858 
17859    --
17860    --
17861    END IF;
17862    --
17863    -- Bug 4922099
17864    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17865           (NVL(l_enc_upg_option, 'N') = 'O')
17866         ) AND
17867         (l_bflow_method_code = 'PRIOR_ENTRY')
17868       )
17869    THEN
17870       IF
17871       --
17872       1 = 2
17873       --
17877                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17874       THEN
17875       xla_accounting_err_pkg.build_message
17876                                     (p_appli_s_name            => 'XLA'
17878                                     ,p_token_1                 => 'LINE_NUMBER'
17879                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17880                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17881                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17882                                                                              l_component_type
17883                                                                             ,l_component_code
17884                                                                             ,l_component_type_code
17885                                                                             ,l_component_appl_id
17886                                                                             ,l_amb_context_code
17887                                                                             ,l_entity_code
17888                                                                             ,l_event_class_code
17889                                                                            )
17890                                     ,p_token_3                 => 'OWNER'
17891                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17892                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17893                                                                           ,p_lookup_code    => l_component_type_code
17894                                                                          )
17895                                     ,p_token_4                 => 'PRODUCT_NAME'
17896                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17897                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17898                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17899                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17900                                     ,p_ae_header_id            =>  NULL
17901                                        );
17902 
17903         IF (C_LEVEL_ERROR>= g_log_level) THEN
17904                  trace
17905                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17906                       ,p_level    => C_LEVEL_ERROR
17907                       ,p_module   => l_log_module);
17908         END IF;
17909       END IF;
17910    END IF;
17911    --
17912    --
17913    ------------------------------------------------------------------------------------------------
17914    -- 4219869 Business Flow
17915    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17916    -- Prior Entry.  Currently, the following code is always generated.
17917    ------------------------------------------------------------------------------------------------
17918    XLA_AE_LINES_PKG.ValidateCurrentLine;
17919 
17920    ------------------------------------------------------------------------------------
17921    -- 4219869 Business Flow
17922    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17923    ------------------------------------------------------------------------------------
17924    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17925 
17926    ----------------------------------------------------------------------------------
17927    -- 4219869 Business Flow
17928    -- Update journal entry status -- Need to generate this within IF <condition>
17929    ----------------------------------------------------------------------------------
17930    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17931          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17932          ,p_balance_type_code => l_balance_type_code
17933          );
17934 
17935    -------------------------------------------------------------------------------------------
17936    -- 4262811 - Generate the Accrual Reversal lines
17937    -------------------------------------------------------------------------------------------
17938    BEGIN
17939       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17940                               (g_array_event(p_event_id).array_value_num('header_index'));
17941       IF l_acc_rev_flag IS NULL THEN
17942          l_acc_rev_flag := 'N';
17943       END IF;
17944    EXCEPTION
17945       WHEN OTHERS THEN
17946          l_acc_rev_flag := 'N';
17947    END;
17948    --
17949    IF (l_acc_rev_flag = 'Y') THEN
17950 
17951        -- 4645092  ------------------------------------------------------------------------------
17952        -- To allow MPA report to determine if it should generate report process
17953        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17954        ------------------------------------------------------------------------------------------
17955 
17956        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17957        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17958 
17959        --
17960        -- Update the line information that should be overwritten
17961        --
17962        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17966        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17963                                          p_header_num   => 1);
17964        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17965 
17967 
17968        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17969           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17970        END IF;
17971 
17972       --
17973       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17974       --
17975       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17976           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17977       ELSE
17978           ---------------------------------------------------------------------------------------------------
17979           -- 4262811a Switch Sign
17980           ---------------------------------------------------------------------------------------------------
17981           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17982           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17983                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17984           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17985                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17986           -- 5132302
17987           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17988                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17989 
17990       END IF;
17991 
17992       -- 4955764
17993       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17994       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17995 
17996 
17997       XLA_AE_LINES_PKG.ValidateCurrentLine;
17998       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17999 
18000       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18001                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18002                ,p_balance_type_code => l_balance_type_code);
18003 
18004    END IF;
18005 
18006    -----------------------------------------------------------------------------------------
18007    -- 4262811 Multiperiod Accounting
18008    -----------------------------------------------------------------------------------------
18009      -- No MPA option is assigned.
18010 
18011 
18012 END IF;
18013 --
18014 
18015 --
18016 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18017    trace
18018       (p_msg      => 'END of AcctLineType_46'
18019       ,p_level    => C_LEVEL_PROCEDURE
18020       ,p_module   => l_log_module);
18021 END IF;
18022 --
18023 EXCEPTION
18024   WHEN xla_exceptions_pkg.application_exception THEN
18025       RAISE;
18026   WHEN OTHERS THEN
18027        xla_exceptions_pkg.raise_message
18028            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_46');
18029 END AcctLineType_46;
18030 --
18031 
18032 ---------------------------------------
18033 --
18034 -- PRIVATE FUNCTION
18035 --         AcctLineType_47
18036 --
18037 ---------------------------------------
18038 PROCEDURE AcctLineType_47 (
18039   p_application_id        IN NUMBER
18040  ,p_event_id              IN NUMBER
18041  ,p_calculate_acctd_flag  IN VARCHAR2
18042  ,p_calculate_g_l_flag    IN VARCHAR2
18043  ,p_actual_flag           IN OUT VARCHAR2
18044  ,p_balance_type_code     OUT VARCHAR2
18045  ,p_gain_or_loss_ref      OUT VARCHAR2
18046  
18047 --Cost CCID
18048  , p_source_3            IN NUMBER
18049 --Allow Account Override Flag
18050  , p_source_4            IN VARCHAR2
18051 --Adjustment Cost CCID
18052  , p_source_5            IN NUMBER
18053 --Cost Clearing CCID
18054  , p_source_6            IN NUMBER
18055 --Reversing Line Flag
18056  , p_source_22            IN VARCHAR2
18057 --Actual Upgrade Credit Accounting Class
18058  , p_source_23            IN VARCHAR2
18059 --Entered Raw Cost
18060  , p_source_24            IN NUMBER
18061 --Entered Currency Code
18062  , p_source_25            IN VARCHAR2
18063 --Accounted Raw Cost
18064  , p_source_26            IN NUMBER
18065 --Exchange Rate Date
18066  , p_source_27            IN DATE
18067 --Exchange Rate
18068  , p_source_28            IN NUMBER
18069 --Exchange Rate Type
18070  , p_source_29            IN VARCHAR2
18071 --Actual Upgrade Debit Accounting Class
18072  , p_source_30            IN VARCHAR2
18073 --Use Actuals Upgrade Attributes Flag
18074  , p_source_31            IN VARCHAR2
18075 --Expenditure Item ID
18076  , p_source_32            IN NUMBER
18077 --Cost Distribution Line Number
18078  , p_source_33            IN NUMBER
18079 --Line Type
18080  , p_source_34            IN VARCHAR2
18081  , p_source_34_meaning    IN VARCHAR2
18082 --Reversed Line Number
18083  , p_source_35            IN NUMBER
18084 )
18085 IS
18086 
18090 l_component_appl_id           INTEGER;
18087 l_component_type              VARCHAR2(80);
18088 l_component_code              VARCHAR2(30);
18089 l_component_type_code         VARCHAR2(1);
18091 l_amb_context_code            VARCHAR2(30);
18092 l_entity_code                 VARCHAR2(30);
18093 l_event_class_code            VARCHAR2(30);
18094 l_ae_header_id                NUMBER;
18095 l_event_type_code             VARCHAR2(30);
18096 l_line_definition_code        VARCHAR2(30);
18097 l_line_definition_owner_code  VARCHAR2(1);
18098 --
18099 -- adr variables
18100 l_segment                     VARCHAR2(30);
18101 l_ccid                        NUMBER;
18102 l_adr_transaction_coa_id      NUMBER;
18103 l_adr_accounting_coa_id       NUMBER;
18104 l_adr_flexfield_segment_code  VARCHAR2(30);
18105 l_adr_flex_value_set_id       NUMBER;
18106 l_adr_value_type_code         VARCHAR2(30);
18107 l_adr_value_combination_id    NUMBER;
18108 l_adr_value_segment_code      VARCHAR2(30);
18109 
18110 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18111 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18112 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18113 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18114 
18115 -- 4262811 Variables ------------------------------------------------------------------------------------------
18116 l_entered_amt_idx             NUMBER;
18117 l_accted_amt_idx              NUMBER;
18118 l_acc_rev_flag                VARCHAR2(1);
18119 l_accrual_line_num            NUMBER;
18120 l_tmp_amt                     NUMBER;
18121 l_acc_rev_natural_side_code   VARCHAR2(1);
18122 
18123 l_num_entries                 NUMBER;
18124 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18125 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18126 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18127 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18128 l_recog_line_1                NUMBER;
18129 l_recog_line_2                NUMBER;
18130 
18131 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18132 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18133 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18134 
18135 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18136 
18137 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18138 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18139 
18140 ---------------------------------------------------------------------------------------------------------------
18141 
18142 
18143 --
18144 -- bulk performance
18145 --
18146 l_balance_type_code           VARCHAR2(1);
18147 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18148 l_log_module                  VARCHAR2(240);
18149 
18150 --
18151 -- Upgrade strategy
18152 --
18153 l_actual_upg_option           VARCHAR2(1);
18154 l_enc_upg_option           VARCHAR2(1);
18155 
18156 --
18157 BEGIN
18158 --
18159 IF g_log_enabled THEN
18160       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
18161 END IF;
18162 --
18163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18164 
18165       trace
18166          (p_msg      => 'BEGIN of AcctLineType_47'
18167          ,p_level    => C_LEVEL_PROCEDURE
18168          ,p_module   => l_log_module);
18169 
18170 END IF;
18171 --
18172 l_component_type             := 'AMB_JLT';
18173 l_component_code             := 'PA_RAW_COST_ADJ';
18174 l_component_type_code        := 'S';
18175 l_component_appl_id          :=  275;
18176 l_amb_context_code           := 'DEFAULT';
18177 l_entity_code                := 'EXPENDITURES';
18178 l_event_class_code           := 'USG_COST_ADJ';
18179 l_event_type_code            := 'USG_COST_ADJ_ALL';
18180 l_line_definition_owner_code := 'S';
18181 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
18182 --
18183 l_balance_type_code          := 'A';
18184 l_segment                     := NULL;
18185 l_ccid                        := NULL;
18186 l_adr_transaction_coa_id      := NULL;
18187 l_adr_accounting_coa_id       := NULL;
18188 l_adr_flexfield_segment_code  := NULL;
18189 l_adr_flex_value_set_id       := NULL;
18190 l_adr_value_type_code         := NULL;
18191 l_adr_value_combination_id    := NULL;
18192 l_adr_value_segment_code      := NULL;
18193 
18194 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18195 l_bflow_class_code           := '';    -- 4219869 Business Flow
18196 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18197 l_budgetary_control_flag     := 'N';
18198 
18199 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18200 l_bflow_applied_to_amt       := NULL; -- 5132302
18201 l_entered_amt_idx            := NULL;          -- 4262811
18202 l_accted_amt_idx             := NULL;          -- 4262811
18203 l_acc_rev_flag               := NULL;          -- 4262811
18204 l_accrual_line_num           := NULL;          -- 4262811
18205 l_tmp_amt                    := NULL;          -- 4262811
18206 --
18207  
18211    --
18208 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18209     l_balance_type_code <> 'B' THEN
18210 
18212    XLA_AE_LINES_PKG.SetNewLine;
18213 
18214    p_balance_type_code          := l_balance_type_code;
18215    -- set the flag so later we will know whether the gain loss line needs to be created
18216    
18217    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18218      p_actual_flag :='A';
18219    END IF;
18220 
18221    --
18222    -- bulk performance
18223    --
18224    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18225                                       p_header_num   => 0); -- 4262811
18226    --
18227    -- set accounting line options
18228    --
18229    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18230            p_natural_side_code          => 'D'
18231          , p_gain_or_loss_flag          => 'N'
18232          , p_gl_transfer_mode_code      => 'S'
18233          , p_acct_entry_type_code       => 'A'
18234          , p_switch_side_flag           => 'Y'
18235          , p_merge_duplicate_code       => 'N'
18236          );
18237    --
18238    l_acc_rev_natural_side_code := 'C';  -- 4262811
18239    -- 
18240    --
18241    -- set accounting line type info
18242    --
18243    xla_ae_lines_pkg.SetAcctLineType
18244       (p_component_type             => l_component_type
18245       ,p_event_type_code            => l_event_type_code
18246       ,p_line_definition_owner_code => l_line_definition_owner_code
18247       ,p_line_definition_code       => l_line_definition_code
18248       ,p_accounting_line_code       => l_component_code
18249       ,p_accounting_line_type_code  => l_component_type_code
18250       ,p_accounting_line_appl_id    => l_component_appl_id
18251       ,p_amb_context_code           => l_amb_context_code
18252       ,p_entity_code                => l_entity_code
18253       ,p_event_class_code           => l_event_class_code);
18254    --
18255    -- set accounting class
18256    --
18257    xla_ae_lines_pkg.SetAcctClass(
18258            p_accounting_class_code  => 'COST'
18259          , p_ae_header_id           => l_ae_header_id
18260          );
18261 
18262    --
18263    -- set rounding class
18264    --
18265    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18266                       'COST';
18267 
18268    --
18269    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18270    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18271    --
18272    -- bulk performance
18273    --
18274    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18275 
18276    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18277       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18278 
18279    -- 4955764
18280    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18281       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18282 
18283    -- 4458381 Public Sector Enh
18284    
18285    --
18286    -- set accounting attributes for the line type
18287    --
18288    l_entered_amt_idx := 22;
18289    l_accted_amt_idx  := 27;
18290    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18291    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18292    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
18293    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
18294    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
18295    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
18296    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
18297    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
18298    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
18299    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
18300    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
18301    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
18302    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
18303    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
18304    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
18305    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
18306    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
18307    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
18308    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
18309    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
18310    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
18311    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
18312    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
18313    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
18314    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
18315    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
18316    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
18317    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
18318    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
18319    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
18323    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
18320    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
18321    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
18322    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
18324    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
18325    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
18326    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
18327    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
18328    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
18329    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
18330    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
18331    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
18332    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
18333    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
18334    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
18335    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
18336    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
18337    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
18338    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
18339    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
18340    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
18341    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
18342    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
18343    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
18344    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
18345    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
18346    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
18347    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
18348    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
18349    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
18350    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
18351 
18352    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18353    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18354 
18355    ---------------------------------------------------------------------------------------------------------------
18356    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18357    ---------------------------------------------------------------------------------------------------------------
18358    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18359 
18360    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18361    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18362 
18363    IF xla_accounting_cache_pkg.GetValueChar
18364          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18365          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18366    AND l_bflow_method_code = 'PRIOR_ENTRY'
18367 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18368    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18369          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18370        )
18371    THEN
18372          xla_ae_lines_pkg.BflowUpgEntry
18373            (p_business_method_code    => l_bflow_method_code
18374            ,p_business_class_code     => l_bflow_class_code
18375            ,p_balance_type            => l_balance_type_code);
18376    ELSE
18377       NULL;
18378 -- No business flow processing for business flow method of NONE.
18379    END IF;
18380 
18381    --
18382    -- call analytical criteria
18383    --
18384    
18385    --
18386    -- call description
18387    --
18388    -- No description or it is inherited.
18389    --
18390    -- call ADRs
18391    -- Bug 4922099
18392    --
18393    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18394         (NVL(l_actual_upg_option, 'N') = 'O') OR
18395         (NVL(l_enc_upg_option, 'N') = 'O')
18396       )
18397    THEN
18398    NULL;
18399    --
18400    --
18401    
18402   l_ccid := AcctDerRule_4(
18403            p_application_id           => p_application_id
18404          , p_ae_header_id             => l_ae_header_id 
18405 , p_source_4 => p_source_4
18406 , p_source_5 => p_source_5
18407          , x_transaction_coa_id       => l_adr_transaction_coa_id
18408          , x_accounting_coa_id        => l_adr_accounting_coa_id
18409          , x_value_type_code          => l_adr_value_type_code
18410          , p_side                     => 'NA'
18411    );
18412 
18413    xla_ae_lines_pkg.set_ccid(
18414     p_code_combination_id          => l_ccid
18415   , p_value_type_code              => l_adr_value_type_code
18416   , p_transaction_coa_id           => l_adr_transaction_coa_id
18417   , p_accounting_coa_id            => l_adr_accounting_coa_id
18418   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
18419   , p_adr_type_code                => 'S'
18420   , p_component_type               => l_component_type
18421   , p_component_code               => l_component_code
18422   , p_component_type_code          => l_component_type_code
18423   , p_component_appl_id            => l_component_appl_id
18424   , p_amb_context_code             => l_amb_context_code
18425   , p_side                         => 'NA'
18426   );
18427 
18428 
18432    --
18429    --
18430    --
18431    END IF;
18433    -- Bug 4922099
18434    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18435           (NVL(l_enc_upg_option, 'N') = 'O')
18436         ) AND
18437         (l_bflow_method_code = 'PRIOR_ENTRY')
18438       )
18439    THEN
18440       IF
18441       --
18442       1 = 2
18443       --
18444       THEN
18445       xla_accounting_err_pkg.build_message
18446                                     (p_appli_s_name            => 'XLA'
18447                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18448                                     ,p_token_1                 => 'LINE_NUMBER'
18449                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18450                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18451                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18452                                                                              l_component_type
18453                                                                             ,l_component_code
18454                                                                             ,l_component_type_code
18455                                                                             ,l_component_appl_id
18456                                                                             ,l_amb_context_code
18457                                                                             ,l_entity_code
18458                                                                             ,l_event_class_code
18459                                                                            )
18460                                     ,p_token_3                 => 'OWNER'
18461                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18462                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18463                                                                           ,p_lookup_code    => l_component_type_code
18464                                                                          )
18465                                     ,p_token_4                 => 'PRODUCT_NAME'
18466                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18467                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18468                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18469                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18470                                     ,p_ae_header_id            =>  NULL
18471                                        );
18472 
18473         IF (C_LEVEL_ERROR>= g_log_level) THEN
18474                  trace
18475                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18476                       ,p_level    => C_LEVEL_ERROR
18477                       ,p_module   => l_log_module);
18478         END IF;
18479       END IF;
18480    END IF;
18481    --
18482    --
18483    ------------------------------------------------------------------------------------------------
18484    -- 4219869 Business Flow
18485    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18486    -- Prior Entry.  Currently, the following code is always generated.
18487    ------------------------------------------------------------------------------------------------
18488    XLA_AE_LINES_PKG.ValidateCurrentLine;
18489 
18490    ------------------------------------------------------------------------------------
18491    -- 4219869 Business Flow
18492    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18493    ------------------------------------------------------------------------------------
18494    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18495 
18496    ----------------------------------------------------------------------------------
18497    -- 4219869 Business Flow
18498    -- Update journal entry status -- Need to generate this within IF <condition>
18499    ----------------------------------------------------------------------------------
18500    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18501          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18502          ,p_balance_type_code => l_balance_type_code
18503          );
18504 
18505    -------------------------------------------------------------------------------------------
18506    -- 4262811 - Generate the Accrual Reversal lines
18507    -------------------------------------------------------------------------------------------
18508    BEGIN
18509       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18510                               (g_array_event(p_event_id).array_value_num('header_index'));
18511       IF l_acc_rev_flag IS NULL THEN
18512          l_acc_rev_flag := 'N';
18513       END IF;
18514    EXCEPTION
18515       WHEN OTHERS THEN
18516          l_acc_rev_flag := 'N';
18517    END;
18518    --
18519    IF (l_acc_rev_flag = 'Y') THEN
18520 
18521        -- 4645092  ------------------------------------------------------------------------------
18522        -- To allow MPA report to determine if it should generate report process
18526        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18523        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18524        ------------------------------------------------------------------------------------------
18525 
18527        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18528 
18529        --
18530        -- Update the line information that should be overwritten
18531        --
18532        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18533                                          p_header_num   => 1);
18534        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18535 
18536        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18537 
18538        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18539           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18540        END IF;
18541 
18542       --
18543       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18544       --
18545       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18546           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18547       ELSE
18548           ---------------------------------------------------------------------------------------------------
18549           -- 4262811a Switch Sign
18550           ---------------------------------------------------------------------------------------------------
18551           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18552           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18553                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18554           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18555                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18556           -- 5132302
18557           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18558                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18559 
18560       END IF;
18561 
18562       -- 4955764
18563       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18564       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18565 
18566 
18567       XLA_AE_LINES_PKG.ValidateCurrentLine;
18568       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18569 
18570       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18571                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18572                ,p_balance_type_code => l_balance_type_code);
18573 
18574    END IF;
18575 
18576    -----------------------------------------------------------------------------------------
18577    -- 4262811 Multiperiod Accounting
18578    -----------------------------------------------------------------------------------------
18579      -- No MPA option is assigned.
18580 
18581 
18582 END IF;
18583 --
18584 
18585 --
18586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18587    trace
18588       (p_msg      => 'END of AcctLineType_47'
18589       ,p_level    => C_LEVEL_PROCEDURE
18590       ,p_module   => l_log_module);
18591 END IF;
18592 --
18593 EXCEPTION
18594   WHEN xla_exceptions_pkg.application_exception THEN
18595       RAISE;
18596   WHEN OTHERS THEN
18597        xla_exceptions_pkg.raise_message
18598            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_47');
18599 END AcctLineType_47;
18600 --
18601 
18602 ---------------------------------------
18603 --
18604 -- PRIVATE FUNCTION
18605 --         AcctLineType_48
18606 --
18607 ---------------------------------------
18608 PROCEDURE AcctLineType_48 (
18609   p_application_id        IN NUMBER
18610  ,p_event_id              IN NUMBER
18611  ,p_calculate_acctd_flag  IN VARCHAR2
18612  ,p_calculate_g_l_flag    IN VARCHAR2
18613  ,p_actual_flag           IN OUT VARCHAR2
18614  ,p_balance_type_code     OUT VARCHAR2
18615  ,p_gain_or_loss_ref      OUT VARCHAR2
18616  
18617 --Cost CCID
18618  , p_source_3            IN NUMBER
18619 --Allow Account Override Flag
18620  , p_source_4            IN VARCHAR2
18621 --Adjustment Cost CCID
18622  , p_source_5            IN NUMBER
18623 --Cost Clearing CCID
18624  , p_source_6            IN NUMBER
18625 --Exchange Rate Variance Flag
18626  , p_source_21            IN VARCHAR2
18627 --Reversing Line Flag
18628  , p_source_22            IN VARCHAR2
18629 --Actual Upgrade Credit Accounting Class
18630  , p_source_23            IN VARCHAR2
18631 --Entered Raw Cost
18632  , p_source_24            IN NUMBER
18633 --Entered Currency Code
18634  , p_source_25            IN VARCHAR2
18635 --Accounted Raw Cost
18636  , p_source_26            IN NUMBER
18637 --Exchange Rate Date
18638  , p_source_27            IN DATE
18639 --Exchange Rate
18640  , p_source_28            IN NUMBER
18641 --Exchange Rate Type
18642  , p_source_29            IN VARCHAR2
18643 --Actual Upgrade Debit Accounting Class
18644  , p_source_30            IN VARCHAR2
18645 --Use Actuals Upgrade Attributes Flag
18649 --Cost Distribution Line Number
18646  , p_source_31            IN VARCHAR2
18647 --Expenditure Item ID
18648  , p_source_32            IN NUMBER
18650  , p_source_33            IN NUMBER
18651 --Line Type
18652  , p_source_34            IN VARCHAR2
18653  , p_source_34_meaning    IN VARCHAR2
18654 --Reversed Line Number
18655  , p_source_35            IN NUMBER
18656 )
18657 IS
18658 
18659 l_component_type              VARCHAR2(80);
18660 l_component_code              VARCHAR2(30);
18661 l_component_type_code         VARCHAR2(1);
18662 l_component_appl_id           INTEGER;
18663 l_amb_context_code            VARCHAR2(30);
18664 l_entity_code                 VARCHAR2(30);
18665 l_event_class_code            VARCHAR2(30);
18666 l_ae_header_id                NUMBER;
18667 l_event_type_code             VARCHAR2(30);
18668 l_line_definition_code        VARCHAR2(30);
18669 l_line_definition_owner_code  VARCHAR2(1);
18670 --
18671 -- adr variables
18672 l_segment                     VARCHAR2(30);
18673 l_ccid                        NUMBER;
18674 l_adr_transaction_coa_id      NUMBER;
18675 l_adr_accounting_coa_id       NUMBER;
18676 l_adr_flexfield_segment_code  VARCHAR2(30);
18677 l_adr_flex_value_set_id       NUMBER;
18678 l_adr_value_type_code         VARCHAR2(30);
18679 l_adr_value_combination_id    NUMBER;
18680 l_adr_value_segment_code      VARCHAR2(30);
18681 
18682 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18683 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18684 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18685 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18686 
18687 -- 4262811 Variables ------------------------------------------------------------------------------------------
18688 l_entered_amt_idx             NUMBER;
18689 l_accted_amt_idx              NUMBER;
18690 l_acc_rev_flag                VARCHAR2(1);
18691 l_accrual_line_num            NUMBER;
18692 l_tmp_amt                     NUMBER;
18693 l_acc_rev_natural_side_code   VARCHAR2(1);
18694 
18695 l_num_entries                 NUMBER;
18696 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18697 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18698 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18699 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18700 l_recog_line_1                NUMBER;
18701 l_recog_line_2                NUMBER;
18702 
18703 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18704 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18705 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18706 
18707 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18708 
18709 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18710 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18711 
18712 ---------------------------------------------------------------------------------------------------------------
18713 
18714 
18715 --
18716 -- bulk performance
18717 --
18718 l_balance_type_code           VARCHAR2(1);
18719 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18720 l_log_module                  VARCHAR2(240);
18721 
18722 --
18723 -- Upgrade strategy
18724 --
18725 l_actual_upg_option           VARCHAR2(1);
18726 l_enc_upg_option           VARCHAR2(1);
18727 
18728 --
18729 BEGIN
18730 --
18731 IF g_log_enabled THEN
18732       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
18733 END IF;
18734 --
18735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18736 
18737       trace
18738          (p_msg      => 'BEGIN of AcctLineType_48'
18739          ,p_level    => C_LEVEL_PROCEDURE
18740          ,p_module   => l_log_module);
18741 
18742 END IF;
18743 --
18744 l_component_type             := 'AMB_JLT';
18745 l_component_code             := 'PA_RAW_COST_ADJ';
18746 l_component_type_code        := 'S';
18747 l_component_appl_id          :=  275;
18748 l_amb_context_code           := 'DEFAULT';
18749 l_entity_code                := 'EXPENDITURES';
18750 l_event_class_code           := 'SUPPLIER_COST_ADJ';
18751 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
18752 l_line_definition_owner_code := 'S';
18753 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
18754 --
18755 l_balance_type_code          := 'A';
18756 l_segment                     := NULL;
18757 l_ccid                        := NULL;
18758 l_adr_transaction_coa_id      := NULL;
18759 l_adr_accounting_coa_id       := NULL;
18760 l_adr_flexfield_segment_code  := NULL;
18761 l_adr_flex_value_set_id       := NULL;
18762 l_adr_value_type_code         := NULL;
18763 l_adr_value_combination_id    := NULL;
18764 l_adr_value_segment_code      := NULL;
18765 
18766 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18767 l_bflow_class_code           := '';    -- 4219869 Business Flow
18768 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18769 l_budgetary_control_flag     := 'N';
18770 
18771 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18772 l_bflow_applied_to_amt       := NULL; -- 5132302
18776 l_accrual_line_num           := NULL;          -- 4262811
18773 l_entered_amt_idx            := NULL;          -- 4262811
18774 l_accted_amt_idx             := NULL;          -- 4262811
18775 l_acc_rev_flag               := NULL;          -- 4262811
18777 l_tmp_amt                    := NULL;          -- 4262811
18778 --
18779  
18780 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18781     l_balance_type_code <> 'B' THEN
18782 IF NVL(p_source_21,'
18783 ') =  'N'
18784  THEN 
18785 
18786    --
18787    XLA_AE_LINES_PKG.SetNewLine;
18788 
18789    p_balance_type_code          := l_balance_type_code;
18790    -- set the flag so later we will know whether the gain loss line needs to be created
18791    
18792    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18793      p_actual_flag :='A';
18794    END IF;
18795 
18796    --
18797    -- bulk performance
18798    --
18799    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18800                                       p_header_num   => 0); -- 4262811
18801    --
18802    -- set accounting line options
18803    --
18804    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18805            p_natural_side_code          => 'D'
18806          , p_gain_or_loss_flag          => 'N'
18807          , p_gl_transfer_mode_code      => 'S'
18808          , p_acct_entry_type_code       => 'A'
18809          , p_switch_side_flag           => 'Y'
18810          , p_merge_duplicate_code       => 'N'
18811          );
18812    --
18813    l_acc_rev_natural_side_code := 'C';  -- 4262811
18814    -- 
18815    --
18816    -- set accounting line type info
18817    --
18818    xla_ae_lines_pkg.SetAcctLineType
18819       (p_component_type             => l_component_type
18820       ,p_event_type_code            => l_event_type_code
18821       ,p_line_definition_owner_code => l_line_definition_owner_code
18822       ,p_line_definition_code       => l_line_definition_code
18823       ,p_accounting_line_code       => l_component_code
18824       ,p_accounting_line_type_code  => l_component_type_code
18825       ,p_accounting_line_appl_id    => l_component_appl_id
18826       ,p_amb_context_code           => l_amb_context_code
18827       ,p_entity_code                => l_entity_code
18828       ,p_event_class_code           => l_event_class_code);
18829    --
18830    -- set accounting class
18831    --
18832    xla_ae_lines_pkg.SetAcctClass(
18833            p_accounting_class_code  => 'COST'
18834          , p_ae_header_id           => l_ae_header_id
18835          );
18836 
18837    --
18838    -- set rounding class
18839    --
18840    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18841                       'COST';
18842 
18843    --
18844    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18845    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18846    --
18847    -- bulk performance
18848    --
18849    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18850 
18851    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18852       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18853 
18854    -- 4955764
18855    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18856       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18857 
18858    -- 4458381 Public Sector Enh
18859    
18860    --
18861    -- set accounting attributes for the line type
18862    --
18863    l_entered_amt_idx := 22;
18864    l_accted_amt_idx  := 27;
18865    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18866    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18867    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
18868    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
18869    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
18870    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
18871    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
18872    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
18873    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
18874    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
18875    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
18876    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
18877    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
18878    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
18879    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
18880    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
18881    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
18882    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
18883    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
18884    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
18885    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
18886    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
18887    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
18888    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
18892    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
18889    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
18890    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
18891    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
18893    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
18894    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
18895    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
18896    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
18897    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
18898    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
18899    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
18900    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
18901    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
18902    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
18903    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
18904    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
18905    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
18906    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
18907    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
18908    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
18909    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
18910    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
18911    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
18912    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
18913    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
18914    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
18915    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
18916    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
18917    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
18918    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
18919    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
18920    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
18921    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
18922    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
18923    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
18924    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
18925    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
18926 
18927    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18928    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18929 
18930    ---------------------------------------------------------------------------------------------------------------
18931    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18932    ---------------------------------------------------------------------------------------------------------------
18933    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18934 
18935    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18936    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18937 
18938    IF xla_accounting_cache_pkg.GetValueChar
18939          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18940          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18941    AND l_bflow_method_code = 'PRIOR_ENTRY'
18942 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18943    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18944          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18945        )
18946    THEN
18947          xla_ae_lines_pkg.BflowUpgEntry
18948            (p_business_method_code    => l_bflow_method_code
18949            ,p_business_class_code     => l_bflow_class_code
18950            ,p_balance_type            => l_balance_type_code);
18951    ELSE
18952       NULL;
18953 -- No business flow processing for business flow method of NONE.
18954    END IF;
18955 
18956    --
18957    -- call analytical criteria
18958    --
18959    
18960    --
18961    -- call description
18962    --
18963    -- No description or it is inherited.
18964    --
18965    -- call ADRs
18966    -- Bug 4922099
18967    --
18968    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18969         (NVL(l_actual_upg_option, 'N') = 'O') OR
18970         (NVL(l_enc_upg_option, 'N') = 'O')
18971       )
18972    THEN
18973    NULL;
18974    --
18975    --
18976    
18977   l_ccid := AcctDerRule_4(
18978            p_application_id           => p_application_id
18979          , p_ae_header_id             => l_ae_header_id 
18980 , p_source_4 => p_source_4
18981 , p_source_5 => p_source_5
18982          , x_transaction_coa_id       => l_adr_transaction_coa_id
18983          , x_accounting_coa_id        => l_adr_accounting_coa_id
18984          , x_value_type_code          => l_adr_value_type_code
18985          , p_side                     => 'NA'
18986    );
18987 
18988    xla_ae_lines_pkg.set_ccid(
18989     p_code_combination_id          => l_ccid
18990   , p_value_type_code              => l_adr_value_type_code
18991   , p_transaction_coa_id           => l_adr_transaction_coa_id
18992   , p_accounting_coa_id            => l_adr_accounting_coa_id
18996   , p_component_code               => l_component_code
18993   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
18994   , p_adr_type_code                => 'S'
18995   , p_component_type               => l_component_type
18997   , p_component_type_code          => l_component_type_code
18998   , p_component_appl_id            => l_component_appl_id
18999   , p_amb_context_code             => l_amb_context_code
19000   , p_side                         => 'NA'
19001   );
19002 
19003 
19004    --
19005    --
19006    END IF;
19007    --
19008    -- Bug 4922099
19009    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19010           (NVL(l_enc_upg_option, 'N') = 'O')
19011         ) AND
19012         (l_bflow_method_code = 'PRIOR_ENTRY')
19013       )
19014    THEN
19015       IF
19016       --
19017       1 = 2
19018       --
19019       THEN
19020       xla_accounting_err_pkg.build_message
19021                                     (p_appli_s_name            => 'XLA'
19022                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19023                                     ,p_token_1                 => 'LINE_NUMBER'
19024                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19025                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19026                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19027                                                                              l_component_type
19028                                                                             ,l_component_code
19029                                                                             ,l_component_type_code
19030                                                                             ,l_component_appl_id
19031                                                                             ,l_amb_context_code
19032                                                                             ,l_entity_code
19033                                                                             ,l_event_class_code
19034                                                                            )
19035                                     ,p_token_3                 => 'OWNER'
19036                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19037                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19038                                                                           ,p_lookup_code    => l_component_type_code
19039                                                                          )
19040                                     ,p_token_4                 => 'PRODUCT_NAME'
19041                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19042                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19043                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19044                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19045                                     ,p_ae_header_id            =>  NULL
19046                                        );
19047 
19048         IF (C_LEVEL_ERROR>= g_log_level) THEN
19049                  trace
19050                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19051                       ,p_level    => C_LEVEL_ERROR
19052                       ,p_module   => l_log_module);
19053         END IF;
19054       END IF;
19055    END IF;
19056    --
19057    --
19058    ------------------------------------------------------------------------------------------------
19059    -- 4219869 Business Flow
19060    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19061    -- Prior Entry.  Currently, the following code is always generated.
19062    ------------------------------------------------------------------------------------------------
19063    XLA_AE_LINES_PKG.ValidateCurrentLine;
19064 
19065    ------------------------------------------------------------------------------------
19066    -- 4219869 Business Flow
19067    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19068    ------------------------------------------------------------------------------------
19069    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19070 
19071    ----------------------------------------------------------------------------------
19072    -- 4219869 Business Flow
19073    -- Update journal entry status -- Need to generate this within IF <condition>
19074    ----------------------------------------------------------------------------------
19075    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19076          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19077          ,p_balance_type_code => l_balance_type_code
19078          );
19079 
19080    -------------------------------------------------------------------------------------------
19081    -- 4262811 - Generate the Accrual Reversal lines
19082    -------------------------------------------------------------------------------------------
19083    BEGIN
19084       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19085                               (g_array_event(p_event_id).array_value_num('header_index'));
19086       IF l_acc_rev_flag IS NULL THEN
19087          l_acc_rev_flag := 'N';
19088       END IF;
19092    END;
19089    EXCEPTION
19090       WHEN OTHERS THEN
19091          l_acc_rev_flag := 'N';
19093    --
19094    IF (l_acc_rev_flag = 'Y') THEN
19095 
19096        -- 4645092  ------------------------------------------------------------------------------
19097        -- To allow MPA report to determine if it should generate report process
19098        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19099        ------------------------------------------------------------------------------------------
19100 
19101        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19102        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19103 
19104        --
19105        -- Update the line information that should be overwritten
19106        --
19107        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19108                                          p_header_num   => 1);
19109        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19110 
19111        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19112 
19113        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19114           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19115        END IF;
19116 
19117       --
19118       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19119       --
19120       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19121           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19122       ELSE
19123           ---------------------------------------------------------------------------------------------------
19124           -- 4262811a Switch Sign
19125           ---------------------------------------------------------------------------------------------------
19126           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19127           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19128                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19129           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19130                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19131           -- 5132302
19132           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19133                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19134 
19135       END IF;
19136 
19137       -- 4955764
19138       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19139       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19140 
19141 
19142       XLA_AE_LINES_PKG.ValidateCurrentLine;
19143       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19144 
19145       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19146                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19147                ,p_balance_type_code => l_balance_type_code);
19148 
19149    END IF;
19150 
19151    -----------------------------------------------------------------------------------------
19152    -- 4262811 Multiperiod Accounting
19153    -----------------------------------------------------------------------------------------
19154      -- No MPA option is assigned.
19155 
19156 
19157 END IF;
19158 END IF;
19159 --
19160 
19161 --
19162 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19163    trace
19164       (p_msg      => 'END of AcctLineType_48'
19165       ,p_level    => C_LEVEL_PROCEDURE
19166       ,p_module   => l_log_module);
19167 END IF;
19168 --
19169 EXCEPTION
19170   WHEN xla_exceptions_pkg.application_exception THEN
19171       RAISE;
19172   WHEN OTHERS THEN
19173        xla_exceptions_pkg.raise_message
19174            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_48');
19175 END AcctLineType_48;
19176 --
19177 
19178 ---------------------------------------
19179 --
19180 -- PRIVATE FUNCTION
19181 --         AcctLineType_49
19182 --
19183 ---------------------------------------
19184 PROCEDURE AcctLineType_49 (
19185   p_application_id        IN NUMBER
19186  ,p_event_id              IN NUMBER
19187  ,p_calculate_acctd_flag  IN VARCHAR2
19188  ,p_calculate_g_l_flag    IN VARCHAR2
19189  ,p_actual_flag           IN OUT VARCHAR2
19190  ,p_balance_type_code     OUT VARCHAR2
19191  ,p_gain_or_loss_ref      OUT VARCHAR2
19192  
19193 --Cost CCID
19194  , p_source_3            IN NUMBER
19195 --Allow Account Override Flag
19196  , p_source_4            IN VARCHAR2
19197 --Adjustment Cost CCID
19198  , p_source_5            IN NUMBER
19199 --Cost Clearing CCID
19200  , p_source_6            IN NUMBER
19201 --Reversing Line Flag
19202  , p_source_22            IN VARCHAR2
19203 --Actual Upgrade Credit Accounting Class
19204  , p_source_23            IN VARCHAR2
19205 --Entered Raw Cost
19206  , p_source_24            IN NUMBER
19207 --Entered Currency Code
19211 --Exchange Rate Date
19208  , p_source_25            IN VARCHAR2
19209 --Accounted Raw Cost
19210  , p_source_26            IN NUMBER
19212  , p_source_27            IN DATE
19213 --Exchange Rate
19214  , p_source_28            IN NUMBER
19215 --Exchange Rate Type
19216  , p_source_29            IN VARCHAR2
19217 --Actual Upgrade Debit Accounting Class
19218  , p_source_30            IN VARCHAR2
19219 --Use Actuals Upgrade Attributes Flag
19220  , p_source_31            IN VARCHAR2
19221 --Expenditure Item ID
19222  , p_source_32            IN NUMBER
19223 --Cost Distribution Line Number
19224  , p_source_33            IN NUMBER
19225 --Line Type
19226  , p_source_34            IN VARCHAR2
19227  , p_source_34_meaning    IN VARCHAR2
19228 --Reversed Line Number
19229  , p_source_35            IN NUMBER
19230 )
19231 IS
19232 
19233 l_component_type              VARCHAR2(80);
19234 l_component_code              VARCHAR2(30);
19235 l_component_type_code         VARCHAR2(1);
19236 l_component_appl_id           INTEGER;
19237 l_amb_context_code            VARCHAR2(30);
19238 l_entity_code                 VARCHAR2(30);
19239 l_event_class_code            VARCHAR2(30);
19240 l_ae_header_id                NUMBER;
19241 l_event_type_code             VARCHAR2(30);
19242 l_line_definition_code        VARCHAR2(30);
19243 l_line_definition_owner_code  VARCHAR2(1);
19244 --
19245 -- adr variables
19246 l_segment                     VARCHAR2(30);
19247 l_ccid                        NUMBER;
19248 l_adr_transaction_coa_id      NUMBER;
19249 l_adr_accounting_coa_id       NUMBER;
19250 l_adr_flexfield_segment_code  VARCHAR2(30);
19251 l_adr_flex_value_set_id       NUMBER;
19252 l_adr_value_type_code         VARCHAR2(30);
19253 l_adr_value_combination_id    NUMBER;
19254 l_adr_value_segment_code      VARCHAR2(30);
19255 
19256 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19257 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19258 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19259 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19260 
19261 -- 4262811 Variables ------------------------------------------------------------------------------------------
19262 l_entered_amt_idx             NUMBER;
19263 l_accted_amt_idx              NUMBER;
19264 l_acc_rev_flag                VARCHAR2(1);
19265 l_accrual_line_num            NUMBER;
19266 l_tmp_amt                     NUMBER;
19267 l_acc_rev_natural_side_code   VARCHAR2(1);
19268 
19269 l_num_entries                 NUMBER;
19270 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19271 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19272 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19273 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19274 l_recog_line_1                NUMBER;
19275 l_recog_line_2                NUMBER;
19276 
19277 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19278 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19279 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19280 
19281 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19282 
19283 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19284 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19285 
19286 ---------------------------------------------------------------------------------------------------------------
19287 
19288 
19289 --
19290 -- bulk performance
19291 --
19292 l_balance_type_code           VARCHAR2(1);
19293 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19294 l_log_module                  VARCHAR2(240);
19295 
19296 --
19297 -- Upgrade strategy
19298 --
19299 l_actual_upg_option           VARCHAR2(1);
19300 l_enc_upg_option           VARCHAR2(1);
19301 
19302 --
19303 BEGIN
19304 --
19305 IF g_log_enabled THEN
19306       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
19307 END IF;
19308 --
19309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19310 
19311       trace
19312          (p_msg      => 'BEGIN of AcctLineType_49'
19313          ,p_level    => C_LEVEL_PROCEDURE
19314          ,p_module   => l_log_module);
19315 
19316 END IF;
19317 --
19318 l_component_type             := 'AMB_JLT';
19319 l_component_code             := 'PA_RAW_COST_ADJ';
19320 l_component_type_code        := 'S';
19321 l_component_appl_id          :=  275;
19322 l_amb_context_code           := 'DEFAULT';
19323 l_entity_code                := 'EXPENDITURES';
19324 l_event_class_code           := 'MISC_COST_ADJ';
19325 l_event_type_code            := 'MISC_COST_ADJ_ALL';
19326 l_line_definition_owner_code := 'S';
19327 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
19328 --
19329 l_balance_type_code          := 'A';
19330 l_segment                     := NULL;
19331 l_ccid                        := NULL;
19332 l_adr_transaction_coa_id      := NULL;
19333 l_adr_accounting_coa_id       := NULL;
19334 l_adr_flexfield_segment_code  := NULL;
19335 l_adr_flex_value_set_id       := NULL;
19336 l_adr_value_type_code         := NULL;
19340 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19337 l_adr_value_combination_id    := NULL;
19338 l_adr_value_segment_code      := NULL;
19339 
19341 l_bflow_class_code           := '';    -- 4219869 Business Flow
19342 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19343 l_budgetary_control_flag     := 'N';
19344 
19345 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19346 l_bflow_applied_to_amt       := NULL; -- 5132302
19347 l_entered_amt_idx            := NULL;          -- 4262811
19348 l_accted_amt_idx             := NULL;          -- 4262811
19349 l_acc_rev_flag               := NULL;          -- 4262811
19350 l_accrual_line_num           := NULL;          -- 4262811
19351 l_tmp_amt                    := NULL;          -- 4262811
19352 --
19353  
19354 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19355     l_balance_type_code <> 'B' THEN
19356 
19357    --
19358    XLA_AE_LINES_PKG.SetNewLine;
19359 
19360    p_balance_type_code          := l_balance_type_code;
19361    -- set the flag so later we will know whether the gain loss line needs to be created
19362    
19363    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19364      p_actual_flag :='A';
19365    END IF;
19366 
19367    --
19368    -- bulk performance
19369    --
19370    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19371                                       p_header_num   => 0); -- 4262811
19372    --
19373    -- set accounting line options
19374    --
19375    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19376            p_natural_side_code          => 'D'
19377          , p_gain_or_loss_flag          => 'N'
19378          , p_gl_transfer_mode_code      => 'S'
19379          , p_acct_entry_type_code       => 'A'
19380          , p_switch_side_flag           => 'Y'
19381          , p_merge_duplicate_code       => 'N'
19382          );
19383    --
19384    l_acc_rev_natural_side_code := 'C';  -- 4262811
19385    -- 
19386    --
19387    -- set accounting line type info
19388    --
19389    xla_ae_lines_pkg.SetAcctLineType
19390       (p_component_type             => l_component_type
19391       ,p_event_type_code            => l_event_type_code
19392       ,p_line_definition_owner_code => l_line_definition_owner_code
19393       ,p_line_definition_code       => l_line_definition_code
19394       ,p_accounting_line_code       => l_component_code
19395       ,p_accounting_line_type_code  => l_component_type_code
19396       ,p_accounting_line_appl_id    => l_component_appl_id
19397       ,p_amb_context_code           => l_amb_context_code
19398       ,p_entity_code                => l_entity_code
19399       ,p_event_class_code           => l_event_class_code);
19400    --
19401    -- set accounting class
19402    --
19403    xla_ae_lines_pkg.SetAcctClass(
19404            p_accounting_class_code  => 'COST'
19405          , p_ae_header_id           => l_ae_header_id
19406          );
19407 
19408    --
19409    -- set rounding class
19410    --
19411    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19412                       'COST';
19413 
19414    --
19415    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19416    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19417    --
19418    -- bulk performance
19419    --
19420    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19421 
19422    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19423       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19424 
19425    -- 4955764
19426    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19427       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19428 
19429    -- 4458381 Public Sector Enh
19430    
19431    --
19432    -- set accounting attributes for the line type
19433    --
19434    l_entered_amt_idx := 22;
19435    l_accted_amt_idx  := 27;
19436    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19437    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
19438    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
19439    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
19440    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
19441    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
19442    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
19443    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
19444    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
19445    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
19446    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
19447    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
19448    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
19449    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
19450    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
19451    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
19452    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
19453    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
19454    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
19458    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
19455    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
19456    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
19457    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
19459    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
19460    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
19461    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
19462    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
19463    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
19464    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
19465    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
19466    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
19467    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
19468    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
19469    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
19470    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
19471    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
19472    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
19473    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
19474    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
19475    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
19476    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
19477    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
19478    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
19479    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
19480    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
19481    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
19482    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
19483    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
19484    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
19485    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
19486    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
19487    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
19488    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
19489    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
19490    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
19491    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
19492    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
19493    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
19494    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
19495    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
19496    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
19497 
19498    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19499    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19500 
19501    ---------------------------------------------------------------------------------------------------------------
19502    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19503    ---------------------------------------------------------------------------------------------------------------
19504    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19505 
19506    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19507    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19508 
19509    IF xla_accounting_cache_pkg.GetValueChar
19510          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19511          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19512    AND l_bflow_method_code = 'PRIOR_ENTRY'
19513 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19514    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19515          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19516        )
19517    THEN
19518          xla_ae_lines_pkg.BflowUpgEntry
19519            (p_business_method_code    => l_bflow_method_code
19520            ,p_business_class_code     => l_bflow_class_code
19521            ,p_balance_type            => l_balance_type_code);
19522    ELSE
19523       NULL;
19524 -- No business flow processing for business flow method of NONE.
19525    END IF;
19526 
19527    --
19528    -- call analytical criteria
19529    --
19530    
19531    --
19532    -- call description
19533    --
19534    -- No description or it is inherited.
19535    --
19536    -- call ADRs
19537    -- Bug 4922099
19538    --
19539    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19540         (NVL(l_actual_upg_option, 'N') = 'O') OR
19541         (NVL(l_enc_upg_option, 'N') = 'O')
19542       )
19543    THEN
19544    NULL;
19545    --
19546    --
19547    
19548   l_ccid := AcctDerRule_4(
19549            p_application_id           => p_application_id
19550          , p_ae_header_id             => l_ae_header_id 
19551 , p_source_4 => p_source_4
19552 , p_source_5 => p_source_5
19553          , x_transaction_coa_id       => l_adr_transaction_coa_id
19554          , x_accounting_coa_id        => l_adr_accounting_coa_id
19555          , x_value_type_code          => l_adr_value_type_code
19559    xla_ae_lines_pkg.set_ccid(
19556          , p_side                     => 'NA'
19557    );
19558 
19560     p_code_combination_id          => l_ccid
19561   , p_value_type_code              => l_adr_value_type_code
19562   , p_transaction_coa_id           => l_adr_transaction_coa_id
19563   , p_accounting_coa_id            => l_adr_accounting_coa_id
19564   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
19565   , p_adr_type_code                => 'S'
19566   , p_component_type               => l_component_type
19567   , p_component_code               => l_component_code
19568   , p_component_type_code          => l_component_type_code
19569   , p_component_appl_id            => l_component_appl_id
19570   , p_amb_context_code             => l_amb_context_code
19571   , p_side                         => 'NA'
19572   );
19573 
19574 
19575    --
19576    --
19577    END IF;
19578    --
19579    -- Bug 4922099
19580    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19581           (NVL(l_enc_upg_option, 'N') = 'O')
19582         ) AND
19583         (l_bflow_method_code = 'PRIOR_ENTRY')
19584       )
19585    THEN
19586       IF
19587       --
19588       1 = 2
19589       --
19590       THEN
19591       xla_accounting_err_pkg.build_message
19592                                     (p_appli_s_name            => 'XLA'
19593                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19594                                     ,p_token_1                 => 'LINE_NUMBER'
19595                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19596                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19597                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19598                                                                              l_component_type
19599                                                                             ,l_component_code
19600                                                                             ,l_component_type_code
19601                                                                             ,l_component_appl_id
19602                                                                             ,l_amb_context_code
19603                                                                             ,l_entity_code
19604                                                                             ,l_event_class_code
19605                                                                            )
19606                                     ,p_token_3                 => 'OWNER'
19607                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19608                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19609                                                                           ,p_lookup_code    => l_component_type_code
19610                                                                          )
19611                                     ,p_token_4                 => 'PRODUCT_NAME'
19612                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19613                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19614                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19615                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19616                                     ,p_ae_header_id            =>  NULL
19617                                        );
19618 
19619         IF (C_LEVEL_ERROR>= g_log_level) THEN
19620                  trace
19621                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19622                       ,p_level    => C_LEVEL_ERROR
19623                       ,p_module   => l_log_module);
19624         END IF;
19625       END IF;
19626    END IF;
19627    --
19628    --
19629    ------------------------------------------------------------------------------------------------
19630    -- 4219869 Business Flow
19631    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19632    -- Prior Entry.  Currently, the following code is always generated.
19633    ------------------------------------------------------------------------------------------------
19634    XLA_AE_LINES_PKG.ValidateCurrentLine;
19635 
19636    ------------------------------------------------------------------------------------
19637    -- 4219869 Business Flow
19638    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19639    ------------------------------------------------------------------------------------
19640    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19641 
19642    ----------------------------------------------------------------------------------
19643    -- 4219869 Business Flow
19644    -- Update journal entry status -- Need to generate this within IF <condition>
19645    ----------------------------------------------------------------------------------
19646    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19647          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19648          ,p_balance_type_code => l_balance_type_code
19649          );
19650 
19651    -------------------------------------------------------------------------------------------
19655       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19652    -- 4262811 - Generate the Accrual Reversal lines
19653    -------------------------------------------------------------------------------------------
19654    BEGIN
19656                               (g_array_event(p_event_id).array_value_num('header_index'));
19657       IF l_acc_rev_flag IS NULL THEN
19658          l_acc_rev_flag := 'N';
19659       END IF;
19660    EXCEPTION
19661       WHEN OTHERS THEN
19662          l_acc_rev_flag := 'N';
19663    END;
19664    --
19665    IF (l_acc_rev_flag = 'Y') THEN
19666 
19667        -- 4645092  ------------------------------------------------------------------------------
19668        -- To allow MPA report to determine if it should generate report process
19669        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19670        ------------------------------------------------------------------------------------------
19671 
19672        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19673        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19674 
19675        --
19676        -- Update the line information that should be overwritten
19677        --
19678        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19679                                          p_header_num   => 1);
19680        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19681 
19682        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19683 
19684        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19685           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19686        END IF;
19687 
19688       --
19689       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19690       --
19691       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19692           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19693       ELSE
19694           ---------------------------------------------------------------------------------------------------
19695           -- 4262811a Switch Sign
19696           ---------------------------------------------------------------------------------------------------
19697           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19698           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19699                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19700           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19701                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19702           -- 5132302
19703           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19704                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19705 
19706       END IF;
19707 
19708       -- 4955764
19709       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19711 
19712 
19713       XLA_AE_LINES_PKG.ValidateCurrentLine;
19714       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19715 
19716       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19717                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19718                ,p_balance_type_code => l_balance_type_code);
19719 
19720    END IF;
19721 
19722    -----------------------------------------------------------------------------------------
19723    -- 4262811 Multiperiod Accounting
19724    -----------------------------------------------------------------------------------------
19725      -- No MPA option is assigned.
19726 
19727 
19728 END IF;
19729 --
19730 
19731 --
19732 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19733    trace
19734       (p_msg      => 'END of AcctLineType_49'
19735       ,p_level    => C_LEVEL_PROCEDURE
19736       ,p_module   => l_log_module);
19737 END IF;
19738 --
19739 EXCEPTION
19740   WHEN xla_exceptions_pkg.application_exception THEN
19741       RAISE;
19742   WHEN OTHERS THEN
19743        xla_exceptions_pkg.raise_message
19744            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_49');
19745 END AcctLineType_49;
19746 --
19747 
19748 ---------------------------------------
19749 --
19750 -- PRIVATE FUNCTION
19751 --         AcctLineType_50
19752 --
19753 ---------------------------------------
19754 PROCEDURE AcctLineType_50 (
19755   p_application_id        IN NUMBER
19756  ,p_event_id              IN NUMBER
19757  ,p_calculate_acctd_flag  IN VARCHAR2
19758  ,p_calculate_g_l_flag    IN VARCHAR2
19759  ,p_actual_flag           IN OUT VARCHAR2
19760  ,p_balance_type_code     OUT VARCHAR2
19761  ,p_gain_or_loss_ref      OUT VARCHAR2
19762  
19763 --Cost CCID
19764  , p_source_3            IN NUMBER
19765 --Allow Account Override Flag
19766  , p_source_4            IN VARCHAR2
19767 --Adjustment Cost CCID
19768  , p_source_5            IN NUMBER
19769 --Cost Clearing CCID
19773 --Actual Upgrade Credit Accounting Class
19770  , p_source_6            IN NUMBER
19771 --Reversing Line Flag
19772  , p_source_22            IN VARCHAR2
19774  , p_source_23            IN VARCHAR2
19775 --Entered Raw Cost
19776  , p_source_24            IN NUMBER
19777 --Entered Currency Code
19778  , p_source_25            IN VARCHAR2
19779 --Accounted Raw Cost
19780  , p_source_26            IN NUMBER
19781 --Exchange Rate Date
19782  , p_source_27            IN DATE
19783 --Exchange Rate
19784  , p_source_28            IN NUMBER
19785 --Exchange Rate Type
19786  , p_source_29            IN VARCHAR2
19787 --Actual Upgrade Debit Accounting Class
19788  , p_source_30            IN VARCHAR2
19789 --Use Actuals Upgrade Attributes Flag
19790  , p_source_31            IN VARCHAR2
19791 --Expenditure Item ID
19792  , p_source_32            IN NUMBER
19793 --Cost Distribution Line Number
19794  , p_source_33            IN NUMBER
19795 --Line Type
19796  , p_source_34            IN VARCHAR2
19797  , p_source_34_meaning    IN VARCHAR2
19798 --Reversed Line Number
19799  , p_source_35            IN NUMBER
19800 )
19801 IS
19802 
19803 l_component_type              VARCHAR2(80);
19804 l_component_code              VARCHAR2(30);
19805 l_component_type_code         VARCHAR2(1);
19806 l_component_appl_id           INTEGER;
19807 l_amb_context_code            VARCHAR2(30);
19808 l_entity_code                 VARCHAR2(30);
19809 l_event_class_code            VARCHAR2(30);
19810 l_ae_header_id                NUMBER;
19811 l_event_type_code             VARCHAR2(30);
19812 l_line_definition_code        VARCHAR2(30);
19813 l_line_definition_owner_code  VARCHAR2(1);
19814 --
19815 -- adr variables
19816 l_segment                     VARCHAR2(30);
19817 l_ccid                        NUMBER;
19818 l_adr_transaction_coa_id      NUMBER;
19819 l_adr_accounting_coa_id       NUMBER;
19820 l_adr_flexfield_segment_code  VARCHAR2(30);
19821 l_adr_flex_value_set_id       NUMBER;
19822 l_adr_value_type_code         VARCHAR2(30);
19823 l_adr_value_combination_id    NUMBER;
19824 l_adr_value_segment_code      VARCHAR2(30);
19825 
19826 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19827 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19828 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19829 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19830 
19831 -- 4262811 Variables ------------------------------------------------------------------------------------------
19832 l_entered_amt_idx             NUMBER;
19833 l_accted_amt_idx              NUMBER;
19834 l_acc_rev_flag                VARCHAR2(1);
19835 l_accrual_line_num            NUMBER;
19836 l_tmp_amt                     NUMBER;
19837 l_acc_rev_natural_side_code   VARCHAR2(1);
19838 
19839 l_num_entries                 NUMBER;
19840 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19841 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19842 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19843 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19844 l_recog_line_1                NUMBER;
19845 l_recog_line_2                NUMBER;
19846 
19847 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19848 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19849 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19850 
19851 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19852 
19853 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19854 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19855 
19856 ---------------------------------------------------------------------------------------------------------------
19857 
19858 
19859 --
19860 -- bulk performance
19861 --
19862 l_balance_type_code           VARCHAR2(1);
19863 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19864 l_log_module                  VARCHAR2(240);
19865 
19866 --
19867 -- Upgrade strategy
19868 --
19869 l_actual_upg_option           VARCHAR2(1);
19870 l_enc_upg_option           VARCHAR2(1);
19871 
19872 --
19873 BEGIN
19874 --
19875 IF g_log_enabled THEN
19876       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
19877 END IF;
19878 --
19879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19880 
19881       trace
19882          (p_msg      => 'BEGIN of AcctLineType_50'
19883          ,p_level    => C_LEVEL_PROCEDURE
19884          ,p_module   => l_log_module);
19885 
19886 END IF;
19887 --
19888 l_component_type             := 'AMB_JLT';
19889 l_component_code             := 'PA_RAW_COST_ADJ';
19890 l_component_type_code        := 'S';
19891 l_component_appl_id          :=  275;
19892 l_amb_context_code           := 'DEFAULT';
19893 l_entity_code                := 'EXPENDITURES';
19894 l_event_class_code           := 'INVENTORY_COST_ADJ';
19895 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
19896 l_line_definition_owner_code := 'S';
19897 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
19898 --
19899 l_balance_type_code          := 'A';
19903 l_adr_accounting_coa_id       := NULL;
19900 l_segment                     := NULL;
19901 l_ccid                        := NULL;
19902 l_adr_transaction_coa_id      := NULL;
19904 l_adr_flexfield_segment_code  := NULL;
19905 l_adr_flex_value_set_id       := NULL;
19906 l_adr_value_type_code         := NULL;
19907 l_adr_value_combination_id    := NULL;
19908 l_adr_value_segment_code      := NULL;
19909 
19910 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19911 l_bflow_class_code           := '';    -- 4219869 Business Flow
19912 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19913 l_budgetary_control_flag     := 'N';
19914 
19915 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19916 l_bflow_applied_to_amt       := NULL; -- 5132302
19917 l_entered_amt_idx            := NULL;          -- 4262811
19918 l_accted_amt_idx             := NULL;          -- 4262811
19919 l_acc_rev_flag               := NULL;          -- 4262811
19920 l_accrual_line_num           := NULL;          -- 4262811
19921 l_tmp_amt                    := NULL;          -- 4262811
19922 --
19923  
19924 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19925     l_balance_type_code <> 'B' THEN
19926 
19927    --
19928    XLA_AE_LINES_PKG.SetNewLine;
19929 
19930    p_balance_type_code          := l_balance_type_code;
19931    -- set the flag so later we will know whether the gain loss line needs to be created
19932    
19933    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19934      p_actual_flag :='A';
19935    END IF;
19936 
19937    --
19938    -- bulk performance
19939    --
19940    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19941                                       p_header_num   => 0); -- 4262811
19942    --
19943    -- set accounting line options
19944    --
19945    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19946            p_natural_side_code          => 'D'
19947          , p_gain_or_loss_flag          => 'N'
19948          , p_gl_transfer_mode_code      => 'S'
19949          , p_acct_entry_type_code       => 'A'
19950          , p_switch_side_flag           => 'Y'
19951          , p_merge_duplicate_code       => 'N'
19952          );
19953    --
19954    l_acc_rev_natural_side_code := 'C';  -- 4262811
19955    -- 
19956    --
19957    -- set accounting line type info
19958    --
19959    xla_ae_lines_pkg.SetAcctLineType
19960       (p_component_type             => l_component_type
19961       ,p_event_type_code            => l_event_type_code
19962       ,p_line_definition_owner_code => l_line_definition_owner_code
19963       ,p_line_definition_code       => l_line_definition_code
19964       ,p_accounting_line_code       => l_component_code
19965       ,p_accounting_line_type_code  => l_component_type_code
19966       ,p_accounting_line_appl_id    => l_component_appl_id
19967       ,p_amb_context_code           => l_amb_context_code
19968       ,p_entity_code                => l_entity_code
19969       ,p_event_class_code           => l_event_class_code);
19970    --
19971    -- set accounting class
19972    --
19973    xla_ae_lines_pkg.SetAcctClass(
19974            p_accounting_class_code  => 'COST'
19975          , p_ae_header_id           => l_ae_header_id
19976          );
19977 
19978    --
19979    -- set rounding class
19980    --
19981    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19982                       'COST';
19983 
19984    --
19985    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19986    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19987    --
19988    -- bulk performance
19989    --
19990    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19991 
19992    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19993       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19994 
19995    -- 4955764
19996    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19997       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19998 
19999    -- 4458381 Public Sector Enh
20000    
20001    --
20002    -- set accounting attributes for the line type
20003    --
20004    l_entered_amt_idx := 22;
20005    l_accted_amt_idx  := 27;
20006    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20007    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20008    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
20009    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
20010    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
20011    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
20012    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
20013    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
20014    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
20015    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
20016    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
20017    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
20018    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
20019    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
20020    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
20024    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
20021    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
20022    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
20023    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
20025    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
20026    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
20027    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
20028    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
20029    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
20030    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
20031    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
20032    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
20033    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
20034    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
20035    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
20036    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
20037    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
20038    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
20039    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
20040    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
20041    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
20042    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
20043    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
20044    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
20045    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
20046    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
20047    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
20048    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
20049    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
20050    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
20051    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
20052    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
20053    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
20054    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
20055    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
20056    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
20057    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
20058    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
20059    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
20060    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
20061    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
20062    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
20063    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
20064    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
20065    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
20066    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
20067 
20068    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20069    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20070 
20071    ---------------------------------------------------------------------------------------------------------------
20072    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20073    ---------------------------------------------------------------------------------------------------------------
20074    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20075 
20076    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20077    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20078 
20079    IF xla_accounting_cache_pkg.GetValueChar
20080          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20081          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20082    AND l_bflow_method_code = 'PRIOR_ENTRY'
20083 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20084    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20085          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20086        )
20087    THEN
20088          xla_ae_lines_pkg.BflowUpgEntry
20089            (p_business_method_code    => l_bflow_method_code
20090            ,p_business_class_code     => l_bflow_class_code
20091            ,p_balance_type            => l_balance_type_code);
20092    ELSE
20093       NULL;
20094 -- No business flow processing for business flow method of NONE.
20095    END IF;
20096 
20097    --
20098    -- call analytical criteria
20099    --
20100    
20101    --
20102    -- call description
20103    --
20104    -- No description or it is inherited.
20105    --
20106    -- call ADRs
20107    -- Bug 4922099
20108    --
20109    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20110         (NVL(l_actual_upg_option, 'N') = 'O') OR
20111         (NVL(l_enc_upg_option, 'N') = 'O')
20112       )
20113    THEN
20114    NULL;
20115    --
20116    --
20117    
20118   l_ccid := AcctDerRule_4(
20119            p_application_id           => p_application_id
20120          , p_ae_header_id             => l_ae_header_id 
20124          , x_accounting_coa_id        => l_adr_accounting_coa_id
20121 , p_source_4 => p_source_4
20122 , p_source_5 => p_source_5
20123          , x_transaction_coa_id       => l_adr_transaction_coa_id
20125          , x_value_type_code          => l_adr_value_type_code
20126          , p_side                     => 'NA'
20127    );
20128 
20129    xla_ae_lines_pkg.set_ccid(
20130     p_code_combination_id          => l_ccid
20131   , p_value_type_code              => l_adr_value_type_code
20132   , p_transaction_coa_id           => l_adr_transaction_coa_id
20133   , p_accounting_coa_id            => l_adr_accounting_coa_id
20134   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
20135   , p_adr_type_code                => 'S'
20136   , p_component_type               => l_component_type
20137   , p_component_code               => l_component_code
20138   , p_component_type_code          => l_component_type_code
20139   , p_component_appl_id            => l_component_appl_id
20140   , p_amb_context_code             => l_amb_context_code
20141   , p_side                         => 'NA'
20142   );
20143 
20144 
20145    --
20146    --
20147    END IF;
20148    --
20149    -- Bug 4922099
20150    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20151           (NVL(l_enc_upg_option, 'N') = 'O')
20152         ) AND
20153         (l_bflow_method_code = 'PRIOR_ENTRY')
20154       )
20155    THEN
20156       IF
20157       --
20158       1 = 2
20159       --
20160       THEN
20161       xla_accounting_err_pkg.build_message
20162                                     (p_appli_s_name            => 'XLA'
20163                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20164                                     ,p_token_1                 => 'LINE_NUMBER'
20165                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20166                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20167                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20168                                                                              l_component_type
20169                                                                             ,l_component_code
20170                                                                             ,l_component_type_code
20171                                                                             ,l_component_appl_id
20172                                                                             ,l_amb_context_code
20173                                                                             ,l_entity_code
20174                                                                             ,l_event_class_code
20175                                                                            )
20176                                     ,p_token_3                 => 'OWNER'
20177                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20178                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20179                                                                           ,p_lookup_code    => l_component_type_code
20180                                                                          )
20181                                     ,p_token_4                 => 'PRODUCT_NAME'
20182                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20183                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20184                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20185                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20186                                     ,p_ae_header_id            =>  NULL
20187                                        );
20188 
20189         IF (C_LEVEL_ERROR>= g_log_level) THEN
20190                  trace
20191                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20192                       ,p_level    => C_LEVEL_ERROR
20193                       ,p_module   => l_log_module);
20194         END IF;
20195       END IF;
20196    END IF;
20197    --
20198    --
20199    ------------------------------------------------------------------------------------------------
20200    -- 4219869 Business Flow
20201    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20202    -- Prior Entry.  Currently, the following code is always generated.
20203    ------------------------------------------------------------------------------------------------
20204    XLA_AE_LINES_PKG.ValidateCurrentLine;
20205 
20206    ------------------------------------------------------------------------------------
20207    -- 4219869 Business Flow
20208    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20209    ------------------------------------------------------------------------------------
20210    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20211 
20212    ----------------------------------------------------------------------------------
20213    -- 4219869 Business Flow
20214    -- Update journal entry status -- Need to generate this within IF <condition>
20215    ----------------------------------------------------------------------------------
20216    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20220 
20217          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20218          ,p_balance_type_code => l_balance_type_code
20219          );
20221    -------------------------------------------------------------------------------------------
20222    -- 4262811 - Generate the Accrual Reversal lines
20223    -------------------------------------------------------------------------------------------
20224    BEGIN
20225       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20226                               (g_array_event(p_event_id).array_value_num('header_index'));
20227       IF l_acc_rev_flag IS NULL THEN
20228          l_acc_rev_flag := 'N';
20229       END IF;
20230    EXCEPTION
20231       WHEN OTHERS THEN
20232          l_acc_rev_flag := 'N';
20233    END;
20234    --
20235    IF (l_acc_rev_flag = 'Y') THEN
20236 
20237        -- 4645092  ------------------------------------------------------------------------------
20238        -- To allow MPA report to determine if it should generate report process
20239        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20240        ------------------------------------------------------------------------------------------
20241 
20242        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20243        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20244 
20245        --
20246        -- Update the line information that should be overwritten
20247        --
20248        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20249                                          p_header_num   => 1);
20250        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20251 
20252        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20253 
20254        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20255           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20256        END IF;
20257 
20258       --
20259       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20260       --
20261       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20262           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20263       ELSE
20264           ---------------------------------------------------------------------------------------------------
20265           -- 4262811a Switch Sign
20266           ---------------------------------------------------------------------------------------------------
20267           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20268           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20269                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20270           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20271                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20272           -- 5132302
20273           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20274                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20275 
20276       END IF;
20277 
20278       -- 4955764
20279       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20280       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20281 
20282 
20283       XLA_AE_LINES_PKG.ValidateCurrentLine;
20284       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20285 
20286       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20287                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20288                ,p_balance_type_code => l_balance_type_code);
20289 
20290    END IF;
20291 
20292    -----------------------------------------------------------------------------------------
20293    -- 4262811 Multiperiod Accounting
20294    -----------------------------------------------------------------------------------------
20295      -- No MPA option is assigned.
20296 
20297 
20298 END IF;
20299 --
20300 
20301 --
20302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20303    trace
20304       (p_msg      => 'END of AcctLineType_50'
20305       ,p_level    => C_LEVEL_PROCEDURE
20306       ,p_module   => l_log_module);
20307 END IF;
20308 --
20309 EXCEPTION
20310   WHEN xla_exceptions_pkg.application_exception THEN
20311       RAISE;
20312   WHEN OTHERS THEN
20313        xla_exceptions_pkg.raise_message
20314            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_50');
20315 END AcctLineType_50;
20316 --
20317 
20318 ---------------------------------------
20319 --
20320 -- PRIVATE FUNCTION
20321 --         AcctLineType_51
20322 --
20323 ---------------------------------------
20324 PROCEDURE AcctLineType_51 (
20325   p_application_id        IN NUMBER
20326  ,p_event_id              IN NUMBER
20327  ,p_calculate_acctd_flag  IN VARCHAR2
20328  ,p_calculate_g_l_flag    IN VARCHAR2
20329  ,p_actual_flag           IN OUT VARCHAR2
20333 --Cost CCID
20330  ,p_balance_type_code     OUT VARCHAR2
20331  ,p_gain_or_loss_ref      OUT VARCHAR2
20332  
20334  , p_source_3            IN NUMBER
20335 --Allow Account Override Flag
20336  , p_source_4            IN VARCHAR2
20337 --Adjustment Cost CCID
20338  , p_source_5            IN NUMBER
20339 --Cost Clearing CCID
20340  , p_source_6            IN NUMBER
20341 --Reversing Line Flag
20342  , p_source_22            IN VARCHAR2
20343 --Actual Upgrade Credit Accounting Class
20344  , p_source_23            IN VARCHAR2
20345 --Entered Raw Cost
20346  , p_source_24            IN NUMBER
20347 --Entered Currency Code
20348  , p_source_25            IN VARCHAR2
20349 --Accounted Raw Cost
20350  , p_source_26            IN NUMBER
20351 --Exchange Rate Date
20352  , p_source_27            IN DATE
20353 --Exchange Rate
20354  , p_source_28            IN NUMBER
20355 --Exchange Rate Type
20356  , p_source_29            IN VARCHAR2
20357 --Actual Upgrade Debit Accounting Class
20358  , p_source_30            IN VARCHAR2
20359 --Use Actuals Upgrade Attributes Flag
20360  , p_source_31            IN VARCHAR2
20361 --Expenditure Item ID
20362  , p_source_32            IN NUMBER
20363 --Cost Distribution Line Number
20364  , p_source_33            IN NUMBER
20365 --Line Type
20366  , p_source_34            IN VARCHAR2
20367  , p_source_34_meaning    IN VARCHAR2
20368 --Reversed Line Number
20369  , p_source_35            IN NUMBER
20370 )
20371 IS
20372 
20373 l_component_type              VARCHAR2(80);
20374 l_component_code              VARCHAR2(30);
20375 l_component_type_code         VARCHAR2(1);
20376 l_component_appl_id           INTEGER;
20377 l_amb_context_code            VARCHAR2(30);
20378 l_entity_code                 VARCHAR2(30);
20379 l_event_class_code            VARCHAR2(30);
20380 l_ae_header_id                NUMBER;
20381 l_event_type_code             VARCHAR2(30);
20382 l_line_definition_code        VARCHAR2(30);
20383 l_line_definition_owner_code  VARCHAR2(1);
20384 --
20385 -- adr variables
20386 l_segment                     VARCHAR2(30);
20387 l_ccid                        NUMBER;
20388 l_adr_transaction_coa_id      NUMBER;
20389 l_adr_accounting_coa_id       NUMBER;
20390 l_adr_flexfield_segment_code  VARCHAR2(30);
20391 l_adr_flex_value_set_id       NUMBER;
20392 l_adr_value_type_code         VARCHAR2(30);
20393 l_adr_value_combination_id    NUMBER;
20394 l_adr_value_segment_code      VARCHAR2(30);
20395 
20396 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20397 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20398 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20399 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20400 
20401 -- 4262811 Variables ------------------------------------------------------------------------------------------
20402 l_entered_amt_idx             NUMBER;
20403 l_accted_amt_idx              NUMBER;
20404 l_acc_rev_flag                VARCHAR2(1);
20405 l_accrual_line_num            NUMBER;
20406 l_tmp_amt                     NUMBER;
20407 l_acc_rev_natural_side_code   VARCHAR2(1);
20408 
20409 l_num_entries                 NUMBER;
20410 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20411 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20412 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20413 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20414 l_recog_line_1                NUMBER;
20415 l_recog_line_2                NUMBER;
20416 
20417 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20418 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20419 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20420 
20421 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20422 
20423 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20424 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20425 
20426 ---------------------------------------------------------------------------------------------------------------
20427 
20428 
20429 --
20430 -- bulk performance
20431 --
20432 l_balance_type_code           VARCHAR2(1);
20433 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20434 l_log_module                  VARCHAR2(240);
20435 
20436 --
20437 -- Upgrade strategy
20438 --
20439 l_actual_upg_option           VARCHAR2(1);
20440 l_enc_upg_option           VARCHAR2(1);
20441 
20442 --
20443 BEGIN
20444 --
20445 IF g_log_enabled THEN
20446       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
20447 END IF;
20448 --
20449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20450 
20451       trace
20452          (p_msg      => 'BEGIN of AcctLineType_51'
20453          ,p_level    => C_LEVEL_PROCEDURE
20454          ,p_module   => l_log_module);
20455 
20456 END IF;
20457 --
20458 l_component_type             := 'AMB_JLT';
20459 l_component_code             := 'PA_RAW_COST_ADJ';
20460 l_component_type_code        := 'S';
20461 l_component_appl_id          :=  275;
20462 l_amb_context_code           := 'DEFAULT';
20466 l_line_definition_owner_code := 'S';
20463 l_entity_code                := 'EXPENDITURES';
20464 l_event_class_code           := 'LABOR_COST_ADJ';
20465 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
20467 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
20468 --
20469 l_balance_type_code          := 'A';
20470 l_segment                     := NULL;
20471 l_ccid                        := NULL;
20472 l_adr_transaction_coa_id      := NULL;
20473 l_adr_accounting_coa_id       := NULL;
20474 l_adr_flexfield_segment_code  := NULL;
20475 l_adr_flex_value_set_id       := NULL;
20476 l_adr_value_type_code         := NULL;
20477 l_adr_value_combination_id    := NULL;
20478 l_adr_value_segment_code      := NULL;
20479 
20480 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20481 l_bflow_class_code           := '';    -- 4219869 Business Flow
20482 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20483 l_budgetary_control_flag     := 'N';
20484 
20485 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20486 l_bflow_applied_to_amt       := NULL; -- 5132302
20487 l_entered_amt_idx            := NULL;          -- 4262811
20488 l_accted_amt_idx             := NULL;          -- 4262811
20489 l_acc_rev_flag               := NULL;          -- 4262811
20490 l_accrual_line_num           := NULL;          -- 4262811
20491 l_tmp_amt                    := NULL;          -- 4262811
20492 --
20493  
20494 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20495     l_balance_type_code <> 'B' THEN
20496 
20497    --
20498    XLA_AE_LINES_PKG.SetNewLine;
20499 
20500    p_balance_type_code          := l_balance_type_code;
20501    -- set the flag so later we will know whether the gain loss line needs to be created
20502    
20503    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20504      p_actual_flag :='A';
20505    END IF;
20506 
20507    --
20508    -- bulk performance
20509    --
20510    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20511                                       p_header_num   => 0); -- 4262811
20512    --
20513    -- set accounting line options
20514    --
20515    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20516            p_natural_side_code          => 'D'
20517          , p_gain_or_loss_flag          => 'N'
20518          , p_gl_transfer_mode_code      => 'S'
20519          , p_acct_entry_type_code       => 'A'
20520          , p_switch_side_flag           => 'Y'
20521          , p_merge_duplicate_code       => 'N'
20522          );
20523    --
20524    l_acc_rev_natural_side_code := 'C';  -- 4262811
20525    -- 
20526    --
20527    -- set accounting line type info
20528    --
20529    xla_ae_lines_pkg.SetAcctLineType
20530       (p_component_type             => l_component_type
20531       ,p_event_type_code            => l_event_type_code
20532       ,p_line_definition_owner_code => l_line_definition_owner_code
20533       ,p_line_definition_code       => l_line_definition_code
20534       ,p_accounting_line_code       => l_component_code
20535       ,p_accounting_line_type_code  => l_component_type_code
20536       ,p_accounting_line_appl_id    => l_component_appl_id
20537       ,p_amb_context_code           => l_amb_context_code
20538       ,p_entity_code                => l_entity_code
20539       ,p_event_class_code           => l_event_class_code);
20540    --
20541    -- set accounting class
20542    --
20543    xla_ae_lines_pkg.SetAcctClass(
20544            p_accounting_class_code  => 'COST'
20545          , p_ae_header_id           => l_ae_header_id
20546          );
20547 
20548    --
20549    -- set rounding class
20550    --
20551    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20552                       'COST';
20553 
20554    --
20555    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20556    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20557    --
20558    -- bulk performance
20559    --
20560    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20561 
20562    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20563       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20564 
20565    -- 4955764
20566    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20567       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20568 
20569    -- 4458381 Public Sector Enh
20570    
20571    --
20572    -- set accounting attributes for the line type
20573    --
20574    l_entered_amt_idx := 22;
20575    l_accted_amt_idx  := 27;
20576    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20577    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20578    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
20579    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
20580    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
20581    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
20582    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
20583    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
20584    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
20585    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
20589    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
20586    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
20587    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
20588    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
20590    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
20591    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
20592    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
20593    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
20594    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
20595    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
20596    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
20597    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
20598    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
20599    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
20600    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
20601    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
20602    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
20603    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
20604    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
20605    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
20606    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
20607    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
20608    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
20609    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
20610    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
20611    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
20612    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
20613    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
20614    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
20615    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
20616    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
20617    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
20618    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
20619    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
20620    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
20621    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
20622    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
20623    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
20624    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
20625    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
20626    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
20627    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
20628    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
20629    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
20630    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
20631    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
20632    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
20633    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
20634    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
20635    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
20636    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
20637 
20638    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20639    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20640 
20641    ---------------------------------------------------------------------------------------------------------------
20642    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20643    ---------------------------------------------------------------------------------------------------------------
20644    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20645 
20646    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20647    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20648 
20649    IF xla_accounting_cache_pkg.GetValueChar
20650          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20651          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20652    AND l_bflow_method_code = 'PRIOR_ENTRY'
20653 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20654    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20655          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20656        )
20657    THEN
20658          xla_ae_lines_pkg.BflowUpgEntry
20659            (p_business_method_code    => l_bflow_method_code
20660            ,p_business_class_code     => l_bflow_class_code
20661            ,p_balance_type            => l_balance_type_code);
20662    ELSE
20663       NULL;
20664 -- No business flow processing for business flow method of NONE.
20665    END IF;
20666 
20667    --
20668    -- call analytical criteria
20669    --
20670    
20671    --
20672    -- call description
20673    --
20674    -- No description or it is inherited.
20675    --
20676    -- call ADRs
20677    -- Bug 4922099
20678    --
20682       )
20679    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20680         (NVL(l_actual_upg_option, 'N') = 'O') OR
20681         (NVL(l_enc_upg_option, 'N') = 'O')
20683    THEN
20684    NULL;
20685    --
20686    --
20687    
20688   l_ccid := AcctDerRule_4(
20689            p_application_id           => p_application_id
20690          , p_ae_header_id             => l_ae_header_id 
20691 , p_source_4 => p_source_4
20692 , p_source_5 => p_source_5
20693          , x_transaction_coa_id       => l_adr_transaction_coa_id
20694          , x_accounting_coa_id        => l_adr_accounting_coa_id
20695          , x_value_type_code          => l_adr_value_type_code
20696          , p_side                     => 'NA'
20697    );
20698 
20699    xla_ae_lines_pkg.set_ccid(
20700     p_code_combination_id          => l_ccid
20701   , p_value_type_code              => l_adr_value_type_code
20702   , p_transaction_coa_id           => l_adr_transaction_coa_id
20703   , p_accounting_coa_id            => l_adr_accounting_coa_id
20704   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
20705   , p_adr_type_code                => 'S'
20706   , p_component_type               => l_component_type
20707   , p_component_code               => l_component_code
20708   , p_component_type_code          => l_component_type_code
20709   , p_component_appl_id            => l_component_appl_id
20710   , p_amb_context_code             => l_amb_context_code
20711   , p_side                         => 'NA'
20712   );
20713 
20714 
20715    --
20716    --
20717    END IF;
20718    --
20719    -- Bug 4922099
20720    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20721           (NVL(l_enc_upg_option, 'N') = 'O')
20722         ) AND
20723         (l_bflow_method_code = 'PRIOR_ENTRY')
20724       )
20725    THEN
20726       IF
20727       --
20728       1 = 2
20729       --
20730       THEN
20731       xla_accounting_err_pkg.build_message
20732                                     (p_appli_s_name            => 'XLA'
20733                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20734                                     ,p_token_1                 => 'LINE_NUMBER'
20735                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20736                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20737                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20738                                                                              l_component_type
20739                                                                             ,l_component_code
20740                                                                             ,l_component_type_code
20741                                                                             ,l_component_appl_id
20742                                                                             ,l_amb_context_code
20743                                                                             ,l_entity_code
20744                                                                             ,l_event_class_code
20745                                                                            )
20746                                     ,p_token_3                 => 'OWNER'
20747                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20748                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20749                                                                           ,p_lookup_code    => l_component_type_code
20750                                                                          )
20751                                     ,p_token_4                 => 'PRODUCT_NAME'
20752                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20753                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20754                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20755                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20756                                     ,p_ae_header_id            =>  NULL
20757                                        );
20758 
20759         IF (C_LEVEL_ERROR>= g_log_level) THEN
20760                  trace
20761                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20762                       ,p_level    => C_LEVEL_ERROR
20763                       ,p_module   => l_log_module);
20764         END IF;
20765       END IF;
20766    END IF;
20767    --
20768    --
20769    ------------------------------------------------------------------------------------------------
20770    -- 4219869 Business Flow
20771    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20772    -- Prior Entry.  Currently, the following code is always generated.
20773    ------------------------------------------------------------------------------------------------
20774    XLA_AE_LINES_PKG.ValidateCurrentLine;
20775 
20776    ------------------------------------------------------------------------------------
20777    -- 4219869 Business Flow
20778    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20779    ------------------------------------------------------------------------------------
20783    -- 4219869 Business Flow
20780    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20781 
20782    ----------------------------------------------------------------------------------
20784    -- Update journal entry status -- Need to generate this within IF <condition>
20785    ----------------------------------------------------------------------------------
20786    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20787          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20788          ,p_balance_type_code => l_balance_type_code
20789          );
20790 
20791    -------------------------------------------------------------------------------------------
20792    -- 4262811 - Generate the Accrual Reversal lines
20793    -------------------------------------------------------------------------------------------
20794    BEGIN
20795       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20796                               (g_array_event(p_event_id).array_value_num('header_index'));
20797       IF l_acc_rev_flag IS NULL THEN
20798          l_acc_rev_flag := 'N';
20799       END IF;
20800    EXCEPTION
20801       WHEN OTHERS THEN
20802          l_acc_rev_flag := 'N';
20803    END;
20804    --
20805    IF (l_acc_rev_flag = 'Y') THEN
20806 
20807        -- 4645092  ------------------------------------------------------------------------------
20808        -- To allow MPA report to determine if it should generate report process
20809        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20810        ------------------------------------------------------------------------------------------
20811 
20812        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20813        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20814 
20815        --
20816        -- Update the line information that should be overwritten
20817        --
20818        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20819                                          p_header_num   => 1);
20820        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20821 
20822        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20823 
20824        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20825           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20826        END IF;
20827 
20828       --
20829       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20830       --
20831       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20832           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20833       ELSE
20834           ---------------------------------------------------------------------------------------------------
20835           -- 4262811a Switch Sign
20836           ---------------------------------------------------------------------------------------------------
20837           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20838           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20839                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20840           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20841                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20842           -- 5132302
20843           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20844                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20845 
20846       END IF;
20847 
20848       -- 4955764
20849       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20850       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20851 
20852 
20853       XLA_AE_LINES_PKG.ValidateCurrentLine;
20854       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20855 
20856       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20857                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20858                ,p_balance_type_code => l_balance_type_code);
20859 
20860    END IF;
20861 
20862    -----------------------------------------------------------------------------------------
20863    -- 4262811 Multiperiod Accounting
20864    -----------------------------------------------------------------------------------------
20865      -- No MPA option is assigned.
20866 
20867 
20868 END IF;
20869 --
20870 
20871 --
20872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20873    trace
20874       (p_msg      => 'END of AcctLineType_51'
20875       ,p_level    => C_LEVEL_PROCEDURE
20876       ,p_module   => l_log_module);
20877 END IF;
20878 --
20879 EXCEPTION
20880   WHEN xla_exceptions_pkg.application_exception THEN
20881       RAISE;
20882   WHEN OTHERS THEN
20883        xla_exceptions_pkg.raise_message
20884            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_51');
20885 END AcctLineType_51;
20886 --
20887 
20888 ---------------------------------------
20889 --
20890 -- PRIVATE FUNCTION
20894 PROCEDURE AcctLineType_52 (
20891 --         AcctLineType_52
20892 --
20893 ---------------------------------------
20895   p_application_id        IN NUMBER
20896  ,p_event_id              IN NUMBER
20897  ,p_calculate_acctd_flag  IN VARCHAR2
20898  ,p_calculate_g_l_flag    IN VARCHAR2
20899  ,p_actual_flag           IN OUT VARCHAR2
20900  ,p_balance_type_code     OUT VARCHAR2
20901  ,p_gain_or_loss_ref      OUT VARCHAR2
20902  
20903 --Cost CCID
20904  , p_source_3            IN NUMBER
20905 --Allow Account Override Flag
20906  , p_source_4            IN VARCHAR2
20907 --Adjustment Cost CCID
20908  , p_source_5            IN NUMBER
20909 --Cost Clearing CCID
20910  , p_source_6            IN NUMBER
20911 --Reversing Line Flag
20912  , p_source_22            IN VARCHAR2
20913 --Actual Upgrade Credit Accounting Class
20914  , p_source_23            IN VARCHAR2
20915 --Entered Raw Cost
20916  , p_source_24            IN NUMBER
20917 --Entered Currency Code
20918  , p_source_25            IN VARCHAR2
20919 --Accounted Raw Cost
20920  , p_source_26            IN NUMBER
20921 --Exchange Rate Date
20922  , p_source_27            IN DATE
20923 --Exchange Rate
20924  , p_source_28            IN NUMBER
20925 --Exchange Rate Type
20926  , p_source_29            IN VARCHAR2
20927 --Actual Upgrade Debit Accounting Class
20928  , p_source_30            IN VARCHAR2
20929 --Use Actuals Upgrade Attributes Flag
20930  , p_source_31            IN VARCHAR2
20931 --Expenditure Item ID
20932  , p_source_32            IN NUMBER
20933 --Cost Distribution Line Number
20934  , p_source_33            IN NUMBER
20935 --Line Type
20936  , p_source_34            IN VARCHAR2
20937  , p_source_34_meaning    IN VARCHAR2
20938 --Reversed Line Number
20939  , p_source_35            IN NUMBER
20940 )
20941 IS
20942 
20943 l_component_type              VARCHAR2(80);
20944 l_component_code              VARCHAR2(30);
20945 l_component_type_code         VARCHAR2(1);
20946 l_component_appl_id           INTEGER;
20947 l_amb_context_code            VARCHAR2(30);
20948 l_entity_code                 VARCHAR2(30);
20949 l_event_class_code            VARCHAR2(30);
20950 l_ae_header_id                NUMBER;
20951 l_event_type_code             VARCHAR2(30);
20952 l_line_definition_code        VARCHAR2(30);
20953 l_line_definition_owner_code  VARCHAR2(1);
20954 --
20955 -- adr variables
20956 l_segment                     VARCHAR2(30);
20957 l_ccid                        NUMBER;
20958 l_adr_transaction_coa_id      NUMBER;
20959 l_adr_accounting_coa_id       NUMBER;
20960 l_adr_flexfield_segment_code  VARCHAR2(30);
20961 l_adr_flex_value_set_id       NUMBER;
20962 l_adr_value_type_code         VARCHAR2(30);
20963 l_adr_value_combination_id    NUMBER;
20964 l_adr_value_segment_code      VARCHAR2(30);
20965 
20966 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20967 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20968 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20969 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20970 
20971 -- 4262811 Variables ------------------------------------------------------------------------------------------
20972 l_entered_amt_idx             NUMBER;
20973 l_accted_amt_idx              NUMBER;
20974 l_acc_rev_flag                VARCHAR2(1);
20975 l_accrual_line_num            NUMBER;
20976 l_tmp_amt                     NUMBER;
20977 l_acc_rev_natural_side_code   VARCHAR2(1);
20978 
20979 l_num_entries                 NUMBER;
20980 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20981 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20982 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20983 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20984 l_recog_line_1                NUMBER;
20985 l_recog_line_2                NUMBER;
20986 
20987 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20988 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20989 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20990 
20991 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20992 
20993 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20994 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20995 
20996 ---------------------------------------------------------------------------------------------------------------
20997 
20998 
20999 --
21000 -- bulk performance
21001 --
21002 l_balance_type_code           VARCHAR2(1);
21003 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21004 l_log_module                  VARCHAR2(240);
21005 
21006 --
21007 -- Upgrade strategy
21008 --
21009 l_actual_upg_option           VARCHAR2(1);
21010 l_enc_upg_option           VARCHAR2(1);
21011 
21012 --
21013 BEGIN
21014 --
21015 IF g_log_enabled THEN
21016       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
21017 END IF;
21018 --
21019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21020 
21021       trace
21022          (p_msg      => 'BEGIN of AcctLineType_52'
21023          ,p_level    => C_LEVEL_PROCEDURE
21024          ,p_module   => l_log_module);
21025 
21029 l_component_code             := 'PA_RAW_COST_ADJ';
21026 END IF;
21027 --
21028 l_component_type             := 'AMB_JLT';
21030 l_component_type_code        := 'S';
21031 l_component_appl_id          :=  275;
21032 l_amb_context_code           := 'DEFAULT';
21033 l_entity_code                := 'EXPENDITURES';
21034 l_event_class_code           := 'WIP_COST_ADJ';
21035 l_event_type_code            := 'WIP_COST_ADJ_ALL';
21036 l_line_definition_owner_code := 'S';
21037 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
21038 --
21039 l_balance_type_code          := 'A';
21040 l_segment                     := NULL;
21041 l_ccid                        := NULL;
21042 l_adr_transaction_coa_id      := NULL;
21043 l_adr_accounting_coa_id       := NULL;
21044 l_adr_flexfield_segment_code  := NULL;
21045 l_adr_flex_value_set_id       := NULL;
21046 l_adr_value_type_code         := NULL;
21047 l_adr_value_combination_id    := NULL;
21048 l_adr_value_segment_code      := NULL;
21049 
21050 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21051 l_bflow_class_code           := '';    -- 4219869 Business Flow
21052 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21053 l_budgetary_control_flag     := 'N';
21054 
21055 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21056 l_bflow_applied_to_amt       := NULL; -- 5132302
21057 l_entered_amt_idx            := NULL;          -- 4262811
21058 l_accted_amt_idx             := NULL;          -- 4262811
21059 l_acc_rev_flag               := NULL;          -- 4262811
21060 l_accrual_line_num           := NULL;          -- 4262811
21061 l_tmp_amt                    := NULL;          -- 4262811
21062 --
21063  
21064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21065     l_balance_type_code <> 'B' THEN
21066 
21067    --
21068    XLA_AE_LINES_PKG.SetNewLine;
21069 
21070    p_balance_type_code          := l_balance_type_code;
21071    -- set the flag so later we will know whether the gain loss line needs to be created
21072    
21073    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21074      p_actual_flag :='A';
21075    END IF;
21076 
21077    --
21078    -- bulk performance
21079    --
21080    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21081                                       p_header_num   => 0); -- 4262811
21082    --
21083    -- set accounting line options
21084    --
21085    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21086            p_natural_side_code          => 'D'
21087          , p_gain_or_loss_flag          => 'N'
21088          , p_gl_transfer_mode_code      => 'S'
21089          , p_acct_entry_type_code       => 'A'
21090          , p_switch_side_flag           => 'Y'
21091          , p_merge_duplicate_code       => 'N'
21092          );
21093    --
21094    l_acc_rev_natural_side_code := 'C';  -- 4262811
21095    -- 
21096    --
21097    -- set accounting line type info
21098    --
21099    xla_ae_lines_pkg.SetAcctLineType
21100       (p_component_type             => l_component_type
21101       ,p_event_type_code            => l_event_type_code
21102       ,p_line_definition_owner_code => l_line_definition_owner_code
21103       ,p_line_definition_code       => l_line_definition_code
21104       ,p_accounting_line_code       => l_component_code
21105       ,p_accounting_line_type_code  => l_component_type_code
21106       ,p_accounting_line_appl_id    => l_component_appl_id
21107       ,p_amb_context_code           => l_amb_context_code
21108       ,p_entity_code                => l_entity_code
21109       ,p_event_class_code           => l_event_class_code);
21110    --
21111    -- set accounting class
21112    --
21113    xla_ae_lines_pkg.SetAcctClass(
21114            p_accounting_class_code  => 'COST'
21115          , p_ae_header_id           => l_ae_header_id
21116          );
21117 
21118    --
21119    -- set rounding class
21120    --
21121    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21122                       'COST';
21123 
21124    --
21125    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21126    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21127    --
21128    -- bulk performance
21129    --
21130    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21131 
21132    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21133       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21134 
21135    -- 4955764
21136    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21137       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21138 
21139    -- 4458381 Public Sector Enh
21140    
21141    --
21142    -- set accounting attributes for the line type
21143    --
21144    l_entered_amt_idx := 22;
21145    l_accted_amt_idx  := 27;
21146    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21147    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21148    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
21149    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
21150    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
21154    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
21151    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
21152    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
21153    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
21155    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
21156    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
21157    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
21158    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
21159    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
21160    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
21161    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
21162    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
21163    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
21164    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
21165    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
21166    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
21167    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
21168    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
21169    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
21170    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
21171    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
21172    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
21173    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
21174    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
21175    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
21176    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
21177    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
21178    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
21179    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
21180    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
21181    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
21182    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
21183    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
21184    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
21185    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
21186    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
21187    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
21188    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
21189    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
21190    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
21191    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
21192    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
21193    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
21194    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
21195    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
21196    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
21197    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
21198    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
21199    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
21200    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
21201    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
21202    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
21203    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
21204    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
21205    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
21206    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
21207 
21208    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21209    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21210 
21211    ---------------------------------------------------------------------------------------------------------------
21212    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21213    ---------------------------------------------------------------------------------------------------------------
21214    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21215 
21216    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21217    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21218 
21219    IF xla_accounting_cache_pkg.GetValueChar
21220          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21221          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21222    AND l_bflow_method_code = 'PRIOR_ENTRY'
21223 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21224    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21225          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21226        )
21227    THEN
21228          xla_ae_lines_pkg.BflowUpgEntry
21229            (p_business_method_code    => l_bflow_method_code
21230            ,p_business_class_code     => l_bflow_class_code
21231            ,p_balance_type            => l_balance_type_code);
21232    ELSE
21233       NULL;
21234 -- No business flow processing for business flow method of NONE.
21235    END IF;
21236 
21237    --
21238    -- call analytical criteria
21242    -- call description
21239    --
21240    
21241    --
21243    --
21244    -- No description or it is inherited.
21245    --
21246    -- call ADRs
21247    -- Bug 4922099
21248    --
21249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21250         (NVL(l_actual_upg_option, 'N') = 'O') OR
21251         (NVL(l_enc_upg_option, 'N') = 'O')
21252       )
21253    THEN
21254    NULL;
21255    --
21256    --
21257    
21258   l_ccid := AcctDerRule_4(
21259            p_application_id           => p_application_id
21260          , p_ae_header_id             => l_ae_header_id 
21261 , p_source_4 => p_source_4
21262 , p_source_5 => p_source_5
21263          , x_transaction_coa_id       => l_adr_transaction_coa_id
21264          , x_accounting_coa_id        => l_adr_accounting_coa_id
21265          , x_value_type_code          => l_adr_value_type_code
21266          , p_side                     => 'NA'
21267    );
21268 
21269    xla_ae_lines_pkg.set_ccid(
21270     p_code_combination_id          => l_ccid
21271   , p_value_type_code              => l_adr_value_type_code
21272   , p_transaction_coa_id           => l_adr_transaction_coa_id
21273   , p_accounting_coa_id            => l_adr_accounting_coa_id
21274   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
21275   , p_adr_type_code                => 'S'
21276   , p_component_type               => l_component_type
21277   , p_component_code               => l_component_code
21278   , p_component_type_code          => l_component_type_code
21279   , p_component_appl_id            => l_component_appl_id
21280   , p_amb_context_code             => l_amb_context_code
21281   , p_side                         => 'NA'
21282   );
21283 
21284 
21285    --
21286    --
21287    END IF;
21288    --
21289    -- Bug 4922099
21290    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21291           (NVL(l_enc_upg_option, 'N') = 'O')
21292         ) AND
21293         (l_bflow_method_code = 'PRIOR_ENTRY')
21294       )
21295    THEN
21296       IF
21297       --
21298       1 = 2
21299       --
21300       THEN
21301       xla_accounting_err_pkg.build_message
21302                                     (p_appli_s_name            => 'XLA'
21303                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21304                                     ,p_token_1                 => 'LINE_NUMBER'
21305                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21306                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21307                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21308                                                                              l_component_type
21309                                                                             ,l_component_code
21310                                                                             ,l_component_type_code
21311                                                                             ,l_component_appl_id
21312                                                                             ,l_amb_context_code
21313                                                                             ,l_entity_code
21314                                                                             ,l_event_class_code
21315                                                                            )
21316                                     ,p_token_3                 => 'OWNER'
21317                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21318                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21319                                                                           ,p_lookup_code    => l_component_type_code
21320                                                                          )
21321                                     ,p_token_4                 => 'PRODUCT_NAME'
21322                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21323                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21324                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21325                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21326                                     ,p_ae_header_id            =>  NULL
21327                                        );
21328 
21329         IF (C_LEVEL_ERROR>= g_log_level) THEN
21330                  trace
21331                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21332                       ,p_level    => C_LEVEL_ERROR
21333                       ,p_module   => l_log_module);
21334         END IF;
21335       END IF;
21336    END IF;
21337    --
21338    --
21339    ------------------------------------------------------------------------------------------------
21340    -- 4219869 Business Flow
21341    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21342    -- Prior Entry.  Currently, the following code is always generated.
21343    ------------------------------------------------------------------------------------------------
21344    XLA_AE_LINES_PKG.ValidateCurrentLine;
21345 
21349    ------------------------------------------------------------------------------------
21346    ------------------------------------------------------------------------------------
21347    -- 4219869 Business Flow
21348    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21350    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21351 
21352    ----------------------------------------------------------------------------------
21353    -- 4219869 Business Flow
21354    -- Update journal entry status -- Need to generate this within IF <condition>
21355    ----------------------------------------------------------------------------------
21356    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21357          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21358          ,p_balance_type_code => l_balance_type_code
21359          );
21360 
21361    -------------------------------------------------------------------------------------------
21362    -- 4262811 - Generate the Accrual Reversal lines
21363    -------------------------------------------------------------------------------------------
21364    BEGIN
21365       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21366                               (g_array_event(p_event_id).array_value_num('header_index'));
21367       IF l_acc_rev_flag IS NULL THEN
21368          l_acc_rev_flag := 'N';
21369       END IF;
21370    EXCEPTION
21371       WHEN OTHERS THEN
21372          l_acc_rev_flag := 'N';
21373    END;
21374    --
21375    IF (l_acc_rev_flag = 'Y') THEN
21376 
21377        -- 4645092  ------------------------------------------------------------------------------
21378        -- To allow MPA report to determine if it should generate report process
21379        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21380        ------------------------------------------------------------------------------------------
21381 
21382        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21383        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21384 
21385        --
21386        -- Update the line information that should be overwritten
21387        --
21388        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21389                                          p_header_num   => 1);
21390        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21391 
21392        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21393 
21394        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21395           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21396        END IF;
21397 
21398       --
21399       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21400       --
21401       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21402           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21403       ELSE
21404           ---------------------------------------------------------------------------------------------------
21405           -- 4262811a Switch Sign
21406           ---------------------------------------------------------------------------------------------------
21407           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21408           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21409                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21410           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21411                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21412           -- 5132302
21413           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21414                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21415 
21416       END IF;
21417 
21418       -- 4955764
21419       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21421 
21422 
21423       XLA_AE_LINES_PKG.ValidateCurrentLine;
21424       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21425 
21426       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21427                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21428                ,p_balance_type_code => l_balance_type_code);
21429 
21430    END IF;
21431 
21432    -----------------------------------------------------------------------------------------
21433    -- 4262811 Multiperiod Accounting
21434    -----------------------------------------------------------------------------------------
21435      -- No MPA option is assigned.
21436 
21437 
21438 END IF;
21439 --
21440 
21441 --
21442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21443    trace
21444       (p_msg      => 'END of AcctLineType_52'
21445       ,p_level    => C_LEVEL_PROCEDURE
21446       ,p_module   => l_log_module);
21447 END IF;
21448 --
21449 EXCEPTION
21450   WHEN xla_exceptions_pkg.application_exception THEN
21454            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_52');
21451       RAISE;
21452   WHEN OTHERS THEN
21453        xla_exceptions_pkg.raise_message
21455 END AcctLineType_52;
21456 --
21457 
21458 ---------------------------------------
21459 --
21460 -- PRIVATE FUNCTION
21461 --         AcctLineType_53
21462 --
21463 ---------------------------------------
21464 PROCEDURE AcctLineType_53 (
21465   p_application_id        IN NUMBER
21466  ,p_event_id              IN NUMBER
21467  ,p_calculate_acctd_flag  IN VARCHAR2
21468  ,p_calculate_g_l_flag    IN VARCHAR2
21469  ,p_actual_flag           IN OUT VARCHAR2
21470  ,p_balance_type_code     OUT VARCHAR2
21471  ,p_gain_or_loss_ref      OUT VARCHAR2
21472  
21473 --Cost CCID
21474  , p_source_3            IN NUMBER
21475 --Allow Account Override Flag
21476  , p_source_4            IN VARCHAR2
21477 --Cost Clearing CCID
21478  , p_source_6            IN NUMBER
21479 --Adjustment Cost Clearing CCID
21480  , p_source_7            IN NUMBER
21481 --Reversing Line Flag
21482  , p_source_22            IN VARCHAR2
21483 --Actual Upgrade Credit Accounting Class
21484  , p_source_23            IN VARCHAR2
21485 --Entered Raw Cost
21486  , p_source_24            IN NUMBER
21487 --Entered Currency Code
21488  , p_source_25            IN VARCHAR2
21489 --Accounted Raw Cost
21490  , p_source_26            IN NUMBER
21491 --Exchange Rate Date
21492  , p_source_27            IN DATE
21493 --Exchange Rate
21494  , p_source_28            IN NUMBER
21495 --Exchange Rate Type
21496  , p_source_29            IN VARCHAR2
21497 --Actual Upgrade Debit Accounting Class
21498  , p_source_30            IN VARCHAR2
21499 --Use Actuals Upgrade Attributes Flag
21500  , p_source_31            IN VARCHAR2
21501 --Expenditure Item ID
21502  , p_source_32            IN NUMBER
21503 --Cost Distribution Line Number
21504  , p_source_33            IN NUMBER
21505 --Line Type
21506  , p_source_34            IN VARCHAR2
21507  , p_source_34_meaning    IN VARCHAR2
21508 --Reversed Line Number
21509  , p_source_35            IN NUMBER
21510 )
21511 IS
21512 
21513 l_component_type              VARCHAR2(80);
21514 l_component_code              VARCHAR2(30);
21515 l_component_type_code         VARCHAR2(1);
21516 l_component_appl_id           INTEGER;
21517 l_amb_context_code            VARCHAR2(30);
21518 l_entity_code                 VARCHAR2(30);
21519 l_event_class_code            VARCHAR2(30);
21520 l_ae_header_id                NUMBER;
21521 l_event_type_code             VARCHAR2(30);
21522 l_line_definition_code        VARCHAR2(30);
21523 l_line_definition_owner_code  VARCHAR2(1);
21524 --
21525 -- adr variables
21526 l_segment                     VARCHAR2(30);
21527 l_ccid                        NUMBER;
21528 l_adr_transaction_coa_id      NUMBER;
21529 l_adr_accounting_coa_id       NUMBER;
21530 l_adr_flexfield_segment_code  VARCHAR2(30);
21531 l_adr_flex_value_set_id       NUMBER;
21532 l_adr_value_type_code         VARCHAR2(30);
21533 l_adr_value_combination_id    NUMBER;
21534 l_adr_value_segment_code      VARCHAR2(30);
21535 
21536 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21537 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21538 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21539 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21540 
21541 -- 4262811 Variables ------------------------------------------------------------------------------------------
21542 l_entered_amt_idx             NUMBER;
21543 l_accted_amt_idx              NUMBER;
21544 l_acc_rev_flag                VARCHAR2(1);
21545 l_accrual_line_num            NUMBER;
21546 l_tmp_amt                     NUMBER;
21547 l_acc_rev_natural_side_code   VARCHAR2(1);
21548 
21549 l_num_entries                 NUMBER;
21550 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21551 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21552 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21553 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21554 l_recog_line_1                NUMBER;
21555 l_recog_line_2                NUMBER;
21556 
21557 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21558 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21559 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21560 
21561 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21562 
21563 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21564 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21565 
21566 ---------------------------------------------------------------------------------------------------------------
21567 
21568 
21569 --
21570 -- bulk performance
21571 --
21572 l_balance_type_code           VARCHAR2(1);
21573 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21574 l_log_module                  VARCHAR2(240);
21575 
21576 --
21577 -- Upgrade strategy
21578 --
21579 l_actual_upg_option           VARCHAR2(1);
21580 l_enc_upg_option           VARCHAR2(1);
21581 
21582 --
21583 BEGIN
21584 --
21585 IF g_log_enabled THEN
21586       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
21590 
21587 END IF;
21588 --
21589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21591       trace
21592          (p_msg      => 'BEGIN of AcctLineType_53'
21593          ,p_level    => C_LEVEL_PROCEDURE
21594          ,p_module   => l_log_module);
21595 
21596 END IF;
21597 --
21598 l_component_type             := 'AMB_JLT';
21599 l_component_code             := 'PA_RAW_COST_CLEARING';
21600 l_component_type_code        := 'S';
21601 l_component_appl_id          :=  275;
21602 l_amb_context_code           := 'DEFAULT';
21603 l_entity_code                := 'EXPENDITURES';
21604 l_event_class_code           := 'USG_COST';
21605 l_event_type_code            := 'USG_COST_ALL';
21606 l_line_definition_owner_code := 'S';
21607 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
21608 --
21609 l_balance_type_code          := 'A';
21610 l_segment                     := NULL;
21611 l_ccid                        := NULL;
21612 l_adr_transaction_coa_id      := NULL;
21613 l_adr_accounting_coa_id       := NULL;
21614 l_adr_flexfield_segment_code  := NULL;
21615 l_adr_flex_value_set_id       := NULL;
21616 l_adr_value_type_code         := NULL;
21617 l_adr_value_combination_id    := NULL;
21618 l_adr_value_segment_code      := NULL;
21619 
21620 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21621 l_bflow_class_code           := '';    -- 4219869 Business Flow
21622 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21623 l_budgetary_control_flag     := 'N';
21624 
21625 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21626 l_bflow_applied_to_amt       := NULL; -- 5132302
21627 l_entered_amt_idx            := NULL;          -- 4262811
21628 l_accted_amt_idx             := NULL;          -- 4262811
21629 l_acc_rev_flag               := NULL;          -- 4262811
21630 l_accrual_line_num           := NULL;          -- 4262811
21631 l_tmp_amt                    := NULL;          -- 4262811
21632 --
21633  
21634 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21635     l_balance_type_code <> 'B' THEN
21636 
21637    --
21638    XLA_AE_LINES_PKG.SetNewLine;
21639 
21640    p_balance_type_code          := l_balance_type_code;
21641    -- set the flag so later we will know whether the gain loss line needs to be created
21642    
21643    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21644      p_actual_flag :='A';
21645    END IF;
21646 
21647    --
21648    -- bulk performance
21649    --
21650    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21651                                       p_header_num   => 0); -- 4262811
21652    --
21653    -- set accounting line options
21654    --
21655    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21656            p_natural_side_code          => 'C'
21657          , p_gain_or_loss_flag          => 'N'
21658          , p_gl_transfer_mode_code      => 'S'
21659          , p_acct_entry_type_code       => 'A'
21660          , p_switch_side_flag           => 'Y'
21661          , p_merge_duplicate_code       => 'N'
21662          );
21663    --
21664    l_acc_rev_natural_side_code := 'D';  -- 4262811
21665    -- 
21666    --
21667    -- set accounting line type info
21668    --
21669    xla_ae_lines_pkg.SetAcctLineType
21670       (p_component_type             => l_component_type
21671       ,p_event_type_code            => l_event_type_code
21672       ,p_line_definition_owner_code => l_line_definition_owner_code
21673       ,p_line_definition_code       => l_line_definition_code
21674       ,p_accounting_line_code       => l_component_code
21675       ,p_accounting_line_type_code  => l_component_type_code
21676       ,p_accounting_line_appl_id    => l_component_appl_id
21677       ,p_amb_context_code           => l_amb_context_code
21678       ,p_entity_code                => l_entity_code
21679       ,p_event_class_code           => l_event_class_code);
21680    --
21681    -- set accounting class
21682    --
21683    xla_ae_lines_pkg.SetAcctClass(
21684            p_accounting_class_code  => 'COST_CLEARING'
21685          , p_ae_header_id           => l_ae_header_id
21686          );
21687 
21688    --
21689    -- set rounding class
21690    --
21691    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21692                       'COST_CLEARING';
21693 
21694    --
21695    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21696    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21697    --
21698    -- bulk performance
21699    --
21700    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21701 
21702    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21703       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21704 
21705    -- 4955764
21706    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21707       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21708 
21709    -- 4458381 Public Sector Enh
21710    
21711    --
21712    -- set accounting attributes for the line type
21713    --
21714    l_entered_amt_idx := 22;
21715    l_accted_amt_idx  := 27;
21716    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21720    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
21717    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21718    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
21719    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
21721    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
21722    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
21723    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
21724    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
21725    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
21726    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
21727    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
21728    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
21729    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
21730    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
21731    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
21732    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
21733    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
21734    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
21735    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
21736    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
21737    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
21738    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
21739    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
21740    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
21741    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
21742    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
21743    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
21744    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
21745    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
21746    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
21747    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
21748    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
21749    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
21750    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
21751    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
21752    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
21753    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
21754    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
21755    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
21756    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
21757    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
21758    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
21759    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
21760    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
21761    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
21762    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
21763    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
21764    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
21765    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
21766    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
21767    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
21768    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
21769    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
21770    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
21771    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
21772    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
21773    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
21774    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
21775    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
21776    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
21777 
21778    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21779    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21780 
21781    ---------------------------------------------------------------------------------------------------------------
21782    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21783    ---------------------------------------------------------------------------------------------------------------
21784    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21785 
21786    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21787    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21788 
21789    IF xla_accounting_cache_pkg.GetValueChar
21790          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21791          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21792    AND l_bflow_method_code = 'PRIOR_ENTRY'
21793 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21794    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21795          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21796        )
21797    THEN
21798          xla_ae_lines_pkg.BflowUpgEntry
21802    ELSE
21799            (p_business_method_code    => l_bflow_method_code
21800            ,p_business_class_code     => l_bflow_class_code
21801            ,p_balance_type            => l_balance_type_code);
21803       NULL;
21804 -- No business flow processing for business flow method of NONE.
21805    END IF;
21806 
21807    --
21808    -- call analytical criteria
21809    --
21810    
21811    --
21812    -- call description
21813    --
21814    -- No description or it is inherited.
21815    --
21816    -- call ADRs
21817    -- Bug 4922099
21818    --
21819    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21820         (NVL(l_actual_upg_option, 'N') = 'O') OR
21821         (NVL(l_enc_upg_option, 'N') = 'O')
21822       )
21823    THEN
21824    NULL;
21825    --
21826    --
21827    
21828   l_ccid := AcctDerRule_5(
21829            p_application_id           => p_application_id
21830          , p_ae_header_id             => l_ae_header_id 
21831 , p_source_4 => p_source_4
21832 , p_source_6 => p_source_6
21833 , p_source_7 => p_source_7
21834          , x_transaction_coa_id       => l_adr_transaction_coa_id
21835          , x_accounting_coa_id        => l_adr_accounting_coa_id
21836          , x_value_type_code          => l_adr_value_type_code
21837          , p_side                     => 'NA'
21838    );
21839 
21840    xla_ae_lines_pkg.set_ccid(
21841     p_code_combination_id          => l_ccid
21842   , p_value_type_code              => l_adr_value_type_code
21843   , p_transaction_coa_id           => l_adr_transaction_coa_id
21844   , p_accounting_coa_id            => l_adr_accounting_coa_id
21845   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
21846   , p_adr_type_code                => 'S'
21847   , p_component_type               => l_component_type
21848   , p_component_code               => l_component_code
21849   , p_component_type_code          => l_component_type_code
21850   , p_component_appl_id            => l_component_appl_id
21851   , p_amb_context_code             => l_amb_context_code
21852   , p_side                         => 'NA'
21853   );
21854 
21855 
21856    --
21857    --
21858    END IF;
21859    --
21860    -- Bug 4922099
21861    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21862           (NVL(l_enc_upg_option, 'N') = 'O')
21863         ) AND
21864         (l_bflow_method_code = 'PRIOR_ENTRY')
21865       )
21866    THEN
21867       IF
21868       --
21869       1 = 2
21870       --
21871       THEN
21872       xla_accounting_err_pkg.build_message
21873                                     (p_appli_s_name            => 'XLA'
21874                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21875                                     ,p_token_1                 => 'LINE_NUMBER'
21876                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21877                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21878                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21879                                                                              l_component_type
21880                                                                             ,l_component_code
21881                                                                             ,l_component_type_code
21882                                                                             ,l_component_appl_id
21883                                                                             ,l_amb_context_code
21884                                                                             ,l_entity_code
21885                                                                             ,l_event_class_code
21886                                                                            )
21887                                     ,p_token_3                 => 'OWNER'
21888                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21889                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21890                                                                           ,p_lookup_code    => l_component_type_code
21891                                                                          )
21892                                     ,p_token_4                 => 'PRODUCT_NAME'
21893                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21894                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21895                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21896                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21897                                     ,p_ae_header_id            =>  NULL
21898                                        );
21899 
21900         IF (C_LEVEL_ERROR>= g_log_level) THEN
21901                  trace
21902                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21903                       ,p_level    => C_LEVEL_ERROR
21904                       ,p_module   => l_log_module);
21905         END IF;
21906       END IF;
21907    END IF;
21908    --
21909    --
21910    ------------------------------------------------------------------------------------------------
21911    -- 4219869 Business Flow
21915    XLA_AE_LINES_PKG.ValidateCurrentLine;
21912    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21913    -- Prior Entry.  Currently, the following code is always generated.
21914    ------------------------------------------------------------------------------------------------
21916 
21917    ------------------------------------------------------------------------------------
21918    -- 4219869 Business Flow
21919    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21920    ------------------------------------------------------------------------------------
21921    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21922 
21923    ----------------------------------------------------------------------------------
21924    -- 4219869 Business Flow
21925    -- Update journal entry status -- Need to generate this within IF <condition>
21926    ----------------------------------------------------------------------------------
21927    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21928          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21929          ,p_balance_type_code => l_balance_type_code
21930          );
21931 
21932    -------------------------------------------------------------------------------------------
21933    -- 4262811 - Generate the Accrual Reversal lines
21934    -------------------------------------------------------------------------------------------
21935    BEGIN
21936       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21937                               (g_array_event(p_event_id).array_value_num('header_index'));
21938       IF l_acc_rev_flag IS NULL THEN
21939          l_acc_rev_flag := 'N';
21940       END IF;
21941    EXCEPTION
21942       WHEN OTHERS THEN
21943          l_acc_rev_flag := 'N';
21944    END;
21945    --
21946    IF (l_acc_rev_flag = 'Y') THEN
21947 
21948        -- 4645092  ------------------------------------------------------------------------------
21949        -- To allow MPA report to determine if it should generate report process
21950        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21951        ------------------------------------------------------------------------------------------
21952 
21953        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21954        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21955 
21956        --
21957        -- Update the line information that should be overwritten
21958        --
21959        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21960                                          p_header_num   => 1);
21961        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21962 
21963        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21964 
21965        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21966           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21967        END IF;
21968 
21969       --
21970       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21971       --
21972       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21973           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21974       ELSE
21975           ---------------------------------------------------------------------------------------------------
21976           -- 4262811a Switch Sign
21977           ---------------------------------------------------------------------------------------------------
21978           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21979           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21980                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21981           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21982                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21983           -- 5132302
21984           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21985                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21986 
21987       END IF;
21988 
21989       -- 4955764
21990       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21991       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21992 
21993 
21994       XLA_AE_LINES_PKG.ValidateCurrentLine;
21995       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21996 
21997       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21998                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21999                ,p_balance_type_code => l_balance_type_code);
22000 
22001    END IF;
22002 
22003    -----------------------------------------------------------------------------------------
22004    -- 4262811 Multiperiod Accounting
22005    -----------------------------------------------------------------------------------------
22006      -- No MPA option is assigned.
22007 
22008 
22009 END IF;
22010 --
22011 
22012 --
22016       ,p_level    => C_LEVEL_PROCEDURE
22013 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22014    trace
22015       (p_msg      => 'END of AcctLineType_53'
22017       ,p_module   => l_log_module);
22018 END IF;
22019 --
22020 EXCEPTION
22021   WHEN xla_exceptions_pkg.application_exception THEN
22022       RAISE;
22023   WHEN OTHERS THEN
22024        xla_exceptions_pkg.raise_message
22025            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_53');
22026 END AcctLineType_53;
22027 --
22028 
22029 ---------------------------------------
22030 --
22031 -- PRIVATE FUNCTION
22032 --         AcctLineType_54
22033 --
22034 ---------------------------------------
22035 PROCEDURE AcctLineType_54 (
22036   p_application_id        IN NUMBER
22037  ,p_event_id              IN NUMBER
22038  ,p_calculate_acctd_flag  IN VARCHAR2
22039  ,p_calculate_g_l_flag    IN VARCHAR2
22040  ,p_actual_flag           IN OUT VARCHAR2
22041  ,p_balance_type_code     OUT VARCHAR2
22042  ,p_gain_or_loss_ref      OUT VARCHAR2
22043  
22044 --Cost CCID
22045  , p_source_3            IN NUMBER
22046 --Allow Account Override Flag
22047  , p_source_4            IN VARCHAR2
22048 --Cost Clearing CCID
22049  , p_source_6            IN NUMBER
22050 --Adjustment Cost Clearing CCID
22051  , p_source_7            IN NUMBER
22052 --Reversing Line Flag
22053  , p_source_22            IN VARCHAR2
22054 --Actual Upgrade Credit Accounting Class
22055  , p_source_23            IN VARCHAR2
22056 --Entered Raw Cost
22057  , p_source_24            IN NUMBER
22058 --Entered Currency Code
22059  , p_source_25            IN VARCHAR2
22060 --Accounted Raw Cost
22061  , p_source_26            IN NUMBER
22062 --Exchange Rate Date
22063  , p_source_27            IN DATE
22064 --Exchange Rate
22065  , p_source_28            IN NUMBER
22066 --Exchange Rate Type
22067  , p_source_29            IN VARCHAR2
22068 --Actual Upgrade Debit Accounting Class
22069  , p_source_30            IN VARCHAR2
22070 --Use Actuals Upgrade Attributes Flag
22071  , p_source_31            IN VARCHAR2
22072 --Expenditure Item ID
22073  , p_source_32            IN NUMBER
22074 --Cost Distribution Line Number
22075  , p_source_33            IN NUMBER
22076 --Line Type
22077  , p_source_34            IN VARCHAR2
22078  , p_source_34_meaning    IN VARCHAR2
22079 --Reversed Line Number
22080  , p_source_35            IN NUMBER
22081 )
22082 IS
22083 
22084 l_component_type              VARCHAR2(80);
22085 l_component_code              VARCHAR2(30);
22086 l_component_type_code         VARCHAR2(1);
22087 l_component_appl_id           INTEGER;
22088 l_amb_context_code            VARCHAR2(30);
22089 l_entity_code                 VARCHAR2(30);
22090 l_event_class_code            VARCHAR2(30);
22091 l_ae_header_id                NUMBER;
22092 l_event_type_code             VARCHAR2(30);
22093 l_line_definition_code        VARCHAR2(30);
22094 l_line_definition_owner_code  VARCHAR2(1);
22095 --
22096 -- adr variables
22097 l_segment                     VARCHAR2(30);
22098 l_ccid                        NUMBER;
22099 l_adr_transaction_coa_id      NUMBER;
22100 l_adr_accounting_coa_id       NUMBER;
22101 l_adr_flexfield_segment_code  VARCHAR2(30);
22102 l_adr_flex_value_set_id       NUMBER;
22103 l_adr_value_type_code         VARCHAR2(30);
22104 l_adr_value_combination_id    NUMBER;
22105 l_adr_value_segment_code      VARCHAR2(30);
22106 
22107 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22108 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22109 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22110 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22111 
22112 -- 4262811 Variables ------------------------------------------------------------------------------------------
22113 l_entered_amt_idx             NUMBER;
22114 l_accted_amt_idx              NUMBER;
22115 l_acc_rev_flag                VARCHAR2(1);
22116 l_accrual_line_num            NUMBER;
22117 l_tmp_amt                     NUMBER;
22118 l_acc_rev_natural_side_code   VARCHAR2(1);
22119 
22120 l_num_entries                 NUMBER;
22121 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22122 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22123 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22124 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22125 l_recog_line_1                NUMBER;
22126 l_recog_line_2                NUMBER;
22127 
22128 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22129 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22130 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22131 
22132 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22133 
22134 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22135 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22136 
22137 ---------------------------------------------------------------------------------------------------------------
22138 
22139 
22140 --
22141 -- bulk performance
22142 --
22143 l_balance_type_code           VARCHAR2(1);
22144 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22145 l_log_module                  VARCHAR2(240);
22146 
22150 l_actual_upg_option           VARCHAR2(1);
22147 --
22148 -- Upgrade strategy
22149 --
22151 l_enc_upg_option           VARCHAR2(1);
22152 
22153 --
22154 BEGIN
22155 --
22156 IF g_log_enabled THEN
22157       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
22158 END IF;
22159 --
22160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22161 
22162       trace
22163          (p_msg      => 'BEGIN of AcctLineType_54'
22164          ,p_level    => C_LEVEL_PROCEDURE
22165          ,p_module   => l_log_module);
22166 
22167 END IF;
22168 --
22169 l_component_type             := 'AMB_JLT';
22170 l_component_code             := 'PA_RAW_COST_CLEARING';
22171 l_component_type_code        := 'S';
22172 l_component_appl_id          :=  275;
22173 l_amb_context_code           := 'DEFAULT';
22174 l_entity_code                := 'EXPENDITURES';
22175 l_event_class_code           := 'INVENTORY_COST';
22176 l_event_type_code            := 'INVENTORY_COST_ALL';
22177 l_line_definition_owner_code := 'S';
22178 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
22179 --
22180 l_balance_type_code          := 'A';
22181 l_segment                     := NULL;
22182 l_ccid                        := NULL;
22183 l_adr_transaction_coa_id      := NULL;
22184 l_adr_accounting_coa_id       := NULL;
22185 l_adr_flexfield_segment_code  := NULL;
22186 l_adr_flex_value_set_id       := NULL;
22187 l_adr_value_type_code         := NULL;
22188 l_adr_value_combination_id    := NULL;
22189 l_adr_value_segment_code      := NULL;
22190 
22191 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22192 l_bflow_class_code           := '';    -- 4219869 Business Flow
22193 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22194 l_budgetary_control_flag     := 'N';
22195 
22196 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22197 l_bflow_applied_to_amt       := NULL; -- 5132302
22198 l_entered_amt_idx            := NULL;          -- 4262811
22199 l_accted_amt_idx             := NULL;          -- 4262811
22200 l_acc_rev_flag               := NULL;          -- 4262811
22201 l_accrual_line_num           := NULL;          -- 4262811
22202 l_tmp_amt                    := NULL;          -- 4262811
22203 --
22204  
22205 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22206     l_balance_type_code <> 'B' THEN
22207 
22208    --
22209    XLA_AE_LINES_PKG.SetNewLine;
22210 
22211    p_balance_type_code          := l_balance_type_code;
22212    -- set the flag so later we will know whether the gain loss line needs to be created
22213    
22214    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22215      p_actual_flag :='A';
22216    END IF;
22217 
22218    --
22219    -- bulk performance
22220    --
22221    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22222                                       p_header_num   => 0); -- 4262811
22223    --
22224    -- set accounting line options
22225    --
22226    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22227            p_natural_side_code          => 'C'
22228          , p_gain_or_loss_flag          => 'N'
22229          , p_gl_transfer_mode_code      => 'S'
22230          , p_acct_entry_type_code       => 'A'
22231          , p_switch_side_flag           => 'Y'
22232          , p_merge_duplicate_code       => 'N'
22233          );
22234    --
22235    l_acc_rev_natural_side_code := 'D';  -- 4262811
22236    -- 
22237    --
22238    -- set accounting line type info
22239    --
22240    xla_ae_lines_pkg.SetAcctLineType
22241       (p_component_type             => l_component_type
22242       ,p_event_type_code            => l_event_type_code
22243       ,p_line_definition_owner_code => l_line_definition_owner_code
22244       ,p_line_definition_code       => l_line_definition_code
22245       ,p_accounting_line_code       => l_component_code
22246       ,p_accounting_line_type_code  => l_component_type_code
22247       ,p_accounting_line_appl_id    => l_component_appl_id
22248       ,p_amb_context_code           => l_amb_context_code
22249       ,p_entity_code                => l_entity_code
22250       ,p_event_class_code           => l_event_class_code);
22251    --
22252    -- set accounting class
22253    --
22254    xla_ae_lines_pkg.SetAcctClass(
22255            p_accounting_class_code  => 'COST_CLEARING'
22256          , p_ae_header_id           => l_ae_header_id
22257          );
22258 
22259    --
22260    -- set rounding class
22261    --
22262    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22263                       'COST_CLEARING';
22264 
22265    --
22266    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22267    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22268    --
22269    -- bulk performance
22270    --
22271    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22272 
22273    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22274       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22275 
22276    -- 4955764
22277    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22281    
22278       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22279 
22280    -- 4458381 Public Sector Enh
22282    --
22283    -- set accounting attributes for the line type
22284    --
22285    l_entered_amt_idx := 22;
22286    l_accted_amt_idx  := 27;
22287    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22288    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22289    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
22290    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
22291    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
22292    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
22293    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
22294    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
22295    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
22296    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
22297    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
22298    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
22299    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
22300    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
22301    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
22302    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
22303    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
22304    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
22305    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
22306    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
22307    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
22308    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
22309    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
22310    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
22311    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
22312    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
22313    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
22314    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
22315    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
22316    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
22317    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
22318    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
22319    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
22320    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
22321    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
22322    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
22323    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
22324    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
22325    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
22326    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
22327    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
22328    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
22329    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
22330    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
22331    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
22332    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
22333    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
22334    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
22335    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
22336    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
22337    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
22338    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
22339    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
22340    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
22341    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
22342    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
22343    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
22344    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
22345    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
22346    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
22347    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
22348 
22349    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22350    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22351 
22352    ---------------------------------------------------------------------------------------------------------------
22353    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22354    ---------------------------------------------------------------------------------------------------------------
22355    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22356 
22357    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22358    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22359 
22360    IF xla_accounting_cache_pkg.GetValueChar
22361          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22362          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22366          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22363    AND l_bflow_method_code = 'PRIOR_ENTRY'
22364 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22365    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22367        )
22368    THEN
22369          xla_ae_lines_pkg.BflowUpgEntry
22370            (p_business_method_code    => l_bflow_method_code
22371            ,p_business_class_code     => l_bflow_class_code
22372            ,p_balance_type            => l_balance_type_code);
22373    ELSE
22374       NULL;
22375 -- No business flow processing for business flow method of NONE.
22376    END IF;
22377 
22378    --
22379    -- call analytical criteria
22380    --
22381    
22382    --
22383    -- call description
22384    --
22385    -- No description or it is inherited.
22386    --
22387    -- call ADRs
22388    -- Bug 4922099
22389    --
22390    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22391         (NVL(l_actual_upg_option, 'N') = 'O') OR
22392         (NVL(l_enc_upg_option, 'N') = 'O')
22393       )
22394    THEN
22395    NULL;
22396    --
22397    --
22398    
22399   l_ccid := AcctDerRule_5(
22400            p_application_id           => p_application_id
22401          , p_ae_header_id             => l_ae_header_id 
22402 , p_source_4 => p_source_4
22403 , p_source_6 => p_source_6
22404 , p_source_7 => p_source_7
22405          , x_transaction_coa_id       => l_adr_transaction_coa_id
22406          , x_accounting_coa_id        => l_adr_accounting_coa_id
22407          , x_value_type_code          => l_adr_value_type_code
22408          , p_side                     => 'NA'
22409    );
22410 
22411    xla_ae_lines_pkg.set_ccid(
22412     p_code_combination_id          => l_ccid
22413   , p_value_type_code              => l_adr_value_type_code
22414   , p_transaction_coa_id           => l_adr_transaction_coa_id
22415   , p_accounting_coa_id            => l_adr_accounting_coa_id
22416   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
22417   , p_adr_type_code                => 'S'
22418   , p_component_type               => l_component_type
22419   , p_component_code               => l_component_code
22420   , p_component_type_code          => l_component_type_code
22421   , p_component_appl_id            => l_component_appl_id
22422   , p_amb_context_code             => l_amb_context_code
22423   , p_side                         => 'NA'
22424   );
22425 
22426 
22427    --
22428    --
22429    END IF;
22430    --
22431    -- Bug 4922099
22432    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22433           (NVL(l_enc_upg_option, 'N') = 'O')
22434         ) AND
22435         (l_bflow_method_code = 'PRIOR_ENTRY')
22436       )
22437    THEN
22438       IF
22439       --
22440       1 = 2
22441       --
22442       THEN
22443       xla_accounting_err_pkg.build_message
22444                                     (p_appli_s_name            => 'XLA'
22445                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22446                                     ,p_token_1                 => 'LINE_NUMBER'
22447                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22448                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22449                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22450                                                                              l_component_type
22451                                                                             ,l_component_code
22452                                                                             ,l_component_type_code
22453                                                                             ,l_component_appl_id
22454                                                                             ,l_amb_context_code
22455                                                                             ,l_entity_code
22456                                                                             ,l_event_class_code
22457                                                                            )
22458                                     ,p_token_3                 => 'OWNER'
22459                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22460                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22461                                                                           ,p_lookup_code    => l_component_type_code
22462                                                                          )
22463                                     ,p_token_4                 => 'PRODUCT_NAME'
22464                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22465                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22466                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22467                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22468                                     ,p_ae_header_id            =>  NULL
22469                                        );
22470 
22471         IF (C_LEVEL_ERROR>= g_log_level) THEN
22472                  trace
22476         END IF;
22473                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22474                       ,p_level    => C_LEVEL_ERROR
22475                       ,p_module   => l_log_module);
22477       END IF;
22478    END IF;
22479    --
22480    --
22481    ------------------------------------------------------------------------------------------------
22482    -- 4219869 Business Flow
22483    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22484    -- Prior Entry.  Currently, the following code is always generated.
22485    ------------------------------------------------------------------------------------------------
22486    XLA_AE_LINES_PKG.ValidateCurrentLine;
22487 
22488    ------------------------------------------------------------------------------------
22489    -- 4219869 Business Flow
22490    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22491    ------------------------------------------------------------------------------------
22492    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22493 
22494    ----------------------------------------------------------------------------------
22495    -- 4219869 Business Flow
22496    -- Update journal entry status -- Need to generate this within IF <condition>
22497    ----------------------------------------------------------------------------------
22498    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22499          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22500          ,p_balance_type_code => l_balance_type_code
22501          );
22502 
22503    -------------------------------------------------------------------------------------------
22504    -- 4262811 - Generate the Accrual Reversal lines
22505    -------------------------------------------------------------------------------------------
22506    BEGIN
22507       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22508                               (g_array_event(p_event_id).array_value_num('header_index'));
22509       IF l_acc_rev_flag IS NULL THEN
22510          l_acc_rev_flag := 'N';
22511       END IF;
22512    EXCEPTION
22513       WHEN OTHERS THEN
22514          l_acc_rev_flag := 'N';
22515    END;
22516    --
22517    IF (l_acc_rev_flag = 'Y') THEN
22518 
22519        -- 4645092  ------------------------------------------------------------------------------
22520        -- To allow MPA report to determine if it should generate report process
22521        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22522        ------------------------------------------------------------------------------------------
22523 
22524        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22525        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22526 
22527        --
22528        -- Update the line information that should be overwritten
22529        --
22530        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22531                                          p_header_num   => 1);
22532        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22533 
22534        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22535 
22536        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22537           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22538        END IF;
22539 
22540       --
22541       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22542       --
22543       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22544           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22545       ELSE
22546           ---------------------------------------------------------------------------------------------------
22547           -- 4262811a Switch Sign
22548           ---------------------------------------------------------------------------------------------------
22549           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22550           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22551                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22552           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22553                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22554           -- 5132302
22555           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22556                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22557 
22558       END IF;
22559 
22560       -- 4955764
22561       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22563 
22564 
22565       XLA_AE_LINES_PKG.ValidateCurrentLine;
22566       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22567 
22568       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22569                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22570                ,p_balance_type_code => l_balance_type_code);
22574    -----------------------------------------------------------------------------------------
22571 
22572    END IF;
22573 
22575    -- 4262811 Multiperiod Accounting
22576    -----------------------------------------------------------------------------------------
22577      -- No MPA option is assigned.
22578 
22579 
22580 END IF;
22581 --
22582 
22583 --
22584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22585    trace
22586       (p_msg      => 'END of AcctLineType_54'
22587       ,p_level    => C_LEVEL_PROCEDURE
22588       ,p_module   => l_log_module);
22589 END IF;
22590 --
22591 EXCEPTION
22592   WHEN xla_exceptions_pkg.application_exception THEN
22593       RAISE;
22594   WHEN OTHERS THEN
22595        xla_exceptions_pkg.raise_message
22596            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_54');
22597 END AcctLineType_54;
22598 --
22599 
22600 ---------------------------------------
22601 --
22602 -- PRIVATE FUNCTION
22603 --         AcctLineType_55
22604 --
22605 ---------------------------------------
22606 PROCEDURE AcctLineType_55 (
22607   p_application_id        IN NUMBER
22608  ,p_event_id              IN NUMBER
22609  ,p_calculate_acctd_flag  IN VARCHAR2
22610  ,p_calculate_g_l_flag    IN VARCHAR2
22611  ,p_actual_flag           IN OUT VARCHAR2
22612  ,p_balance_type_code     OUT VARCHAR2
22613  ,p_gain_or_loss_ref      OUT VARCHAR2
22614  
22615 --Cost CCID
22616  , p_source_3            IN NUMBER
22617 --Allow Account Override Flag
22618  , p_source_4            IN VARCHAR2
22619 --Cost Clearing CCID
22620  , p_source_6            IN NUMBER
22621 --Adjustment Cost Clearing CCID
22622  , p_source_7            IN NUMBER
22623 --Reversing Line Flag
22624  , p_source_22            IN VARCHAR2
22625 --Actual Upgrade Credit Accounting Class
22626  , p_source_23            IN VARCHAR2
22627 --Entered Raw Cost
22628  , p_source_24            IN NUMBER
22629 --Entered Currency Code
22630  , p_source_25            IN VARCHAR2
22631 --Accounted Raw Cost
22632  , p_source_26            IN NUMBER
22633 --Exchange Rate Date
22634  , p_source_27            IN DATE
22635 --Exchange Rate
22636  , p_source_28            IN NUMBER
22637 --Exchange Rate Type
22638  , p_source_29            IN VARCHAR2
22639 --Actual Upgrade Debit Accounting Class
22640  , p_source_30            IN VARCHAR2
22641 --Use Actuals Upgrade Attributes Flag
22642  , p_source_31            IN VARCHAR2
22643 --Expenditure Item ID
22644  , p_source_32            IN NUMBER
22645 --Cost Distribution Line Number
22646  , p_source_33            IN NUMBER
22647 --Line Type
22648  , p_source_34            IN VARCHAR2
22649  , p_source_34_meaning    IN VARCHAR2
22650 --Reversed Line Number
22651  , p_source_35            IN NUMBER
22652 )
22653 IS
22654 
22655 l_component_type              VARCHAR2(80);
22656 l_component_code              VARCHAR2(30);
22657 l_component_type_code         VARCHAR2(1);
22658 l_component_appl_id           INTEGER;
22659 l_amb_context_code            VARCHAR2(30);
22660 l_entity_code                 VARCHAR2(30);
22661 l_event_class_code            VARCHAR2(30);
22662 l_ae_header_id                NUMBER;
22663 l_event_type_code             VARCHAR2(30);
22664 l_line_definition_code        VARCHAR2(30);
22665 l_line_definition_owner_code  VARCHAR2(1);
22666 --
22667 -- adr variables
22668 l_segment                     VARCHAR2(30);
22669 l_ccid                        NUMBER;
22670 l_adr_transaction_coa_id      NUMBER;
22671 l_adr_accounting_coa_id       NUMBER;
22672 l_adr_flexfield_segment_code  VARCHAR2(30);
22673 l_adr_flex_value_set_id       NUMBER;
22674 l_adr_value_type_code         VARCHAR2(30);
22675 l_adr_value_combination_id    NUMBER;
22676 l_adr_value_segment_code      VARCHAR2(30);
22677 
22678 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22679 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22680 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22681 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22682 
22683 -- 4262811 Variables ------------------------------------------------------------------------------------------
22684 l_entered_amt_idx             NUMBER;
22685 l_accted_amt_idx              NUMBER;
22686 l_acc_rev_flag                VARCHAR2(1);
22687 l_accrual_line_num            NUMBER;
22688 l_tmp_amt                     NUMBER;
22689 l_acc_rev_natural_side_code   VARCHAR2(1);
22690 
22691 l_num_entries                 NUMBER;
22692 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22693 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22694 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22695 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22696 l_recog_line_1                NUMBER;
22697 l_recog_line_2                NUMBER;
22698 
22699 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22700 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22701 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22702 
22703 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22704 
22708 ---------------------------------------------------------------------------------------------------------------
22705 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22706 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22707 
22709 
22710 
22711 --
22712 -- bulk performance
22713 --
22714 l_balance_type_code           VARCHAR2(1);
22715 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22716 l_log_module                  VARCHAR2(240);
22717 
22718 --
22719 -- Upgrade strategy
22720 --
22721 l_actual_upg_option           VARCHAR2(1);
22722 l_enc_upg_option           VARCHAR2(1);
22723 
22724 --
22725 BEGIN
22726 --
22727 IF g_log_enabled THEN
22728       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
22729 END IF;
22730 --
22731 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22732 
22733       trace
22734          (p_msg      => 'BEGIN of AcctLineType_55'
22735          ,p_level    => C_LEVEL_PROCEDURE
22736          ,p_module   => l_log_module);
22737 
22738 END IF;
22739 --
22740 l_component_type             := 'AMB_JLT';
22741 l_component_code             := 'PA_RAW_COST_CLEARING';
22742 l_component_type_code        := 'S';
22743 l_component_appl_id          :=  275;
22744 l_amb_context_code           := 'DEFAULT';
22745 l_entity_code                := 'EXPENDITURES';
22746 l_event_class_code           := 'LABOR_COST';
22747 l_event_type_code            := 'LABOR_COST_ALL';
22748 l_line_definition_owner_code := 'S';
22749 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
22750 --
22751 l_balance_type_code          := 'A';
22752 l_segment                     := NULL;
22753 l_ccid                        := NULL;
22754 l_adr_transaction_coa_id      := NULL;
22755 l_adr_accounting_coa_id       := NULL;
22756 l_adr_flexfield_segment_code  := NULL;
22757 l_adr_flex_value_set_id       := NULL;
22758 l_adr_value_type_code         := NULL;
22759 l_adr_value_combination_id    := NULL;
22760 l_adr_value_segment_code      := NULL;
22761 
22762 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22763 l_bflow_class_code           := '';    -- 4219869 Business Flow
22764 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22765 l_budgetary_control_flag     := 'N';
22766 
22767 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22768 l_bflow_applied_to_amt       := NULL; -- 5132302
22769 l_entered_amt_idx            := NULL;          -- 4262811
22770 l_accted_amt_idx             := NULL;          -- 4262811
22771 l_acc_rev_flag               := NULL;          -- 4262811
22772 l_accrual_line_num           := NULL;          -- 4262811
22773 l_tmp_amt                    := NULL;          -- 4262811
22774 --
22775  
22776 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22777     l_balance_type_code <> 'B' THEN
22778 
22779    --
22780    XLA_AE_LINES_PKG.SetNewLine;
22781 
22782    p_balance_type_code          := l_balance_type_code;
22783    -- set the flag so later we will know whether the gain loss line needs to be created
22784    
22785    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22786      p_actual_flag :='A';
22787    END IF;
22788 
22789    --
22790    -- bulk performance
22791    --
22792    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22793                                       p_header_num   => 0); -- 4262811
22794    --
22795    -- set accounting line options
22796    --
22797    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22798            p_natural_side_code          => 'C'
22799          , p_gain_or_loss_flag          => 'N'
22800          , p_gl_transfer_mode_code      => 'S'
22801          , p_acct_entry_type_code       => 'A'
22802          , p_switch_side_flag           => 'Y'
22803          , p_merge_duplicate_code       => 'N'
22804          );
22805    --
22806    l_acc_rev_natural_side_code := 'D';  -- 4262811
22807    -- 
22808    --
22809    -- set accounting line type info
22810    --
22811    xla_ae_lines_pkg.SetAcctLineType
22812       (p_component_type             => l_component_type
22813       ,p_event_type_code            => l_event_type_code
22814       ,p_line_definition_owner_code => l_line_definition_owner_code
22815       ,p_line_definition_code       => l_line_definition_code
22816       ,p_accounting_line_code       => l_component_code
22817       ,p_accounting_line_type_code  => l_component_type_code
22818       ,p_accounting_line_appl_id    => l_component_appl_id
22819       ,p_amb_context_code           => l_amb_context_code
22820       ,p_entity_code                => l_entity_code
22821       ,p_event_class_code           => l_event_class_code);
22822    --
22823    -- set accounting class
22824    --
22825    xla_ae_lines_pkg.SetAcctClass(
22826            p_accounting_class_code  => 'COST_CLEARING'
22827          , p_ae_header_id           => l_ae_header_id
22828          );
22829 
22830    --
22831    -- set rounding class
22832    --
22833    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22834                       'COST_CLEARING';
22835 
22836    --
22837    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22841    --
22838    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22839    --
22840    -- bulk performance
22842    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22843 
22844    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22845       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22846 
22847    -- 4955764
22848    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22849       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22850 
22851    -- 4458381 Public Sector Enh
22852    
22853    --
22854    -- set accounting attributes for the line type
22855    --
22856    l_entered_amt_idx := 22;
22857    l_accted_amt_idx  := 27;
22858    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22859    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22860    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
22861    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
22862    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
22863    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
22864    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
22865    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
22866    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
22867    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
22868    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
22869    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
22870    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
22871    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
22872    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
22873    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
22874    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
22875    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
22876    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
22877    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
22878    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
22879    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
22880    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
22881    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
22882    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
22883    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
22884    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
22885    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
22886    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
22887    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
22888    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
22889    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
22890    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
22891    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
22892    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
22893    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
22894    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
22895    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
22896    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
22897    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
22898    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
22899    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
22900    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
22901    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
22902    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
22903    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
22904    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
22905    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
22906    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
22907    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
22908    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
22909    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
22910    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
22911    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
22912    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
22913    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
22914    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
22915    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
22916    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
22917    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
22918    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
22919 
22920    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22921    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22922 
22923    ---------------------------------------------------------------------------------------------------------------
22924    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22925    ---------------------------------------------------------------------------------------------------------------
22929    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22926    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22927 
22928    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22930 
22931    IF xla_accounting_cache_pkg.GetValueChar
22932          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22933          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22934    AND l_bflow_method_code = 'PRIOR_ENTRY'
22935 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22936    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22937          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22938        )
22939    THEN
22940          xla_ae_lines_pkg.BflowUpgEntry
22941            (p_business_method_code    => l_bflow_method_code
22942            ,p_business_class_code     => l_bflow_class_code
22943            ,p_balance_type            => l_balance_type_code);
22944    ELSE
22945       NULL;
22946 -- No business flow processing for business flow method of NONE.
22947    END IF;
22948 
22949    --
22950    -- call analytical criteria
22951    --
22952    
22953    --
22954    -- call description
22955    --
22956    -- No description or it is inherited.
22957    --
22958    -- call ADRs
22959    -- Bug 4922099
22960    --
22961    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22962         (NVL(l_actual_upg_option, 'N') = 'O') OR
22963         (NVL(l_enc_upg_option, 'N') = 'O')
22964       )
22965    THEN
22966    NULL;
22967    --
22968    --
22969    
22970   l_ccid := AcctDerRule_5(
22971            p_application_id           => p_application_id
22972          , p_ae_header_id             => l_ae_header_id 
22973 , p_source_4 => p_source_4
22974 , p_source_6 => p_source_6
22975 , p_source_7 => p_source_7
22976          , x_transaction_coa_id       => l_adr_transaction_coa_id
22977          , x_accounting_coa_id        => l_adr_accounting_coa_id
22978          , x_value_type_code          => l_adr_value_type_code
22979          , p_side                     => 'NA'
22980    );
22981 
22982    xla_ae_lines_pkg.set_ccid(
22983     p_code_combination_id          => l_ccid
22984   , p_value_type_code              => l_adr_value_type_code
22985   , p_transaction_coa_id           => l_adr_transaction_coa_id
22986   , p_accounting_coa_id            => l_adr_accounting_coa_id
22987   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
22988   , p_adr_type_code                => 'S'
22989   , p_component_type               => l_component_type
22990   , p_component_code               => l_component_code
22991   , p_component_type_code          => l_component_type_code
22992   , p_component_appl_id            => l_component_appl_id
22993   , p_amb_context_code             => l_amb_context_code
22994   , p_side                         => 'NA'
22995   );
22996 
22997 
22998    --
22999    --
23000    END IF;
23001    --
23002    -- Bug 4922099
23003    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23004           (NVL(l_enc_upg_option, 'N') = 'O')
23005         ) AND
23006         (l_bflow_method_code = 'PRIOR_ENTRY')
23007       )
23008    THEN
23009       IF
23010       --
23011       1 = 2
23012       --
23013       THEN
23014       xla_accounting_err_pkg.build_message
23015                                     (p_appli_s_name            => 'XLA'
23016                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23017                                     ,p_token_1                 => 'LINE_NUMBER'
23018                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23019                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23020                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23021                                                                              l_component_type
23022                                                                             ,l_component_code
23023                                                                             ,l_component_type_code
23024                                                                             ,l_component_appl_id
23025                                                                             ,l_amb_context_code
23026                                                                             ,l_entity_code
23027                                                                             ,l_event_class_code
23028                                                                            )
23029                                     ,p_token_3                 => 'OWNER'
23030                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23031                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23032                                                                           ,p_lookup_code    => l_component_type_code
23033                                                                          )
23034                                     ,p_token_4                 => 'PRODUCT_NAME'
23035                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23036                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23037                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23041 
23038                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23039                                     ,p_ae_header_id            =>  NULL
23040                                        );
23042         IF (C_LEVEL_ERROR>= g_log_level) THEN
23043                  trace
23044                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23045                       ,p_level    => C_LEVEL_ERROR
23046                       ,p_module   => l_log_module);
23047         END IF;
23048       END IF;
23049    END IF;
23050    --
23051    --
23052    ------------------------------------------------------------------------------------------------
23053    -- 4219869 Business Flow
23054    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23055    -- Prior Entry.  Currently, the following code is always generated.
23056    ------------------------------------------------------------------------------------------------
23057    XLA_AE_LINES_PKG.ValidateCurrentLine;
23058 
23059    ------------------------------------------------------------------------------------
23060    -- 4219869 Business Flow
23061    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23062    ------------------------------------------------------------------------------------
23063    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23064 
23065    ----------------------------------------------------------------------------------
23066    -- 4219869 Business Flow
23067    -- Update journal entry status -- Need to generate this within IF <condition>
23068    ----------------------------------------------------------------------------------
23069    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23070          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23071          ,p_balance_type_code => l_balance_type_code
23072          );
23073 
23074    -------------------------------------------------------------------------------------------
23075    -- 4262811 - Generate the Accrual Reversal lines
23076    -------------------------------------------------------------------------------------------
23077    BEGIN
23078       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23079                               (g_array_event(p_event_id).array_value_num('header_index'));
23080       IF l_acc_rev_flag IS NULL THEN
23081          l_acc_rev_flag := 'N';
23082       END IF;
23083    EXCEPTION
23084       WHEN OTHERS THEN
23085          l_acc_rev_flag := 'N';
23086    END;
23087    --
23088    IF (l_acc_rev_flag = 'Y') THEN
23089 
23090        -- 4645092  ------------------------------------------------------------------------------
23091        -- To allow MPA report to determine if it should generate report process
23092        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23093        ------------------------------------------------------------------------------------------
23094 
23095        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23096        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23097 
23098        --
23099        -- Update the line information that should be overwritten
23100        --
23101        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23102                                          p_header_num   => 1);
23103        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23104 
23105        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23106 
23107        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23108           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23109        END IF;
23110 
23111       --
23112       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23113       --
23114       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23115           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23116       ELSE
23117           ---------------------------------------------------------------------------------------------------
23118           -- 4262811a Switch Sign
23119           ---------------------------------------------------------------------------------------------------
23120           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23121           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23122                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23123           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23124                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23125           -- 5132302
23126           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23127                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23128 
23129       END IF;
23130 
23131       -- 4955764
23132       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23133       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23134 
23135 
23136       XLA_AE_LINES_PKG.ValidateCurrentLine;
23140                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23137       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23138 
23139       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23141                ,p_balance_type_code => l_balance_type_code);
23142 
23143    END IF;
23144 
23145    -----------------------------------------------------------------------------------------
23146    -- 4262811 Multiperiod Accounting
23147    -----------------------------------------------------------------------------------------
23148      -- No MPA option is assigned.
23149 
23150 
23151 END IF;
23152 --
23153 
23154 --
23155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23156    trace
23157       (p_msg      => 'END of AcctLineType_55'
23158       ,p_level    => C_LEVEL_PROCEDURE
23159       ,p_module   => l_log_module);
23160 END IF;
23161 --
23162 EXCEPTION
23163   WHEN xla_exceptions_pkg.application_exception THEN
23164       RAISE;
23165   WHEN OTHERS THEN
23166        xla_exceptions_pkg.raise_message
23167            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_55');
23168 END AcctLineType_55;
23169 --
23170 
23171 ---------------------------------------
23172 --
23173 -- PRIVATE FUNCTION
23174 --         AcctLineType_56
23175 --
23176 ---------------------------------------
23177 PROCEDURE AcctLineType_56 (
23178   p_application_id        IN NUMBER
23179  ,p_event_id              IN NUMBER
23180  ,p_calculate_acctd_flag  IN VARCHAR2
23181  ,p_calculate_g_l_flag    IN VARCHAR2
23182  ,p_actual_flag           IN OUT VARCHAR2
23183  ,p_balance_type_code     OUT VARCHAR2
23184  ,p_gain_or_loss_ref      OUT VARCHAR2
23185  
23186 --Cost CCID
23187  , p_source_3            IN NUMBER
23188 --Allow Account Override Flag
23189  , p_source_4            IN VARCHAR2
23190 --Cost Clearing CCID
23191  , p_source_6            IN NUMBER
23192 --Adjustment Cost Clearing CCID
23193  , p_source_7            IN NUMBER
23194 --Exchange Rate Variance Flag
23195  , p_source_21            IN VARCHAR2
23196 --Reversing Line Flag
23197  , p_source_22            IN VARCHAR2
23198 --Actual Upgrade Credit Accounting Class
23199  , p_source_23            IN VARCHAR2
23200 --Entered Raw Cost
23201  , p_source_24            IN NUMBER
23202 --Entered Currency Code
23203  , p_source_25            IN VARCHAR2
23204 --Accounted Raw Cost
23205  , p_source_26            IN NUMBER
23206 --Exchange Rate Date
23207  , p_source_27            IN DATE
23208 --Exchange Rate
23209  , p_source_28            IN NUMBER
23210 --Exchange Rate Type
23211  , p_source_29            IN VARCHAR2
23212 --Actual Upgrade Debit Accounting Class
23213  , p_source_30            IN VARCHAR2
23214 --Use Actuals Upgrade Attributes Flag
23215  , p_source_31            IN VARCHAR2
23216 --Expenditure Item ID
23217  , p_source_32            IN NUMBER
23218 --Cost Distribution Line Number
23219  , p_source_33            IN NUMBER
23220 --Line Type
23221  , p_source_34            IN VARCHAR2
23222  , p_source_34_meaning    IN VARCHAR2
23223 --Reversed Line Number
23224  , p_source_35            IN NUMBER
23225 )
23226 IS
23227 
23228 l_component_type              VARCHAR2(80);
23229 l_component_code              VARCHAR2(30);
23230 l_component_type_code         VARCHAR2(1);
23231 l_component_appl_id           INTEGER;
23232 l_amb_context_code            VARCHAR2(30);
23233 l_entity_code                 VARCHAR2(30);
23234 l_event_class_code            VARCHAR2(30);
23235 l_ae_header_id                NUMBER;
23236 l_event_type_code             VARCHAR2(30);
23237 l_line_definition_code        VARCHAR2(30);
23238 l_line_definition_owner_code  VARCHAR2(1);
23239 --
23240 -- adr variables
23241 l_segment                     VARCHAR2(30);
23242 l_ccid                        NUMBER;
23243 l_adr_transaction_coa_id      NUMBER;
23244 l_adr_accounting_coa_id       NUMBER;
23245 l_adr_flexfield_segment_code  VARCHAR2(30);
23246 l_adr_flex_value_set_id       NUMBER;
23247 l_adr_value_type_code         VARCHAR2(30);
23248 l_adr_value_combination_id    NUMBER;
23249 l_adr_value_segment_code      VARCHAR2(30);
23250 
23251 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23252 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23253 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23254 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23255 
23256 -- 4262811 Variables ------------------------------------------------------------------------------------------
23257 l_entered_amt_idx             NUMBER;
23258 l_accted_amt_idx              NUMBER;
23259 l_acc_rev_flag                VARCHAR2(1);
23260 l_accrual_line_num            NUMBER;
23261 l_tmp_amt                     NUMBER;
23262 l_acc_rev_natural_side_code   VARCHAR2(1);
23263 
23264 l_num_entries                 NUMBER;
23265 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23266 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23267 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23268 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23269 l_recog_line_1                NUMBER;
23270 l_recog_line_2                NUMBER;
23271 
23275 
23272 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23273 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23274 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23276 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23277 
23278 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23279 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23280 
23281 ---------------------------------------------------------------------------------------------------------------
23282 
23283 
23284 --
23285 -- bulk performance
23286 --
23287 l_balance_type_code           VARCHAR2(1);
23288 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23289 l_log_module                  VARCHAR2(240);
23290 
23291 --
23292 -- Upgrade strategy
23293 --
23294 l_actual_upg_option           VARCHAR2(1);
23295 l_enc_upg_option           VARCHAR2(1);
23296 
23297 --
23298 BEGIN
23299 --
23300 IF g_log_enabled THEN
23301       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
23302 END IF;
23303 --
23304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23305 
23306       trace
23307          (p_msg      => 'BEGIN of AcctLineType_56'
23308          ,p_level    => C_LEVEL_PROCEDURE
23309          ,p_module   => l_log_module);
23310 
23311 END IF;
23312 --
23313 l_component_type             := 'AMB_JLT';
23314 l_component_code             := 'PA_RAW_COST_CLEARING';
23315 l_component_type_code        := 'S';
23316 l_component_appl_id          :=  275;
23317 l_amb_context_code           := 'DEFAULT';
23318 l_entity_code                := 'EXPENDITURES';
23319 l_event_class_code           := 'SUPPLIER_COST';
23320 l_event_type_code            := 'SUPPLIER_COST_ALL';
23321 l_line_definition_owner_code := 'S';
23322 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
23323 --
23324 l_balance_type_code          := 'A';
23325 l_segment                     := NULL;
23326 l_ccid                        := NULL;
23327 l_adr_transaction_coa_id      := NULL;
23328 l_adr_accounting_coa_id       := NULL;
23329 l_adr_flexfield_segment_code  := NULL;
23330 l_adr_flex_value_set_id       := NULL;
23331 l_adr_value_type_code         := NULL;
23332 l_adr_value_combination_id    := NULL;
23333 l_adr_value_segment_code      := NULL;
23334 
23335 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23336 l_bflow_class_code           := '';    -- 4219869 Business Flow
23337 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23338 l_budgetary_control_flag     := 'N';
23339 
23340 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23341 l_bflow_applied_to_amt       := NULL; -- 5132302
23342 l_entered_amt_idx            := NULL;          -- 4262811
23343 l_accted_amt_idx             := NULL;          -- 4262811
23344 l_acc_rev_flag               := NULL;          -- 4262811
23345 l_accrual_line_num           := NULL;          -- 4262811
23346 l_tmp_amt                    := NULL;          -- 4262811
23347 --
23348  
23349 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23350     l_balance_type_code <> 'B' THEN
23351 IF NVL(p_source_21,'
23352 ') =  'N'
23353  THEN 
23354 
23355    --
23356    XLA_AE_LINES_PKG.SetNewLine;
23357 
23358    p_balance_type_code          := l_balance_type_code;
23359    -- set the flag so later we will know whether the gain loss line needs to be created
23360    
23361    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23362      p_actual_flag :='A';
23363    END IF;
23364 
23365    --
23366    -- bulk performance
23367    --
23368    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23369                                       p_header_num   => 0); -- 4262811
23370    --
23371    -- set accounting line options
23372    --
23373    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23374            p_natural_side_code          => 'C'
23375          , p_gain_or_loss_flag          => 'N'
23376          , p_gl_transfer_mode_code      => 'S'
23377          , p_acct_entry_type_code       => 'A'
23378          , p_switch_side_flag           => 'Y'
23379          , p_merge_duplicate_code       => 'N'
23380          );
23381    --
23382    l_acc_rev_natural_side_code := 'D';  -- 4262811
23383    -- 
23384    --
23385    -- set accounting line type info
23386    --
23387    xla_ae_lines_pkg.SetAcctLineType
23388       (p_component_type             => l_component_type
23389       ,p_event_type_code            => l_event_type_code
23390       ,p_line_definition_owner_code => l_line_definition_owner_code
23391       ,p_line_definition_code       => l_line_definition_code
23392       ,p_accounting_line_code       => l_component_code
23393       ,p_accounting_line_type_code  => l_component_type_code
23394       ,p_accounting_line_appl_id    => l_component_appl_id
23395       ,p_amb_context_code           => l_amb_context_code
23396       ,p_entity_code                => l_entity_code
23397       ,p_event_class_code           => l_event_class_code);
23398    --
23399    -- set accounting class
23400    --
23401    xla_ae_lines_pkg.SetAcctClass(
23402            p_accounting_class_code  => 'COST_CLEARING'
23406    --
23403          , p_ae_header_id           => l_ae_header_id
23404          );
23405 
23407    -- set rounding class
23408    --
23409    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23410                       'COST_CLEARING';
23411 
23412    --
23413    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23414    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23415    --
23416    -- bulk performance
23417    --
23418    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23419 
23420    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23421       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23422 
23423    -- 4955764
23424    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23425       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23426 
23427    -- 4458381 Public Sector Enh
23428    
23429    --
23430    -- set accounting attributes for the line type
23431    --
23432    l_entered_amt_idx := 22;
23433    l_accted_amt_idx  := 27;
23434    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23435    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23436    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
23437    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
23438    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
23439    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
23440    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
23441    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
23442    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
23443    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
23444    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
23445    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
23446    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
23447    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
23448    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
23449    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
23450    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
23451    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
23452    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
23453    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
23454    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
23455    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
23456    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
23457    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
23458    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
23459    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
23460    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
23461    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
23462    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
23463    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
23464    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
23465    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
23466    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
23467    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
23468    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
23469    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
23470    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
23471    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
23472    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
23473    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
23474    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
23475    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
23476    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
23477    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
23478    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
23479    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
23480    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
23481    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
23482    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
23483    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
23484    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
23485    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
23486    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
23487    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
23488    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
23489    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
23490    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
23491    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
23492    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
23493    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
23494    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
23495 
23499    ---------------------------------------------------------------------------------------------------------------
23496    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23497    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23498 
23500    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23501    ---------------------------------------------------------------------------------------------------------------
23502    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23503 
23504    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23505    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23506 
23507    IF xla_accounting_cache_pkg.GetValueChar
23508          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23509          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23510    AND l_bflow_method_code = 'PRIOR_ENTRY'
23511 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23512    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23513          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23514        )
23515    THEN
23516          xla_ae_lines_pkg.BflowUpgEntry
23517            (p_business_method_code    => l_bflow_method_code
23518            ,p_business_class_code     => l_bflow_class_code
23519            ,p_balance_type            => l_balance_type_code);
23520    ELSE
23521       NULL;
23522 -- No business flow processing for business flow method of NONE.
23523    END IF;
23524 
23525    --
23526    -- call analytical criteria
23527    --
23528    
23529    --
23530    -- call description
23531    --
23532    -- No description or it is inherited.
23533    --
23534    -- call ADRs
23535    -- Bug 4922099
23536    --
23537    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23538         (NVL(l_actual_upg_option, 'N') = 'O') OR
23539         (NVL(l_enc_upg_option, 'N') = 'O')
23540       )
23541    THEN
23542    NULL;
23543    --
23544    --
23545    
23546   l_ccid := AcctDerRule_5(
23547            p_application_id           => p_application_id
23548          , p_ae_header_id             => l_ae_header_id 
23549 , p_source_4 => p_source_4
23550 , p_source_6 => p_source_6
23551 , p_source_7 => p_source_7
23552          , x_transaction_coa_id       => l_adr_transaction_coa_id
23553          , x_accounting_coa_id        => l_adr_accounting_coa_id
23554          , x_value_type_code          => l_adr_value_type_code
23555          , p_side                     => 'NA'
23556    );
23557 
23558    xla_ae_lines_pkg.set_ccid(
23559     p_code_combination_id          => l_ccid
23560   , p_value_type_code              => l_adr_value_type_code
23561   , p_transaction_coa_id           => l_adr_transaction_coa_id
23562   , p_accounting_coa_id            => l_adr_accounting_coa_id
23563   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
23564   , p_adr_type_code                => 'S'
23565   , p_component_type               => l_component_type
23566   , p_component_code               => l_component_code
23567   , p_component_type_code          => l_component_type_code
23568   , p_component_appl_id            => l_component_appl_id
23569   , p_amb_context_code             => l_amb_context_code
23570   , p_side                         => 'NA'
23571   );
23572 
23573 
23574    --
23575    --
23576    END IF;
23577    --
23578    -- Bug 4922099
23579    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23580           (NVL(l_enc_upg_option, 'N') = 'O')
23581         ) AND
23582         (l_bflow_method_code = 'PRIOR_ENTRY')
23583       )
23584    THEN
23585       IF
23586       --
23587       1 = 2
23588       --
23589       THEN
23590       xla_accounting_err_pkg.build_message
23591                                     (p_appli_s_name            => 'XLA'
23592                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23593                                     ,p_token_1                 => 'LINE_NUMBER'
23594                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23595                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23596                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23597                                                                              l_component_type
23598                                                                             ,l_component_code
23599                                                                             ,l_component_type_code
23600                                                                             ,l_component_appl_id
23601                                                                             ,l_amb_context_code
23602                                                                             ,l_entity_code
23603                                                                             ,l_event_class_code
23604                                                                            )
23605                                     ,p_token_3                 => 'OWNER'
23606                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23610                                     ,p_token_4                 => 'PRODUCT_NAME'
23607                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23608                                                                           ,p_lookup_code    => l_component_type_code
23609                                                                          )
23611                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23612                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23613                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23614                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23615                                     ,p_ae_header_id            =>  NULL
23616                                        );
23617 
23618         IF (C_LEVEL_ERROR>= g_log_level) THEN
23619                  trace
23620                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23621                       ,p_level    => C_LEVEL_ERROR
23622                       ,p_module   => l_log_module);
23623         END IF;
23624       END IF;
23625    END IF;
23626    --
23627    --
23628    ------------------------------------------------------------------------------------------------
23629    -- 4219869 Business Flow
23630    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23631    -- Prior Entry.  Currently, the following code is always generated.
23632    ------------------------------------------------------------------------------------------------
23633    XLA_AE_LINES_PKG.ValidateCurrentLine;
23634 
23635    ------------------------------------------------------------------------------------
23636    -- 4219869 Business Flow
23637    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23638    ------------------------------------------------------------------------------------
23639    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23640 
23641    ----------------------------------------------------------------------------------
23642    -- 4219869 Business Flow
23643    -- Update journal entry status -- Need to generate this within IF <condition>
23644    ----------------------------------------------------------------------------------
23645    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23646          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23647          ,p_balance_type_code => l_balance_type_code
23648          );
23649 
23650    -------------------------------------------------------------------------------------------
23651    -- 4262811 - Generate the Accrual Reversal lines
23652    -------------------------------------------------------------------------------------------
23653    BEGIN
23654       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23655                               (g_array_event(p_event_id).array_value_num('header_index'));
23656       IF l_acc_rev_flag IS NULL THEN
23657          l_acc_rev_flag := 'N';
23658       END IF;
23659    EXCEPTION
23660       WHEN OTHERS THEN
23661          l_acc_rev_flag := 'N';
23662    END;
23663    --
23664    IF (l_acc_rev_flag = 'Y') THEN
23665 
23666        -- 4645092  ------------------------------------------------------------------------------
23667        -- To allow MPA report to determine if it should generate report process
23668        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23669        ------------------------------------------------------------------------------------------
23670 
23671        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23672        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23673 
23674        --
23675        -- Update the line information that should be overwritten
23676        --
23677        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23678                                          p_header_num   => 1);
23679        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23680 
23681        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23682 
23683        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23684           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23685        END IF;
23686 
23687       --
23688       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23689       --
23690       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23691           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23692       ELSE
23693           ---------------------------------------------------------------------------------------------------
23694           -- 4262811a Switch Sign
23695           ---------------------------------------------------------------------------------------------------
23696           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23697           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23698                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23699           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23700                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23701           -- 5132302
23705       END IF;
23702           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23703                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23704 
23706 
23707       -- 4955764
23708       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23709       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23710 
23711 
23712       XLA_AE_LINES_PKG.ValidateCurrentLine;
23713       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23714 
23715       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23716                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23717                ,p_balance_type_code => l_balance_type_code);
23718 
23719    END IF;
23720 
23721    -----------------------------------------------------------------------------------------
23722    -- 4262811 Multiperiod Accounting
23723    -----------------------------------------------------------------------------------------
23724      -- No MPA option is assigned.
23725 
23726 
23727 END IF;
23728 END IF;
23729 --
23730 
23731 --
23732 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23733    trace
23734       (p_msg      => 'END of AcctLineType_56'
23735       ,p_level    => C_LEVEL_PROCEDURE
23736       ,p_module   => l_log_module);
23737 END IF;
23738 --
23739 EXCEPTION
23740   WHEN xla_exceptions_pkg.application_exception THEN
23741       RAISE;
23742   WHEN OTHERS THEN
23743        xla_exceptions_pkg.raise_message
23744            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_56');
23745 END AcctLineType_56;
23746 --
23747 
23748 ---------------------------------------
23749 --
23750 -- PRIVATE FUNCTION
23751 --         AcctLineType_57
23752 --
23753 ---------------------------------------
23754 PROCEDURE AcctLineType_57 (
23755   p_application_id        IN NUMBER
23756  ,p_event_id              IN NUMBER
23757  ,p_calculate_acctd_flag  IN VARCHAR2
23758  ,p_calculate_g_l_flag    IN VARCHAR2
23759  ,p_actual_flag           IN OUT VARCHAR2
23760  ,p_balance_type_code     OUT VARCHAR2
23761  ,p_gain_or_loss_ref      OUT VARCHAR2
23762  
23763 --Cost CCID
23764  , p_source_3            IN NUMBER
23765 --Allow Account Override Flag
23766  , p_source_4            IN VARCHAR2
23767 --Cost Clearing CCID
23768  , p_source_6            IN NUMBER
23769 --Adjustment Cost Clearing CCID
23770  , p_source_7            IN NUMBER
23771 --Reversing Line Flag
23772  , p_source_22            IN VARCHAR2
23773 --Actual Upgrade Credit Accounting Class
23774  , p_source_23            IN VARCHAR2
23775 --Entered Raw Cost
23776  , p_source_24            IN NUMBER
23777 --Entered Currency Code
23778  , p_source_25            IN VARCHAR2
23779 --Accounted Raw Cost
23780  , p_source_26            IN NUMBER
23781 --Exchange Rate Date
23782  , p_source_27            IN DATE
23783 --Exchange Rate
23784  , p_source_28            IN NUMBER
23785 --Exchange Rate Type
23786  , p_source_29            IN VARCHAR2
23787 --Actual Upgrade Debit Accounting Class
23788  , p_source_30            IN VARCHAR2
23789 --Use Actuals Upgrade Attributes Flag
23790  , p_source_31            IN VARCHAR2
23791 --Expenditure Item ID
23792  , p_source_32            IN NUMBER
23793 --Cost Distribution Line Number
23794  , p_source_33            IN NUMBER
23795 --Line Type
23796  , p_source_34            IN VARCHAR2
23797  , p_source_34_meaning    IN VARCHAR2
23798 --Reversed Line Number
23799  , p_source_35            IN NUMBER
23800 )
23801 IS
23802 
23803 l_component_type              VARCHAR2(80);
23804 l_component_code              VARCHAR2(30);
23805 l_component_type_code         VARCHAR2(1);
23806 l_component_appl_id           INTEGER;
23807 l_amb_context_code            VARCHAR2(30);
23808 l_entity_code                 VARCHAR2(30);
23809 l_event_class_code            VARCHAR2(30);
23810 l_ae_header_id                NUMBER;
23811 l_event_type_code             VARCHAR2(30);
23812 l_line_definition_code        VARCHAR2(30);
23813 l_line_definition_owner_code  VARCHAR2(1);
23814 --
23815 -- adr variables
23816 l_segment                     VARCHAR2(30);
23817 l_ccid                        NUMBER;
23818 l_adr_transaction_coa_id      NUMBER;
23819 l_adr_accounting_coa_id       NUMBER;
23820 l_adr_flexfield_segment_code  VARCHAR2(30);
23821 l_adr_flex_value_set_id       NUMBER;
23822 l_adr_value_type_code         VARCHAR2(30);
23823 l_adr_value_combination_id    NUMBER;
23824 l_adr_value_segment_code      VARCHAR2(30);
23825 
23826 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23827 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23828 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23829 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23830 
23831 -- 4262811 Variables ------------------------------------------------------------------------------------------
23832 l_entered_amt_idx             NUMBER;
23833 l_accted_amt_idx              NUMBER;
23834 l_acc_rev_flag                VARCHAR2(1);
23835 l_accrual_line_num            NUMBER;
23836 l_tmp_amt                     NUMBER;
23837 l_acc_rev_natural_side_code   VARCHAR2(1);
23838 
23842 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23839 l_num_entries                 NUMBER;
23840 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23841 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23843 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23844 l_recog_line_1                NUMBER;
23845 l_recog_line_2                NUMBER;
23846 
23847 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23848 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23849 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23850 
23851 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23852 
23853 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23854 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23855 
23856 ---------------------------------------------------------------------------------------------------------------
23857 
23858 
23859 --
23860 -- bulk performance
23861 --
23862 l_balance_type_code           VARCHAR2(1);
23863 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23864 l_log_module                  VARCHAR2(240);
23865 
23866 --
23867 -- Upgrade strategy
23868 --
23869 l_actual_upg_option           VARCHAR2(1);
23870 l_enc_upg_option           VARCHAR2(1);
23871 
23872 --
23873 BEGIN
23874 --
23875 IF g_log_enabled THEN
23876       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
23877 END IF;
23878 --
23879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23880 
23881       trace
23882          (p_msg      => 'BEGIN of AcctLineType_57'
23883          ,p_level    => C_LEVEL_PROCEDURE
23884          ,p_module   => l_log_module);
23885 
23886 END IF;
23887 --
23888 l_component_type             := 'AMB_JLT';
23889 l_component_code             := 'PA_RAW_COST_CLEARING';
23890 l_component_type_code        := 'S';
23891 l_component_appl_id          :=  275;
23892 l_amb_context_code           := 'DEFAULT';
23893 l_entity_code                := 'EXPENDITURES';
23894 l_event_class_code           := 'MISC_COST';
23895 l_event_type_code            := 'MISC_COST_ALL';
23896 l_line_definition_owner_code := 'S';
23897 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
23898 --
23899 l_balance_type_code          := 'A';
23900 l_segment                     := NULL;
23901 l_ccid                        := NULL;
23902 l_adr_transaction_coa_id      := NULL;
23903 l_adr_accounting_coa_id       := NULL;
23904 l_adr_flexfield_segment_code  := NULL;
23905 l_adr_flex_value_set_id       := NULL;
23906 l_adr_value_type_code         := NULL;
23907 l_adr_value_combination_id    := NULL;
23908 l_adr_value_segment_code      := NULL;
23909 
23910 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23911 l_bflow_class_code           := '';    -- 4219869 Business Flow
23912 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23913 l_budgetary_control_flag     := 'N';
23914 
23915 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23916 l_bflow_applied_to_amt       := NULL; -- 5132302
23917 l_entered_amt_idx            := NULL;          -- 4262811
23918 l_accted_amt_idx             := NULL;          -- 4262811
23919 l_acc_rev_flag               := NULL;          -- 4262811
23920 l_accrual_line_num           := NULL;          -- 4262811
23921 l_tmp_amt                    := NULL;          -- 4262811
23922 --
23923  
23924 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23925     l_balance_type_code <> 'B' THEN
23926 
23927    --
23928    XLA_AE_LINES_PKG.SetNewLine;
23929 
23930    p_balance_type_code          := l_balance_type_code;
23931    -- set the flag so later we will know whether the gain loss line needs to be created
23932    
23933    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23934      p_actual_flag :='A';
23935    END IF;
23936 
23937    --
23938    -- bulk performance
23939    --
23940    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23941                                       p_header_num   => 0); -- 4262811
23942    --
23943    -- set accounting line options
23944    --
23945    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23946            p_natural_side_code          => 'C'
23947          , p_gain_or_loss_flag          => 'N'
23948          , p_gl_transfer_mode_code      => 'S'
23949          , p_acct_entry_type_code       => 'A'
23950          , p_switch_side_flag           => 'Y'
23951          , p_merge_duplicate_code       => 'N'
23952          );
23953    --
23954    l_acc_rev_natural_side_code := 'D';  -- 4262811
23955    -- 
23956    --
23957    -- set accounting line type info
23958    --
23959    xla_ae_lines_pkg.SetAcctLineType
23960       (p_component_type             => l_component_type
23961       ,p_event_type_code            => l_event_type_code
23962       ,p_line_definition_owner_code => l_line_definition_owner_code
23963       ,p_line_definition_code       => l_line_definition_code
23964       ,p_accounting_line_code       => l_component_code
23965       ,p_accounting_line_type_code  => l_component_type_code
23966       ,p_accounting_line_appl_id    => l_component_appl_id
23967       ,p_amb_context_code           => l_amb_context_code
23968       ,p_entity_code                => l_entity_code
23972    --
23969       ,p_event_class_code           => l_event_class_code);
23970    --
23971    -- set accounting class
23973    xla_ae_lines_pkg.SetAcctClass(
23974            p_accounting_class_code  => 'COST_CLEARING'
23975          , p_ae_header_id           => l_ae_header_id
23976          );
23977 
23978    --
23979    -- set rounding class
23980    --
23981    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23982                       'COST_CLEARING';
23983 
23984    --
23985    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23986    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23987    --
23988    -- bulk performance
23989    --
23990    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23991 
23992    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23993       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23994 
23995    -- 4955764
23996    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23997       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23998 
23999    -- 4458381 Public Sector Enh
24000    
24001    --
24002    -- set accounting attributes for the line type
24003    --
24004    l_entered_amt_idx := 22;
24005    l_accted_amt_idx  := 27;
24006    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24007    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24008    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
24009    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
24010    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
24011    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
24012    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
24013    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
24014    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
24015    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
24016    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
24017    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
24018    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
24019    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
24020    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
24021    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
24022    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
24023    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
24024    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
24025    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
24026    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
24027    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
24028    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
24029    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
24030    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
24031    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
24032    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
24033    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
24034    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
24035    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
24036    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
24037    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
24038    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
24039    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
24040    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
24041    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
24042    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
24043    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
24044    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
24045    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
24046    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
24047    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
24048    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
24049    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
24050    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
24051    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
24052    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
24053    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
24054    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
24055    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
24056    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
24057    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
24058    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
24059    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
24060    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
24061    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
24062    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
24063    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
24064    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
24068    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24065    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
24066    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
24067 
24069    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24070 
24071    ---------------------------------------------------------------------------------------------------------------
24072    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24073    ---------------------------------------------------------------------------------------------------------------
24074    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24075 
24076    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24077    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24078 
24079    IF xla_accounting_cache_pkg.GetValueChar
24080          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24081          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24082    AND l_bflow_method_code = 'PRIOR_ENTRY'
24083 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24084    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24085          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24086        )
24087    THEN
24088          xla_ae_lines_pkg.BflowUpgEntry
24089            (p_business_method_code    => l_bflow_method_code
24090            ,p_business_class_code     => l_bflow_class_code
24091            ,p_balance_type            => l_balance_type_code);
24092    ELSE
24093       NULL;
24094 -- No business flow processing for business flow method of NONE.
24095    END IF;
24096 
24097    --
24098    -- call analytical criteria
24099    --
24100    
24101    --
24102    -- call description
24103    --
24104    -- No description or it is inherited.
24105    --
24106    -- call ADRs
24107    -- Bug 4922099
24108    --
24109    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24110         (NVL(l_actual_upg_option, 'N') = 'O') OR
24111         (NVL(l_enc_upg_option, 'N') = 'O')
24112       )
24113    THEN
24114    NULL;
24115    --
24116    --
24117    
24118   l_ccid := AcctDerRule_5(
24119            p_application_id           => p_application_id
24120          , p_ae_header_id             => l_ae_header_id 
24121 , p_source_4 => p_source_4
24122 , p_source_6 => p_source_6
24123 , p_source_7 => p_source_7
24124          , x_transaction_coa_id       => l_adr_transaction_coa_id
24125          , x_accounting_coa_id        => l_adr_accounting_coa_id
24126          , x_value_type_code          => l_adr_value_type_code
24127          , p_side                     => 'NA'
24128    );
24129 
24130    xla_ae_lines_pkg.set_ccid(
24131     p_code_combination_id          => l_ccid
24132   , p_value_type_code              => l_adr_value_type_code
24133   , p_transaction_coa_id           => l_adr_transaction_coa_id
24134   , p_accounting_coa_id            => l_adr_accounting_coa_id
24135   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
24136   , p_adr_type_code                => 'S'
24137   , p_component_type               => l_component_type
24138   , p_component_code               => l_component_code
24139   , p_component_type_code          => l_component_type_code
24140   , p_component_appl_id            => l_component_appl_id
24141   , p_amb_context_code             => l_amb_context_code
24142   , p_side                         => 'NA'
24143   );
24144 
24145 
24146    --
24147    --
24148    END IF;
24149    --
24150    -- Bug 4922099
24151    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24152           (NVL(l_enc_upg_option, 'N') = 'O')
24153         ) AND
24154         (l_bflow_method_code = 'PRIOR_ENTRY')
24155       )
24156    THEN
24157       IF
24158       --
24159       1 = 2
24160       --
24161       THEN
24162       xla_accounting_err_pkg.build_message
24163                                     (p_appli_s_name            => 'XLA'
24164                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24165                                     ,p_token_1                 => 'LINE_NUMBER'
24166                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24167                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24168                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24169                                                                              l_component_type
24170                                                                             ,l_component_code
24171                                                                             ,l_component_type_code
24172                                                                             ,l_component_appl_id
24173                                                                             ,l_amb_context_code
24174                                                                             ,l_entity_code
24175                                                                             ,l_event_class_code
24176                                                                            )
24180                                                                           ,p_lookup_code    => l_component_type_code
24177                                     ,p_token_3                 => 'OWNER'
24178                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24179                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24181                                                                          )
24182                                     ,p_token_4                 => 'PRODUCT_NAME'
24183                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24184                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24185                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24186                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24187                                     ,p_ae_header_id            =>  NULL
24188                                        );
24189 
24190         IF (C_LEVEL_ERROR>= g_log_level) THEN
24191                  trace
24192                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24193                       ,p_level    => C_LEVEL_ERROR
24194                       ,p_module   => l_log_module);
24195         END IF;
24196       END IF;
24197    END IF;
24198    --
24199    --
24200    ------------------------------------------------------------------------------------------------
24201    -- 4219869 Business Flow
24202    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24203    -- Prior Entry.  Currently, the following code is always generated.
24204    ------------------------------------------------------------------------------------------------
24205    XLA_AE_LINES_PKG.ValidateCurrentLine;
24206 
24207    ------------------------------------------------------------------------------------
24208    -- 4219869 Business Flow
24209    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24210    ------------------------------------------------------------------------------------
24211    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24212 
24213    ----------------------------------------------------------------------------------
24214    -- 4219869 Business Flow
24215    -- Update journal entry status -- Need to generate this within IF <condition>
24216    ----------------------------------------------------------------------------------
24217    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24218          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24219          ,p_balance_type_code => l_balance_type_code
24220          );
24221 
24222    -------------------------------------------------------------------------------------------
24223    -- 4262811 - Generate the Accrual Reversal lines
24224    -------------------------------------------------------------------------------------------
24225    BEGIN
24226       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24227                               (g_array_event(p_event_id).array_value_num('header_index'));
24228       IF l_acc_rev_flag IS NULL THEN
24229          l_acc_rev_flag := 'N';
24230       END IF;
24231    EXCEPTION
24232       WHEN OTHERS THEN
24233          l_acc_rev_flag := 'N';
24234    END;
24235    --
24236    IF (l_acc_rev_flag = 'Y') THEN
24237 
24238        -- 4645092  ------------------------------------------------------------------------------
24239        -- To allow MPA report to determine if it should generate report process
24240        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24241        ------------------------------------------------------------------------------------------
24242 
24243        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24244        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24245 
24246        --
24247        -- Update the line information that should be overwritten
24248        --
24249        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24250                                          p_header_num   => 1);
24251        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24252 
24253        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24254 
24255        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24256           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24257        END IF;
24258 
24259       --
24260       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24261       --
24262       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24263           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24264       ELSE
24265           ---------------------------------------------------------------------------------------------------
24266           -- 4262811a Switch Sign
24267           ---------------------------------------------------------------------------------------------------
24268           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24272                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24269           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24270                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24271           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24273           -- 5132302
24274           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24275                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24276 
24277       END IF;
24278 
24279       -- 4955764
24280       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24281       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24282 
24283 
24284       XLA_AE_LINES_PKG.ValidateCurrentLine;
24285       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24286 
24287       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24288                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24289                ,p_balance_type_code => l_balance_type_code);
24290 
24291    END IF;
24292 
24293    -----------------------------------------------------------------------------------------
24294    -- 4262811 Multiperiod Accounting
24295    -----------------------------------------------------------------------------------------
24296      -- No MPA option is assigned.
24297 
24298 
24299 END IF;
24300 --
24301 
24302 --
24303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24304    trace
24305       (p_msg      => 'END of AcctLineType_57'
24306       ,p_level    => C_LEVEL_PROCEDURE
24307       ,p_module   => l_log_module);
24308 END IF;
24309 --
24310 EXCEPTION
24311   WHEN xla_exceptions_pkg.application_exception THEN
24312       RAISE;
24313   WHEN OTHERS THEN
24314        xla_exceptions_pkg.raise_message
24315            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_57');
24316 END AcctLineType_57;
24317 --
24318 
24319 ---------------------------------------
24320 --
24321 -- PRIVATE FUNCTION
24322 --         AcctLineType_58
24323 --
24324 ---------------------------------------
24325 PROCEDURE AcctLineType_58 (
24326   p_application_id        IN NUMBER
24327  ,p_event_id              IN NUMBER
24328  ,p_calculate_acctd_flag  IN VARCHAR2
24329  ,p_calculate_g_l_flag    IN VARCHAR2
24330  ,p_actual_flag           IN OUT VARCHAR2
24331  ,p_balance_type_code     OUT VARCHAR2
24332  ,p_gain_or_loss_ref      OUT VARCHAR2
24333  
24334 --Cost CCID
24335  , p_source_3            IN NUMBER
24336 --Allow Account Override Flag
24337  , p_source_4            IN VARCHAR2
24338 --Cost Clearing CCID
24339  , p_source_6            IN NUMBER
24340 --Adjustment Cost Clearing CCID
24341  , p_source_7            IN NUMBER
24342 --Reversing Line Flag
24343  , p_source_22            IN VARCHAR2
24344 --Actual Upgrade Credit Accounting Class
24345  , p_source_23            IN VARCHAR2
24346 --Entered Raw Cost
24347  , p_source_24            IN NUMBER
24348 --Entered Currency Code
24349  , p_source_25            IN VARCHAR2
24350 --Accounted Raw Cost
24351  , p_source_26            IN NUMBER
24352 --Exchange Rate Date
24353  , p_source_27            IN DATE
24354 --Exchange Rate
24355  , p_source_28            IN NUMBER
24356 --Exchange Rate Type
24357  , p_source_29            IN VARCHAR2
24358 --Actual Upgrade Debit Accounting Class
24359  , p_source_30            IN VARCHAR2
24360 --Use Actuals Upgrade Attributes Flag
24361  , p_source_31            IN VARCHAR2
24362 --Expenditure Item ID
24363  , p_source_32            IN NUMBER
24364 --Cost Distribution Line Number
24365  , p_source_33            IN NUMBER
24366 --Line Type
24367  , p_source_34            IN VARCHAR2
24368  , p_source_34_meaning    IN VARCHAR2
24369 --Reversed Line Number
24370  , p_source_35            IN NUMBER
24371 )
24372 IS
24373 
24374 l_component_type              VARCHAR2(80);
24375 l_component_code              VARCHAR2(30);
24376 l_component_type_code         VARCHAR2(1);
24377 l_component_appl_id           INTEGER;
24378 l_amb_context_code            VARCHAR2(30);
24379 l_entity_code                 VARCHAR2(30);
24380 l_event_class_code            VARCHAR2(30);
24381 l_ae_header_id                NUMBER;
24382 l_event_type_code             VARCHAR2(30);
24383 l_line_definition_code        VARCHAR2(30);
24384 l_line_definition_owner_code  VARCHAR2(1);
24385 --
24386 -- adr variables
24387 l_segment                     VARCHAR2(30);
24388 l_ccid                        NUMBER;
24389 l_adr_transaction_coa_id      NUMBER;
24390 l_adr_accounting_coa_id       NUMBER;
24391 l_adr_flexfield_segment_code  VARCHAR2(30);
24392 l_adr_flex_value_set_id       NUMBER;
24393 l_adr_value_type_code         VARCHAR2(30);
24394 l_adr_value_combination_id    NUMBER;
24395 l_adr_value_segment_code      VARCHAR2(30);
24396 
24397 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24398 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24399 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24400 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24401 
24402 -- 4262811 Variables ------------------------------------------------------------------------------------------
24406 l_accrual_line_num            NUMBER;
24403 l_entered_amt_idx             NUMBER;
24404 l_accted_amt_idx              NUMBER;
24405 l_acc_rev_flag                VARCHAR2(1);
24407 l_tmp_amt                     NUMBER;
24408 l_acc_rev_natural_side_code   VARCHAR2(1);
24409 
24410 l_num_entries                 NUMBER;
24411 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24412 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24413 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24414 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24415 l_recog_line_1                NUMBER;
24416 l_recog_line_2                NUMBER;
24417 
24418 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24419 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24420 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24421 
24422 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24423 
24424 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24425 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24426 
24427 ---------------------------------------------------------------------------------------------------------------
24428 
24429 
24430 --
24431 -- bulk performance
24432 --
24433 l_balance_type_code           VARCHAR2(1);
24434 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24435 l_log_module                  VARCHAR2(240);
24436 
24437 --
24438 -- Upgrade strategy
24439 --
24440 l_actual_upg_option           VARCHAR2(1);
24441 l_enc_upg_option           VARCHAR2(1);
24442 
24443 --
24444 BEGIN
24445 --
24446 IF g_log_enabled THEN
24447       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
24448 END IF;
24449 --
24450 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24451 
24452       trace
24453          (p_msg      => 'BEGIN of AcctLineType_58'
24454          ,p_level    => C_LEVEL_PROCEDURE
24455          ,p_module   => l_log_module);
24456 
24457 END IF;
24458 --
24459 l_component_type             := 'AMB_JLT';
24460 l_component_code             := 'PA_RAW_COST_CLEARING';
24461 l_component_type_code        := 'S';
24462 l_component_appl_id          :=  275;
24463 l_amb_context_code           := 'DEFAULT';
24464 l_entity_code                := 'EXPENDITURES';
24465 l_event_class_code           := 'WIP_COST';
24466 l_event_type_code            := 'WIP_COST_ALL';
24467 l_line_definition_owner_code := 'S';
24468 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
24469 --
24470 l_balance_type_code          := 'A';
24471 l_segment                     := NULL;
24472 l_ccid                        := NULL;
24473 l_adr_transaction_coa_id      := NULL;
24474 l_adr_accounting_coa_id       := NULL;
24475 l_adr_flexfield_segment_code  := NULL;
24476 l_adr_flex_value_set_id       := NULL;
24477 l_adr_value_type_code         := NULL;
24478 l_adr_value_combination_id    := NULL;
24479 l_adr_value_segment_code      := NULL;
24480 
24481 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24482 l_bflow_class_code           := '';    -- 4219869 Business Flow
24483 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24484 l_budgetary_control_flag     := 'N';
24485 
24486 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24487 l_bflow_applied_to_amt       := NULL; -- 5132302
24488 l_entered_amt_idx            := NULL;          -- 4262811
24489 l_accted_amt_idx             := NULL;          -- 4262811
24490 l_acc_rev_flag               := NULL;          -- 4262811
24491 l_accrual_line_num           := NULL;          -- 4262811
24492 l_tmp_amt                    := NULL;          -- 4262811
24493 --
24494  
24495 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24496     l_balance_type_code <> 'B' THEN
24497 
24498    --
24499    XLA_AE_LINES_PKG.SetNewLine;
24500 
24501    p_balance_type_code          := l_balance_type_code;
24502    -- set the flag so later we will know whether the gain loss line needs to be created
24503    
24504    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24505      p_actual_flag :='A';
24506    END IF;
24507 
24508    --
24509    -- bulk performance
24510    --
24511    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24512                                       p_header_num   => 0); -- 4262811
24513    --
24514    -- set accounting line options
24515    --
24516    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24517            p_natural_side_code          => 'C'
24518          , p_gain_or_loss_flag          => 'N'
24519          , p_gl_transfer_mode_code      => 'S'
24520          , p_acct_entry_type_code       => 'A'
24521          , p_switch_side_flag           => 'Y'
24522          , p_merge_duplicate_code       => 'N'
24523          );
24524    --
24525    l_acc_rev_natural_side_code := 'D';  -- 4262811
24526    -- 
24527    --
24528    -- set accounting line type info
24529    --
24530    xla_ae_lines_pkg.SetAcctLineType
24531       (p_component_type             => l_component_type
24535       ,p_accounting_line_code       => l_component_code
24532       ,p_event_type_code            => l_event_type_code
24533       ,p_line_definition_owner_code => l_line_definition_owner_code
24534       ,p_line_definition_code       => l_line_definition_code
24536       ,p_accounting_line_type_code  => l_component_type_code
24537       ,p_accounting_line_appl_id    => l_component_appl_id
24538       ,p_amb_context_code           => l_amb_context_code
24539       ,p_entity_code                => l_entity_code
24540       ,p_event_class_code           => l_event_class_code);
24541    --
24542    -- set accounting class
24543    --
24544    xla_ae_lines_pkg.SetAcctClass(
24545            p_accounting_class_code  => 'COST_CLEARING'
24546          , p_ae_header_id           => l_ae_header_id
24547          );
24548 
24549    --
24550    -- set rounding class
24551    --
24552    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24553                       'COST_CLEARING';
24554 
24555    --
24556    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24557    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24558    --
24559    -- bulk performance
24560    --
24561    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24562 
24563    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24564       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24565 
24566    -- 4955764
24567    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24568       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24569 
24570    -- 4458381 Public Sector Enh
24571    
24572    --
24573    -- set accounting attributes for the line type
24574    --
24575    l_entered_amt_idx := 22;
24576    l_accted_amt_idx  := 27;
24577    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24578    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24579    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
24580    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
24581    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
24582    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
24583    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
24584    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
24585    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
24586    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
24587    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
24588    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
24589    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
24590    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
24591    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
24592    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
24593    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
24594    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
24595    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
24596    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
24597    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
24598    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
24599    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
24600    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
24601    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
24602    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
24603    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
24604    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
24605    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
24606    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
24607    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
24608    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
24609    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
24610    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
24611    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
24612    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
24613    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
24614    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
24615    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
24616    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
24617    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
24618    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
24619    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
24620    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
24621    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
24622    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
24623    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
24624    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
24625    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
24626    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
24627    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
24628    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
24632    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
24629    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
24630    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
24631    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
24633    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
24634    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
24635    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
24636    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
24637    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
24638 
24639    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24640    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24641 
24642    ---------------------------------------------------------------------------------------------------------------
24643    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24644    ---------------------------------------------------------------------------------------------------------------
24645    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24646 
24647    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24648    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24649 
24650    IF xla_accounting_cache_pkg.GetValueChar
24651          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24652          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24653    AND l_bflow_method_code = 'PRIOR_ENTRY'
24654 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24655    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24656          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24657        )
24658    THEN
24659          xla_ae_lines_pkg.BflowUpgEntry
24660            (p_business_method_code    => l_bflow_method_code
24661            ,p_business_class_code     => l_bflow_class_code
24662            ,p_balance_type            => l_balance_type_code);
24663    ELSE
24664       NULL;
24665 -- No business flow processing for business flow method of NONE.
24666    END IF;
24667 
24668    --
24669    -- call analytical criteria
24670    --
24671    
24672    --
24673    -- call description
24674    --
24675    -- No description or it is inherited.
24676    --
24677    -- call ADRs
24678    -- Bug 4922099
24679    --
24680    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24681         (NVL(l_actual_upg_option, 'N') = 'O') OR
24682         (NVL(l_enc_upg_option, 'N') = 'O')
24683       )
24684    THEN
24685    NULL;
24686    --
24687    --
24688    
24689   l_ccid := AcctDerRule_5(
24690            p_application_id           => p_application_id
24691          , p_ae_header_id             => l_ae_header_id 
24692 , p_source_4 => p_source_4
24693 , p_source_6 => p_source_6
24694 , p_source_7 => p_source_7
24695          , x_transaction_coa_id       => l_adr_transaction_coa_id
24696          , x_accounting_coa_id        => l_adr_accounting_coa_id
24697          , x_value_type_code          => l_adr_value_type_code
24698          , p_side                     => 'NA'
24699    );
24700 
24701    xla_ae_lines_pkg.set_ccid(
24702     p_code_combination_id          => l_ccid
24703   , p_value_type_code              => l_adr_value_type_code
24704   , p_transaction_coa_id           => l_adr_transaction_coa_id
24705   , p_accounting_coa_id            => l_adr_accounting_coa_id
24706   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
24707   , p_adr_type_code                => 'S'
24708   , p_component_type               => l_component_type
24709   , p_component_code               => l_component_code
24710   , p_component_type_code          => l_component_type_code
24711   , p_component_appl_id            => l_component_appl_id
24712   , p_amb_context_code             => l_amb_context_code
24713   , p_side                         => 'NA'
24714   );
24715 
24716 
24717    --
24718    --
24719    END IF;
24720    --
24721    -- Bug 4922099
24722    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24723           (NVL(l_enc_upg_option, 'N') = 'O')
24724         ) AND
24725         (l_bflow_method_code = 'PRIOR_ENTRY')
24726       )
24727    THEN
24728       IF
24729       --
24730       1 = 2
24731       --
24732       THEN
24733       xla_accounting_err_pkg.build_message
24734                                     (p_appli_s_name            => 'XLA'
24735                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24736                                     ,p_token_1                 => 'LINE_NUMBER'
24737                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24738                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24739                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24740                                                                              l_component_type
24741                                                                             ,l_component_code
24745                                                                             ,l_entity_code
24742                                                                             ,l_component_type_code
24743                                                                             ,l_component_appl_id
24744                                                                             ,l_amb_context_code
24746                                                                             ,l_event_class_code
24747                                                                            )
24748                                     ,p_token_3                 => 'OWNER'
24749                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24750                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24751                                                                           ,p_lookup_code    => l_component_type_code
24752                                                                          )
24753                                     ,p_token_4                 => 'PRODUCT_NAME'
24754                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24755                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24756                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24757                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24758                                     ,p_ae_header_id            =>  NULL
24759                                        );
24760 
24761         IF (C_LEVEL_ERROR>= g_log_level) THEN
24762                  trace
24763                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24764                       ,p_level    => C_LEVEL_ERROR
24765                       ,p_module   => l_log_module);
24766         END IF;
24767       END IF;
24768    END IF;
24769    --
24770    --
24771    ------------------------------------------------------------------------------------------------
24772    -- 4219869 Business Flow
24773    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24774    -- Prior Entry.  Currently, the following code is always generated.
24775    ------------------------------------------------------------------------------------------------
24776    XLA_AE_LINES_PKG.ValidateCurrentLine;
24777 
24778    ------------------------------------------------------------------------------------
24779    -- 4219869 Business Flow
24780    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24781    ------------------------------------------------------------------------------------
24782    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24783 
24784    ----------------------------------------------------------------------------------
24785    -- 4219869 Business Flow
24786    -- Update journal entry status -- Need to generate this within IF <condition>
24787    ----------------------------------------------------------------------------------
24788    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24789          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24790          ,p_balance_type_code => l_balance_type_code
24791          );
24792 
24793    -------------------------------------------------------------------------------------------
24794    -- 4262811 - Generate the Accrual Reversal lines
24795    -------------------------------------------------------------------------------------------
24796    BEGIN
24797       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24798                               (g_array_event(p_event_id).array_value_num('header_index'));
24799       IF l_acc_rev_flag IS NULL THEN
24800          l_acc_rev_flag := 'N';
24801       END IF;
24802    EXCEPTION
24803       WHEN OTHERS THEN
24804          l_acc_rev_flag := 'N';
24805    END;
24806    --
24807    IF (l_acc_rev_flag = 'Y') THEN
24808 
24809        -- 4645092  ------------------------------------------------------------------------------
24810        -- To allow MPA report to determine if it should generate report process
24811        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24812        ------------------------------------------------------------------------------------------
24813 
24814        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24815        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24816 
24817        --
24818        -- Update the line information that should be overwritten
24819        --
24820        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24821                                          p_header_num   => 1);
24822        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24823 
24824        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24825 
24826        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24827           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24828        END IF;
24829 
24830       --
24831       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24832       --
24833       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24834           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24838           ---------------------------------------------------------------------------------------------------
24835       ELSE
24836           ---------------------------------------------------------------------------------------------------
24837           -- 4262811a Switch Sign
24839           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24840           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24841                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24842           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24843                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24844           -- 5132302
24845           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24846                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24847 
24848       END IF;
24849 
24850       -- 4955764
24851       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24852       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24853 
24854 
24855       XLA_AE_LINES_PKG.ValidateCurrentLine;
24856       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24857 
24858       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24859                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24860                ,p_balance_type_code => l_balance_type_code);
24861 
24862    END IF;
24863 
24864    -----------------------------------------------------------------------------------------
24865    -- 4262811 Multiperiod Accounting
24866    -----------------------------------------------------------------------------------------
24867      -- No MPA option is assigned.
24868 
24869 
24870 END IF;
24871 --
24872 
24873 --
24874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24875    trace
24876       (p_msg      => 'END of AcctLineType_58'
24877       ,p_level    => C_LEVEL_PROCEDURE
24878       ,p_module   => l_log_module);
24879 END IF;
24880 --
24881 EXCEPTION
24882   WHEN xla_exceptions_pkg.application_exception THEN
24883       RAISE;
24884   WHEN OTHERS THEN
24885        xla_exceptions_pkg.raise_message
24886            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_58');
24887 END AcctLineType_58;
24888 --
24889 
24890 ---------------------------------------
24891 --
24892 -- PRIVATE FUNCTION
24893 --         AcctLineType_59
24894 --
24895 ---------------------------------------
24896 PROCEDURE AcctLineType_59 (
24897   p_application_id        IN NUMBER
24898  ,p_event_id              IN NUMBER
24899  ,p_calculate_acctd_flag  IN VARCHAR2
24900  ,p_calculate_g_l_flag    IN VARCHAR2
24901  ,p_actual_flag           IN OUT VARCHAR2
24902  ,p_balance_type_code     OUT VARCHAR2
24903  ,p_gain_or_loss_ref      OUT VARCHAR2
24904  
24905 --Cost CCID
24906  , p_source_3            IN NUMBER
24907 --Allow Account Override Flag
24908  , p_source_4            IN VARCHAR2
24909 --Cost Clearing CCID
24910  , p_source_6            IN NUMBER
24911 --Adjustment Cost Clearing CCID
24912  , p_source_7            IN NUMBER
24913 --Exchange Rate Variance Flag
24914  , p_source_21            IN VARCHAR2
24915 --Reversing Line Flag
24916  , p_source_22            IN VARCHAR2
24917 --Actual Upgrade Credit Accounting Class
24918  , p_source_23            IN VARCHAR2
24919 --Entered Raw Cost
24920  , p_source_24            IN NUMBER
24921 --Entered Currency Code
24922  , p_source_25            IN VARCHAR2
24923 --Accounted Raw Cost
24924  , p_source_26            IN NUMBER
24925 --Exchange Rate Date
24926  , p_source_27            IN DATE
24927 --Exchange Rate
24928  , p_source_28            IN NUMBER
24929 --Exchange Rate Type
24930  , p_source_29            IN VARCHAR2
24931 --Actual Upgrade Debit Accounting Class
24932  , p_source_30            IN VARCHAR2
24933 --Use Actuals Upgrade Attributes Flag
24934  , p_source_31            IN VARCHAR2
24935 --Expenditure Item ID
24936  , p_source_32            IN NUMBER
24937 --Cost Distribution Line Number
24938  , p_source_33            IN NUMBER
24939 --Line Type
24940  , p_source_34            IN VARCHAR2
24941  , p_source_34_meaning    IN VARCHAR2
24942 --Reversed Line Number
24943  , p_source_35            IN NUMBER
24944 )
24945 IS
24946 
24947 l_component_type              VARCHAR2(80);
24948 l_component_code              VARCHAR2(30);
24949 l_component_type_code         VARCHAR2(1);
24950 l_component_appl_id           INTEGER;
24951 l_amb_context_code            VARCHAR2(30);
24952 l_entity_code                 VARCHAR2(30);
24953 l_event_class_code            VARCHAR2(30);
24954 l_ae_header_id                NUMBER;
24955 l_event_type_code             VARCHAR2(30);
24956 l_line_definition_code        VARCHAR2(30);
24957 l_line_definition_owner_code  VARCHAR2(1);
24958 --
24959 -- adr variables
24960 l_segment                     VARCHAR2(30);
24961 l_ccid                        NUMBER;
24962 l_adr_transaction_coa_id      NUMBER;
24963 l_adr_accounting_coa_id       NUMBER;
24964 l_adr_flexfield_segment_code  VARCHAR2(30);
24965 l_adr_flex_value_set_id       NUMBER;
24969 
24966 l_adr_value_type_code         VARCHAR2(30);
24967 l_adr_value_combination_id    NUMBER;
24968 l_adr_value_segment_code      VARCHAR2(30);
24970 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24971 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24972 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24973 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24974 
24975 -- 4262811 Variables ------------------------------------------------------------------------------------------
24976 l_entered_amt_idx             NUMBER;
24977 l_accted_amt_idx              NUMBER;
24978 l_acc_rev_flag                VARCHAR2(1);
24979 l_accrual_line_num            NUMBER;
24980 l_tmp_amt                     NUMBER;
24981 l_acc_rev_natural_side_code   VARCHAR2(1);
24982 
24983 l_num_entries                 NUMBER;
24984 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24985 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24986 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24987 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24988 l_recog_line_1                NUMBER;
24989 l_recog_line_2                NUMBER;
24990 
24991 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24992 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24993 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24994 
24995 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24996 
24997 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24998 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24999 
25000 ---------------------------------------------------------------------------------------------------------------
25001 
25002 
25003 --
25004 -- bulk performance
25005 --
25006 l_balance_type_code           VARCHAR2(1);
25007 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25008 l_log_module                  VARCHAR2(240);
25009 
25010 --
25011 -- Upgrade strategy
25012 --
25013 l_actual_upg_option           VARCHAR2(1);
25014 l_enc_upg_option           VARCHAR2(1);
25015 
25016 --
25017 BEGIN
25018 --
25019 IF g_log_enabled THEN
25020       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
25021 END IF;
25022 --
25023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25024 
25025       trace
25026          (p_msg      => 'BEGIN of AcctLineType_59'
25027          ,p_level    => C_LEVEL_PROCEDURE
25028          ,p_module   => l_log_module);
25029 
25030 END IF;
25031 --
25032 l_component_type             := 'AMB_JLT';
25033 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
25034 l_component_type_code        := 'S';
25035 l_component_appl_id          :=  275;
25036 l_amb_context_code           := 'DEFAULT';
25037 l_entity_code                := 'EXPENDITURES';
25038 l_event_class_code           := 'SUPPLIER_COST_ADJ';
25039 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
25040 l_line_definition_owner_code := 'S';
25041 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
25042 --
25043 l_balance_type_code          := 'A';
25044 l_segment                     := NULL;
25045 l_ccid                        := NULL;
25046 l_adr_transaction_coa_id      := NULL;
25047 l_adr_accounting_coa_id       := NULL;
25048 l_adr_flexfield_segment_code  := NULL;
25049 l_adr_flex_value_set_id       := NULL;
25050 l_adr_value_type_code         := NULL;
25051 l_adr_value_combination_id    := NULL;
25052 l_adr_value_segment_code      := NULL;
25053 
25054 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25055 l_bflow_class_code           := '';    -- 4219869 Business Flow
25056 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25057 l_budgetary_control_flag     := 'N';
25058 
25059 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25060 l_bflow_applied_to_amt       := NULL; -- 5132302
25061 l_entered_amt_idx            := NULL;          -- 4262811
25062 l_accted_amt_idx             := NULL;          -- 4262811
25063 l_acc_rev_flag               := NULL;          -- 4262811
25064 l_accrual_line_num           := NULL;          -- 4262811
25065 l_tmp_amt                    := NULL;          -- 4262811
25066 --
25067  
25068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25069     l_balance_type_code <> 'B' THEN
25070 IF NVL(p_source_21,'
25071 ') =  'N'
25072  THEN 
25073 
25074    --
25075    XLA_AE_LINES_PKG.SetNewLine;
25076 
25077    p_balance_type_code          := l_balance_type_code;
25078    -- set the flag so later we will know whether the gain loss line needs to be created
25079    
25080    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25081      p_actual_flag :='A';
25082    END IF;
25083 
25084    --
25085    -- bulk performance
25086    --
25087    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25088                                       p_header_num   => 0); -- 4262811
25089    --
25090    -- set accounting line options
25091    --
25092    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25096          , p_acct_entry_type_code       => 'A'
25093            p_natural_side_code          => 'C'
25094          , p_gain_or_loss_flag          => 'N'
25095          , p_gl_transfer_mode_code      => 'S'
25097          , p_switch_side_flag           => 'Y'
25098          , p_merge_duplicate_code       => 'N'
25099          );
25100    --
25101    l_acc_rev_natural_side_code := 'D';  -- 4262811
25102    -- 
25103    --
25104    -- set accounting line type info
25105    --
25106    xla_ae_lines_pkg.SetAcctLineType
25107       (p_component_type             => l_component_type
25108       ,p_event_type_code            => l_event_type_code
25109       ,p_line_definition_owner_code => l_line_definition_owner_code
25110       ,p_line_definition_code       => l_line_definition_code
25111       ,p_accounting_line_code       => l_component_code
25112       ,p_accounting_line_type_code  => l_component_type_code
25113       ,p_accounting_line_appl_id    => l_component_appl_id
25114       ,p_amb_context_code           => l_amb_context_code
25115       ,p_entity_code                => l_entity_code
25116       ,p_event_class_code           => l_event_class_code);
25117    --
25118    -- set accounting class
25119    --
25120    xla_ae_lines_pkg.SetAcctClass(
25121            p_accounting_class_code  => 'COST_CLEARING'
25122          , p_ae_header_id           => l_ae_header_id
25123          );
25124 
25125    --
25126    -- set rounding class
25127    --
25128    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25129                       'COST_CLEARING';
25130 
25131    --
25132    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25133    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25134    --
25135    -- bulk performance
25136    --
25137    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25138 
25139    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25140       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25141 
25142    -- 4955764
25143    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25144       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25145 
25146    -- 4458381 Public Sector Enh
25147    
25148    --
25149    -- set accounting attributes for the line type
25150    --
25151    l_entered_amt_idx := 22;
25152    l_accted_amt_idx  := 27;
25153    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25154    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25155    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
25156    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
25157    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
25158    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
25159    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
25160    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
25161    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
25162    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
25163    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
25164    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
25165    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
25166    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
25167    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
25168    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
25169    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
25170    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
25171    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
25172    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
25173    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
25174    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
25175    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
25176    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
25177    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
25178    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
25179    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
25180    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
25181    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
25182    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
25183    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
25184    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
25185    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
25186    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
25187    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
25188    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
25189    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
25190    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
25191    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
25192    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
25196    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
25193    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
25194    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
25195    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
25197    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
25198    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
25199    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
25200    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
25201    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
25202    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
25203    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
25204    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
25205    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
25206    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
25207    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
25208    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
25209    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
25210    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
25211    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
25212    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
25213    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
25214 
25215    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25216    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25217 
25218    ---------------------------------------------------------------------------------------------------------------
25219    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25220    ---------------------------------------------------------------------------------------------------------------
25221    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25222 
25223    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25224    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25225 
25226    IF xla_accounting_cache_pkg.GetValueChar
25227          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25228          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25229    AND l_bflow_method_code = 'PRIOR_ENTRY'
25230 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25231    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25232          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25233        )
25234    THEN
25235          xla_ae_lines_pkg.BflowUpgEntry
25236            (p_business_method_code    => l_bflow_method_code
25237            ,p_business_class_code     => l_bflow_class_code
25238            ,p_balance_type            => l_balance_type_code);
25239    ELSE
25240       NULL;
25241 -- No business flow processing for business flow method of NONE.
25242    END IF;
25243 
25244    --
25245    -- call analytical criteria
25246    --
25247    
25248    --
25249    -- call description
25250    --
25251    -- No description or it is inherited.
25252    --
25253    -- call ADRs
25254    -- Bug 4922099
25255    --
25256    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25257         (NVL(l_actual_upg_option, 'N') = 'O') OR
25258         (NVL(l_enc_upg_option, 'N') = 'O')
25259       )
25260    THEN
25261    NULL;
25262    --
25263    --
25264    
25265   l_ccid := AcctDerRule_6(
25266            p_application_id           => p_application_id
25267          , p_ae_header_id             => l_ae_header_id 
25268 , p_source_4 => p_source_4
25269 , p_source_7 => p_source_7
25270          , x_transaction_coa_id       => l_adr_transaction_coa_id
25271          , x_accounting_coa_id        => l_adr_accounting_coa_id
25272          , x_value_type_code          => l_adr_value_type_code
25273          , p_side                     => 'NA'
25274    );
25275 
25276    xla_ae_lines_pkg.set_ccid(
25277     p_code_combination_id          => l_ccid
25278   , p_value_type_code              => l_adr_value_type_code
25279   , p_transaction_coa_id           => l_adr_transaction_coa_id
25280   , p_accounting_coa_id            => l_adr_accounting_coa_id
25281   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
25282   , p_adr_type_code                => 'S'
25283   , p_component_type               => l_component_type
25284   , p_component_code               => l_component_code
25285   , p_component_type_code          => l_component_type_code
25286   , p_component_appl_id            => l_component_appl_id
25287   , p_amb_context_code             => l_amb_context_code
25288   , p_side                         => 'NA'
25289   );
25290 
25291 
25292    --
25293    --
25294    END IF;
25295    --
25296    -- Bug 4922099
25297    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25298           (NVL(l_enc_upg_option, 'N') = 'O')
25299         ) AND
25300         (l_bflow_method_code = 'PRIOR_ENTRY')
25301       )
25302    THEN
25303       IF
25304       --
25305       1 = 2
25306       --
25307       THEN
25308       xla_accounting_err_pkg.build_message
25309                                     (p_appli_s_name            => 'XLA'
25313                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25310                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25311                                     ,p_token_1                 => 'LINE_NUMBER'
25312                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25314                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25315                                                                              l_component_type
25316                                                                             ,l_component_code
25317                                                                             ,l_component_type_code
25318                                                                             ,l_component_appl_id
25319                                                                             ,l_amb_context_code
25320                                                                             ,l_entity_code
25321                                                                             ,l_event_class_code
25322                                                                            )
25323                                     ,p_token_3                 => 'OWNER'
25324                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25325                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25326                                                                           ,p_lookup_code    => l_component_type_code
25327                                                                          )
25328                                     ,p_token_4                 => 'PRODUCT_NAME'
25329                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25330                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25331                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25332                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25333                                     ,p_ae_header_id            =>  NULL
25334                                        );
25335 
25336         IF (C_LEVEL_ERROR>= g_log_level) THEN
25337                  trace
25338                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25339                       ,p_level    => C_LEVEL_ERROR
25340                       ,p_module   => l_log_module);
25341         END IF;
25342       END IF;
25343    END IF;
25344    --
25345    --
25346    ------------------------------------------------------------------------------------------------
25347    -- 4219869 Business Flow
25348    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25349    -- Prior Entry.  Currently, the following code is always generated.
25350    ------------------------------------------------------------------------------------------------
25351    XLA_AE_LINES_PKG.ValidateCurrentLine;
25352 
25353    ------------------------------------------------------------------------------------
25354    -- 4219869 Business Flow
25355    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25356    ------------------------------------------------------------------------------------
25357    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25358 
25359    ----------------------------------------------------------------------------------
25360    -- 4219869 Business Flow
25361    -- Update journal entry status -- Need to generate this within IF <condition>
25362    ----------------------------------------------------------------------------------
25363    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25364          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25365          ,p_balance_type_code => l_balance_type_code
25366          );
25367 
25368    -------------------------------------------------------------------------------------------
25369    -- 4262811 - Generate the Accrual Reversal lines
25370    -------------------------------------------------------------------------------------------
25371    BEGIN
25372       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25373                               (g_array_event(p_event_id).array_value_num('header_index'));
25374       IF l_acc_rev_flag IS NULL THEN
25375          l_acc_rev_flag := 'N';
25376       END IF;
25377    EXCEPTION
25378       WHEN OTHERS THEN
25379          l_acc_rev_flag := 'N';
25380    END;
25381    --
25382    IF (l_acc_rev_flag = 'Y') THEN
25383 
25384        -- 4645092  ------------------------------------------------------------------------------
25385        -- To allow MPA report to determine if it should generate report process
25386        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25387        ------------------------------------------------------------------------------------------
25388 
25389        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25390        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25391 
25392        --
25393        -- Update the line information that should be overwritten
25394        --
25395        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25396                                          p_header_num   => 1);
25397        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25398 
25399        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25400 
25404 
25401        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25402           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25403        END IF;
25405       --
25406       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25407       --
25408       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25409           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25410       ELSE
25411           ---------------------------------------------------------------------------------------------------
25412           -- 4262811a Switch Sign
25413           ---------------------------------------------------------------------------------------------------
25414           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25415           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25416                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25417           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25418                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25419           -- 5132302
25420           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25421                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25422 
25423       END IF;
25424 
25425       -- 4955764
25426       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25427       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25428 
25429 
25430       XLA_AE_LINES_PKG.ValidateCurrentLine;
25431       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25432 
25433       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25434                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25435                ,p_balance_type_code => l_balance_type_code);
25436 
25437    END IF;
25438 
25439    -----------------------------------------------------------------------------------------
25440    -- 4262811 Multiperiod Accounting
25441    -----------------------------------------------------------------------------------------
25442      -- No MPA option is assigned.
25443 
25444 
25445 END IF;
25446 END IF;
25447 --
25448 
25449 --
25450 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25451    trace
25452       (p_msg      => 'END of AcctLineType_59'
25453       ,p_level    => C_LEVEL_PROCEDURE
25454       ,p_module   => l_log_module);
25455 END IF;
25456 --
25457 EXCEPTION
25458   WHEN xla_exceptions_pkg.application_exception THEN
25459       RAISE;
25460   WHEN OTHERS THEN
25461        xla_exceptions_pkg.raise_message
25462            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_59');
25463 END AcctLineType_59;
25464 --
25465 
25466 ---------------------------------------
25467 --
25468 -- PRIVATE FUNCTION
25469 --         AcctLineType_60
25470 --
25471 ---------------------------------------
25472 PROCEDURE AcctLineType_60 (
25473   p_application_id        IN NUMBER
25474  ,p_event_id              IN NUMBER
25475  ,p_calculate_acctd_flag  IN VARCHAR2
25476  ,p_calculate_g_l_flag    IN VARCHAR2
25477  ,p_actual_flag           IN OUT VARCHAR2
25478  ,p_balance_type_code     OUT VARCHAR2
25479  ,p_gain_or_loss_ref      OUT VARCHAR2
25480  
25481 --Cost CCID
25482  , p_source_3            IN NUMBER
25483 --Allow Account Override Flag
25484  , p_source_4            IN VARCHAR2
25485 --Cost Clearing CCID
25486  , p_source_6            IN NUMBER
25487 --Adjustment Cost Clearing CCID
25488  , p_source_7            IN NUMBER
25489 --Reversing Line Flag
25490  , p_source_22            IN VARCHAR2
25491 --Actual Upgrade Credit Accounting Class
25492  , p_source_23            IN VARCHAR2
25493 --Entered Raw Cost
25494  , p_source_24            IN NUMBER
25495 --Entered Currency Code
25496  , p_source_25            IN VARCHAR2
25497 --Accounted Raw Cost
25498  , p_source_26            IN NUMBER
25499 --Exchange Rate Date
25500  , p_source_27            IN DATE
25501 --Exchange Rate
25502  , p_source_28            IN NUMBER
25503 --Exchange Rate Type
25504  , p_source_29            IN VARCHAR2
25505 --Actual Upgrade Debit Accounting Class
25506  , p_source_30            IN VARCHAR2
25507 --Use Actuals Upgrade Attributes Flag
25508  , p_source_31            IN VARCHAR2
25509 --Expenditure Item ID
25510  , p_source_32            IN NUMBER
25511 --Cost Distribution Line Number
25512  , p_source_33            IN NUMBER
25513 --Line Type
25514  , p_source_34            IN VARCHAR2
25515  , p_source_34_meaning    IN VARCHAR2
25516 --Reversed Line Number
25517  , p_source_35            IN NUMBER
25518 )
25519 IS
25520 
25521 l_component_type              VARCHAR2(80);
25522 l_component_code              VARCHAR2(30);
25523 l_component_type_code         VARCHAR2(1);
25524 l_component_appl_id           INTEGER;
25525 l_amb_context_code            VARCHAR2(30);
25526 l_entity_code                 VARCHAR2(30);
25527 l_event_class_code            VARCHAR2(30);
25531 l_line_definition_owner_code  VARCHAR2(1);
25528 l_ae_header_id                NUMBER;
25529 l_event_type_code             VARCHAR2(30);
25530 l_line_definition_code        VARCHAR2(30);
25532 --
25533 -- adr variables
25534 l_segment                     VARCHAR2(30);
25535 l_ccid                        NUMBER;
25536 l_adr_transaction_coa_id      NUMBER;
25537 l_adr_accounting_coa_id       NUMBER;
25538 l_adr_flexfield_segment_code  VARCHAR2(30);
25539 l_adr_flex_value_set_id       NUMBER;
25540 l_adr_value_type_code         VARCHAR2(30);
25541 l_adr_value_combination_id    NUMBER;
25542 l_adr_value_segment_code      VARCHAR2(30);
25543 
25544 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25545 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25546 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25547 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25548 
25549 -- 4262811 Variables ------------------------------------------------------------------------------------------
25550 l_entered_amt_idx             NUMBER;
25551 l_accted_amt_idx              NUMBER;
25552 l_acc_rev_flag                VARCHAR2(1);
25553 l_accrual_line_num            NUMBER;
25554 l_tmp_amt                     NUMBER;
25555 l_acc_rev_natural_side_code   VARCHAR2(1);
25556 
25557 l_num_entries                 NUMBER;
25558 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25559 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25560 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25561 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25562 l_recog_line_1                NUMBER;
25563 l_recog_line_2                NUMBER;
25564 
25565 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25566 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25567 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25568 
25569 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25570 
25571 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25572 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25573 
25574 ---------------------------------------------------------------------------------------------------------------
25575 
25576 
25577 --
25578 -- bulk performance
25579 --
25580 l_balance_type_code           VARCHAR2(1);
25581 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25582 l_log_module                  VARCHAR2(240);
25583 
25584 --
25585 -- Upgrade strategy
25586 --
25587 l_actual_upg_option           VARCHAR2(1);
25588 l_enc_upg_option           VARCHAR2(1);
25589 
25590 --
25591 BEGIN
25592 --
25593 IF g_log_enabled THEN
25594       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
25595 END IF;
25596 --
25597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25598 
25599       trace
25600          (p_msg      => 'BEGIN of AcctLineType_60'
25601          ,p_level    => C_LEVEL_PROCEDURE
25602          ,p_module   => l_log_module);
25603 
25604 END IF;
25605 --
25606 l_component_type             := 'AMB_JLT';
25607 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
25608 l_component_type_code        := 'S';
25609 l_component_appl_id          :=  275;
25610 l_amb_context_code           := 'DEFAULT';
25611 l_entity_code                := 'EXPENDITURES';
25612 l_event_class_code           := 'LABOR_COST_ADJ';
25613 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
25614 l_line_definition_owner_code := 'S';
25615 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
25616 --
25617 l_balance_type_code          := 'A';
25618 l_segment                     := NULL;
25619 l_ccid                        := NULL;
25620 l_adr_transaction_coa_id      := NULL;
25621 l_adr_accounting_coa_id       := NULL;
25622 l_adr_flexfield_segment_code  := NULL;
25623 l_adr_flex_value_set_id       := NULL;
25624 l_adr_value_type_code         := NULL;
25625 l_adr_value_combination_id    := NULL;
25626 l_adr_value_segment_code      := NULL;
25627 
25628 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25629 l_bflow_class_code           := '';    -- 4219869 Business Flow
25630 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25631 l_budgetary_control_flag     := 'N';
25632 
25633 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25634 l_bflow_applied_to_amt       := NULL; -- 5132302
25635 l_entered_amt_idx            := NULL;          -- 4262811
25636 l_accted_amt_idx             := NULL;          -- 4262811
25637 l_acc_rev_flag               := NULL;          -- 4262811
25638 l_accrual_line_num           := NULL;          -- 4262811
25639 l_tmp_amt                    := NULL;          -- 4262811
25640 --
25641  
25642 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25643     l_balance_type_code <> 'B' THEN
25644 
25645    --
25646    XLA_AE_LINES_PKG.SetNewLine;
25647 
25648    p_balance_type_code          := l_balance_type_code;
25649    -- set the flag so later we will know whether the gain loss line needs to be created
25650    
25651    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25655    --
25652      p_actual_flag :='A';
25653    END IF;
25654 
25656    -- bulk performance
25657    --
25658    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25659                                       p_header_num   => 0); -- 4262811
25660    --
25661    -- set accounting line options
25662    --
25663    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25664            p_natural_side_code          => 'C'
25665          , p_gain_or_loss_flag          => 'N'
25666          , p_gl_transfer_mode_code      => 'S'
25667          , p_acct_entry_type_code       => 'A'
25668          , p_switch_side_flag           => 'Y'
25669          , p_merge_duplicate_code       => 'N'
25670          );
25671    --
25672    l_acc_rev_natural_side_code := 'D';  -- 4262811
25673    -- 
25674    --
25675    -- set accounting line type info
25676    --
25677    xla_ae_lines_pkg.SetAcctLineType
25678       (p_component_type             => l_component_type
25679       ,p_event_type_code            => l_event_type_code
25680       ,p_line_definition_owner_code => l_line_definition_owner_code
25681       ,p_line_definition_code       => l_line_definition_code
25682       ,p_accounting_line_code       => l_component_code
25683       ,p_accounting_line_type_code  => l_component_type_code
25684       ,p_accounting_line_appl_id    => l_component_appl_id
25685       ,p_amb_context_code           => l_amb_context_code
25686       ,p_entity_code                => l_entity_code
25687       ,p_event_class_code           => l_event_class_code);
25688    --
25689    -- set accounting class
25690    --
25691    xla_ae_lines_pkg.SetAcctClass(
25692            p_accounting_class_code  => 'COST_CLEARING'
25693          , p_ae_header_id           => l_ae_header_id
25694          );
25695 
25696    --
25697    -- set rounding class
25698    --
25699    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25700                       'COST_CLEARING';
25701 
25702    --
25703    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25704    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25705    --
25706    -- bulk performance
25707    --
25708    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25709 
25710    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25711       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25712 
25713    -- 4955764
25714    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25715       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25716 
25717    -- 4458381 Public Sector Enh
25718    
25719    --
25720    -- set accounting attributes for the line type
25721    --
25722    l_entered_amt_idx := 22;
25723    l_accted_amt_idx  := 27;
25724    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25725    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25726    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
25727    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
25728    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
25729    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
25730    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
25731    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
25732    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
25733    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
25734    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
25735    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
25736    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
25737    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
25738    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
25739    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
25740    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
25741    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
25742    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
25743    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
25744    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
25745    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
25746    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
25747    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
25748    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
25749    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
25750    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
25751    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
25752    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
25753    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
25754    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
25755    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
25756    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
25757    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
25758    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
25759    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
25763    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
25760    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
25761    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
25762    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
25764    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
25765    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
25766    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
25767    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
25768    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
25769    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
25770    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
25771    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
25772    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
25773    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
25774    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
25775    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
25776    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
25777    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
25778    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
25779    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
25780    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
25781    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
25782    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
25783    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
25784    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
25785 
25786    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25787    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25788 
25789    ---------------------------------------------------------------------------------------------------------------
25790    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25791    ---------------------------------------------------------------------------------------------------------------
25792    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25793 
25794    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25795    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25796 
25797    IF xla_accounting_cache_pkg.GetValueChar
25798          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25799          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25800    AND l_bflow_method_code = 'PRIOR_ENTRY'
25801 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25802    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25803          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25804        )
25805    THEN
25806          xla_ae_lines_pkg.BflowUpgEntry
25807            (p_business_method_code    => l_bflow_method_code
25808            ,p_business_class_code     => l_bflow_class_code
25809            ,p_balance_type            => l_balance_type_code);
25810    ELSE
25811       NULL;
25812 -- No business flow processing for business flow method of NONE.
25813    END IF;
25814 
25815    --
25816    -- call analytical criteria
25817    --
25818    
25819    --
25820    -- call description
25821    --
25822    -- No description or it is inherited.
25823    --
25824    -- call ADRs
25825    -- Bug 4922099
25826    --
25827    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25828         (NVL(l_actual_upg_option, 'N') = 'O') OR
25829         (NVL(l_enc_upg_option, 'N') = 'O')
25830       )
25831    THEN
25832    NULL;
25833    --
25834    --
25835    
25836   l_ccid := AcctDerRule_6(
25837            p_application_id           => p_application_id
25838          , p_ae_header_id             => l_ae_header_id 
25839 , p_source_4 => p_source_4
25840 , p_source_7 => p_source_7
25841          , x_transaction_coa_id       => l_adr_transaction_coa_id
25842          , x_accounting_coa_id        => l_adr_accounting_coa_id
25843          , x_value_type_code          => l_adr_value_type_code
25844          , p_side                     => 'NA'
25845    );
25846 
25847    xla_ae_lines_pkg.set_ccid(
25848     p_code_combination_id          => l_ccid
25849   , p_value_type_code              => l_adr_value_type_code
25850   , p_transaction_coa_id           => l_adr_transaction_coa_id
25851   , p_accounting_coa_id            => l_adr_accounting_coa_id
25852   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
25853   , p_adr_type_code                => 'S'
25854   , p_component_type               => l_component_type
25855   , p_component_code               => l_component_code
25856   , p_component_type_code          => l_component_type_code
25857   , p_component_appl_id            => l_component_appl_id
25858   , p_amb_context_code             => l_amb_context_code
25859   , p_side                         => 'NA'
25860   );
25861 
25862 
25863    --
25864    --
25865    END IF;
25866    --
25867    -- Bug 4922099
25868    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25872       )
25869           (NVL(l_enc_upg_option, 'N') = 'O')
25870         ) AND
25871         (l_bflow_method_code = 'PRIOR_ENTRY')
25873    THEN
25874       IF
25875       --
25876       1 = 2
25877       --
25878       THEN
25879       xla_accounting_err_pkg.build_message
25880                                     (p_appli_s_name            => 'XLA'
25881                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25882                                     ,p_token_1                 => 'LINE_NUMBER'
25883                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25884                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25885                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25886                                                                              l_component_type
25887                                                                             ,l_component_code
25888                                                                             ,l_component_type_code
25889                                                                             ,l_component_appl_id
25890                                                                             ,l_amb_context_code
25891                                                                             ,l_entity_code
25892                                                                             ,l_event_class_code
25893                                                                            )
25894                                     ,p_token_3                 => 'OWNER'
25895                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25896                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25897                                                                           ,p_lookup_code    => l_component_type_code
25898                                                                          )
25899                                     ,p_token_4                 => 'PRODUCT_NAME'
25900                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25901                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25902                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25903                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25904                                     ,p_ae_header_id            =>  NULL
25905                                        );
25906 
25907         IF (C_LEVEL_ERROR>= g_log_level) THEN
25908                  trace
25909                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25910                       ,p_level    => C_LEVEL_ERROR
25911                       ,p_module   => l_log_module);
25912         END IF;
25913       END IF;
25914    END IF;
25915    --
25916    --
25917    ------------------------------------------------------------------------------------------------
25918    -- 4219869 Business Flow
25919    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25920    -- Prior Entry.  Currently, the following code is always generated.
25921    ------------------------------------------------------------------------------------------------
25922    XLA_AE_LINES_PKG.ValidateCurrentLine;
25923 
25924    ------------------------------------------------------------------------------------
25925    -- 4219869 Business Flow
25926    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25927    ------------------------------------------------------------------------------------
25928    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25929 
25930    ----------------------------------------------------------------------------------
25931    -- 4219869 Business Flow
25932    -- Update journal entry status -- Need to generate this within IF <condition>
25933    ----------------------------------------------------------------------------------
25934    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25935          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25936          ,p_balance_type_code => l_balance_type_code
25937          );
25938 
25939    -------------------------------------------------------------------------------------------
25940    -- 4262811 - Generate the Accrual Reversal lines
25941    -------------------------------------------------------------------------------------------
25942    BEGIN
25943       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25944                               (g_array_event(p_event_id).array_value_num('header_index'));
25945       IF l_acc_rev_flag IS NULL THEN
25946          l_acc_rev_flag := 'N';
25947       END IF;
25948    EXCEPTION
25949       WHEN OTHERS THEN
25950          l_acc_rev_flag := 'N';
25951    END;
25952    --
25953    IF (l_acc_rev_flag = 'Y') THEN
25954 
25955        -- 4645092  ------------------------------------------------------------------------------
25956        -- To allow MPA report to determine if it should generate report process
25957        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25958        ------------------------------------------------------------------------------------------
25959 
25960        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25961        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25962 
25963        --
25964        -- Update the line information that should be overwritten
25968        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25965        --
25966        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25967                                          p_header_num   => 1);
25969 
25970        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25971 
25972        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25973           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25974        END IF;
25975 
25976       --
25977       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25978       --
25979       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25980           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25981       ELSE
25982           ---------------------------------------------------------------------------------------------------
25983           -- 4262811a Switch Sign
25984           ---------------------------------------------------------------------------------------------------
25985           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25986           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25987                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25988           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25989                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25990           -- 5132302
25991           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25992                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25993 
25994       END IF;
25995 
25996       -- 4955764
25997       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25998       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25999 
26000 
26001       XLA_AE_LINES_PKG.ValidateCurrentLine;
26002       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26003 
26004       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26005                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26006                ,p_balance_type_code => l_balance_type_code);
26007 
26008    END IF;
26009 
26010    -----------------------------------------------------------------------------------------
26011    -- 4262811 Multiperiod Accounting
26012    -----------------------------------------------------------------------------------------
26013      -- No MPA option is assigned.
26014 
26015 
26016 END IF;
26017 --
26018 
26019 --
26020 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26021    trace
26022       (p_msg      => 'END of AcctLineType_60'
26023       ,p_level    => C_LEVEL_PROCEDURE
26024       ,p_module   => l_log_module);
26025 END IF;
26026 --
26027 EXCEPTION
26028   WHEN xla_exceptions_pkg.application_exception THEN
26029       RAISE;
26030   WHEN OTHERS THEN
26031        xla_exceptions_pkg.raise_message
26032            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_60');
26033 END AcctLineType_60;
26034 --
26035 
26036 ---------------------------------------
26037 --
26038 -- PRIVATE FUNCTION
26039 --         AcctLineType_61
26040 --
26041 ---------------------------------------
26042 PROCEDURE AcctLineType_61 (
26043   p_application_id        IN NUMBER
26044  ,p_event_id              IN NUMBER
26045  ,p_calculate_acctd_flag  IN VARCHAR2
26046  ,p_calculate_g_l_flag    IN VARCHAR2
26047  ,p_actual_flag           IN OUT VARCHAR2
26048  ,p_balance_type_code     OUT VARCHAR2
26049  ,p_gain_or_loss_ref      OUT VARCHAR2
26050  
26051 --Cost CCID
26052  , p_source_3            IN NUMBER
26053 --Allow Account Override Flag
26054  , p_source_4            IN VARCHAR2
26055 --Cost Clearing CCID
26056  , p_source_6            IN NUMBER
26057 --Adjustment Cost Clearing CCID
26058  , p_source_7            IN NUMBER
26059 --Reversing Line Flag
26060  , p_source_22            IN VARCHAR2
26061 --Actual Upgrade Credit Accounting Class
26062  , p_source_23            IN VARCHAR2
26063 --Entered Raw Cost
26064  , p_source_24            IN NUMBER
26065 --Entered Currency Code
26066  , p_source_25            IN VARCHAR2
26067 --Accounted Raw Cost
26068  , p_source_26            IN NUMBER
26069 --Exchange Rate Date
26070  , p_source_27            IN DATE
26071 --Exchange Rate
26072  , p_source_28            IN NUMBER
26073 --Exchange Rate Type
26074  , p_source_29            IN VARCHAR2
26075 --Actual Upgrade Debit Accounting Class
26076  , p_source_30            IN VARCHAR2
26077 --Use Actuals Upgrade Attributes Flag
26078  , p_source_31            IN VARCHAR2
26079 --Expenditure Item ID
26080  , p_source_32            IN NUMBER
26081 --Cost Distribution Line Number
26082  , p_source_33            IN NUMBER
26083 --Line Type
26084  , p_source_34            IN VARCHAR2
26085  , p_source_34_meaning    IN VARCHAR2
26086 --Reversed Line Number
26087  , p_source_35            IN NUMBER
26088 )
26089 IS
26090 
26094 l_component_appl_id           INTEGER;
26091 l_component_type              VARCHAR2(80);
26092 l_component_code              VARCHAR2(30);
26093 l_component_type_code         VARCHAR2(1);
26095 l_amb_context_code            VARCHAR2(30);
26096 l_entity_code                 VARCHAR2(30);
26097 l_event_class_code            VARCHAR2(30);
26098 l_ae_header_id                NUMBER;
26099 l_event_type_code             VARCHAR2(30);
26100 l_line_definition_code        VARCHAR2(30);
26101 l_line_definition_owner_code  VARCHAR2(1);
26102 --
26103 -- adr variables
26104 l_segment                     VARCHAR2(30);
26105 l_ccid                        NUMBER;
26106 l_adr_transaction_coa_id      NUMBER;
26107 l_adr_accounting_coa_id       NUMBER;
26108 l_adr_flexfield_segment_code  VARCHAR2(30);
26109 l_adr_flex_value_set_id       NUMBER;
26110 l_adr_value_type_code         VARCHAR2(30);
26111 l_adr_value_combination_id    NUMBER;
26112 l_adr_value_segment_code      VARCHAR2(30);
26113 
26114 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26115 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26116 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26117 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26118 
26119 -- 4262811 Variables ------------------------------------------------------------------------------------------
26120 l_entered_amt_idx             NUMBER;
26121 l_accted_amt_idx              NUMBER;
26122 l_acc_rev_flag                VARCHAR2(1);
26123 l_accrual_line_num            NUMBER;
26124 l_tmp_amt                     NUMBER;
26125 l_acc_rev_natural_side_code   VARCHAR2(1);
26126 
26127 l_num_entries                 NUMBER;
26128 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26129 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26130 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26131 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26132 l_recog_line_1                NUMBER;
26133 l_recog_line_2                NUMBER;
26134 
26135 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26136 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26137 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26138 
26139 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26140 
26141 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26142 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26143 
26144 ---------------------------------------------------------------------------------------------------------------
26145 
26146 
26147 --
26148 -- bulk performance
26149 --
26150 l_balance_type_code           VARCHAR2(1);
26151 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26152 l_log_module                  VARCHAR2(240);
26153 
26154 --
26155 -- Upgrade strategy
26156 --
26157 l_actual_upg_option           VARCHAR2(1);
26158 l_enc_upg_option           VARCHAR2(1);
26159 
26160 --
26161 BEGIN
26162 --
26163 IF g_log_enabled THEN
26164       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
26165 END IF;
26166 --
26167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26168 
26169       trace
26170          (p_msg      => 'BEGIN of AcctLineType_61'
26171          ,p_level    => C_LEVEL_PROCEDURE
26172          ,p_module   => l_log_module);
26173 
26174 END IF;
26175 --
26176 l_component_type             := 'AMB_JLT';
26177 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
26178 l_component_type_code        := 'S';
26179 l_component_appl_id          :=  275;
26180 l_amb_context_code           := 'DEFAULT';
26181 l_entity_code                := 'EXPENDITURES';
26182 l_event_class_code           := 'MISC_COST_ADJ';
26183 l_event_type_code            := 'MISC_COST_ADJ_ALL';
26184 l_line_definition_owner_code := 'S';
26185 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
26186 --
26187 l_balance_type_code          := 'A';
26188 l_segment                     := NULL;
26189 l_ccid                        := NULL;
26190 l_adr_transaction_coa_id      := NULL;
26191 l_adr_accounting_coa_id       := NULL;
26192 l_adr_flexfield_segment_code  := NULL;
26193 l_adr_flex_value_set_id       := NULL;
26194 l_adr_value_type_code         := NULL;
26195 l_adr_value_combination_id    := NULL;
26196 l_adr_value_segment_code      := NULL;
26197 
26198 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26199 l_bflow_class_code           := '';    -- 4219869 Business Flow
26200 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26201 l_budgetary_control_flag     := 'N';
26202 
26203 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26204 l_bflow_applied_to_amt       := NULL; -- 5132302
26205 l_entered_amt_idx            := NULL;          -- 4262811
26206 l_accted_amt_idx             := NULL;          -- 4262811
26207 l_acc_rev_flag               := NULL;          -- 4262811
26208 l_accrual_line_num           := NULL;          -- 4262811
26209 l_tmp_amt                    := NULL;          -- 4262811
26210 --
26211  
26212 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26216    XLA_AE_LINES_PKG.SetNewLine;
26213     l_balance_type_code <> 'B' THEN
26214 
26215    --
26217 
26218    p_balance_type_code          := l_balance_type_code;
26219    -- set the flag so later we will know whether the gain loss line needs to be created
26220    
26221    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26222      p_actual_flag :='A';
26223    END IF;
26224 
26225    --
26226    -- bulk performance
26227    --
26228    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26229                                       p_header_num   => 0); -- 4262811
26230    --
26231    -- set accounting line options
26232    --
26233    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26234            p_natural_side_code          => 'C'
26235          , p_gain_or_loss_flag          => 'N'
26236          , p_gl_transfer_mode_code      => 'S'
26237          , p_acct_entry_type_code       => 'A'
26238          , p_switch_side_flag           => 'Y'
26239          , p_merge_duplicate_code       => 'N'
26240          );
26241    --
26242    l_acc_rev_natural_side_code := 'D';  -- 4262811
26243    -- 
26244    --
26245    -- set accounting line type info
26246    --
26247    xla_ae_lines_pkg.SetAcctLineType
26248       (p_component_type             => l_component_type
26249       ,p_event_type_code            => l_event_type_code
26250       ,p_line_definition_owner_code => l_line_definition_owner_code
26251       ,p_line_definition_code       => l_line_definition_code
26252       ,p_accounting_line_code       => l_component_code
26253       ,p_accounting_line_type_code  => l_component_type_code
26254       ,p_accounting_line_appl_id    => l_component_appl_id
26255       ,p_amb_context_code           => l_amb_context_code
26256       ,p_entity_code                => l_entity_code
26257       ,p_event_class_code           => l_event_class_code);
26258    --
26259    -- set accounting class
26260    --
26261    xla_ae_lines_pkg.SetAcctClass(
26262            p_accounting_class_code  => 'COST_CLEARING'
26263          , p_ae_header_id           => l_ae_header_id
26264          );
26265 
26266    --
26267    -- set rounding class
26268    --
26269    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26270                       'COST_CLEARING';
26271 
26272    --
26273    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26274    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26275    --
26276    -- bulk performance
26277    --
26278    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26279 
26280    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26281       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26282 
26283    -- 4955764
26284    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26285       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26286 
26287    -- 4458381 Public Sector Enh
26288    
26289    --
26290    -- set accounting attributes for the line type
26291    --
26292    l_entered_amt_idx := 22;
26293    l_accted_amt_idx  := 27;
26294    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26295    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26296    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
26297    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
26298    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
26299    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
26300    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
26301    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
26302    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
26303    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
26304    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
26305    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
26306    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
26307    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
26308    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
26309    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
26310    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
26311    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
26312    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
26313    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
26314    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
26315    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
26316    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
26317    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
26318    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
26319    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
26320    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
26321    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
26322    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
26323    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
26327    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
26324    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
26325    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
26326    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
26328    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
26329    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
26330    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
26331    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
26332    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
26333    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
26334    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
26335    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
26336    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
26337    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
26338    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
26339    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
26340    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
26341    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
26342    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
26343    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
26344    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
26345    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
26346    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
26347    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
26348    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
26349    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
26350    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
26351    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
26352    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
26353    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
26354    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
26355 
26356    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26357    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26358 
26359    ---------------------------------------------------------------------------------------------------------------
26360    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26361    ---------------------------------------------------------------------------------------------------------------
26362    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26363 
26364    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26365    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26366 
26367    IF xla_accounting_cache_pkg.GetValueChar
26368          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26369          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26370    AND l_bflow_method_code = 'PRIOR_ENTRY'
26371 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26372    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26373          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26374        )
26375    THEN
26376          xla_ae_lines_pkg.BflowUpgEntry
26377            (p_business_method_code    => l_bflow_method_code
26378            ,p_business_class_code     => l_bflow_class_code
26379            ,p_balance_type            => l_balance_type_code);
26380    ELSE
26381       NULL;
26382 -- No business flow processing for business flow method of NONE.
26383    END IF;
26384 
26385    --
26386    -- call analytical criteria
26387    --
26388    
26389    --
26390    -- call description
26391    --
26392    -- No description or it is inherited.
26393    --
26394    -- call ADRs
26395    -- Bug 4922099
26396    --
26397    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26398         (NVL(l_actual_upg_option, 'N') = 'O') OR
26399         (NVL(l_enc_upg_option, 'N') = 'O')
26400       )
26401    THEN
26402    NULL;
26403    --
26404    --
26405    
26406   l_ccid := AcctDerRule_6(
26407            p_application_id           => p_application_id
26408          , p_ae_header_id             => l_ae_header_id 
26409 , p_source_4 => p_source_4
26410 , p_source_7 => p_source_7
26411          , x_transaction_coa_id       => l_adr_transaction_coa_id
26412          , x_accounting_coa_id        => l_adr_accounting_coa_id
26413          , x_value_type_code          => l_adr_value_type_code
26414          , p_side                     => 'NA'
26415    );
26416 
26417    xla_ae_lines_pkg.set_ccid(
26418     p_code_combination_id          => l_ccid
26419   , p_value_type_code              => l_adr_value_type_code
26420   , p_transaction_coa_id           => l_adr_transaction_coa_id
26421   , p_accounting_coa_id            => l_adr_accounting_coa_id
26422   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
26423   , p_adr_type_code                => 'S'
26424   , p_component_type               => l_component_type
26425   , p_component_code               => l_component_code
26426   , p_component_type_code          => l_component_type_code
26430   );
26427   , p_component_appl_id            => l_component_appl_id
26428   , p_amb_context_code             => l_amb_context_code
26429   , p_side                         => 'NA'
26431 
26432 
26433    --
26434    --
26435    END IF;
26436    --
26437    -- Bug 4922099
26438    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26439           (NVL(l_enc_upg_option, 'N') = 'O')
26440         ) AND
26441         (l_bflow_method_code = 'PRIOR_ENTRY')
26442       )
26443    THEN
26444       IF
26445       --
26446       1 = 2
26447       --
26448       THEN
26449       xla_accounting_err_pkg.build_message
26450                                     (p_appli_s_name            => 'XLA'
26451                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26452                                     ,p_token_1                 => 'LINE_NUMBER'
26453                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26454                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26455                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26456                                                                              l_component_type
26457                                                                             ,l_component_code
26458                                                                             ,l_component_type_code
26459                                                                             ,l_component_appl_id
26460                                                                             ,l_amb_context_code
26461                                                                             ,l_entity_code
26462                                                                             ,l_event_class_code
26463                                                                            )
26464                                     ,p_token_3                 => 'OWNER'
26465                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26466                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26467                                                                           ,p_lookup_code    => l_component_type_code
26468                                                                          )
26469                                     ,p_token_4                 => 'PRODUCT_NAME'
26470                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26471                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26472                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26473                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26474                                     ,p_ae_header_id            =>  NULL
26475                                        );
26476 
26477         IF (C_LEVEL_ERROR>= g_log_level) THEN
26478                  trace
26479                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26480                       ,p_level    => C_LEVEL_ERROR
26481                       ,p_module   => l_log_module);
26482         END IF;
26483       END IF;
26484    END IF;
26485    --
26486    --
26487    ------------------------------------------------------------------------------------------------
26488    -- 4219869 Business Flow
26489    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26490    -- Prior Entry.  Currently, the following code is always generated.
26491    ------------------------------------------------------------------------------------------------
26492    XLA_AE_LINES_PKG.ValidateCurrentLine;
26493 
26494    ------------------------------------------------------------------------------------
26495    -- 4219869 Business Flow
26496    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26497    ------------------------------------------------------------------------------------
26498    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26499 
26500    ----------------------------------------------------------------------------------
26501    -- 4219869 Business Flow
26502    -- Update journal entry status -- Need to generate this within IF <condition>
26503    ----------------------------------------------------------------------------------
26504    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26505          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26506          ,p_balance_type_code => l_balance_type_code
26507          );
26508 
26509    -------------------------------------------------------------------------------------------
26510    -- 4262811 - Generate the Accrual Reversal lines
26511    -------------------------------------------------------------------------------------------
26512    BEGIN
26513       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26514                               (g_array_event(p_event_id).array_value_num('header_index'));
26515       IF l_acc_rev_flag IS NULL THEN
26516          l_acc_rev_flag := 'N';
26517       END IF;
26518    EXCEPTION
26519       WHEN OTHERS THEN
26520          l_acc_rev_flag := 'N';
26521    END;
26522    --
26523    IF (l_acc_rev_flag = 'Y') THEN
26524 
26525        -- 4645092  ------------------------------------------------------------------------------
26529 
26526        -- To allow MPA report to determine if it should generate report process
26527        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26528        ------------------------------------------------------------------------------------------
26530        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26531        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26532 
26533        --
26534        -- Update the line information that should be overwritten
26535        --
26536        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26537                                          p_header_num   => 1);
26538        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26539 
26540        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26541 
26542        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26543           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26544        END IF;
26545 
26546       --
26547       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26548       --
26549       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26550           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26551       ELSE
26552           ---------------------------------------------------------------------------------------------------
26553           -- 4262811a Switch Sign
26554           ---------------------------------------------------------------------------------------------------
26555           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26556           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26557                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26558           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26559                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26560           -- 5132302
26561           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26562                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26563 
26564       END IF;
26565 
26566       -- 4955764
26567       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26568       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26569 
26570 
26571       XLA_AE_LINES_PKG.ValidateCurrentLine;
26572       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26573 
26574       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26575                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26576                ,p_balance_type_code => l_balance_type_code);
26577 
26578    END IF;
26579 
26580    -----------------------------------------------------------------------------------------
26581    -- 4262811 Multiperiod Accounting
26582    -----------------------------------------------------------------------------------------
26583      -- No MPA option is assigned.
26584 
26585 
26586 END IF;
26587 --
26588 
26589 --
26590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26591    trace
26592       (p_msg      => 'END of AcctLineType_61'
26593       ,p_level    => C_LEVEL_PROCEDURE
26594       ,p_module   => l_log_module);
26595 END IF;
26596 --
26597 EXCEPTION
26598   WHEN xla_exceptions_pkg.application_exception THEN
26599       RAISE;
26600   WHEN OTHERS THEN
26601        xla_exceptions_pkg.raise_message
26602            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_61');
26603 END AcctLineType_61;
26604 --
26605 
26606 ---------------------------------------
26607 --
26608 -- PRIVATE FUNCTION
26609 --         AcctLineType_62
26610 --
26611 ---------------------------------------
26612 PROCEDURE AcctLineType_62 (
26613   p_application_id        IN NUMBER
26614  ,p_event_id              IN NUMBER
26615  ,p_calculate_acctd_flag  IN VARCHAR2
26616  ,p_calculate_g_l_flag    IN VARCHAR2
26617  ,p_actual_flag           IN OUT VARCHAR2
26618  ,p_balance_type_code     OUT VARCHAR2
26619  ,p_gain_or_loss_ref      OUT VARCHAR2
26620  
26621 --Cost CCID
26622  , p_source_3            IN NUMBER
26623 --Allow Account Override Flag
26624  , p_source_4            IN VARCHAR2
26625 --Cost Clearing CCID
26626  , p_source_6            IN NUMBER
26627 --Adjustment Cost Clearing CCID
26628  , p_source_7            IN NUMBER
26629 --Reversing Line Flag
26630  , p_source_22            IN VARCHAR2
26631 --Actual Upgrade Credit Accounting Class
26632  , p_source_23            IN VARCHAR2
26633 --Entered Raw Cost
26634  , p_source_24            IN NUMBER
26635 --Entered Currency Code
26636  , p_source_25            IN VARCHAR2
26637 --Accounted Raw Cost
26638  , p_source_26            IN NUMBER
26639 --Exchange Rate Date
26640  , p_source_27            IN DATE
26641 --Exchange Rate
26642  , p_source_28            IN NUMBER
26643 --Exchange Rate Type
26644  , p_source_29            IN VARCHAR2
26645 --Actual Upgrade Debit Accounting Class
26646  , p_source_30            IN VARCHAR2
26647 --Use Actuals Upgrade Attributes Flag
26648  , p_source_31            IN VARCHAR2
26649 --Expenditure Item ID
26653 --Line Type
26650  , p_source_32            IN NUMBER
26651 --Cost Distribution Line Number
26652  , p_source_33            IN NUMBER
26654  , p_source_34            IN VARCHAR2
26655  , p_source_34_meaning    IN VARCHAR2
26656 --Reversed Line Number
26657  , p_source_35            IN NUMBER
26658 )
26659 IS
26660 
26661 l_component_type              VARCHAR2(80);
26662 l_component_code              VARCHAR2(30);
26663 l_component_type_code         VARCHAR2(1);
26664 l_component_appl_id           INTEGER;
26665 l_amb_context_code            VARCHAR2(30);
26666 l_entity_code                 VARCHAR2(30);
26667 l_event_class_code            VARCHAR2(30);
26668 l_ae_header_id                NUMBER;
26669 l_event_type_code             VARCHAR2(30);
26670 l_line_definition_code        VARCHAR2(30);
26671 l_line_definition_owner_code  VARCHAR2(1);
26672 --
26673 -- adr variables
26674 l_segment                     VARCHAR2(30);
26675 l_ccid                        NUMBER;
26676 l_adr_transaction_coa_id      NUMBER;
26677 l_adr_accounting_coa_id       NUMBER;
26678 l_adr_flexfield_segment_code  VARCHAR2(30);
26679 l_adr_flex_value_set_id       NUMBER;
26680 l_adr_value_type_code         VARCHAR2(30);
26681 l_adr_value_combination_id    NUMBER;
26682 l_adr_value_segment_code      VARCHAR2(30);
26683 
26684 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26685 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26686 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26687 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26688 
26689 -- 4262811 Variables ------------------------------------------------------------------------------------------
26690 l_entered_amt_idx             NUMBER;
26691 l_accted_amt_idx              NUMBER;
26692 l_acc_rev_flag                VARCHAR2(1);
26693 l_accrual_line_num            NUMBER;
26694 l_tmp_amt                     NUMBER;
26695 l_acc_rev_natural_side_code   VARCHAR2(1);
26696 
26697 l_num_entries                 NUMBER;
26698 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26699 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26700 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26701 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26702 l_recog_line_1                NUMBER;
26703 l_recog_line_2                NUMBER;
26704 
26705 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26706 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26707 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26708 
26709 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26710 
26711 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26712 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26713 
26714 ---------------------------------------------------------------------------------------------------------------
26715 
26716 
26717 --
26718 -- bulk performance
26719 --
26720 l_balance_type_code           VARCHAR2(1);
26721 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26722 l_log_module                  VARCHAR2(240);
26723 
26724 --
26725 -- Upgrade strategy
26726 --
26727 l_actual_upg_option           VARCHAR2(1);
26728 l_enc_upg_option           VARCHAR2(1);
26729 
26730 --
26731 BEGIN
26732 --
26733 IF g_log_enabled THEN
26734       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
26735 END IF;
26736 --
26737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26738 
26739       trace
26740          (p_msg      => 'BEGIN of AcctLineType_62'
26741          ,p_level    => C_LEVEL_PROCEDURE
26742          ,p_module   => l_log_module);
26743 
26744 END IF;
26745 --
26746 l_component_type             := 'AMB_JLT';
26747 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
26748 l_component_type_code        := 'S';
26749 l_component_appl_id          :=  275;
26750 l_amb_context_code           := 'DEFAULT';
26751 l_entity_code                := 'EXPENDITURES';
26752 l_event_class_code           := 'WIP_COST_ADJ';
26753 l_event_type_code            := 'WIP_COST_ADJ_ALL';
26754 l_line_definition_owner_code := 'S';
26755 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
26756 --
26757 l_balance_type_code          := 'A';
26758 l_segment                     := NULL;
26759 l_ccid                        := NULL;
26760 l_adr_transaction_coa_id      := NULL;
26761 l_adr_accounting_coa_id       := NULL;
26762 l_adr_flexfield_segment_code  := NULL;
26763 l_adr_flex_value_set_id       := NULL;
26764 l_adr_value_type_code         := NULL;
26765 l_adr_value_combination_id    := NULL;
26766 l_adr_value_segment_code      := NULL;
26767 
26768 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26769 l_bflow_class_code           := '';    -- 4219869 Business Flow
26770 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26771 l_budgetary_control_flag     := 'N';
26772 
26773 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26774 l_bflow_applied_to_amt       := NULL; -- 5132302
26775 l_entered_amt_idx            := NULL;          -- 4262811
26779 l_tmp_amt                    := NULL;          -- 4262811
26776 l_accted_amt_idx             := NULL;          -- 4262811
26777 l_acc_rev_flag               := NULL;          -- 4262811
26778 l_accrual_line_num           := NULL;          -- 4262811
26780 --
26781  
26782 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26783     l_balance_type_code <> 'B' THEN
26784 
26785    --
26786    XLA_AE_LINES_PKG.SetNewLine;
26787 
26788    p_balance_type_code          := l_balance_type_code;
26789    -- set the flag so later we will know whether the gain loss line needs to be created
26790    
26791    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26792      p_actual_flag :='A';
26793    END IF;
26794 
26795    --
26796    -- bulk performance
26797    --
26798    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26799                                       p_header_num   => 0); -- 4262811
26800    --
26801    -- set accounting line options
26802    --
26803    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26804            p_natural_side_code          => 'C'
26805          , p_gain_or_loss_flag          => 'N'
26806          , p_gl_transfer_mode_code      => 'S'
26807          , p_acct_entry_type_code       => 'A'
26808          , p_switch_side_flag           => 'Y'
26809          , p_merge_duplicate_code       => 'N'
26810          );
26811    --
26812    l_acc_rev_natural_side_code := 'D';  -- 4262811
26813    -- 
26814    --
26815    -- set accounting line type info
26816    --
26817    xla_ae_lines_pkg.SetAcctLineType
26818       (p_component_type             => l_component_type
26819       ,p_event_type_code            => l_event_type_code
26820       ,p_line_definition_owner_code => l_line_definition_owner_code
26821       ,p_line_definition_code       => l_line_definition_code
26822       ,p_accounting_line_code       => l_component_code
26823       ,p_accounting_line_type_code  => l_component_type_code
26824       ,p_accounting_line_appl_id    => l_component_appl_id
26825       ,p_amb_context_code           => l_amb_context_code
26826       ,p_entity_code                => l_entity_code
26827       ,p_event_class_code           => l_event_class_code);
26828    --
26829    -- set accounting class
26830    --
26831    xla_ae_lines_pkg.SetAcctClass(
26832            p_accounting_class_code  => 'COST_CLEARING'
26833          , p_ae_header_id           => l_ae_header_id
26834          );
26835 
26836    --
26837    -- set rounding class
26838    --
26839    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26840                       'COST_CLEARING';
26841 
26842    --
26843    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26844    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26845    --
26846    -- bulk performance
26847    --
26848    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26849 
26850    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26851       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26852 
26853    -- 4955764
26854    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26855       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26856 
26857    -- 4458381 Public Sector Enh
26858    
26859    --
26860    -- set accounting attributes for the line type
26861    --
26862    l_entered_amt_idx := 22;
26863    l_accted_amt_idx  := 27;
26864    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26865    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26866    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
26867    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
26868    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
26869    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
26870    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
26871    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
26872    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
26873    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
26874    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
26875    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
26876    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
26877    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
26878    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
26879    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
26880    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
26881    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
26882    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
26883    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
26884    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
26885    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
26886    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
26887    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
26888    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
26889    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
26893    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
26890    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
26891    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
26892    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
26894    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
26895    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
26896    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
26897    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
26898    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
26899    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
26900    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
26901    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
26902    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
26903    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
26904    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
26905    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
26906    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
26907    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
26908    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
26909    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
26910    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
26911    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
26912    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
26913    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
26914    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
26915    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
26916    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
26917    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
26918    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
26919    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
26920    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
26921    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
26922    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
26923    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
26924    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
26925 
26926    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26927    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26928 
26929    ---------------------------------------------------------------------------------------------------------------
26930    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26931    ---------------------------------------------------------------------------------------------------------------
26932    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26933 
26934    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26935    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26936 
26937    IF xla_accounting_cache_pkg.GetValueChar
26938          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26939          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26940    AND l_bflow_method_code = 'PRIOR_ENTRY'
26941 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26942    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26943          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26944        )
26945    THEN
26946          xla_ae_lines_pkg.BflowUpgEntry
26947            (p_business_method_code    => l_bflow_method_code
26948            ,p_business_class_code     => l_bflow_class_code
26949            ,p_balance_type            => l_balance_type_code);
26950    ELSE
26951       NULL;
26952 -- No business flow processing for business flow method of NONE.
26953    END IF;
26954 
26955    --
26956    -- call analytical criteria
26957    --
26958    
26959    --
26960    -- call description
26961    --
26962    -- No description or it is inherited.
26963    --
26964    -- call ADRs
26965    -- Bug 4922099
26966    --
26967    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26968         (NVL(l_actual_upg_option, 'N') = 'O') OR
26969         (NVL(l_enc_upg_option, 'N') = 'O')
26970       )
26971    THEN
26972    NULL;
26973    --
26974    --
26975    
26976   l_ccid := AcctDerRule_6(
26977            p_application_id           => p_application_id
26978          , p_ae_header_id             => l_ae_header_id 
26979 , p_source_4 => p_source_4
26980 , p_source_7 => p_source_7
26981          , x_transaction_coa_id       => l_adr_transaction_coa_id
26982          , x_accounting_coa_id        => l_adr_accounting_coa_id
26983          , x_value_type_code          => l_adr_value_type_code
26984          , p_side                     => 'NA'
26985    );
26986 
26987    xla_ae_lines_pkg.set_ccid(
26988     p_code_combination_id          => l_ccid
26989   , p_value_type_code              => l_adr_value_type_code
26990   , p_transaction_coa_id           => l_adr_transaction_coa_id
26991   , p_accounting_coa_id            => l_adr_accounting_coa_id
26995   , p_component_code               => l_component_code
26992   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
26993   , p_adr_type_code                => 'S'
26994   , p_component_type               => l_component_type
26996   , p_component_type_code          => l_component_type_code
26997   , p_component_appl_id            => l_component_appl_id
26998   , p_amb_context_code             => l_amb_context_code
26999   , p_side                         => 'NA'
27000   );
27001 
27002 
27003    --
27004    --
27005    END IF;
27006    --
27007    -- Bug 4922099
27008    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27009           (NVL(l_enc_upg_option, 'N') = 'O')
27010         ) AND
27011         (l_bflow_method_code = 'PRIOR_ENTRY')
27012       )
27013    THEN
27014       IF
27015       --
27016       1 = 2
27017       --
27018       THEN
27019       xla_accounting_err_pkg.build_message
27020                                     (p_appli_s_name            => 'XLA'
27021                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27022                                     ,p_token_1                 => 'LINE_NUMBER'
27023                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27024                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27025                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27026                                                                              l_component_type
27027                                                                             ,l_component_code
27028                                                                             ,l_component_type_code
27029                                                                             ,l_component_appl_id
27030                                                                             ,l_amb_context_code
27031                                                                             ,l_entity_code
27032                                                                             ,l_event_class_code
27033                                                                            )
27034                                     ,p_token_3                 => 'OWNER'
27035                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27036                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27037                                                                           ,p_lookup_code    => l_component_type_code
27038                                                                          )
27039                                     ,p_token_4                 => 'PRODUCT_NAME'
27040                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27041                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27042                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27043                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27044                                     ,p_ae_header_id            =>  NULL
27045                                        );
27046 
27047         IF (C_LEVEL_ERROR>= g_log_level) THEN
27048                  trace
27049                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27050                       ,p_level    => C_LEVEL_ERROR
27051                       ,p_module   => l_log_module);
27052         END IF;
27053       END IF;
27054    END IF;
27055    --
27056    --
27057    ------------------------------------------------------------------------------------------------
27058    -- 4219869 Business Flow
27059    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27060    -- Prior Entry.  Currently, the following code is always generated.
27061    ------------------------------------------------------------------------------------------------
27062    XLA_AE_LINES_PKG.ValidateCurrentLine;
27063 
27064    ------------------------------------------------------------------------------------
27065    -- 4219869 Business Flow
27066    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27067    ------------------------------------------------------------------------------------
27068    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27069 
27070    ----------------------------------------------------------------------------------
27071    -- 4219869 Business Flow
27072    -- Update journal entry status -- Need to generate this within IF <condition>
27073    ----------------------------------------------------------------------------------
27074    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27075          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27076          ,p_balance_type_code => l_balance_type_code
27077          );
27078 
27079    -------------------------------------------------------------------------------------------
27080    -- 4262811 - Generate the Accrual Reversal lines
27081    -------------------------------------------------------------------------------------------
27082    BEGIN
27083       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27084                               (g_array_event(p_event_id).array_value_num('header_index'));
27085       IF l_acc_rev_flag IS NULL THEN
27086          l_acc_rev_flag := 'N';
27087       END IF;
27091    END;
27088    EXCEPTION
27089       WHEN OTHERS THEN
27090          l_acc_rev_flag := 'N';
27092    --
27093    IF (l_acc_rev_flag = 'Y') THEN
27094 
27095        -- 4645092  ------------------------------------------------------------------------------
27096        -- To allow MPA report to determine if it should generate report process
27097        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27098        ------------------------------------------------------------------------------------------
27099 
27100        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27101        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27102 
27103        --
27104        -- Update the line information that should be overwritten
27105        --
27106        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27107                                          p_header_num   => 1);
27108        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27109 
27110        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27111 
27112        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27113           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27114        END IF;
27115 
27116       --
27117       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27118       --
27119       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27120           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27121       ELSE
27122           ---------------------------------------------------------------------------------------------------
27123           -- 4262811a Switch Sign
27124           ---------------------------------------------------------------------------------------------------
27125           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27126           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27127                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27128           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27129                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27130           -- 5132302
27131           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27132                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27133 
27134       END IF;
27135 
27136       -- 4955764
27137       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27138       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27139 
27140 
27141       XLA_AE_LINES_PKG.ValidateCurrentLine;
27142       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27143 
27144       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27145                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27146                ,p_balance_type_code => l_balance_type_code);
27147 
27148    END IF;
27149 
27150    -----------------------------------------------------------------------------------------
27151    -- 4262811 Multiperiod Accounting
27152    -----------------------------------------------------------------------------------------
27153      -- No MPA option is assigned.
27154 
27155 
27156 END IF;
27157 --
27158 
27159 --
27160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27161    trace
27162       (p_msg      => 'END of AcctLineType_62'
27163       ,p_level    => C_LEVEL_PROCEDURE
27164       ,p_module   => l_log_module);
27165 END IF;
27166 --
27167 EXCEPTION
27168   WHEN xla_exceptions_pkg.application_exception THEN
27169       RAISE;
27170   WHEN OTHERS THEN
27171        xla_exceptions_pkg.raise_message
27172            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_62');
27173 END AcctLineType_62;
27174 --
27175 
27176 ---------------------------------------
27177 --
27178 -- PRIVATE FUNCTION
27179 --         AcctLineType_63
27180 --
27181 ---------------------------------------
27182 PROCEDURE AcctLineType_63 (
27183   p_application_id        IN NUMBER
27184  ,p_event_id              IN NUMBER
27185  ,p_calculate_acctd_flag  IN VARCHAR2
27186  ,p_calculate_g_l_flag    IN VARCHAR2
27187  ,p_actual_flag           IN OUT VARCHAR2
27188  ,p_balance_type_code     OUT VARCHAR2
27189  ,p_gain_or_loss_ref      OUT VARCHAR2
27190  
27191 --Cost CCID
27192  , p_source_3            IN NUMBER
27193 --Allow Account Override Flag
27194  , p_source_4            IN VARCHAR2
27195 --Cost Clearing CCID
27196  , p_source_6            IN NUMBER
27197 --Adjustment Cost Clearing CCID
27198  , p_source_7            IN NUMBER
27199 --Reversing Line Flag
27200  , p_source_22            IN VARCHAR2
27201 --Actual Upgrade Credit Accounting Class
27202  , p_source_23            IN VARCHAR2
27203 --Entered Raw Cost
27204  , p_source_24            IN NUMBER
27205 --Entered Currency Code
27206  , p_source_25            IN VARCHAR2
27207 --Accounted Raw Cost
27208  , p_source_26            IN NUMBER
27209 --Exchange Rate Date
27213 --Exchange Rate Type
27210  , p_source_27            IN DATE
27211 --Exchange Rate
27212  , p_source_28            IN NUMBER
27214  , p_source_29            IN VARCHAR2
27215 --Actual Upgrade Debit Accounting Class
27216  , p_source_30            IN VARCHAR2
27217 --Use Actuals Upgrade Attributes Flag
27218  , p_source_31            IN VARCHAR2
27219 --Expenditure Item ID
27220  , p_source_32            IN NUMBER
27221 --Cost Distribution Line Number
27222  , p_source_33            IN NUMBER
27223 --Line Type
27224  , p_source_34            IN VARCHAR2
27225  , p_source_34_meaning    IN VARCHAR2
27226 --Reversed Line Number
27227  , p_source_35            IN NUMBER
27228 )
27229 IS
27230 
27231 l_component_type              VARCHAR2(80);
27232 l_component_code              VARCHAR2(30);
27233 l_component_type_code         VARCHAR2(1);
27234 l_component_appl_id           INTEGER;
27235 l_amb_context_code            VARCHAR2(30);
27236 l_entity_code                 VARCHAR2(30);
27237 l_event_class_code            VARCHAR2(30);
27238 l_ae_header_id                NUMBER;
27239 l_event_type_code             VARCHAR2(30);
27240 l_line_definition_code        VARCHAR2(30);
27241 l_line_definition_owner_code  VARCHAR2(1);
27242 --
27243 -- adr variables
27244 l_segment                     VARCHAR2(30);
27245 l_ccid                        NUMBER;
27246 l_adr_transaction_coa_id      NUMBER;
27247 l_adr_accounting_coa_id       NUMBER;
27248 l_adr_flexfield_segment_code  VARCHAR2(30);
27249 l_adr_flex_value_set_id       NUMBER;
27250 l_adr_value_type_code         VARCHAR2(30);
27251 l_adr_value_combination_id    NUMBER;
27252 l_adr_value_segment_code      VARCHAR2(30);
27253 
27254 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27255 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27256 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27257 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27258 
27259 -- 4262811 Variables ------------------------------------------------------------------------------------------
27260 l_entered_amt_idx             NUMBER;
27261 l_accted_amt_idx              NUMBER;
27262 l_acc_rev_flag                VARCHAR2(1);
27263 l_accrual_line_num            NUMBER;
27264 l_tmp_amt                     NUMBER;
27265 l_acc_rev_natural_side_code   VARCHAR2(1);
27266 
27267 l_num_entries                 NUMBER;
27268 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27269 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27270 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27271 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27272 l_recog_line_1                NUMBER;
27273 l_recog_line_2                NUMBER;
27274 
27275 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27276 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27277 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27278 
27279 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27280 
27281 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27282 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27283 
27284 ---------------------------------------------------------------------------------------------------------------
27285 
27286 
27287 --
27288 -- bulk performance
27289 --
27290 l_balance_type_code           VARCHAR2(1);
27291 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27292 l_log_module                  VARCHAR2(240);
27293 
27294 --
27295 -- Upgrade strategy
27296 --
27297 l_actual_upg_option           VARCHAR2(1);
27298 l_enc_upg_option           VARCHAR2(1);
27299 
27300 --
27301 BEGIN
27302 --
27303 IF g_log_enabled THEN
27304       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
27305 END IF;
27306 --
27307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27308 
27309       trace
27310          (p_msg      => 'BEGIN of AcctLineType_63'
27311          ,p_level    => C_LEVEL_PROCEDURE
27312          ,p_module   => l_log_module);
27313 
27314 END IF;
27315 --
27316 l_component_type             := 'AMB_JLT';
27317 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
27318 l_component_type_code        := 'S';
27319 l_component_appl_id          :=  275;
27320 l_amb_context_code           := 'DEFAULT';
27321 l_entity_code                := 'EXPENDITURES';
27322 l_event_class_code           := 'USG_COST_ADJ';
27323 l_event_type_code            := 'USG_COST_ADJ_ALL';
27324 l_line_definition_owner_code := 'S';
27325 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
27326 --
27327 l_balance_type_code          := 'A';
27328 l_segment                     := NULL;
27329 l_ccid                        := NULL;
27330 l_adr_transaction_coa_id      := NULL;
27331 l_adr_accounting_coa_id       := NULL;
27332 l_adr_flexfield_segment_code  := NULL;
27333 l_adr_flex_value_set_id       := NULL;
27334 l_adr_value_type_code         := NULL;
27335 l_adr_value_combination_id    := NULL;
27336 l_adr_value_segment_code      := NULL;
27337 
27338 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27339 l_bflow_class_code           := '';    -- 4219869 Business Flow
27343 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27340 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27341 l_budgetary_control_flag     := 'N';
27342 
27344 l_bflow_applied_to_amt       := NULL; -- 5132302
27345 l_entered_amt_idx            := NULL;          -- 4262811
27346 l_accted_amt_idx             := NULL;          -- 4262811
27347 l_acc_rev_flag               := NULL;          -- 4262811
27348 l_accrual_line_num           := NULL;          -- 4262811
27349 l_tmp_amt                    := NULL;          -- 4262811
27350 --
27351  
27352 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27353     l_balance_type_code <> 'B' THEN
27354 
27355    --
27356    XLA_AE_LINES_PKG.SetNewLine;
27357 
27358    p_balance_type_code          := l_balance_type_code;
27359    -- set the flag so later we will know whether the gain loss line needs to be created
27360    
27361    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27362      p_actual_flag :='A';
27363    END IF;
27364 
27365    --
27366    -- bulk performance
27367    --
27368    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27369                                       p_header_num   => 0); -- 4262811
27370    --
27371    -- set accounting line options
27372    --
27373    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27374            p_natural_side_code          => 'C'
27375          , p_gain_or_loss_flag          => 'N'
27376          , p_gl_transfer_mode_code      => 'S'
27377          , p_acct_entry_type_code       => 'A'
27378          , p_switch_side_flag           => 'Y'
27379          , p_merge_duplicate_code       => 'N'
27380          );
27381    --
27382    l_acc_rev_natural_side_code := 'D';  -- 4262811
27383    -- 
27384    --
27385    -- set accounting line type info
27386    --
27387    xla_ae_lines_pkg.SetAcctLineType
27388       (p_component_type             => l_component_type
27389       ,p_event_type_code            => l_event_type_code
27390       ,p_line_definition_owner_code => l_line_definition_owner_code
27391       ,p_line_definition_code       => l_line_definition_code
27392       ,p_accounting_line_code       => l_component_code
27393       ,p_accounting_line_type_code  => l_component_type_code
27394       ,p_accounting_line_appl_id    => l_component_appl_id
27395       ,p_amb_context_code           => l_amb_context_code
27396       ,p_entity_code                => l_entity_code
27397       ,p_event_class_code           => l_event_class_code);
27398    --
27399    -- set accounting class
27400    --
27401    xla_ae_lines_pkg.SetAcctClass(
27402            p_accounting_class_code  => 'COST_CLEARING'
27403          , p_ae_header_id           => l_ae_header_id
27404          );
27405 
27406    --
27407    -- set rounding class
27408    --
27409    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27410                       'COST_CLEARING';
27411 
27412    --
27413    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27414    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27415    --
27416    -- bulk performance
27417    --
27418    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27419 
27420    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27421       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27422 
27423    -- 4955764
27424    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27425       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27426 
27427    -- 4458381 Public Sector Enh
27428    
27429    --
27430    -- set accounting attributes for the line type
27431    --
27432    l_entered_amt_idx := 22;
27433    l_accted_amt_idx  := 27;
27434    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27435    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27436    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
27437    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
27438    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
27439    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
27440    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
27441    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
27442    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
27443    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
27444    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
27445    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
27446    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
27447    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
27448    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
27449    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
27450    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
27451    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
27452    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
27453    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
27457    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
27454    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
27455    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
27456    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
27458    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
27459    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
27460    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
27461    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
27462    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
27463    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
27464    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
27465    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
27466    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
27467    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
27468    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
27469    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
27470    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
27471    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
27472    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
27473    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
27474    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
27475    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
27476    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
27477    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
27478    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
27479    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
27480    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
27481    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
27482    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
27483    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
27484    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
27485    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
27486    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
27487    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
27488    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
27489    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
27490    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
27491    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
27492    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
27493    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
27494    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
27495 
27496    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27497    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27498 
27499    ---------------------------------------------------------------------------------------------------------------
27500    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27501    ---------------------------------------------------------------------------------------------------------------
27502    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27503 
27504    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27505    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27506 
27507    IF xla_accounting_cache_pkg.GetValueChar
27508          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27509          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27510    AND l_bflow_method_code = 'PRIOR_ENTRY'
27511 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27512    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27513          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27514        )
27515    THEN
27516          xla_ae_lines_pkg.BflowUpgEntry
27517            (p_business_method_code    => l_bflow_method_code
27518            ,p_business_class_code     => l_bflow_class_code
27519            ,p_balance_type            => l_balance_type_code);
27520    ELSE
27521       NULL;
27522 -- No business flow processing for business flow method of NONE.
27523    END IF;
27524 
27525    --
27526    -- call analytical criteria
27527    --
27528    
27529    --
27530    -- call description
27531    --
27532    -- No description or it is inherited.
27533    --
27534    -- call ADRs
27535    -- Bug 4922099
27536    --
27537    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27538         (NVL(l_actual_upg_option, 'N') = 'O') OR
27539         (NVL(l_enc_upg_option, 'N') = 'O')
27540       )
27541    THEN
27542    NULL;
27543    --
27544    --
27545    
27546   l_ccid := AcctDerRule_6(
27547            p_application_id           => p_application_id
27548          , p_ae_header_id             => l_ae_header_id 
27549 , p_source_4 => p_source_4
27550 , p_source_7 => p_source_7
27551          , x_transaction_coa_id       => l_adr_transaction_coa_id
27552          , x_accounting_coa_id        => l_adr_accounting_coa_id
27553          , x_value_type_code          => l_adr_value_type_code
27557    xla_ae_lines_pkg.set_ccid(
27554          , p_side                     => 'NA'
27555    );
27556 
27558     p_code_combination_id          => l_ccid
27559   , p_value_type_code              => l_adr_value_type_code
27560   , p_transaction_coa_id           => l_adr_transaction_coa_id
27561   , p_accounting_coa_id            => l_adr_accounting_coa_id
27562   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
27563   , p_adr_type_code                => 'S'
27564   , p_component_type               => l_component_type
27565   , p_component_code               => l_component_code
27566   , p_component_type_code          => l_component_type_code
27567   , p_component_appl_id            => l_component_appl_id
27568   , p_amb_context_code             => l_amb_context_code
27569   , p_side                         => 'NA'
27570   );
27571 
27572 
27573    --
27574    --
27575    END IF;
27576    --
27577    -- Bug 4922099
27578    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27579           (NVL(l_enc_upg_option, 'N') = 'O')
27580         ) AND
27581         (l_bflow_method_code = 'PRIOR_ENTRY')
27582       )
27583    THEN
27584       IF
27585       --
27586       1 = 2
27587       --
27588       THEN
27589       xla_accounting_err_pkg.build_message
27590                                     (p_appli_s_name            => 'XLA'
27591                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27592                                     ,p_token_1                 => 'LINE_NUMBER'
27593                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27594                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27595                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27596                                                                              l_component_type
27597                                                                             ,l_component_code
27598                                                                             ,l_component_type_code
27599                                                                             ,l_component_appl_id
27600                                                                             ,l_amb_context_code
27601                                                                             ,l_entity_code
27602                                                                             ,l_event_class_code
27603                                                                            )
27604                                     ,p_token_3                 => 'OWNER'
27605                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27606                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27607                                                                           ,p_lookup_code    => l_component_type_code
27608                                                                          )
27609                                     ,p_token_4                 => 'PRODUCT_NAME'
27610                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27611                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27612                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27613                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27614                                     ,p_ae_header_id            =>  NULL
27615                                        );
27616 
27617         IF (C_LEVEL_ERROR>= g_log_level) THEN
27618                  trace
27619                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27620                       ,p_level    => C_LEVEL_ERROR
27621                       ,p_module   => l_log_module);
27622         END IF;
27623       END IF;
27624    END IF;
27625    --
27626    --
27627    ------------------------------------------------------------------------------------------------
27628    -- 4219869 Business Flow
27629    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27630    -- Prior Entry.  Currently, the following code is always generated.
27631    ------------------------------------------------------------------------------------------------
27632    XLA_AE_LINES_PKG.ValidateCurrentLine;
27633 
27634    ------------------------------------------------------------------------------------
27635    -- 4219869 Business Flow
27636    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27637    ------------------------------------------------------------------------------------
27638    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27639 
27640    ----------------------------------------------------------------------------------
27641    -- 4219869 Business Flow
27642    -- Update journal entry status -- Need to generate this within IF <condition>
27643    ----------------------------------------------------------------------------------
27644    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27645          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27646          ,p_balance_type_code => l_balance_type_code
27647          );
27648 
27649    -------------------------------------------------------------------------------------------
27650    -- 4262811 - Generate the Accrual Reversal lines
27651    -------------------------------------------------------------------------------------------
27652    BEGIN
27656          l_acc_rev_flag := 'N';
27653       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27654                               (g_array_event(p_event_id).array_value_num('header_index'));
27655       IF l_acc_rev_flag IS NULL THEN
27657       END IF;
27658    EXCEPTION
27659       WHEN OTHERS THEN
27660          l_acc_rev_flag := 'N';
27661    END;
27662    --
27663    IF (l_acc_rev_flag = 'Y') THEN
27664 
27665        -- 4645092  ------------------------------------------------------------------------------
27666        -- To allow MPA report to determine if it should generate report process
27667        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27668        ------------------------------------------------------------------------------------------
27669 
27670        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27671        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27672 
27673        --
27674        -- Update the line information that should be overwritten
27675        --
27676        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27677                                          p_header_num   => 1);
27678        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27679 
27680        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27681 
27682        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27683           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27684        END IF;
27685 
27686       --
27687       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27688       --
27689       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27690           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27691       ELSE
27692           ---------------------------------------------------------------------------------------------------
27693           -- 4262811a Switch Sign
27694           ---------------------------------------------------------------------------------------------------
27695           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27696           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27697                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27698           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27699                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27700           -- 5132302
27701           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27702                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27703 
27704       END IF;
27705 
27706       -- 4955764
27707       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27709 
27710 
27711       XLA_AE_LINES_PKG.ValidateCurrentLine;
27712       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27713 
27714       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27715                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27716                ,p_balance_type_code => l_balance_type_code);
27717 
27718    END IF;
27719 
27720    -----------------------------------------------------------------------------------------
27721    -- 4262811 Multiperiod Accounting
27722    -----------------------------------------------------------------------------------------
27723      -- No MPA option is assigned.
27724 
27725 
27726 END IF;
27727 --
27728 
27729 --
27730 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27731    trace
27732       (p_msg      => 'END of AcctLineType_63'
27733       ,p_level    => C_LEVEL_PROCEDURE
27734       ,p_module   => l_log_module);
27735 END IF;
27736 --
27737 EXCEPTION
27738   WHEN xla_exceptions_pkg.application_exception THEN
27739       RAISE;
27740   WHEN OTHERS THEN
27741        xla_exceptions_pkg.raise_message
27742            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_63');
27743 END AcctLineType_63;
27744 --
27745 
27746 ---------------------------------------
27747 --
27748 -- PRIVATE FUNCTION
27749 --         AcctLineType_64
27750 --
27751 ---------------------------------------
27752 PROCEDURE AcctLineType_64 (
27753   p_application_id        IN NUMBER
27754  ,p_event_id              IN NUMBER
27755  ,p_calculate_acctd_flag  IN VARCHAR2
27756  ,p_calculate_g_l_flag    IN VARCHAR2
27757  ,p_actual_flag           IN OUT VARCHAR2
27758  ,p_balance_type_code     OUT VARCHAR2
27759  ,p_gain_or_loss_ref      OUT VARCHAR2
27760  
27761 --Cost CCID
27762  , p_source_3            IN NUMBER
27763 --Allow Account Override Flag
27764  , p_source_4            IN VARCHAR2
27765 --Cost Clearing CCID
27766  , p_source_6            IN NUMBER
27767 --Adjustment Cost Clearing CCID
27768  , p_source_7            IN NUMBER
27769 --Reversing Line Flag
27770  , p_source_22            IN VARCHAR2
27771 --Actual Upgrade Credit Accounting Class
27772  , p_source_23            IN VARCHAR2
27773 --Entered Raw Cost
27777 --Accounted Raw Cost
27774  , p_source_24            IN NUMBER
27775 --Entered Currency Code
27776  , p_source_25            IN VARCHAR2
27778  , p_source_26            IN NUMBER
27779 --Exchange Rate Date
27780  , p_source_27            IN DATE
27781 --Exchange Rate
27782  , p_source_28            IN NUMBER
27783 --Exchange Rate Type
27784  , p_source_29            IN VARCHAR2
27785 --Actual Upgrade Debit Accounting Class
27786  , p_source_30            IN VARCHAR2
27787 --Use Actuals Upgrade Attributes Flag
27788  , p_source_31            IN VARCHAR2
27789 --Expenditure Item ID
27790  , p_source_32            IN NUMBER
27791 --Cost Distribution Line Number
27792  , p_source_33            IN NUMBER
27793 --Line Type
27794  , p_source_34            IN VARCHAR2
27795  , p_source_34_meaning    IN VARCHAR2
27796 --Reversed Line Number
27797  , p_source_35            IN NUMBER
27798 )
27799 IS
27800 
27801 l_component_type              VARCHAR2(80);
27802 l_component_code              VARCHAR2(30);
27803 l_component_type_code         VARCHAR2(1);
27804 l_component_appl_id           INTEGER;
27805 l_amb_context_code            VARCHAR2(30);
27806 l_entity_code                 VARCHAR2(30);
27807 l_event_class_code            VARCHAR2(30);
27808 l_ae_header_id                NUMBER;
27809 l_event_type_code             VARCHAR2(30);
27810 l_line_definition_code        VARCHAR2(30);
27811 l_line_definition_owner_code  VARCHAR2(1);
27812 --
27813 -- adr variables
27814 l_segment                     VARCHAR2(30);
27815 l_ccid                        NUMBER;
27816 l_adr_transaction_coa_id      NUMBER;
27817 l_adr_accounting_coa_id       NUMBER;
27818 l_adr_flexfield_segment_code  VARCHAR2(30);
27819 l_adr_flex_value_set_id       NUMBER;
27820 l_adr_value_type_code         VARCHAR2(30);
27821 l_adr_value_combination_id    NUMBER;
27822 l_adr_value_segment_code      VARCHAR2(30);
27823 
27824 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27825 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27826 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27827 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27828 
27829 -- 4262811 Variables ------------------------------------------------------------------------------------------
27830 l_entered_amt_idx             NUMBER;
27831 l_accted_amt_idx              NUMBER;
27832 l_acc_rev_flag                VARCHAR2(1);
27833 l_accrual_line_num            NUMBER;
27834 l_tmp_amt                     NUMBER;
27835 l_acc_rev_natural_side_code   VARCHAR2(1);
27836 
27837 l_num_entries                 NUMBER;
27838 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27839 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27840 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27841 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27842 l_recog_line_1                NUMBER;
27843 l_recog_line_2                NUMBER;
27844 
27845 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27846 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27847 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27848 
27849 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27850 
27851 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27852 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27853 
27854 ---------------------------------------------------------------------------------------------------------------
27855 
27856 
27857 --
27858 -- bulk performance
27859 --
27860 l_balance_type_code           VARCHAR2(1);
27861 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27862 l_log_module                  VARCHAR2(240);
27863 
27864 --
27865 -- Upgrade strategy
27866 --
27867 l_actual_upg_option           VARCHAR2(1);
27868 l_enc_upg_option           VARCHAR2(1);
27869 
27870 --
27871 BEGIN
27872 --
27873 IF g_log_enabled THEN
27874       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
27875 END IF;
27876 --
27877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27878 
27879       trace
27880          (p_msg      => 'BEGIN of AcctLineType_64'
27881          ,p_level    => C_LEVEL_PROCEDURE
27882          ,p_module   => l_log_module);
27883 
27884 END IF;
27885 --
27886 l_component_type             := 'AMB_JLT';
27887 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
27888 l_component_type_code        := 'S';
27889 l_component_appl_id          :=  275;
27890 l_amb_context_code           := 'DEFAULT';
27891 l_entity_code                := 'EXPENDITURES';
27892 l_event_class_code           := 'INVENTORY_COST_ADJ';
27893 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
27894 l_line_definition_owner_code := 'S';
27895 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
27896 --
27897 l_balance_type_code          := 'A';
27898 l_segment                     := NULL;
27899 l_ccid                        := NULL;
27900 l_adr_transaction_coa_id      := NULL;
27901 l_adr_accounting_coa_id       := NULL;
27902 l_adr_flexfield_segment_code  := NULL;
27903 l_adr_flex_value_set_id       := NULL;
27904 l_adr_value_type_code         := NULL;
27905 l_adr_value_combination_id    := NULL;
27906 l_adr_value_segment_code      := NULL;
27910 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27907 
27908 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27909 l_bflow_class_code           := '';    -- 4219869 Business Flow
27911 l_budgetary_control_flag     := 'N';
27912 
27913 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27914 l_bflow_applied_to_amt       := NULL; -- 5132302
27915 l_entered_amt_idx            := NULL;          -- 4262811
27916 l_accted_amt_idx             := NULL;          -- 4262811
27917 l_acc_rev_flag               := NULL;          -- 4262811
27918 l_accrual_line_num           := NULL;          -- 4262811
27919 l_tmp_amt                    := NULL;          -- 4262811
27920 --
27921  
27922 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27923     l_balance_type_code <> 'B' THEN
27924 
27925    --
27926    XLA_AE_LINES_PKG.SetNewLine;
27927 
27928    p_balance_type_code          := l_balance_type_code;
27929    -- set the flag so later we will know whether the gain loss line needs to be created
27930    
27931    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27932      p_actual_flag :='A';
27933    END IF;
27934 
27935    --
27936    -- bulk performance
27937    --
27938    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27939                                       p_header_num   => 0); -- 4262811
27940    --
27941    -- set accounting line options
27942    --
27943    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27944            p_natural_side_code          => 'C'
27945          , p_gain_or_loss_flag          => 'N'
27946          , p_gl_transfer_mode_code      => 'S'
27947          , p_acct_entry_type_code       => 'A'
27948          , p_switch_side_flag           => 'Y'
27949          , p_merge_duplicate_code       => 'N'
27950          );
27951    --
27952    l_acc_rev_natural_side_code := 'D';  -- 4262811
27953    -- 
27954    --
27955    -- set accounting line type info
27956    --
27957    xla_ae_lines_pkg.SetAcctLineType
27958       (p_component_type             => l_component_type
27959       ,p_event_type_code            => l_event_type_code
27960       ,p_line_definition_owner_code => l_line_definition_owner_code
27961       ,p_line_definition_code       => l_line_definition_code
27962       ,p_accounting_line_code       => l_component_code
27963       ,p_accounting_line_type_code  => l_component_type_code
27964       ,p_accounting_line_appl_id    => l_component_appl_id
27965       ,p_amb_context_code           => l_amb_context_code
27966       ,p_entity_code                => l_entity_code
27967       ,p_event_class_code           => l_event_class_code);
27968    --
27969    -- set accounting class
27970    --
27971    xla_ae_lines_pkg.SetAcctClass(
27972            p_accounting_class_code  => 'COST_CLEARING'
27973          , p_ae_header_id           => l_ae_header_id
27974          );
27975 
27976    --
27977    -- set rounding class
27978    --
27979    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27980                       'COST_CLEARING';
27981 
27982    --
27983    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27984    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27985    --
27986    -- bulk performance
27987    --
27988    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27989 
27990    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27991       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27992 
27993    -- 4955764
27994    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27995       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27996 
27997    -- 4458381 Public Sector Enh
27998    
27999    --
28000    -- set accounting attributes for the line type
28001    --
28002    l_entered_amt_idx := 22;
28003    l_accted_amt_idx  := 27;
28004    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28005    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28006    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
28007    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
28008    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
28009    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
28010    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
28011    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
28012    l_rec_acct_attrs.array_num_value(4)  := p_source_24;
28013    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
28014    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
28015    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
28016    l_rec_acct_attrs.array_num_value(6)  := p_source_26;
28017    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
28018    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
28019    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
28020    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
28021    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
28022    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
28026    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
28023    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
28024    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
28025    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
28027    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
28028    l_rec_acct_attrs.array_num_value(12)  := p_source_24;
28029    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
28030    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
28031    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
28032    l_rec_acct_attrs.array_num_value(14)  := p_source_26;
28033    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
28034    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
28035    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
28036    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
28037    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
28038    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
28039    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
28040    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
28041    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
28042    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
28043    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
28044    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
28045    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
28046    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
28047    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
28048    l_rec_acct_attrs.array_num_value(22)  := p_source_24;
28049    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
28050    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
28051    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
28052    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
28053    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
28054    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
28055    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
28056    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
28057    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
28058    l_rec_acct_attrs.array_num_value(27)  := p_source_26;
28059    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
28060    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
28061    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
28062    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
28063    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
28064    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
28065 
28066    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28067    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28068 
28069    ---------------------------------------------------------------------------------------------------------------
28070    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28071    ---------------------------------------------------------------------------------------------------------------
28072    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28073 
28074    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28075    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28076 
28077    IF xla_accounting_cache_pkg.GetValueChar
28078          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28079          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28080    AND l_bflow_method_code = 'PRIOR_ENTRY'
28081 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28082    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28083          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28084        )
28085    THEN
28086          xla_ae_lines_pkg.BflowUpgEntry
28087            (p_business_method_code    => l_bflow_method_code
28088            ,p_business_class_code     => l_bflow_class_code
28089            ,p_balance_type            => l_balance_type_code);
28090    ELSE
28091       NULL;
28092 -- No business flow processing for business flow method of NONE.
28093    END IF;
28094 
28095    --
28096    -- call analytical criteria
28097    --
28098    
28099    --
28100    -- call description
28101    --
28102    -- No description or it is inherited.
28103    --
28104    -- call ADRs
28105    -- Bug 4922099
28106    --
28107    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28108         (NVL(l_actual_upg_option, 'N') = 'O') OR
28109         (NVL(l_enc_upg_option, 'N') = 'O')
28110       )
28111    THEN
28112    NULL;
28113    --
28114    --
28115    
28116   l_ccid := AcctDerRule_6(
28117            p_application_id           => p_application_id
28118          , p_ae_header_id             => l_ae_header_id 
28119 , p_source_4 => p_source_4
28120 , p_source_7 => p_source_7
28121          , x_transaction_coa_id       => l_adr_transaction_coa_id
28122          , x_accounting_coa_id        => l_adr_accounting_coa_id
28126 
28123          , x_value_type_code          => l_adr_value_type_code
28124          , p_side                     => 'NA'
28125    );
28127    xla_ae_lines_pkg.set_ccid(
28128     p_code_combination_id          => l_ccid
28129   , p_value_type_code              => l_adr_value_type_code
28130   , p_transaction_coa_id           => l_adr_transaction_coa_id
28131   , p_accounting_coa_id            => l_adr_accounting_coa_id
28132   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
28133   , p_adr_type_code                => 'S'
28134   , p_component_type               => l_component_type
28135   , p_component_code               => l_component_code
28136   , p_component_type_code          => l_component_type_code
28137   , p_component_appl_id            => l_component_appl_id
28138   , p_amb_context_code             => l_amb_context_code
28139   , p_side                         => 'NA'
28140   );
28141 
28142 
28143    --
28144    --
28145    END IF;
28146    --
28147    -- Bug 4922099
28148    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28149           (NVL(l_enc_upg_option, 'N') = 'O')
28150         ) AND
28151         (l_bflow_method_code = 'PRIOR_ENTRY')
28152       )
28153    THEN
28154       IF
28155       --
28156       1 = 2
28157       --
28158       THEN
28159       xla_accounting_err_pkg.build_message
28160                                     (p_appli_s_name            => 'XLA'
28161                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28162                                     ,p_token_1                 => 'LINE_NUMBER'
28163                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28164                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28165                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28166                                                                              l_component_type
28167                                                                             ,l_component_code
28168                                                                             ,l_component_type_code
28169                                                                             ,l_component_appl_id
28170                                                                             ,l_amb_context_code
28171                                                                             ,l_entity_code
28172                                                                             ,l_event_class_code
28173                                                                            )
28174                                     ,p_token_3                 => 'OWNER'
28175                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28176                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28177                                                                           ,p_lookup_code    => l_component_type_code
28178                                                                          )
28179                                     ,p_token_4                 => 'PRODUCT_NAME'
28180                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28181                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28182                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28183                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28184                                     ,p_ae_header_id            =>  NULL
28185                                        );
28186 
28187         IF (C_LEVEL_ERROR>= g_log_level) THEN
28188                  trace
28189                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28190                       ,p_level    => C_LEVEL_ERROR
28191                       ,p_module   => l_log_module);
28192         END IF;
28193       END IF;
28194    END IF;
28195    --
28196    --
28197    ------------------------------------------------------------------------------------------------
28198    -- 4219869 Business Flow
28199    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28200    -- Prior Entry.  Currently, the following code is always generated.
28201    ------------------------------------------------------------------------------------------------
28202    XLA_AE_LINES_PKG.ValidateCurrentLine;
28203 
28204    ------------------------------------------------------------------------------------
28205    -- 4219869 Business Flow
28206    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28207    ------------------------------------------------------------------------------------
28208    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28209 
28210    ----------------------------------------------------------------------------------
28211    -- 4219869 Business Flow
28212    -- Update journal entry status -- Need to generate this within IF <condition>
28213    ----------------------------------------------------------------------------------
28214    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28215          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28216          ,p_balance_type_code => l_balance_type_code
28217          );
28218 
28219    -------------------------------------------------------------------------------------------
28220    -- 4262811 - Generate the Accrual Reversal lines
28224                               (g_array_event(p_event_id).array_value_num('header_index'));
28221    -------------------------------------------------------------------------------------------
28222    BEGIN
28223       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28225       IF l_acc_rev_flag IS NULL THEN
28226          l_acc_rev_flag := 'N';
28227       END IF;
28228    EXCEPTION
28229       WHEN OTHERS THEN
28230          l_acc_rev_flag := 'N';
28231    END;
28232    --
28233    IF (l_acc_rev_flag = 'Y') THEN
28234 
28235        -- 4645092  ------------------------------------------------------------------------------
28236        -- To allow MPA report to determine if it should generate report process
28237        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28238        ------------------------------------------------------------------------------------------
28239 
28240        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28241        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28242 
28243        --
28244        -- Update the line information that should be overwritten
28245        --
28246        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28247                                          p_header_num   => 1);
28248        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28249 
28250        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28251 
28252        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28253           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28254        END IF;
28255 
28256       --
28257       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28258       --
28259       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28260           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28261       ELSE
28262           ---------------------------------------------------------------------------------------------------
28263           -- 4262811a Switch Sign
28264           ---------------------------------------------------------------------------------------------------
28265           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28266           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28267                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28268           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28269                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28270           -- 5132302
28271           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28272                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28273 
28274       END IF;
28275 
28276       -- 4955764
28277       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28278       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28279 
28280 
28281       XLA_AE_LINES_PKG.ValidateCurrentLine;
28282       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28283 
28284       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28285                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28286                ,p_balance_type_code => l_balance_type_code);
28287 
28288    END IF;
28289 
28290    -----------------------------------------------------------------------------------------
28291    -- 4262811 Multiperiod Accounting
28292    -----------------------------------------------------------------------------------------
28293      -- No MPA option is assigned.
28294 
28295 
28296 END IF;
28297 --
28298 
28299 --
28300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28301    trace
28302       (p_msg      => 'END of AcctLineType_64'
28303       ,p_level    => C_LEVEL_PROCEDURE
28304       ,p_module   => l_log_module);
28305 END IF;
28306 --
28307 EXCEPTION
28308   WHEN xla_exceptions_pkg.application_exception THEN
28309       RAISE;
28310   WHEN OTHERS THEN
28311        xla_exceptions_pkg.raise_message
28312            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_64');
28313 END AcctLineType_64;
28314 --
28315 
28316 ---------------------------------------
28317 --
28318 -- PRIVATE FUNCTION
28319 --         AcctLineType_65
28320 --
28321 ---------------------------------------
28322 PROCEDURE AcctLineType_65 (
28323   p_application_id        IN NUMBER
28324  ,p_event_id              IN NUMBER
28325  ,p_calculate_acctd_flag  IN VARCHAR2
28326  ,p_calculate_g_l_flag    IN VARCHAR2
28327  ,p_actual_flag           IN OUT VARCHAR2
28328  ,p_balance_type_code     OUT VARCHAR2
28329  ,p_gain_or_loss_ref      OUT VARCHAR2
28330  
28331 --Realized Gains CCID
28332  , p_source_16            IN NUMBER
28333 --Entered Currency Code
28334  , p_source_25            IN VARCHAR2
28335 --Exchange Rate Date
28336  , p_source_27            IN DATE
28337 --Exchange Rate
28338  , p_source_28            IN NUMBER
28339 --Exchange Rate Type
28340  , p_source_29            IN VARCHAR2
28344  , p_source_38            IN VARCHAR2
28341 --Revenue Distribution Type
28342  , p_source_36            IN VARCHAR2
28343 --Crediting Revenue Flag
28345 --Revenue First Distribution ID
28346  , p_source_39            IN NUMBER
28347 --Revenue Second Distribution ID
28348  , p_source_40            IN NUMBER
28349 --Entered Amount
28350  , p_source_41            IN NUMBER
28351 --Event ID
28352  , p_source_42            IN NUMBER
28353 --Accounted Amount
28354  , p_source_43            IN NUMBER
28355 )
28356 IS
28357 
28358 l_component_type              VARCHAR2(80);
28359 l_component_code              VARCHAR2(30);
28360 l_component_type_code         VARCHAR2(1);
28361 l_component_appl_id           INTEGER;
28362 l_amb_context_code            VARCHAR2(30);
28363 l_entity_code                 VARCHAR2(30);
28364 l_event_class_code            VARCHAR2(30);
28365 l_ae_header_id                NUMBER;
28366 l_event_type_code             VARCHAR2(30);
28367 l_line_definition_code        VARCHAR2(30);
28368 l_line_definition_owner_code  VARCHAR2(1);
28369 --
28370 -- adr variables
28371 l_segment                     VARCHAR2(30);
28372 l_ccid                        NUMBER;
28373 l_adr_transaction_coa_id      NUMBER;
28374 l_adr_accounting_coa_id       NUMBER;
28375 l_adr_flexfield_segment_code  VARCHAR2(30);
28376 l_adr_flex_value_set_id       NUMBER;
28377 l_adr_value_type_code         VARCHAR2(30);
28378 l_adr_value_combination_id    NUMBER;
28379 l_adr_value_segment_code      VARCHAR2(30);
28380 
28381 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28382 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28383 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28384 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28385 
28386 -- 4262811 Variables ------------------------------------------------------------------------------------------
28387 l_entered_amt_idx             NUMBER;
28388 l_accted_amt_idx              NUMBER;
28389 l_acc_rev_flag                VARCHAR2(1);
28390 l_accrual_line_num            NUMBER;
28391 l_tmp_amt                     NUMBER;
28392 l_acc_rev_natural_side_code   VARCHAR2(1);
28393 
28394 l_num_entries                 NUMBER;
28395 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28396 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28397 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28398 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28399 l_recog_line_1                NUMBER;
28400 l_recog_line_2                NUMBER;
28401 
28402 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28403 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28404 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28405 
28406 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28407 
28408 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28409 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28410 
28411 ---------------------------------------------------------------------------------------------------------------
28412 
28413 
28414 --
28415 -- bulk performance
28416 --
28417 l_balance_type_code           VARCHAR2(1);
28418 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28419 l_log_module                  VARCHAR2(240);
28420 
28421 --
28422 -- Upgrade strategy
28423 --
28424 l_actual_upg_option           VARCHAR2(1);
28425 l_enc_upg_option           VARCHAR2(1);
28426 
28427 --
28428 BEGIN
28429 --
28430 IF g_log_enabled THEN
28431       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
28432 END IF;
28433 --
28434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28435 
28436       trace
28437          (p_msg      => 'BEGIN of AcctLineType_65'
28438          ,p_level    => C_LEVEL_PROCEDURE
28439          ,p_module   => l_log_module);
28440 
28441 END IF;
28442 --
28443 l_component_type             := 'AMB_JLT';
28444 l_component_code             := 'PA_REALIZED_GAINS';
28445 l_component_type_code        := 'S';
28446 l_component_appl_id          :=  275;
28447 l_amb_context_code           := 'DEFAULT';
28448 l_entity_code                := 'REVENUE';
28449 l_event_class_code           := 'REVENUE';
28450 l_event_type_code            := 'REVENUE_ALL';
28451 l_line_definition_owner_code := 'S';
28452 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
28453 --
28454 l_balance_type_code          := 'A';
28455 l_segment                     := NULL;
28456 l_ccid                        := NULL;
28457 l_adr_transaction_coa_id      := NULL;
28458 l_adr_accounting_coa_id       := NULL;
28459 l_adr_flexfield_segment_code  := NULL;
28460 l_adr_flex_value_set_id       := NULL;
28461 l_adr_value_type_code         := NULL;
28462 l_adr_value_combination_id    := NULL;
28463 l_adr_value_segment_code      := NULL;
28464 
28465 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28466 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
28467 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28468 l_budgetary_control_flag     := 'N';
28469 
28470 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28471 l_bflow_applied_to_amt       := NULL; -- 5132302
28472 l_entered_amt_idx            := NULL;          -- 4262811
28476 l_tmp_amt                    := NULL;          -- 4262811
28473 l_accted_amt_idx             := NULL;          -- 4262811
28474 l_acc_rev_flag               := NULL;          -- 4262811
28475 l_accrual_line_num           := NULL;          -- 4262811
28477 --
28478  
28479 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28480     l_balance_type_code <> 'B' THEN
28481 IF NVL(p_source_36,'
28482 ') =  'Revenue - Realized Gains' AND 
28483 NVL(p_source_38,'
28484 ') =  'N'
28485  THEN 
28486 
28487    --
28488    XLA_AE_LINES_PKG.SetNewLine;
28489 
28490    p_balance_type_code          := l_balance_type_code;
28491    -- set the flag so later we will know whether the gain loss line needs to be created
28492    
28493    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28494      p_actual_flag :='A';
28495    END IF;
28496 
28497    --
28498    -- bulk performance
28499    --
28500    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28501                                       p_header_num   => 0); -- 4262811
28502    --
28503    -- set accounting line options
28504    --
28505    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28506            p_natural_side_code          => 'D'
28507          , p_gain_or_loss_flag          => 'N'
28508          , p_gl_transfer_mode_code      => 'S'
28509          , p_acct_entry_type_code       => 'A'
28510          , p_switch_side_flag           => 'Y'
28511          , p_merge_duplicate_code       => 'N'
28512          );
28513    --
28514    l_acc_rev_natural_side_code := 'C';  -- 4262811
28515    -- 
28516    --
28517    -- set accounting line type info
28518    --
28519    xla_ae_lines_pkg.SetAcctLineType
28520       (p_component_type             => l_component_type
28521       ,p_event_type_code            => l_event_type_code
28522       ,p_line_definition_owner_code => l_line_definition_owner_code
28523       ,p_line_definition_code       => l_line_definition_code
28524       ,p_accounting_line_code       => l_component_code
28525       ,p_accounting_line_type_code  => l_component_type_code
28526       ,p_accounting_line_appl_id    => l_component_appl_id
28527       ,p_amb_context_code           => l_amb_context_code
28528       ,p_entity_code                => l_entity_code
28529       ,p_event_class_code           => l_event_class_code);
28530    --
28531    -- set accounting class
28532    --
28533    xla_ae_lines_pkg.SetAcctClass(
28534            p_accounting_class_code  => 'REALIZED_GAINS'
28535          , p_ae_header_id           => l_ae_header_id
28536          );
28537 
28538    --
28539    -- set rounding class
28540    --
28541    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28542                       'REALIZED_GAINS';
28543 
28544    --
28545    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28546    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28547    --
28548    -- bulk performance
28549    --
28550    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28551 
28552    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28553       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28554 
28555    -- 4955764
28556    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28557       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28558 
28559    -- 4458381 Public Sector Enh
28560    
28561    --
28562    -- set accounting attributes for the line type
28563    --
28564    l_entered_amt_idx := 4;
28565    l_accted_amt_idx  := 10;
28566    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28567    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28568    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
28569    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
28570    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
28571    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
28572    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
28573    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
28574    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
28575    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
28576    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
28577    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
28578    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
28579    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
28580    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
28581    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
28582    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
28583    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
28584    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
28585    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
28586    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
28587 
28588    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28589    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28593    ---------------------------------------------------------------------------------------------------------------
28590 
28591    ---------------------------------------------------------------------------------------------------------------
28592    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28594    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28595 
28596    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28597    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28598 
28599    IF xla_accounting_cache_pkg.GetValueChar
28600          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28601          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28602    AND l_bflow_method_code = 'PRIOR_ENTRY'
28603 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28604    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28605          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28606        )
28607    THEN
28608          xla_ae_lines_pkg.BflowUpgEntry
28609            (p_business_method_code    => l_bflow_method_code
28610            ,p_business_class_code     => l_bflow_class_code
28611            ,p_balance_type            => l_balance_type_code);
28612    ELSE
28613       NULL;
28614 -- No business flow processing for business flow method of NONE.
28615    END IF;
28616 
28617    --
28618    -- call analytical criteria
28619    --
28620    
28621    --
28622    -- call description
28623    --
28624    -- No description or it is inherited.
28625    --
28626    -- call ADRs
28627    -- Bug 4922099
28628    --
28629    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28630         (NVL(l_actual_upg_option, 'N') = 'O') OR
28631         (NVL(l_enc_upg_option, 'N') = 'O')
28632       )
28633    THEN
28634    NULL;
28635    --
28636    --
28637    
28638   l_ccid := AcctDerRule_15(
28639            p_application_id           => p_application_id
28640          , p_ae_header_id             => l_ae_header_id 
28641 , p_source_16 => p_source_16
28642          , x_transaction_coa_id       => l_adr_transaction_coa_id
28643          , x_accounting_coa_id        => l_adr_accounting_coa_id
28644          , x_value_type_code          => l_adr_value_type_code
28645          , p_side                     => 'NA'
28646    );
28647 
28648    xla_ae_lines_pkg.set_ccid(
28649     p_code_combination_id          => l_ccid
28650   , p_value_type_code              => l_adr_value_type_code
28651   , p_transaction_coa_id           => l_adr_transaction_coa_id
28652   , p_accounting_coa_id            => l_adr_accounting_coa_id
28653   , p_adr_code                     => 'REALIZED_GAINS_RULE'
28654   , p_adr_type_code                => 'S'
28655   , p_component_type               => l_component_type
28656   , p_component_code               => l_component_code
28657   , p_component_type_code          => l_component_type_code
28658   , p_component_appl_id            => l_component_appl_id
28659   , p_amb_context_code             => l_amb_context_code
28660   , p_side                         => 'NA'
28661   );
28662 
28663 
28664    --
28665    --
28666    END IF;
28667    --
28668    -- Bug 4922099
28669    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28670           (NVL(l_enc_upg_option, 'N') = 'O')
28671         ) AND
28672         (l_bflow_method_code = 'PRIOR_ENTRY')
28673       )
28674    THEN
28675       IF
28676       --
28677       1 = 2
28678       --
28679       THEN
28680       xla_accounting_err_pkg.build_message
28681                                     (p_appli_s_name            => 'XLA'
28682                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28683                                     ,p_token_1                 => 'LINE_NUMBER'
28684                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28685                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28686                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28687                                                                              l_component_type
28688                                                                             ,l_component_code
28689                                                                             ,l_component_type_code
28690                                                                             ,l_component_appl_id
28691                                                                             ,l_amb_context_code
28692                                                                             ,l_entity_code
28693                                                                             ,l_event_class_code
28694                                                                            )
28695                                     ,p_token_3                 => 'OWNER'
28696                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28697                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28698                                                                           ,p_lookup_code    => l_component_type_code
28702                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28699                                                                          )
28700                                     ,p_token_4                 => 'PRODUCT_NAME'
28701                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28703                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28704                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28705                                     ,p_ae_header_id            =>  NULL
28706                                        );
28707 
28708         IF (C_LEVEL_ERROR>= g_log_level) THEN
28709                  trace
28710                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28711                       ,p_level    => C_LEVEL_ERROR
28712                       ,p_module   => l_log_module);
28713         END IF;
28714       END IF;
28715    END IF;
28716    --
28717    --
28718    ------------------------------------------------------------------------------------------------
28719    -- 4219869 Business Flow
28720    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28721    -- Prior Entry.  Currently, the following code is always generated.
28722    ------------------------------------------------------------------------------------------------
28723    XLA_AE_LINES_PKG.ValidateCurrentLine;
28724 
28725    ------------------------------------------------------------------------------------
28726    -- 4219869 Business Flow
28727    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28728    ------------------------------------------------------------------------------------
28729    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28730 
28731    ----------------------------------------------------------------------------------
28732    -- 4219869 Business Flow
28733    -- Update journal entry status -- Need to generate this within IF <condition>
28734    ----------------------------------------------------------------------------------
28735    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28736          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28737          ,p_balance_type_code => l_balance_type_code
28738          );
28739 
28740    -------------------------------------------------------------------------------------------
28741    -- 4262811 - Generate the Accrual Reversal lines
28742    -------------------------------------------------------------------------------------------
28743    BEGIN
28744       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28745                               (g_array_event(p_event_id).array_value_num('header_index'));
28746       IF l_acc_rev_flag IS NULL THEN
28747          l_acc_rev_flag := 'N';
28748       END IF;
28749    EXCEPTION
28750       WHEN OTHERS THEN
28751          l_acc_rev_flag := 'N';
28752    END;
28753    --
28754    IF (l_acc_rev_flag = 'Y') THEN
28755 
28756        -- 4645092  ------------------------------------------------------------------------------
28757        -- To allow MPA report to determine if it should generate report process
28758        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28759        ------------------------------------------------------------------------------------------
28760 
28761        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28762        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28763 
28764        --
28765        -- Update the line information that should be overwritten
28766        --
28767        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28768                                          p_header_num   => 1);
28769        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28770 
28771        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28772 
28773        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28774           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28775        END IF;
28776 
28777       --
28778       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28779       --
28780       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28781           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28782       ELSE
28783           ---------------------------------------------------------------------------------------------------
28784           -- 4262811a Switch Sign
28785           ---------------------------------------------------------------------------------------------------
28786           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28787           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28788                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28789           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28790                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28791           -- 5132302
28792           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28793                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28797       -- 4955764
28794 
28795       END IF;
28796 
28798       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28799       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28800 
28801 
28802       XLA_AE_LINES_PKG.ValidateCurrentLine;
28803       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28804 
28805       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28806                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28807                ,p_balance_type_code => l_balance_type_code);
28808 
28809    END IF;
28810 
28811    -----------------------------------------------------------------------------------------
28812    -- 4262811 Multiperiod Accounting
28813    -----------------------------------------------------------------------------------------
28814      -- No MPA option is assigned.
28815 
28816 
28817 END IF;
28818 END IF;
28819 --
28820 
28821 --
28822 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28823    trace
28824       (p_msg      => 'END of AcctLineType_65'
28825       ,p_level    => C_LEVEL_PROCEDURE
28826       ,p_module   => l_log_module);
28827 END IF;
28828 --
28829 EXCEPTION
28830   WHEN xla_exceptions_pkg.application_exception THEN
28831       RAISE;
28832   WHEN OTHERS THEN
28833        xla_exceptions_pkg.raise_message
28834            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_65');
28835 END AcctLineType_65;
28836 --
28837 
28838 ---------------------------------------
28839 --
28840 -- PRIVATE FUNCTION
28841 --         AcctLineType_66
28842 --
28843 ---------------------------------------
28844 PROCEDURE AcctLineType_66 (
28845   p_application_id        IN NUMBER
28846  ,p_event_id              IN NUMBER
28847  ,p_calculate_acctd_flag  IN VARCHAR2
28848  ,p_calculate_g_l_flag    IN VARCHAR2
28849  ,p_actual_flag           IN OUT VARCHAR2
28850  ,p_balance_type_code     OUT VARCHAR2
28851  ,p_gain_or_loss_ref      OUT VARCHAR2
28852  
28853 --Actual Upgrade Credit Accounting Class
28854  , p_source_23            IN VARCHAR2
28855 --Entered Currency Code
28856  , p_source_25            IN VARCHAR2
28857 --Exchange Rate Date
28858  , p_source_27            IN DATE
28859 --Exchange Rate
28860  , p_source_28            IN NUMBER
28861 --Exchange Rate Type
28862  , p_source_29            IN VARCHAR2
28863 --Actual Upgrade Debit Accounting Class
28864  , p_source_30            IN VARCHAR2
28865 --Use Actuals Upgrade Attributes Flag
28866  , p_source_31            IN VARCHAR2
28867 --Revenue Distribution Type
28868  , p_source_36            IN VARCHAR2
28869 --Crediting Revenue Flag
28870  , p_source_38            IN VARCHAR2
28871 --Revenue First Distribution ID
28872  , p_source_39            IN NUMBER
28873 --Revenue Second Distribution ID
28874  , p_source_40            IN NUMBER
28875 --Entered Amount
28876  , p_source_41            IN NUMBER
28877 --Event ID
28878  , p_source_42            IN NUMBER
28879 --Accounted Amount
28880  , p_source_43            IN NUMBER
28881 --Actual Upgrade Credit CCID
28882  , p_source_59            IN NUMBER
28883 --Actual Upgrade Debit CCID
28884  , p_source_60            IN NUMBER
28885 --Application ID
28886  , p_source_61            IN NUMBER
28887 --Revenue Entity Code
28888  , p_source_62            IN VARCHAR2
28889 --Crediting Revenue First Distribution ID
28890  , p_source_63            IN NUMBER
28891 --Project ID
28892  , p_source_64            IN NUMBER
28893 --Crediting Revenue Second Distribution ID
28894  , p_source_65            IN NUMBER
28895 --Draft Revenue Number Credited
28896  , p_source_66            IN NUMBER
28897 )
28898 IS
28899 
28900 l_component_type              VARCHAR2(80);
28901 l_component_code              VARCHAR2(30);
28902 l_component_type_code         VARCHAR2(1);
28903 l_component_appl_id           INTEGER;
28904 l_amb_context_code            VARCHAR2(30);
28905 l_entity_code                 VARCHAR2(30);
28906 l_event_class_code            VARCHAR2(30);
28907 l_ae_header_id                NUMBER;
28908 l_event_type_code             VARCHAR2(30);
28909 l_line_definition_code        VARCHAR2(30);
28910 l_line_definition_owner_code  VARCHAR2(1);
28911 --
28912 -- adr variables
28913 l_segment                     VARCHAR2(30);
28914 l_ccid                        NUMBER;
28915 l_adr_transaction_coa_id      NUMBER;
28916 l_adr_accounting_coa_id       NUMBER;
28917 l_adr_flexfield_segment_code  VARCHAR2(30);
28918 l_adr_flex_value_set_id       NUMBER;
28919 l_adr_value_type_code         VARCHAR2(30);
28920 l_adr_value_combination_id    NUMBER;
28921 l_adr_value_segment_code      VARCHAR2(30);
28922 
28923 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28924 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28925 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28926 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28927 
28928 -- 4262811 Variables ------------------------------------------------------------------------------------------
28929 l_entered_amt_idx             NUMBER;
28930 l_accted_amt_idx              NUMBER;
28931 l_acc_rev_flag                VARCHAR2(1);
28932 l_accrual_line_num            NUMBER;
28933 l_tmp_amt                     NUMBER;
28934 l_acc_rev_natural_side_code   VARCHAR2(1);
28935 
28939 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28936 l_num_entries                 NUMBER;
28937 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28938 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28940 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28941 l_recog_line_1                NUMBER;
28942 l_recog_line_2                NUMBER;
28943 
28944 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28945 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28946 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28947 
28948 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28949 
28950 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28951 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28952 
28953 ---------------------------------------------------------------------------------------------------------------
28954 
28955 
28956 --
28957 -- bulk performance
28958 --
28959 l_balance_type_code           VARCHAR2(1);
28960 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28961 l_log_module                  VARCHAR2(240);
28962 
28963 --
28964 -- Upgrade strategy
28965 --
28966 l_actual_upg_option           VARCHAR2(1);
28967 l_enc_upg_option           VARCHAR2(1);
28968 
28969 --
28970 BEGIN
28971 --
28972 IF g_log_enabled THEN
28973       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
28974 END IF;
28975 --
28976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28977 
28978       trace
28979          (p_msg      => 'BEGIN of AcctLineType_66'
28980          ,p_level    => C_LEVEL_PROCEDURE
28981          ,p_module   => l_log_module);
28982 
28983 END IF;
28984 --
28985 l_component_type             := 'AMB_JLT';
28986 l_component_code             := 'PA_REALIZED_GAINS_ADJ';
28987 l_component_type_code        := 'S';
28988 l_component_appl_id          :=  275;
28989 l_amb_context_code           := 'DEFAULT';
28990 l_entity_code                := 'REVENUE';
28991 l_event_class_code           := 'REVENUE_ADJ';
28992 l_event_type_code            := 'REVENUE_ADJ_ALL';
28993 l_line_definition_owner_code := 'S';
28994 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
28995 --
28996 l_balance_type_code          := 'A';
28997 l_segment                     := NULL;
28998 l_ccid                        := NULL;
28999 l_adr_transaction_coa_id      := NULL;
29000 l_adr_accounting_coa_id       := NULL;
29001 l_adr_flexfield_segment_code  := NULL;
29002 l_adr_flex_value_set_id       := NULL;
29003 l_adr_value_type_code         := NULL;
29004 l_adr_value_combination_id    := NULL;
29005 l_adr_value_segment_code      := NULL;
29006 
29007 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
29008 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
29009 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
29010 l_budgetary_control_flag     := 'N';
29011 
29012 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29013 l_bflow_applied_to_amt       := NULL; -- 5132302
29014 l_entered_amt_idx            := NULL;          -- 4262811
29015 l_accted_amt_idx             := NULL;          -- 4262811
29016 l_acc_rev_flag               := NULL;          -- 4262811
29017 l_accrual_line_num           := NULL;          -- 4262811
29018 l_tmp_amt                    := NULL;          -- 4262811
29019 --
29020  
29021 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29022     l_balance_type_code <> 'B' THEN
29023 IF NVL(p_source_36,'
29024 ') =  'Revenue - Realized Gains' AND 
29025 NVL(p_source_38,'
29026 ') =  'Y'
29027  THEN 
29028 
29029    --
29030    XLA_AE_LINES_PKG.SetNewLine;
29031 
29032    p_balance_type_code          := l_balance_type_code;
29033    -- set the flag so later we will know whether the gain loss line needs to be created
29034    
29035    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29036      p_actual_flag :='A';
29037    END IF;
29038 
29039    --
29040    -- bulk performance
29041    --
29042    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29043                                       p_header_num   => 0); -- 4262811
29044    --
29045    -- set accounting line options
29046    --
29047    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29048            p_natural_side_code          => 'D'
29049          , p_gain_or_loss_flag          => 'N'
29050          , p_gl_transfer_mode_code      => 'S'
29051          , p_acct_entry_type_code       => 'A'
29052          , p_switch_side_flag           => 'Y'
29053          , p_merge_duplicate_code       => 'N'
29054          );
29055    --
29056    l_acc_rev_natural_side_code := 'C';  -- 4262811
29057    -- 
29058    --
29059    -- set accounting line type info
29060    --
29061    xla_ae_lines_pkg.SetAcctLineType
29062       (p_component_type             => l_component_type
29063       ,p_event_type_code            => l_event_type_code
29064       ,p_line_definition_owner_code => l_line_definition_owner_code
29065       ,p_line_definition_code       => l_line_definition_code
29066       ,p_accounting_line_code       => l_component_code
29067       ,p_accounting_line_type_code  => l_component_type_code
29071       ,p_event_class_code           => l_event_class_code);
29068       ,p_accounting_line_appl_id    => l_component_appl_id
29069       ,p_amb_context_code           => l_amb_context_code
29070       ,p_entity_code                => l_entity_code
29072    --
29073    -- set accounting class
29074    --
29075    xla_ae_lines_pkg.SetAcctClass(
29076            p_accounting_class_code  => 'REALIZED_GAINS'
29077          , p_ae_header_id           => l_ae_header_id
29078          );
29079 
29080    --
29081    -- set rounding class
29082    --
29083    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29084                       'REALIZED_GAINS';
29085 
29086    --
29087    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29088    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29089    --
29090    -- bulk performance
29091    --
29092    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29093 
29094    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29095       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29096 
29097    -- 4955764
29098    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29099       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29100 
29101    -- 4458381 Public Sector Enh
29102    
29103    --
29104    -- set accounting attributes for the line type
29105    --
29106    l_entered_amt_idx := 28;
29107    l_accted_amt_idx  := 31;
29108    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29109    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
29110    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
29111    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
29112    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
29113    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
29114    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
29115    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
29116    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
29117    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
29118    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
29119    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
29120    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
29121    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
29122    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
29123    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
29124    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
29125    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
29126    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
29127    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
29128    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
29129    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
29130    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
29131    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
29132    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
29133    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
29134    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
29135    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
29136    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
29137    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
29138    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
29139    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
29140    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
29141    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
29142    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
29143    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
29144    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
29145    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29146    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
29147    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
29148    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
29149    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
29150    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
29151    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29152    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
29153    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
29154    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
29155    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
29156    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
29157    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
29158    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
29159    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
29160    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
29161    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
29162    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
29166    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
29163    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
29164    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
29165    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
29167    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
29168    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
29169    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
29170    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
29171 
29172    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29173    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29174 
29175    ---------------------------------------------------------------------------------------------------------------
29176    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29177    ---------------------------------------------------------------------------------------------------------------
29178    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29179 
29180    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29181    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29182 
29183    IF xla_accounting_cache_pkg.GetValueChar
29184          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29185          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29186    AND l_bflow_method_code = 'PRIOR_ENTRY'
29187 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29188    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29189          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29190        )
29191    THEN
29192          xla_ae_lines_pkg.BflowUpgEntry
29193            (p_business_method_code    => l_bflow_method_code
29194            ,p_business_class_code     => l_bflow_class_code
29195            ,p_balance_type            => l_balance_type_code);
29196    ELSE
29197       NULL;
29198 XLA_AE_LINES_PKG.business_flow_validation(
29199                                 p_business_method_code     => l_bflow_method_code
29200                                ,p_business_class_code      => l_bflow_class_code
29201                                ,p_inherit_description_flag => l_inherit_desc_flag);
29202    END IF;
29203 
29204    --
29205    -- call analytical criteria
29206    --
29207    -- Inherited Analytical Criteria for business flow method of Prior Entry.
29208    --
29209    -- call description
29210    --
29211    -- No description or it is inherited.
29212    --
29213    -- call ADRs
29214    -- Bug 4922099
29215    --
29216    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29217         (NVL(l_actual_upg_option, 'N') = 'O') OR
29218         (NVL(l_enc_upg_option, 'N') = 'O')
29219       )
29220    THEN
29221    NULL;
29222    --
29223    --
29224    
29225    --
29226    --
29227    END IF;
29228    --
29229    -- Bug 4922099
29230    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29231           (NVL(l_enc_upg_option, 'N') = 'O')
29232         ) AND
29233         (l_bflow_method_code = 'PRIOR_ENTRY')
29234       )
29235    THEN
29236       IF
29237       --
29238       1 = 1
29239       --
29240       THEN
29241       xla_accounting_err_pkg.build_message
29242                                     (p_appli_s_name            => 'XLA'
29243                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29244                                     ,p_token_1                 => 'LINE_NUMBER'
29245                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29246                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29247                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29248                                                                              l_component_type
29249                                                                             ,l_component_code
29250                                                                             ,l_component_type_code
29251                                                                             ,l_component_appl_id
29252                                                                             ,l_amb_context_code
29253                                                                             ,l_entity_code
29254                                                                             ,l_event_class_code
29255                                                                            )
29256                                     ,p_token_3                 => 'OWNER'
29257                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29258                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29259                                                                           ,p_lookup_code    => l_component_type_code
29260                                                                          )
29261                                     ,p_token_4                 => 'PRODUCT_NAME'
29262                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29266                                     ,p_ae_header_id            =>  NULL
29263                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29264                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29265                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29267                                        );
29268 
29269         IF (C_LEVEL_ERROR>= g_log_level) THEN
29270                  trace
29271                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29272                       ,p_level    => C_LEVEL_ERROR
29273                       ,p_module   => l_log_module);
29274         END IF;
29275       END IF;
29276    END IF;
29277    --
29278    --
29279    ------------------------------------------------------------------------------------------------
29280    -- 4219869 Business Flow
29281    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29282    -- Prior Entry.  Currently, the following code is always generated.
29283    ------------------------------------------------------------------------------------------------
29284    -- No ValidateCurrentLine for business flow method of Prior Entry
29285 
29286    ------------------------------------------------------------------------------------
29287    -- 4219869 Business Flow
29288    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29289    ------------------------------------------------------------------------------------
29290    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29291 
29292    ----------------------------------------------------------------------------------
29293    -- 4219869 Business Flow
29294    -- Update journal entry status -- Need to generate this within IF <condition>
29295    ----------------------------------------------------------------------------------
29296    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29297          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29298          ,p_balance_type_code => l_balance_type_code
29299          );
29300 
29301    -------------------------------------------------------------------------------------------
29302    -- 4262811 - Generate the Accrual Reversal lines
29303    -------------------------------------------------------------------------------------------
29304    BEGIN
29305       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29306                               (g_array_event(p_event_id).array_value_num('header_index'));
29307       IF l_acc_rev_flag IS NULL THEN
29308          l_acc_rev_flag := 'N';
29309       END IF;
29310    EXCEPTION
29311       WHEN OTHERS THEN
29312          l_acc_rev_flag := 'N';
29313    END;
29314    --
29315    IF (l_acc_rev_flag = 'Y') THEN
29316 
29317        -- 4645092  ------------------------------------------------------------------------------
29318        -- To allow MPA report to determine if it should generate report process
29319        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29320        ------------------------------------------------------------------------------------------
29321 
29322        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29323        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29324 
29325        --
29326        -- Update the line information that should be overwritten
29327        --
29328        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29329                                          p_header_num   => 1);
29330        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29331 
29332        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29333 
29334        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29335           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29336        END IF;
29337 
29338       --
29339       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29340       --
29341       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29342           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29343       ELSE
29344           ---------------------------------------------------------------------------------------------------
29345           -- 4262811a Switch Sign
29346           ---------------------------------------------------------------------------------------------------
29347           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29348           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29349                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29350           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29351                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29352           -- 5132302
29353           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29354                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29355 
29356       END IF;
29357 
29358       -- 4955764
29359       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29363       XLA_AE_LINES_PKG.ValidateCurrentLine;
29360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29361 
29362 
29364       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29365 
29366       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29367                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29368                ,p_balance_type_code => l_balance_type_code);
29369 
29370    END IF;
29371 
29372    -----------------------------------------------------------------------------------------
29373    -- 4262811 Multiperiod Accounting
29374    -----------------------------------------------------------------------------------------
29375      -- No MPA option is assigned.
29376 
29377 
29378 END IF;
29379 END IF;
29380 --
29381 
29382 --
29383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29384    trace
29385       (p_msg      => 'END of AcctLineType_66'
29386       ,p_level    => C_LEVEL_PROCEDURE
29387       ,p_module   => l_log_module);
29388 END IF;
29389 --
29390 EXCEPTION
29391   WHEN xla_exceptions_pkg.application_exception THEN
29392       RAISE;
29393   WHEN OTHERS THEN
29394        xla_exceptions_pkg.raise_message
29395            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_66');
29396 END AcctLineType_66;
29397 --
29398 
29399 ---------------------------------------
29400 --
29401 -- PRIVATE FUNCTION
29402 --         AcctLineType_67
29403 --
29404 ---------------------------------------
29405 PROCEDURE AcctLineType_67 (
29406   p_application_id        IN NUMBER
29407  ,p_event_id              IN NUMBER
29408  ,p_calculate_acctd_flag  IN VARCHAR2
29409  ,p_calculate_g_l_flag    IN VARCHAR2
29410  ,p_actual_flag           IN OUT VARCHAR2
29411  ,p_balance_type_code     OUT VARCHAR2
29412  ,p_gain_or_loss_ref      OUT VARCHAR2
29413  
29414 --Realized Losses CCID
29415  , p_source_17            IN NUMBER
29416 --Entered Currency Code
29417  , p_source_25            IN VARCHAR2
29418 --Exchange Rate Date
29419  , p_source_27            IN DATE
29420 --Exchange Rate
29421  , p_source_28            IN NUMBER
29422 --Exchange Rate Type
29423  , p_source_29            IN VARCHAR2
29424 --Revenue Distribution Type
29425  , p_source_36            IN VARCHAR2
29426 --Crediting Revenue Flag
29427  , p_source_38            IN VARCHAR2
29428 --Revenue First Distribution ID
29429  , p_source_39            IN NUMBER
29430 --Revenue Second Distribution ID
29431  , p_source_40            IN NUMBER
29432 --Entered Amount
29433  , p_source_41            IN NUMBER
29434 --Event ID
29435  , p_source_42            IN NUMBER
29436 --Accounted Amount
29437  , p_source_43            IN NUMBER
29438 )
29439 IS
29440 
29441 l_component_type              VARCHAR2(80);
29442 l_component_code              VARCHAR2(30);
29443 l_component_type_code         VARCHAR2(1);
29444 l_component_appl_id           INTEGER;
29445 l_amb_context_code            VARCHAR2(30);
29446 l_entity_code                 VARCHAR2(30);
29447 l_event_class_code            VARCHAR2(30);
29448 l_ae_header_id                NUMBER;
29449 l_event_type_code             VARCHAR2(30);
29450 l_line_definition_code        VARCHAR2(30);
29451 l_line_definition_owner_code  VARCHAR2(1);
29452 --
29453 -- adr variables
29454 l_segment                     VARCHAR2(30);
29455 l_ccid                        NUMBER;
29456 l_adr_transaction_coa_id      NUMBER;
29457 l_adr_accounting_coa_id       NUMBER;
29458 l_adr_flexfield_segment_code  VARCHAR2(30);
29459 l_adr_flex_value_set_id       NUMBER;
29460 l_adr_value_type_code         VARCHAR2(30);
29461 l_adr_value_combination_id    NUMBER;
29462 l_adr_value_segment_code      VARCHAR2(30);
29463 
29464 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29465 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29466 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29467 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29468 
29469 -- 4262811 Variables ------------------------------------------------------------------------------------------
29470 l_entered_amt_idx             NUMBER;
29471 l_accted_amt_idx              NUMBER;
29472 l_acc_rev_flag                VARCHAR2(1);
29473 l_accrual_line_num            NUMBER;
29474 l_tmp_amt                     NUMBER;
29475 l_acc_rev_natural_side_code   VARCHAR2(1);
29476 
29477 l_num_entries                 NUMBER;
29478 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29479 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29480 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29481 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29482 l_recog_line_1                NUMBER;
29483 l_recog_line_2                NUMBER;
29484 
29485 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29486 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29487 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29488 
29489 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29490 
29491 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29492 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29493 
29497 --
29494 ---------------------------------------------------------------------------------------------------------------
29495 
29496 
29498 -- bulk performance
29499 --
29500 l_balance_type_code           VARCHAR2(1);
29501 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29502 l_log_module                  VARCHAR2(240);
29503 
29504 --
29505 -- Upgrade strategy
29506 --
29507 l_actual_upg_option           VARCHAR2(1);
29508 l_enc_upg_option           VARCHAR2(1);
29509 
29510 --
29511 BEGIN
29512 --
29513 IF g_log_enabled THEN
29514       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
29515 END IF;
29516 --
29517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29518 
29519       trace
29520          (p_msg      => 'BEGIN of AcctLineType_67'
29521          ,p_level    => C_LEVEL_PROCEDURE
29522          ,p_module   => l_log_module);
29523 
29524 END IF;
29525 --
29526 l_component_type             := 'AMB_JLT';
29527 l_component_code             := 'PA_REALIZED_LOSSES';
29528 l_component_type_code        := 'S';
29529 l_component_appl_id          :=  275;
29530 l_amb_context_code           := 'DEFAULT';
29531 l_entity_code                := 'REVENUE';
29532 l_event_class_code           := 'REVENUE';
29533 l_event_type_code            := 'REVENUE_ALL';
29534 l_line_definition_owner_code := 'S';
29535 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
29536 --
29537 l_balance_type_code          := 'A';
29538 l_segment                     := NULL;
29539 l_ccid                        := NULL;
29540 l_adr_transaction_coa_id      := NULL;
29541 l_adr_accounting_coa_id       := NULL;
29542 l_adr_flexfield_segment_code  := NULL;
29543 l_adr_flex_value_set_id       := NULL;
29544 l_adr_value_type_code         := NULL;
29545 l_adr_value_combination_id    := NULL;
29546 l_adr_value_segment_code      := NULL;
29547 
29548 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29549 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
29550 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29551 l_budgetary_control_flag     := 'N';
29552 
29553 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29554 l_bflow_applied_to_amt       := NULL; -- 5132302
29555 l_entered_amt_idx            := NULL;          -- 4262811
29556 l_accted_amt_idx             := NULL;          -- 4262811
29557 l_acc_rev_flag               := NULL;          -- 4262811
29558 l_accrual_line_num           := NULL;          -- 4262811
29559 l_tmp_amt                    := NULL;          -- 4262811
29560 --
29561  
29562 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29563     l_balance_type_code <> 'B' THEN
29564 IF NVL(p_source_36,'
29565 ') =  'Revenue - Realized Losses' AND 
29566 NVL(p_source_38,'
29567 ') =  'N'
29568  THEN 
29569 
29570    --
29571    XLA_AE_LINES_PKG.SetNewLine;
29572 
29573    p_balance_type_code          := l_balance_type_code;
29574    -- set the flag so later we will know whether the gain loss line needs to be created
29575    
29576    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29577      p_actual_flag :='A';
29578    END IF;
29579 
29580    --
29581    -- bulk performance
29582    --
29583    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29584                                       p_header_num   => 0); -- 4262811
29585    --
29586    -- set accounting line options
29587    --
29588    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29589            p_natural_side_code          => 'C'
29590          , p_gain_or_loss_flag          => 'N'
29591          , p_gl_transfer_mode_code      => 'S'
29592          , p_acct_entry_type_code       => 'A'
29593          , p_switch_side_flag           => 'Y'
29594          , p_merge_duplicate_code       => 'N'
29595          );
29596    --
29597    l_acc_rev_natural_side_code := 'D';  -- 4262811
29598    -- 
29599    --
29600    -- set accounting line type info
29601    --
29602    xla_ae_lines_pkg.SetAcctLineType
29603       (p_component_type             => l_component_type
29604       ,p_event_type_code            => l_event_type_code
29605       ,p_line_definition_owner_code => l_line_definition_owner_code
29606       ,p_line_definition_code       => l_line_definition_code
29607       ,p_accounting_line_code       => l_component_code
29608       ,p_accounting_line_type_code  => l_component_type_code
29609       ,p_accounting_line_appl_id    => l_component_appl_id
29610       ,p_amb_context_code           => l_amb_context_code
29611       ,p_entity_code                => l_entity_code
29612       ,p_event_class_code           => l_event_class_code);
29613    --
29614    -- set accounting class
29615    --
29616    xla_ae_lines_pkg.SetAcctClass(
29617            p_accounting_class_code  => 'REALIZED_LOSS'
29618          , p_ae_header_id           => l_ae_header_id
29619          );
29620 
29621    --
29622    -- set rounding class
29623    --
29624    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29625                       'REALIZED_LOSS';
29626 
29627    --
29628    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29629    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29630    --
29631    -- bulk performance
29632    --
29636       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29633    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29634 
29635    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29637 
29638    -- 4955764
29639    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29640       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29641 
29642    -- 4458381 Public Sector Enh
29643    
29644    --
29645    -- set accounting attributes for the line type
29646    --
29647    l_entered_amt_idx := 4;
29648    l_accted_amt_idx  := 10;
29649    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29650    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29651    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
29652    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
29653    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
29654    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
29655    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
29656    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
29657    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
29658    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
29659    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
29660    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
29661    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
29662    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
29663    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
29664    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
29665    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
29666    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
29667    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
29668    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
29669    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
29670 
29671    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29672    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29673 
29674    ---------------------------------------------------------------------------------------------------------------
29675    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29676    ---------------------------------------------------------------------------------------------------------------
29677    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29678 
29679    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29680    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29681 
29682    IF xla_accounting_cache_pkg.GetValueChar
29683          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29684          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29685    AND l_bflow_method_code = 'PRIOR_ENTRY'
29686 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29687    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29688          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29689        )
29690    THEN
29691          xla_ae_lines_pkg.BflowUpgEntry
29692            (p_business_method_code    => l_bflow_method_code
29693            ,p_business_class_code     => l_bflow_class_code
29694            ,p_balance_type            => l_balance_type_code);
29695    ELSE
29696       NULL;
29697 -- No business flow processing for business flow method of NONE.
29698    END IF;
29699 
29700    --
29701    -- call analytical criteria
29702    --
29703    
29704    --
29705    -- call description
29706    --
29707    -- No description or it is inherited.
29708    --
29709    -- call ADRs
29710    -- Bug 4922099
29711    --
29712    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29713         (NVL(l_actual_upg_option, 'N') = 'O') OR
29714         (NVL(l_enc_upg_option, 'N') = 'O')
29715       )
29716    THEN
29717    NULL;
29718    --
29719    --
29720    
29721   l_ccid := AcctDerRule_16(
29722            p_application_id           => p_application_id
29723          , p_ae_header_id             => l_ae_header_id 
29724 , p_source_17 => p_source_17
29725          , x_transaction_coa_id       => l_adr_transaction_coa_id
29726          , x_accounting_coa_id        => l_adr_accounting_coa_id
29727          , x_value_type_code          => l_adr_value_type_code
29728          , p_side                     => 'NA'
29729    );
29730 
29731    xla_ae_lines_pkg.set_ccid(
29732     p_code_combination_id          => l_ccid
29733   , p_value_type_code              => l_adr_value_type_code
29734   , p_transaction_coa_id           => l_adr_transaction_coa_id
29735   , p_accounting_coa_id            => l_adr_accounting_coa_id
29736   , p_adr_code                     => 'REALIZED_LOSSES_RULE'
29737   , p_adr_type_code                => 'S'
29738   , p_component_type               => l_component_type
29739   , p_component_code               => l_component_code
29740   , p_component_type_code          => l_component_type_code
29741   , p_component_appl_id            => l_component_appl_id
29745 
29742   , p_amb_context_code             => l_amb_context_code
29743   , p_side                         => 'NA'
29744   );
29746 
29747    --
29748    --
29749    END IF;
29750    --
29751    -- Bug 4922099
29752    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29753           (NVL(l_enc_upg_option, 'N') = 'O')
29754         ) AND
29755         (l_bflow_method_code = 'PRIOR_ENTRY')
29756       )
29757    THEN
29758       IF
29759       --
29760       1 = 2
29761       --
29762       THEN
29763       xla_accounting_err_pkg.build_message
29764                                     (p_appli_s_name            => 'XLA'
29765                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29766                                     ,p_token_1                 => 'LINE_NUMBER'
29767                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29768                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29769                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29770                                                                              l_component_type
29771                                                                             ,l_component_code
29772                                                                             ,l_component_type_code
29773                                                                             ,l_component_appl_id
29774                                                                             ,l_amb_context_code
29775                                                                             ,l_entity_code
29776                                                                             ,l_event_class_code
29777                                                                            )
29778                                     ,p_token_3                 => 'OWNER'
29779                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29780                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29781                                                                           ,p_lookup_code    => l_component_type_code
29782                                                                          )
29783                                     ,p_token_4                 => 'PRODUCT_NAME'
29784                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29785                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29786                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29787                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29788                                     ,p_ae_header_id            =>  NULL
29789                                        );
29790 
29791         IF (C_LEVEL_ERROR>= g_log_level) THEN
29792                  trace
29793                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29794                       ,p_level    => C_LEVEL_ERROR
29795                       ,p_module   => l_log_module);
29796         END IF;
29797       END IF;
29798    END IF;
29799    --
29800    --
29801    ------------------------------------------------------------------------------------------------
29802    -- 4219869 Business Flow
29803    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29804    -- Prior Entry.  Currently, the following code is always generated.
29805    ------------------------------------------------------------------------------------------------
29806    XLA_AE_LINES_PKG.ValidateCurrentLine;
29807 
29808    ------------------------------------------------------------------------------------
29809    -- 4219869 Business Flow
29810    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29811    ------------------------------------------------------------------------------------
29812    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29813 
29814    ----------------------------------------------------------------------------------
29815    -- 4219869 Business Flow
29816    -- Update journal entry status -- Need to generate this within IF <condition>
29817    ----------------------------------------------------------------------------------
29818    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29819          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29820          ,p_balance_type_code => l_balance_type_code
29821          );
29822 
29823    -------------------------------------------------------------------------------------------
29824    -- 4262811 - Generate the Accrual Reversal lines
29825    -------------------------------------------------------------------------------------------
29826    BEGIN
29827       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29828                               (g_array_event(p_event_id).array_value_num('header_index'));
29829       IF l_acc_rev_flag IS NULL THEN
29830          l_acc_rev_flag := 'N';
29831       END IF;
29832    EXCEPTION
29833       WHEN OTHERS THEN
29834          l_acc_rev_flag := 'N';
29835    END;
29836    --
29837    IF (l_acc_rev_flag = 'Y') THEN
29838 
29839        -- 4645092  ------------------------------------------------------------------------------
29843 
29840        -- To allow MPA report to determine if it should generate report process
29841        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29842        ------------------------------------------------------------------------------------------
29844        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29845        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29846 
29847        --
29848        -- Update the line information that should be overwritten
29849        --
29850        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29851                                          p_header_num   => 1);
29852        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29853 
29854        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29855 
29856        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29857           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29858        END IF;
29859 
29860       --
29861       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29862       --
29863       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29864           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29865       ELSE
29866           ---------------------------------------------------------------------------------------------------
29867           -- 4262811a Switch Sign
29868           ---------------------------------------------------------------------------------------------------
29869           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29870           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29871                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29872           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29873                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29874           -- 5132302
29875           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29876                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29877 
29878       END IF;
29879 
29880       -- 4955764
29881       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29882       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29883 
29884 
29885       XLA_AE_LINES_PKG.ValidateCurrentLine;
29886       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29887 
29888       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29889                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29890                ,p_balance_type_code => l_balance_type_code);
29891 
29892    END IF;
29893 
29894    -----------------------------------------------------------------------------------------
29895    -- 4262811 Multiperiod Accounting
29896    -----------------------------------------------------------------------------------------
29897      -- No MPA option is assigned.
29898 
29899 
29900 END IF;
29901 END IF;
29902 --
29903 
29904 --
29905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29906    trace
29907       (p_msg      => 'END of AcctLineType_67'
29908       ,p_level    => C_LEVEL_PROCEDURE
29909       ,p_module   => l_log_module);
29910 END IF;
29911 --
29912 EXCEPTION
29913   WHEN xla_exceptions_pkg.application_exception THEN
29914       RAISE;
29915   WHEN OTHERS THEN
29916        xla_exceptions_pkg.raise_message
29917            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_67');
29918 END AcctLineType_67;
29919 --
29920 
29921 ---------------------------------------
29922 --
29923 -- PRIVATE FUNCTION
29924 --         AcctLineType_68
29925 --
29926 ---------------------------------------
29927 PROCEDURE AcctLineType_68 (
29928   p_application_id        IN NUMBER
29929  ,p_event_id              IN NUMBER
29930  ,p_calculate_acctd_flag  IN VARCHAR2
29931  ,p_calculate_g_l_flag    IN VARCHAR2
29932  ,p_actual_flag           IN OUT VARCHAR2
29933  ,p_balance_type_code     OUT VARCHAR2
29934  ,p_gain_or_loss_ref      OUT VARCHAR2
29935  
29936 --Actual Upgrade Credit Accounting Class
29937  , p_source_23            IN VARCHAR2
29938 --Entered Currency Code
29939  , p_source_25            IN VARCHAR2
29940 --Exchange Rate Date
29941  , p_source_27            IN DATE
29942 --Exchange Rate
29943  , p_source_28            IN NUMBER
29944 --Exchange Rate Type
29945  , p_source_29            IN VARCHAR2
29946 --Actual Upgrade Debit Accounting Class
29947  , p_source_30            IN VARCHAR2
29948 --Use Actuals Upgrade Attributes Flag
29949  , p_source_31            IN VARCHAR2
29950 --Revenue Distribution Type
29951  , p_source_36            IN VARCHAR2
29952 --Crediting Revenue Flag
29953  , p_source_38            IN VARCHAR2
29954 --Revenue First Distribution ID
29955  , p_source_39            IN NUMBER
29956 --Revenue Second Distribution ID
29957  , p_source_40            IN NUMBER
29958 --Entered Amount
29959  , p_source_41            IN NUMBER
29960 --Event ID
29964 --Actual Upgrade Credit CCID
29961  , p_source_42            IN NUMBER
29962 --Accounted Amount
29963  , p_source_43            IN NUMBER
29965  , p_source_59            IN NUMBER
29966 --Actual Upgrade Debit CCID
29967  , p_source_60            IN NUMBER
29968 --Application ID
29969  , p_source_61            IN NUMBER
29970 --Revenue Entity Code
29971  , p_source_62            IN VARCHAR2
29972 --Crediting Revenue First Distribution ID
29973  , p_source_63            IN NUMBER
29974 --Project ID
29975  , p_source_64            IN NUMBER
29976 --Crediting Revenue Second Distribution ID
29977  , p_source_65            IN NUMBER
29978 --Draft Revenue Number Credited
29979  , p_source_66            IN NUMBER
29980 )
29981 IS
29982 
29983 l_component_type              VARCHAR2(80);
29984 l_component_code              VARCHAR2(30);
29985 l_component_type_code         VARCHAR2(1);
29986 l_component_appl_id           INTEGER;
29987 l_amb_context_code            VARCHAR2(30);
29988 l_entity_code                 VARCHAR2(30);
29989 l_event_class_code            VARCHAR2(30);
29990 l_ae_header_id                NUMBER;
29991 l_event_type_code             VARCHAR2(30);
29992 l_line_definition_code        VARCHAR2(30);
29993 l_line_definition_owner_code  VARCHAR2(1);
29994 --
29995 -- adr variables
29996 l_segment                     VARCHAR2(30);
29997 l_ccid                        NUMBER;
29998 l_adr_transaction_coa_id      NUMBER;
29999 l_adr_accounting_coa_id       NUMBER;
30000 l_adr_flexfield_segment_code  VARCHAR2(30);
30001 l_adr_flex_value_set_id       NUMBER;
30002 l_adr_value_type_code         VARCHAR2(30);
30003 l_adr_value_combination_id    NUMBER;
30004 l_adr_value_segment_code      VARCHAR2(30);
30005 
30006 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30007 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30008 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30009 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30010 
30011 -- 4262811 Variables ------------------------------------------------------------------------------------------
30012 l_entered_amt_idx             NUMBER;
30013 l_accted_amt_idx              NUMBER;
30014 l_acc_rev_flag                VARCHAR2(1);
30015 l_accrual_line_num            NUMBER;
30016 l_tmp_amt                     NUMBER;
30017 l_acc_rev_natural_side_code   VARCHAR2(1);
30018 
30019 l_num_entries                 NUMBER;
30020 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30021 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30022 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30023 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30024 l_recog_line_1                NUMBER;
30025 l_recog_line_2                NUMBER;
30026 
30027 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30028 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30029 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30030 
30031 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30032 
30033 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30034 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30035 
30036 ---------------------------------------------------------------------------------------------------------------
30037 
30038 
30039 --
30040 -- bulk performance
30041 --
30042 l_balance_type_code           VARCHAR2(1);
30043 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30044 l_log_module                  VARCHAR2(240);
30045 
30046 --
30047 -- Upgrade strategy
30048 --
30049 l_actual_upg_option           VARCHAR2(1);
30050 l_enc_upg_option           VARCHAR2(1);
30051 
30052 --
30053 BEGIN
30054 --
30055 IF g_log_enabled THEN
30056       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
30057 END IF;
30058 --
30059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30060 
30061       trace
30062          (p_msg      => 'BEGIN of AcctLineType_68'
30063          ,p_level    => C_LEVEL_PROCEDURE
30064          ,p_module   => l_log_module);
30065 
30066 END IF;
30067 --
30068 l_component_type             := 'AMB_JLT';
30069 l_component_code             := 'PA_REALIZED_LOSSES_ADJ';
30070 l_component_type_code        := 'S';
30071 l_component_appl_id          :=  275;
30072 l_amb_context_code           := 'DEFAULT';
30073 l_entity_code                := 'REVENUE';
30074 l_event_class_code           := 'REVENUE_ADJ';
30075 l_event_type_code            := 'REVENUE_ADJ_ALL';
30076 l_line_definition_owner_code := 'S';
30077 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
30078 --
30079 l_balance_type_code          := 'A';
30080 l_segment                     := NULL;
30081 l_ccid                        := NULL;
30082 l_adr_transaction_coa_id      := NULL;
30083 l_adr_accounting_coa_id       := NULL;
30084 l_adr_flexfield_segment_code  := NULL;
30085 l_adr_flex_value_set_id       := NULL;
30086 l_adr_value_type_code         := NULL;
30087 l_adr_value_combination_id    := NULL;
30088 l_adr_value_segment_code      := NULL;
30089 
30090 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
30091 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
30095 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30092 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
30093 l_budgetary_control_flag     := 'N';
30094 
30096 l_bflow_applied_to_amt       := NULL; -- 5132302
30097 l_entered_amt_idx            := NULL;          -- 4262811
30098 l_accted_amt_idx             := NULL;          -- 4262811
30099 l_acc_rev_flag               := NULL;          -- 4262811
30100 l_accrual_line_num           := NULL;          -- 4262811
30101 l_tmp_amt                    := NULL;          -- 4262811
30102 --
30103  
30104 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30105     l_balance_type_code <> 'B' THEN
30106 IF NVL(p_source_36,'
30107 ') =  'Revenue - Realized Losses' AND 
30108 NVL(p_source_38,'
30109 ') =  'Y'
30110  THEN 
30111 
30112    --
30113    XLA_AE_LINES_PKG.SetNewLine;
30114 
30115    p_balance_type_code          := l_balance_type_code;
30116    -- set the flag so later we will know whether the gain loss line needs to be created
30117    
30118    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30119      p_actual_flag :='A';
30120    END IF;
30121 
30122    --
30123    -- bulk performance
30124    --
30125    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30126                                       p_header_num   => 0); -- 4262811
30127    --
30128    -- set accounting line options
30129    --
30130    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30131            p_natural_side_code          => 'C'
30132          , p_gain_or_loss_flag          => 'N'
30133          , p_gl_transfer_mode_code      => 'S'
30134          , p_acct_entry_type_code       => 'A'
30135          , p_switch_side_flag           => 'Y'
30136          , p_merge_duplicate_code       => 'N'
30137          );
30138    --
30139    l_acc_rev_natural_side_code := 'D';  -- 4262811
30140    -- 
30141    --
30142    -- set accounting line type info
30143    --
30144    xla_ae_lines_pkg.SetAcctLineType
30145       (p_component_type             => l_component_type
30146       ,p_event_type_code            => l_event_type_code
30147       ,p_line_definition_owner_code => l_line_definition_owner_code
30148       ,p_line_definition_code       => l_line_definition_code
30149       ,p_accounting_line_code       => l_component_code
30150       ,p_accounting_line_type_code  => l_component_type_code
30151       ,p_accounting_line_appl_id    => l_component_appl_id
30152       ,p_amb_context_code           => l_amb_context_code
30153       ,p_entity_code                => l_entity_code
30154       ,p_event_class_code           => l_event_class_code);
30155    --
30156    -- set accounting class
30157    --
30158    xla_ae_lines_pkg.SetAcctClass(
30159            p_accounting_class_code  => 'REALIZED_LOSS'
30160          , p_ae_header_id           => l_ae_header_id
30161          );
30162 
30163    --
30164    -- set rounding class
30165    --
30166    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30167                       'REALIZED_LOSS';
30168 
30169    --
30170    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30171    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30172    --
30173    -- bulk performance
30174    --
30175    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30176 
30177    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30178       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30179 
30180    -- 4955764
30181    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30182       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30183 
30184    -- 4458381 Public Sector Enh
30185    
30186    --
30187    -- set accounting attributes for the line type
30188    --
30189    l_entered_amt_idx := 28;
30190    l_accted_amt_idx  := 31;
30191    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30192    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
30193    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
30194    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
30195    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
30196    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
30197    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
30198    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
30199    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
30200    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
30201    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
30202    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
30203    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
30204    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
30205    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
30206    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
30207    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
30208    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
30209    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
30210    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
30211    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
30215    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
30212    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
30213    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
30214    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
30216    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
30217    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
30218    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
30219    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
30220    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
30221    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
30222    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
30223    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
30224    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
30225    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
30226    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
30227    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
30228    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30229    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
30230    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
30231    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
30232    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
30233    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
30234    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30235    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
30236    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
30237    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
30238    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
30239    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
30240    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
30241    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
30242    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
30243    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
30244    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
30245    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
30246    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
30247    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
30248    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
30249    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
30250    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
30251    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
30252    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
30253    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
30254 
30255    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30256    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30257 
30258    ---------------------------------------------------------------------------------------------------------------
30259    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30260    ---------------------------------------------------------------------------------------------------------------
30261    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30262 
30263    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30264    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30265 
30266    IF xla_accounting_cache_pkg.GetValueChar
30267          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30268          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30269    AND l_bflow_method_code = 'PRIOR_ENTRY'
30270 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30271    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30272          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30273        )
30274    THEN
30275          xla_ae_lines_pkg.BflowUpgEntry
30276            (p_business_method_code    => l_bflow_method_code
30277            ,p_business_class_code     => l_bflow_class_code
30278            ,p_balance_type            => l_balance_type_code);
30279    ELSE
30280       NULL;
30281 XLA_AE_LINES_PKG.business_flow_validation(
30282                                 p_business_method_code     => l_bflow_method_code
30283                                ,p_business_class_code      => l_bflow_class_code
30284                                ,p_inherit_description_flag => l_inherit_desc_flag);
30285    END IF;
30286 
30287    --
30288    -- call analytical criteria
30289    --
30290    -- Inherited Analytical Criteria for business flow method of Prior Entry.
30291    --
30292    -- call description
30293    --
30294    -- No description or it is inherited.
30295    --
30296    -- call ADRs
30297    -- Bug 4922099
30298    --
30299    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30300         (NVL(l_actual_upg_option, 'N') = 'O') OR
30301         (NVL(l_enc_upg_option, 'N') = 'O')
30302       )
30303    THEN
30304    NULL;
30305    --
30306    --
30307    
30308    --
30309    --
30310    END IF;
30311    --
30312    -- Bug 4922099
30316         (l_bflow_method_code = 'PRIOR_ENTRY')
30313    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30314           (NVL(l_enc_upg_option, 'N') = 'O')
30315         ) AND
30317       )
30318    THEN
30319       IF
30320       --
30321       1 = 1
30322       --
30323       THEN
30324       xla_accounting_err_pkg.build_message
30325                                     (p_appli_s_name            => 'XLA'
30326                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30327                                     ,p_token_1                 => 'LINE_NUMBER'
30328                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30329                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30330                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30331                                                                              l_component_type
30332                                                                             ,l_component_code
30333                                                                             ,l_component_type_code
30334                                                                             ,l_component_appl_id
30335                                                                             ,l_amb_context_code
30336                                                                             ,l_entity_code
30337                                                                             ,l_event_class_code
30338                                                                            )
30339                                     ,p_token_3                 => 'OWNER'
30340                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30341                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30342                                                                           ,p_lookup_code    => l_component_type_code
30343                                                                          )
30344                                     ,p_token_4                 => 'PRODUCT_NAME'
30345                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30346                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30347                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30348                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30349                                     ,p_ae_header_id            =>  NULL
30350                                        );
30351 
30352         IF (C_LEVEL_ERROR>= g_log_level) THEN
30353                  trace
30354                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30355                       ,p_level    => C_LEVEL_ERROR
30356                       ,p_module   => l_log_module);
30357         END IF;
30358       END IF;
30359    END IF;
30360    --
30361    --
30362    ------------------------------------------------------------------------------------------------
30363    -- 4219869 Business Flow
30364    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30365    -- Prior Entry.  Currently, the following code is always generated.
30366    ------------------------------------------------------------------------------------------------
30367    -- No ValidateCurrentLine for business flow method of Prior Entry
30368 
30369    ------------------------------------------------------------------------------------
30370    -- 4219869 Business Flow
30371    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30372    ------------------------------------------------------------------------------------
30373    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30374 
30375    ----------------------------------------------------------------------------------
30376    -- 4219869 Business Flow
30377    -- Update journal entry status -- Need to generate this within IF <condition>
30378    ----------------------------------------------------------------------------------
30379    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30380          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30381          ,p_balance_type_code => l_balance_type_code
30382          );
30383 
30384    -------------------------------------------------------------------------------------------
30385    -- 4262811 - Generate the Accrual Reversal lines
30386    -------------------------------------------------------------------------------------------
30387    BEGIN
30388       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30389                               (g_array_event(p_event_id).array_value_num('header_index'));
30390       IF l_acc_rev_flag IS NULL THEN
30391          l_acc_rev_flag := 'N';
30392       END IF;
30393    EXCEPTION
30394       WHEN OTHERS THEN
30395          l_acc_rev_flag := 'N';
30396    END;
30397    --
30398    IF (l_acc_rev_flag = 'Y') THEN
30399 
30400        -- 4645092  ------------------------------------------------------------------------------
30401        -- To allow MPA report to determine if it should generate report process
30402        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30403        ------------------------------------------------------------------------------------------
30404 
30408        --
30405        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30406        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30407 
30409        -- Update the line information that should be overwritten
30410        --
30411        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30412                                          p_header_num   => 1);
30413        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30414 
30415        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30416 
30417        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30418           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30419        END IF;
30420 
30421       --
30422       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30423       --
30424       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30425           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30426       ELSE
30427           ---------------------------------------------------------------------------------------------------
30428           -- 4262811a Switch Sign
30429           ---------------------------------------------------------------------------------------------------
30430           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30431           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30432                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30433           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30434                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30435           -- 5132302
30436           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30437                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30438 
30439       END IF;
30440 
30441       -- 4955764
30442       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30443       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30444 
30445 
30446       XLA_AE_LINES_PKG.ValidateCurrentLine;
30447       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30448 
30449       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30450                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30451                ,p_balance_type_code => l_balance_type_code);
30452 
30453    END IF;
30454 
30455    -----------------------------------------------------------------------------------------
30456    -- 4262811 Multiperiod Accounting
30457    -----------------------------------------------------------------------------------------
30458      -- No MPA option is assigned.
30459 
30460 
30461 END IF;
30462 END IF;
30463 --
30464 
30465 --
30466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30467    trace
30468       (p_msg      => 'END of AcctLineType_68'
30469       ,p_level    => C_LEVEL_PROCEDURE
30470       ,p_module   => l_log_module);
30471 END IF;
30472 --
30473 EXCEPTION
30474   WHEN xla_exceptions_pkg.application_exception THEN
30475       RAISE;
30476   WHEN OTHERS THEN
30477        xla_exceptions_pkg.raise_message
30478            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_68');
30479 END AcctLineType_68;
30480 --
30481 
30482 ---------------------------------------
30483 --
30484 -- PRIVATE FUNCTION
30485 --         AcctLineType_69
30486 --
30487 ---------------------------------------
30488 PROCEDURE AcctLineType_69 (
30489   p_application_id        IN NUMBER
30490  ,p_event_id              IN NUMBER
30491  ,p_calculate_acctd_flag  IN VARCHAR2
30492  ,p_calculate_g_l_flag    IN VARCHAR2
30493  ,p_actual_flag           IN OUT VARCHAR2
30494  ,p_balance_type_code     OUT VARCHAR2
30495  ,p_gain_or_loss_ref      OUT VARCHAR2
30496  
30497 --Allow Account Override Flag
30498  , p_source_4            IN VARCHAR2
30499 --Provider Cost/ Revenue CCID
30500  , p_source_8            IN NUMBER
30501 --Adjustment Receiver Cost/ Revenue CCID
30502  , p_source_10            IN NUMBER
30503 --Receiver Cost/ Revenue CCID
30504  , p_source_15            IN NUMBER
30505 --Reversing Line Flag
30506  , p_source_22            IN VARCHAR2
30507 --Actual Upgrade Credit Accounting Class
30508  , p_source_23            IN VARCHAR2
30509 --Entered Currency Code
30510  , p_source_25            IN VARCHAR2
30511 --Exchange Rate Date
30512  , p_source_27            IN DATE
30513 --Exchange Rate
30514  , p_source_28            IN NUMBER
30515 --Exchange Rate Type
30516  , p_source_29            IN VARCHAR2
30517 --Actual Upgrade Debit Accounting Class
30518  , p_source_30            IN VARCHAR2
30519 --Use Actuals Upgrade Attributes Flag
30520  , p_source_31            IN VARCHAR2
30521 --Expenditure Item ID
30522  , p_source_32            IN NUMBER
30523 --Cost Distribution Line Number
30524  , p_source_33            IN NUMBER
30525 --Line Type
30526  , p_source_34            IN VARCHAR2
30530 --Entered Amount
30527  , p_source_34_meaning    IN VARCHAR2
30528 --Reversed Line Number
30529  , p_source_35            IN NUMBER
30531  , p_source_41            IN NUMBER
30532 --Accounted Amount
30533  , p_source_43            IN NUMBER
30534 --Transfer Amount Type
30535  , p_source_67            IN VARCHAR2
30536  , p_source_67_meaning    IN VARCHAR2
30537 )
30538 IS
30539 
30540 l_component_type              VARCHAR2(80);
30541 l_component_code              VARCHAR2(30);
30542 l_component_type_code         VARCHAR2(1);
30543 l_component_appl_id           INTEGER;
30544 l_amb_context_code            VARCHAR2(30);
30545 l_entity_code                 VARCHAR2(30);
30546 l_event_class_code            VARCHAR2(30);
30547 l_ae_header_id                NUMBER;
30548 l_event_type_code             VARCHAR2(30);
30549 l_line_definition_code        VARCHAR2(30);
30550 l_line_definition_owner_code  VARCHAR2(1);
30551 --
30552 -- adr variables
30553 l_segment                     VARCHAR2(30);
30554 l_ccid                        NUMBER;
30555 l_adr_transaction_coa_id      NUMBER;
30556 l_adr_accounting_coa_id       NUMBER;
30557 l_adr_flexfield_segment_code  VARCHAR2(30);
30558 l_adr_flex_value_set_id       NUMBER;
30559 l_adr_value_type_code         VARCHAR2(30);
30560 l_adr_value_combination_id    NUMBER;
30561 l_adr_value_segment_code      VARCHAR2(30);
30562 
30563 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30564 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30565 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30566 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30567 
30568 -- 4262811 Variables ------------------------------------------------------------------------------------------
30569 l_entered_amt_idx             NUMBER;
30570 l_accted_amt_idx              NUMBER;
30571 l_acc_rev_flag                VARCHAR2(1);
30572 l_accrual_line_num            NUMBER;
30573 l_tmp_amt                     NUMBER;
30574 l_acc_rev_natural_side_code   VARCHAR2(1);
30575 
30576 l_num_entries                 NUMBER;
30577 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30578 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30579 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30580 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30581 l_recog_line_1                NUMBER;
30582 l_recog_line_2                NUMBER;
30583 
30584 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30585 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30586 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30587 
30588 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30589 
30590 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30591 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30592 
30593 ---------------------------------------------------------------------------------------------------------------
30594 
30595 
30596 --
30597 -- bulk performance
30598 --
30599 l_balance_type_code           VARCHAR2(1);
30600 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30601 l_log_module                  VARCHAR2(240);
30602 
30603 --
30604 -- Upgrade strategy
30605 --
30606 l_actual_upg_option           VARCHAR2(1);
30607 l_enc_upg_option           VARCHAR2(1);
30608 
30609 --
30610 BEGIN
30611 --
30612 IF g_log_enabled THEN
30613       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
30614 END IF;
30615 --
30616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30617 
30618       trace
30619          (p_msg      => 'BEGIN of AcctLineType_69'
30620          ,p_level    => C_LEVEL_PROCEDURE
30621          ,p_module   => l_log_module);
30622 
30623 END IF;
30624 --
30625 l_component_type             := 'AMB_JLT';
30626 l_component_code             := 'PA_RECEIVER_COST';
30627 l_component_type_code        := 'S';
30628 l_component_appl_id          :=  275;
30629 l_amb_context_code           := 'DEFAULT';
30630 l_entity_code                := 'EXPENDITURES';
30631 l_event_class_code           := 'BORROWED_AND_LENT';
30632 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
30633 l_line_definition_owner_code := 'S';
30634 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
30635 --
30636 l_balance_type_code          := 'A';
30637 l_segment                     := NULL;
30638 l_ccid                        := NULL;
30639 l_adr_transaction_coa_id      := NULL;
30640 l_adr_accounting_coa_id       := NULL;
30641 l_adr_flexfield_segment_code  := NULL;
30642 l_adr_flex_value_set_id       := NULL;
30643 l_adr_value_type_code         := NULL;
30644 l_adr_value_combination_id    := NULL;
30645 l_adr_value_segment_code      := NULL;
30646 
30647 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30648 l_bflow_class_code           := '';    -- 4219869 Business Flow
30649 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30650 l_budgetary_control_flag     := 'N';
30651 
30652 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30653 l_bflow_applied_to_amt       := NULL; -- 5132302
30654 l_entered_amt_idx            := NULL;          -- 4262811
30655 l_accted_amt_idx             := NULL;          -- 4262811
30656 l_acc_rev_flag               := NULL;          -- 4262811
30660  
30657 l_accrual_line_num           := NULL;          -- 4262811
30658 l_tmp_amt                    := NULL;          -- 4262811
30659 --
30661 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30662     l_balance_type_code <> 'B' THEN
30663 IF NVL(p_source_67,'
30664 ') =  'COST_TRANSFER' OR 
30665 NVL(p_source_67,'
30666 ') =  'COST_REVENUE' OR 
30667 p_source_67 IS NULL 
30668  THEN 
30669 
30670    --
30671    XLA_AE_LINES_PKG.SetNewLine;
30672 
30673    p_balance_type_code          := l_balance_type_code;
30674    -- set the flag so later we will know whether the gain loss line needs to be created
30675    
30676    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30677      p_actual_flag :='A';
30678    END IF;
30679 
30680    --
30681    -- bulk performance
30682    --
30683    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30684                                       p_header_num   => 0); -- 4262811
30685    --
30686    -- set accounting line options
30687    --
30688    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30689            p_natural_side_code          => 'D'
30690          , p_gain_or_loss_flag          => 'N'
30691          , p_gl_transfer_mode_code      => 'S'
30692          , p_acct_entry_type_code       => 'A'
30693          , p_switch_side_flag           => 'Y'
30694          , p_merge_duplicate_code       => 'N'
30695          );
30696    --
30697    l_acc_rev_natural_side_code := 'C';  -- 4262811
30698    -- 
30699    --
30700    -- set accounting line type info
30701    --
30702    xla_ae_lines_pkg.SetAcctLineType
30703       (p_component_type             => l_component_type
30704       ,p_event_type_code            => l_event_type_code
30705       ,p_line_definition_owner_code => l_line_definition_owner_code
30706       ,p_line_definition_code       => l_line_definition_code
30707       ,p_accounting_line_code       => l_component_code
30708       ,p_accounting_line_type_code  => l_component_type_code
30709       ,p_accounting_line_appl_id    => l_component_appl_id
30710       ,p_amb_context_code           => l_amb_context_code
30711       ,p_entity_code                => l_entity_code
30712       ,p_event_class_code           => l_event_class_code);
30713    --
30714    -- set accounting class
30715    --
30716    xla_ae_lines_pkg.SetAcctClass(
30717            p_accounting_class_code  => 'RECEIVER_COST'
30718          , p_ae_header_id           => l_ae_header_id
30719          );
30720 
30721    --
30722    -- set rounding class
30723    --
30724    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30725                       'RECEIVER_COST';
30726 
30727    --
30728    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30729    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30730    --
30731    -- bulk performance
30732    --
30733    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30734 
30735    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30736       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30737 
30738    -- 4955764
30739    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30740       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30741 
30742    -- 4458381 Public Sector Enh
30743    
30744    --
30745    -- set accounting attributes for the line type
30746    --
30747    l_entered_amt_idx := 22;
30748    l_accted_amt_idx  := 27;
30749    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30750    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30751    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
30752    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
30753    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
30754    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
30755    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
30756    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
30757    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
30758    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
30759    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
30760    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
30761    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
30762    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
30763    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
30764    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
30765    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
30766    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
30767    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
30768    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
30769    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
30770    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
30771    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
30772    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
30773    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
30774    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
30778    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
30775    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
30776    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
30777    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
30779    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
30780    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
30781    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
30782    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
30783    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
30784    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
30785    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
30786    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
30787    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
30788    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
30789    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
30790    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
30791    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
30792    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
30793    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
30794    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
30795    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
30796    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
30797    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
30798    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
30799    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
30800    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
30801    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
30802    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
30803    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
30804    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
30805    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
30806    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
30807    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
30808    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
30809    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
30810 
30811    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30812    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30813 
30814    ---------------------------------------------------------------------------------------------------------------
30815    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30816    ---------------------------------------------------------------------------------------------------------------
30817    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30818 
30819    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30820    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30821 
30822    IF xla_accounting_cache_pkg.GetValueChar
30823          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30824          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30825    AND l_bflow_method_code = 'PRIOR_ENTRY'
30826 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30827    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30828          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30829        )
30830    THEN
30831          xla_ae_lines_pkg.BflowUpgEntry
30832            (p_business_method_code    => l_bflow_method_code
30833            ,p_business_class_code     => l_bflow_class_code
30834            ,p_balance_type            => l_balance_type_code);
30835    ELSE
30836       NULL;
30837 -- No business flow processing for business flow method of NONE.
30838    END IF;
30839 
30840    --
30841    -- call analytical criteria
30842    --
30843    
30844    --
30845    -- call description
30846    --
30847    -- No description or it is inherited.
30848    --
30849    -- call ADRs
30850    -- Bug 4922099
30851    --
30852    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30853         (NVL(l_actual_upg_option, 'N') = 'O') OR
30854         (NVL(l_enc_upg_option, 'N') = 'O')
30855       )
30856    THEN
30857    NULL;
30858    --
30859    --
30860    
30861   l_ccid := AcctDerRule_14(
30862            p_application_id           => p_application_id
30863          , p_ae_header_id             => l_ae_header_id 
30864 , p_source_4 => p_source_4
30865 , p_source_10 => p_source_10
30866 , p_source_15 => p_source_15
30867          , x_transaction_coa_id       => l_adr_transaction_coa_id
30868          , x_accounting_coa_id        => l_adr_accounting_coa_id
30869          , x_value_type_code          => l_adr_value_type_code
30870          , p_side                     => 'NA'
30871    );
30872 
30873    xla_ae_lines_pkg.set_ccid(
30874     p_code_combination_id          => l_ccid
30875   , p_value_type_code              => l_adr_value_type_code
30876   , p_transaction_coa_id           => l_adr_transaction_coa_id
30877   , p_accounting_coa_id            => l_adr_accounting_coa_id
30878   , p_adr_code                     => 'PA_RECVR_COST_REV_ACCT_RULE'
30879   , p_adr_type_code                => 'S'
30883   , p_component_appl_id            => l_component_appl_id
30880   , p_component_type               => l_component_type
30881   , p_component_code               => l_component_code
30882   , p_component_type_code          => l_component_type_code
30884   , p_amb_context_code             => l_amb_context_code
30885   , p_side                         => 'NA'
30886   );
30887 
30888 
30889    --
30890    --
30891    END IF;
30892    --
30893    -- Bug 4922099
30894    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30895           (NVL(l_enc_upg_option, 'N') = 'O')
30896         ) AND
30897         (l_bflow_method_code = 'PRIOR_ENTRY')
30898       )
30899    THEN
30900       IF
30901       --
30902       1 = 2
30903       --
30904       THEN
30905       xla_accounting_err_pkg.build_message
30906                                     (p_appli_s_name            => 'XLA'
30907                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30908                                     ,p_token_1                 => 'LINE_NUMBER'
30909                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30910                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30911                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30912                                                                              l_component_type
30913                                                                             ,l_component_code
30914                                                                             ,l_component_type_code
30915                                                                             ,l_component_appl_id
30916                                                                             ,l_amb_context_code
30917                                                                             ,l_entity_code
30918                                                                             ,l_event_class_code
30919                                                                            )
30920                                     ,p_token_3                 => 'OWNER'
30921                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30922                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30923                                                                           ,p_lookup_code    => l_component_type_code
30924                                                                          )
30925                                     ,p_token_4                 => 'PRODUCT_NAME'
30926                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30927                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30928                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30929                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30930                                     ,p_ae_header_id            =>  NULL
30931                                        );
30932 
30933         IF (C_LEVEL_ERROR>= g_log_level) THEN
30934                  trace
30935                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30936                       ,p_level    => C_LEVEL_ERROR
30937                       ,p_module   => l_log_module);
30938         END IF;
30939       END IF;
30940    END IF;
30941    --
30942    --
30943    ------------------------------------------------------------------------------------------------
30944    -- 4219869 Business Flow
30945    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30946    -- Prior Entry.  Currently, the following code is always generated.
30947    ------------------------------------------------------------------------------------------------
30948    XLA_AE_LINES_PKG.ValidateCurrentLine;
30949 
30950    ------------------------------------------------------------------------------------
30951    -- 4219869 Business Flow
30952    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30953    ------------------------------------------------------------------------------------
30954    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30955 
30956    ----------------------------------------------------------------------------------
30957    -- 4219869 Business Flow
30958    -- Update journal entry status -- Need to generate this within IF <condition>
30959    ----------------------------------------------------------------------------------
30960    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30961          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30962          ,p_balance_type_code => l_balance_type_code
30963          );
30964 
30965    -------------------------------------------------------------------------------------------
30966    -- 4262811 - Generate the Accrual Reversal lines
30967    -------------------------------------------------------------------------------------------
30968    BEGIN
30969       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30970                               (g_array_event(p_event_id).array_value_num('header_index'));
30971       IF l_acc_rev_flag IS NULL THEN
30972          l_acc_rev_flag := 'N';
30973       END IF;
30974    EXCEPTION
30975       WHEN OTHERS THEN
30979    IF (l_acc_rev_flag = 'Y') THEN
30976          l_acc_rev_flag := 'N';
30977    END;
30978    --
30980 
30981        -- 4645092  ------------------------------------------------------------------------------
30982        -- To allow MPA report to determine if it should generate report process
30983        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30984        ------------------------------------------------------------------------------------------
30985 
30986        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30987        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30988 
30989        --
30990        -- Update the line information that should be overwritten
30991        --
30992        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30993                                          p_header_num   => 1);
30994        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30995 
30996        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30997 
30998        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30999           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31000        END IF;
31001 
31002       --
31003       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31004       --
31005       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31006           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31007       ELSE
31008           ---------------------------------------------------------------------------------------------------
31009           -- 4262811a Switch Sign
31010           ---------------------------------------------------------------------------------------------------
31011           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31012           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31013                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31014           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31015                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31016           -- 5132302
31017           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31018                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31019 
31020       END IF;
31021 
31022       -- 4955764
31023       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31024       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31025 
31026 
31027       XLA_AE_LINES_PKG.ValidateCurrentLine;
31028       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31029 
31030       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31031                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31032                ,p_balance_type_code => l_balance_type_code);
31033 
31034    END IF;
31035 
31036    -----------------------------------------------------------------------------------------
31037    -- 4262811 Multiperiod Accounting
31038    -----------------------------------------------------------------------------------------
31039      -- No MPA option is assigned.
31040 
31041 
31042 END IF;
31043 END IF;
31044 --
31045 
31046 --
31047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31048    trace
31049       (p_msg      => 'END of AcctLineType_69'
31050       ,p_level    => C_LEVEL_PROCEDURE
31051       ,p_module   => l_log_module);
31052 END IF;
31053 --
31054 EXCEPTION
31055   WHEN xla_exceptions_pkg.application_exception THEN
31056       RAISE;
31057   WHEN OTHERS THEN
31058        xla_exceptions_pkg.raise_message
31059            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_69');
31060 END AcctLineType_69;
31061 --
31062 
31063 ---------------------------------------
31064 --
31065 -- PRIVATE FUNCTION
31066 --         AcctLineType_70
31067 --
31068 ---------------------------------------
31069 PROCEDURE AcctLineType_70 (
31070   p_application_id        IN NUMBER
31071  ,p_event_id              IN NUMBER
31072  ,p_calculate_acctd_flag  IN VARCHAR2
31073  ,p_calculate_g_l_flag    IN VARCHAR2
31074  ,p_actual_flag           IN OUT VARCHAR2
31075  ,p_balance_type_code     OUT VARCHAR2
31076  ,p_gain_or_loss_ref      OUT VARCHAR2
31077  
31078 --Allow Account Override Flag
31079  , p_source_4            IN VARCHAR2
31080 --Provider Cost/ Revenue CCID
31081  , p_source_8            IN NUMBER
31082 --Adjustment Receiver Cost/ Revenue CCID
31083  , p_source_10            IN NUMBER
31084 --Receiver Cost/ Revenue CCID
31085  , p_source_15            IN NUMBER
31086 --Reversing Line Flag
31087  , p_source_22            IN VARCHAR2
31088 --Actual Upgrade Credit Accounting Class
31089  , p_source_23            IN VARCHAR2
31090 --Entered Currency Code
31091  , p_source_25            IN VARCHAR2
31092 --Exchange Rate Date
31093  , p_source_27            IN DATE
31094 --Exchange Rate
31095  , p_source_28            IN NUMBER
31099  , p_source_30            IN VARCHAR2
31096 --Exchange Rate Type
31097  , p_source_29            IN VARCHAR2
31098 --Actual Upgrade Debit Accounting Class
31100 --Use Actuals Upgrade Attributes Flag
31101  , p_source_31            IN VARCHAR2
31102 --Expenditure Item ID
31103  , p_source_32            IN NUMBER
31104 --Cost Distribution Line Number
31105  , p_source_33            IN NUMBER
31106 --Line Type
31107  , p_source_34            IN VARCHAR2
31108  , p_source_34_meaning    IN VARCHAR2
31109 --Reversed Line Number
31110  , p_source_35            IN NUMBER
31111 --Entered Amount
31112  , p_source_41            IN NUMBER
31113 --Accounted Amount
31114  , p_source_43            IN NUMBER
31115 --Transfer Amount Type
31116  , p_source_67            IN VARCHAR2
31117  , p_source_67_meaning    IN VARCHAR2
31118 )
31119 IS
31120 
31121 l_component_type              VARCHAR2(80);
31122 l_component_code              VARCHAR2(30);
31123 l_component_type_code         VARCHAR2(1);
31124 l_component_appl_id           INTEGER;
31125 l_amb_context_code            VARCHAR2(30);
31126 l_entity_code                 VARCHAR2(30);
31127 l_event_class_code            VARCHAR2(30);
31128 l_ae_header_id                NUMBER;
31129 l_event_type_code             VARCHAR2(30);
31130 l_line_definition_code        VARCHAR2(30);
31131 l_line_definition_owner_code  VARCHAR2(1);
31132 --
31133 -- adr variables
31134 l_segment                     VARCHAR2(30);
31135 l_ccid                        NUMBER;
31136 l_adr_transaction_coa_id      NUMBER;
31137 l_adr_accounting_coa_id       NUMBER;
31138 l_adr_flexfield_segment_code  VARCHAR2(30);
31139 l_adr_flex_value_set_id       NUMBER;
31140 l_adr_value_type_code         VARCHAR2(30);
31141 l_adr_value_combination_id    NUMBER;
31142 l_adr_value_segment_code      VARCHAR2(30);
31143 
31144 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31145 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31146 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31147 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31148 
31149 -- 4262811 Variables ------------------------------------------------------------------------------------------
31150 l_entered_amt_idx             NUMBER;
31151 l_accted_amt_idx              NUMBER;
31152 l_acc_rev_flag                VARCHAR2(1);
31153 l_accrual_line_num            NUMBER;
31154 l_tmp_amt                     NUMBER;
31155 l_acc_rev_natural_side_code   VARCHAR2(1);
31156 
31157 l_num_entries                 NUMBER;
31158 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31159 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31160 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31161 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31162 l_recog_line_1                NUMBER;
31163 l_recog_line_2                NUMBER;
31164 
31165 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31166 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31167 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31168 
31169 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31170 
31171 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31172 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31173 
31174 ---------------------------------------------------------------------------------------------------------------
31175 
31176 
31177 --
31178 -- bulk performance
31179 --
31180 l_balance_type_code           VARCHAR2(1);
31181 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31182 l_log_module                  VARCHAR2(240);
31183 
31184 --
31185 -- Upgrade strategy
31186 --
31187 l_actual_upg_option           VARCHAR2(1);
31188 l_enc_upg_option           VARCHAR2(1);
31189 
31190 --
31191 BEGIN
31192 --
31193 IF g_log_enabled THEN
31194       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
31195 END IF;
31196 --
31197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31198 
31199       trace
31200          (p_msg      => 'BEGIN of AcctLineType_70'
31201          ,p_level    => C_LEVEL_PROCEDURE
31202          ,p_module   => l_log_module);
31203 
31204 END IF;
31205 --
31206 l_component_type             := 'AMB_JLT';
31207 l_component_code             := 'PA_RECEIVER_COST_ADJ';
31208 l_component_type_code        := 'S';
31209 l_component_appl_id          :=  275;
31210 l_amb_context_code           := 'DEFAULT';
31211 l_entity_code                := 'EXPENDITURES';
31212 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
31213 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
31214 l_line_definition_owner_code := 'S';
31215 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
31216 --
31217 l_balance_type_code          := 'A';
31218 l_segment                     := NULL;
31219 l_ccid                        := NULL;
31220 l_adr_transaction_coa_id      := NULL;
31221 l_adr_accounting_coa_id       := NULL;
31222 l_adr_flexfield_segment_code  := NULL;
31223 l_adr_flex_value_set_id       := NULL;
31224 l_adr_value_type_code         := NULL;
31225 l_adr_value_combination_id    := NULL;
31226 l_adr_value_segment_code      := NULL;
31227 
31228 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31232 
31229 l_bflow_class_code           := '';    -- 4219869 Business Flow
31230 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31231 l_budgetary_control_flag     := 'N';
31233 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31234 l_bflow_applied_to_amt       := NULL; -- 5132302
31235 l_entered_amt_idx            := NULL;          -- 4262811
31236 l_accted_amt_idx             := NULL;          -- 4262811
31237 l_acc_rev_flag               := NULL;          -- 4262811
31238 l_accrual_line_num           := NULL;          -- 4262811
31239 l_tmp_amt                    := NULL;          -- 4262811
31240 --
31241  
31242 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31243     l_balance_type_code <> 'B' THEN
31244 IF NVL(p_source_67,'
31245 ') =  'COST_TRANSFER' OR 
31246 NVL(p_source_67,'
31247 ') =  'COST_REVENUE' OR 
31248 p_source_67 IS NULL 
31249  THEN 
31250 
31251    --
31252    XLA_AE_LINES_PKG.SetNewLine;
31253 
31254    p_balance_type_code          := l_balance_type_code;
31255    -- set the flag so later we will know whether the gain loss line needs to be created
31256    
31257    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31258      p_actual_flag :='A';
31259    END IF;
31260 
31261    --
31262    -- bulk performance
31263    --
31264    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31265                                       p_header_num   => 0); -- 4262811
31266    --
31267    -- set accounting line options
31268    --
31269    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31270            p_natural_side_code          => 'D'
31271          , p_gain_or_loss_flag          => 'N'
31272          , p_gl_transfer_mode_code      => 'S'
31273          , p_acct_entry_type_code       => 'A'
31274          , p_switch_side_flag           => 'Y'
31275          , p_merge_duplicate_code       => 'N'
31276          );
31277    --
31278    l_acc_rev_natural_side_code := 'C';  -- 4262811
31279    -- 
31280    --
31281    -- set accounting line type info
31282    --
31283    xla_ae_lines_pkg.SetAcctLineType
31284       (p_component_type             => l_component_type
31285       ,p_event_type_code            => l_event_type_code
31286       ,p_line_definition_owner_code => l_line_definition_owner_code
31287       ,p_line_definition_code       => l_line_definition_code
31288       ,p_accounting_line_code       => l_component_code
31289       ,p_accounting_line_type_code  => l_component_type_code
31290       ,p_accounting_line_appl_id    => l_component_appl_id
31291       ,p_amb_context_code           => l_amb_context_code
31292       ,p_entity_code                => l_entity_code
31293       ,p_event_class_code           => l_event_class_code);
31294    --
31295    -- set accounting class
31296    --
31297    xla_ae_lines_pkg.SetAcctClass(
31298            p_accounting_class_code  => 'RECEIVER_COST'
31299          , p_ae_header_id           => l_ae_header_id
31300          );
31301 
31302    --
31303    -- set rounding class
31304    --
31305    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31306                       'RECEIVER_COST';
31307 
31308    --
31309    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31310    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31311    --
31312    -- bulk performance
31313    --
31314    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31315 
31316    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31317       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31318 
31319    -- 4955764
31320    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31321       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31322 
31323    -- 4458381 Public Sector Enh
31324    
31325    --
31326    -- set accounting attributes for the line type
31327    --
31328    l_entered_amt_idx := 22;
31329    l_accted_amt_idx  := 27;
31330    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31331    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31332    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
31333    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
31334    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
31335    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
31336    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
31337    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
31338    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
31339    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
31340    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
31341    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
31342    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
31343    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
31344    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
31345    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
31346    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
31347    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
31348    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
31352    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
31349    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
31350    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
31351    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
31353    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
31354    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
31355    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
31356    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
31357    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
31358    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
31359    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
31360    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
31361    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
31362    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
31363    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
31364    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
31365    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
31366    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
31367    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
31368    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
31369    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
31370    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
31371    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
31372    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
31373    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
31374    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
31375    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
31376    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
31377    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
31378    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
31379    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
31380    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
31381    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
31382    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
31383    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
31384    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
31385    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
31386    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
31387    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
31388    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
31389    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
31390    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
31391 
31392    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31393    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31394 
31395    ---------------------------------------------------------------------------------------------------------------
31396    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31397    ---------------------------------------------------------------------------------------------------------------
31398    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31399 
31400    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31401    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31402 
31403    IF xla_accounting_cache_pkg.GetValueChar
31404          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31405          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31406    AND l_bflow_method_code = 'PRIOR_ENTRY'
31407 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31408    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31409          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31410        )
31411    THEN
31412          xla_ae_lines_pkg.BflowUpgEntry
31413            (p_business_method_code    => l_bflow_method_code
31414            ,p_business_class_code     => l_bflow_class_code
31415            ,p_balance_type            => l_balance_type_code);
31416    ELSE
31417       NULL;
31418 -- No business flow processing for business flow method of NONE.
31419    END IF;
31420 
31421    --
31422    -- call analytical criteria
31423    --
31424    
31425    --
31426    -- call description
31427    --
31428    -- No description or it is inherited.
31429    --
31430    -- call ADRs
31431    -- Bug 4922099
31432    --
31433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31434         (NVL(l_actual_upg_option, 'N') = 'O') OR
31435         (NVL(l_enc_upg_option, 'N') = 'O')
31436       )
31437    THEN
31438    NULL;
31439    --
31440    --
31441    
31442   l_ccid := AcctDerRule_9(
31443            p_application_id           => p_application_id
31444          , p_ae_header_id             => l_ae_header_id 
31445 , p_source_4 => p_source_4
31446 , p_source_10 => p_source_10
31447          , x_transaction_coa_id       => l_adr_transaction_coa_id
31448          , x_accounting_coa_id        => l_adr_accounting_coa_id
31449          , x_value_type_code          => l_adr_value_type_code
31450          , p_side                     => 'NA'
31451    );
31455   , p_value_type_code              => l_adr_value_type_code
31452 
31453    xla_ae_lines_pkg.set_ccid(
31454     p_code_combination_id          => l_ccid
31456   , p_transaction_coa_id           => l_adr_transaction_coa_id
31457   , p_accounting_coa_id            => l_adr_accounting_coa_id
31458   , p_adr_code                     => 'PA_RCVR_COST_REV_ADJ_ACCT_RULE'
31459   , p_adr_type_code                => 'S'
31460   , p_component_type               => l_component_type
31461   , p_component_code               => l_component_code
31462   , p_component_type_code          => l_component_type_code
31463   , p_component_appl_id            => l_component_appl_id
31464   , p_amb_context_code             => l_amb_context_code
31465   , p_side                         => 'NA'
31466   );
31467 
31468 
31469    --
31470    --
31471    END IF;
31472    --
31473    -- Bug 4922099
31474    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31475           (NVL(l_enc_upg_option, 'N') = 'O')
31476         ) AND
31477         (l_bflow_method_code = 'PRIOR_ENTRY')
31478       )
31479    THEN
31480       IF
31481       --
31482       1 = 2
31483       --
31484       THEN
31485       xla_accounting_err_pkg.build_message
31486                                     (p_appli_s_name            => 'XLA'
31487                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31488                                     ,p_token_1                 => 'LINE_NUMBER'
31489                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31490                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31491                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31492                                                                              l_component_type
31493                                                                             ,l_component_code
31494                                                                             ,l_component_type_code
31495                                                                             ,l_component_appl_id
31496                                                                             ,l_amb_context_code
31497                                                                             ,l_entity_code
31498                                                                             ,l_event_class_code
31499                                                                            )
31500                                     ,p_token_3                 => 'OWNER'
31501                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31502                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31503                                                                           ,p_lookup_code    => l_component_type_code
31504                                                                          )
31505                                     ,p_token_4                 => 'PRODUCT_NAME'
31506                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31507                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31508                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31509                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31510                                     ,p_ae_header_id            =>  NULL
31511                                        );
31512 
31513         IF (C_LEVEL_ERROR>= g_log_level) THEN
31514                  trace
31515                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31516                       ,p_level    => C_LEVEL_ERROR
31517                       ,p_module   => l_log_module);
31518         END IF;
31519       END IF;
31520    END IF;
31521    --
31522    --
31523    ------------------------------------------------------------------------------------------------
31524    -- 4219869 Business Flow
31525    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31526    -- Prior Entry.  Currently, the following code is always generated.
31527    ------------------------------------------------------------------------------------------------
31528    XLA_AE_LINES_PKG.ValidateCurrentLine;
31529 
31530    ------------------------------------------------------------------------------------
31531    -- 4219869 Business Flow
31532    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31533    ------------------------------------------------------------------------------------
31534    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31535 
31536    ----------------------------------------------------------------------------------
31537    -- 4219869 Business Flow
31538    -- Update journal entry status -- Need to generate this within IF <condition>
31539    ----------------------------------------------------------------------------------
31540    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31541          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31542          ,p_balance_type_code => l_balance_type_code
31543          );
31544 
31545    -------------------------------------------------------------------------------------------
31546    -- 4262811 - Generate the Accrual Reversal lines
31550                               (g_array_event(p_event_id).array_value_num('header_index'));
31547    -------------------------------------------------------------------------------------------
31548    BEGIN
31549       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31551       IF l_acc_rev_flag IS NULL THEN
31552          l_acc_rev_flag := 'N';
31553       END IF;
31554    EXCEPTION
31555       WHEN OTHERS THEN
31556          l_acc_rev_flag := 'N';
31557    END;
31558    --
31559    IF (l_acc_rev_flag = 'Y') THEN
31560 
31561        -- 4645092  ------------------------------------------------------------------------------
31562        -- To allow MPA report to determine if it should generate report process
31563        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31564        ------------------------------------------------------------------------------------------
31565 
31566        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31567        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31568 
31569        --
31570        -- Update the line information that should be overwritten
31571        --
31572        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31573                                          p_header_num   => 1);
31574        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31575 
31576        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31577 
31578        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31579           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31580        END IF;
31581 
31582       --
31583       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31584       --
31585       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31586           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31587       ELSE
31588           ---------------------------------------------------------------------------------------------------
31589           -- 4262811a Switch Sign
31590           ---------------------------------------------------------------------------------------------------
31591           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31592           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31593                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31594           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31595                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31596           -- 5132302
31597           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31598                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31599 
31600       END IF;
31601 
31602       -- 4955764
31603       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31604       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31605 
31606 
31607       XLA_AE_LINES_PKG.ValidateCurrentLine;
31608       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31609 
31610       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31611                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31612                ,p_balance_type_code => l_balance_type_code);
31613 
31614    END IF;
31615 
31616    -----------------------------------------------------------------------------------------
31617    -- 4262811 Multiperiod Accounting
31618    -----------------------------------------------------------------------------------------
31619      -- No MPA option is assigned.
31620 
31621 
31622 END IF;
31623 END IF;
31624 --
31625 
31626 --
31627 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31628    trace
31629       (p_msg      => 'END of AcctLineType_70'
31630       ,p_level    => C_LEVEL_PROCEDURE
31631       ,p_module   => l_log_module);
31632 END IF;
31633 --
31634 EXCEPTION
31635   WHEN xla_exceptions_pkg.application_exception THEN
31636       RAISE;
31637   WHEN OTHERS THEN
31638        xla_exceptions_pkg.raise_message
31639            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_70');
31640 END AcctLineType_70;
31641 --
31642 
31643 ---------------------------------------
31644 --
31645 -- PRIVATE FUNCTION
31646 --         AcctLineType_71
31647 --
31648 ---------------------------------------
31649 PROCEDURE AcctLineType_71 (
31650   p_application_id        IN NUMBER
31651  ,p_event_id              IN NUMBER
31652  ,p_calculate_acctd_flag  IN VARCHAR2
31653  ,p_calculate_g_l_flag    IN VARCHAR2
31654  ,p_actual_flag           IN OUT VARCHAR2
31655  ,p_balance_type_code     OUT VARCHAR2
31656  ,p_gain_or_loss_ref      OUT VARCHAR2
31657  
31658 --Allow Account Override Flag
31659  , p_source_4            IN VARCHAR2
31660 --Provider Cost/ Revenue CCID
31661  , p_source_8            IN NUMBER
31662 --Adjustment Receiver Cost/ Revenue CCID
31663  , p_source_10            IN NUMBER
31667  , p_source_22            IN VARCHAR2
31664 --Receiver Cost/ Revenue CCID
31665  , p_source_15            IN NUMBER
31666 --Reversing Line Flag
31668 --Actual Upgrade Credit Accounting Class
31669  , p_source_23            IN VARCHAR2
31670 --Entered Currency Code
31671  , p_source_25            IN VARCHAR2
31672 --Exchange Rate Date
31673  , p_source_27            IN DATE
31674 --Exchange Rate
31675  , p_source_28            IN NUMBER
31676 --Exchange Rate Type
31677  , p_source_29            IN VARCHAR2
31678 --Actual Upgrade Debit Accounting Class
31679  , p_source_30            IN VARCHAR2
31680 --Use Actuals Upgrade Attributes Flag
31681  , p_source_31            IN VARCHAR2
31682 --Expenditure Item ID
31683  , p_source_32            IN NUMBER
31684 --Cost Distribution Line Number
31685  , p_source_33            IN NUMBER
31686 --Line Type
31687  , p_source_34            IN VARCHAR2
31688  , p_source_34_meaning    IN VARCHAR2
31689 --Reversed Line Number
31690  , p_source_35            IN NUMBER
31691 --Entered Amount
31692  , p_source_41            IN NUMBER
31693 --Accounted Amount
31694  , p_source_43            IN NUMBER
31695 --Transfer Amount Type
31696  , p_source_67            IN VARCHAR2
31697  , p_source_67_meaning    IN VARCHAR2
31698 )
31699 IS
31700 
31701 l_component_type              VARCHAR2(80);
31702 l_component_code              VARCHAR2(30);
31703 l_component_type_code         VARCHAR2(1);
31704 l_component_appl_id           INTEGER;
31705 l_amb_context_code            VARCHAR2(30);
31706 l_entity_code                 VARCHAR2(30);
31707 l_event_class_code            VARCHAR2(30);
31708 l_ae_header_id                NUMBER;
31709 l_event_type_code             VARCHAR2(30);
31710 l_line_definition_code        VARCHAR2(30);
31711 l_line_definition_owner_code  VARCHAR2(1);
31712 --
31713 -- adr variables
31714 l_segment                     VARCHAR2(30);
31715 l_ccid                        NUMBER;
31716 l_adr_transaction_coa_id      NUMBER;
31717 l_adr_accounting_coa_id       NUMBER;
31718 l_adr_flexfield_segment_code  VARCHAR2(30);
31719 l_adr_flex_value_set_id       NUMBER;
31720 l_adr_value_type_code         VARCHAR2(30);
31721 l_adr_value_combination_id    NUMBER;
31722 l_adr_value_segment_code      VARCHAR2(30);
31723 
31724 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31725 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31726 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31727 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31728 
31729 -- 4262811 Variables ------------------------------------------------------------------------------------------
31730 l_entered_amt_idx             NUMBER;
31731 l_accted_amt_idx              NUMBER;
31732 l_acc_rev_flag                VARCHAR2(1);
31733 l_accrual_line_num            NUMBER;
31734 l_tmp_amt                     NUMBER;
31735 l_acc_rev_natural_side_code   VARCHAR2(1);
31736 
31737 l_num_entries                 NUMBER;
31738 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31739 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31740 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31741 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31742 l_recog_line_1                NUMBER;
31743 l_recog_line_2                NUMBER;
31744 
31745 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31746 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31747 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31748 
31749 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31750 
31751 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31752 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31753 
31754 ---------------------------------------------------------------------------------------------------------------
31755 
31756 
31757 --
31758 -- bulk performance
31759 --
31760 l_balance_type_code           VARCHAR2(1);
31761 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31762 l_log_module                  VARCHAR2(240);
31763 
31764 --
31765 -- Upgrade strategy
31766 --
31767 l_actual_upg_option           VARCHAR2(1);
31768 l_enc_upg_option           VARCHAR2(1);
31769 
31770 --
31771 BEGIN
31772 --
31773 IF g_log_enabled THEN
31774       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
31775 END IF;
31776 --
31777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31778 
31779       trace
31780          (p_msg      => 'BEGIN of AcctLineType_71'
31781          ,p_level    => C_LEVEL_PROCEDURE
31782          ,p_module   => l_log_module);
31783 
31784 END IF;
31785 --
31786 l_component_type             := 'AMB_JLT';
31787 l_component_code             := 'PA_RECEIVER_REVENUE';
31788 l_component_type_code        := 'S';
31789 l_component_appl_id          :=  275;
31790 l_amb_context_code           := 'DEFAULT';
31791 l_entity_code                := 'EXPENDITURES';
31792 l_event_class_code           := 'BORROWED_AND_LENT';
31793 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
31794 l_line_definition_owner_code := 'S';
31795 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
31796 --
31797 l_balance_type_code          := 'A';
31798 l_segment                     := NULL;
31802 l_adr_flexfield_segment_code  := NULL;
31799 l_ccid                        := NULL;
31800 l_adr_transaction_coa_id      := NULL;
31801 l_adr_accounting_coa_id       := NULL;
31803 l_adr_flex_value_set_id       := NULL;
31804 l_adr_value_type_code         := NULL;
31805 l_adr_value_combination_id    := NULL;
31806 l_adr_value_segment_code      := NULL;
31807 
31808 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31809 l_bflow_class_code           := '';    -- 4219869 Business Flow
31810 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31811 l_budgetary_control_flag     := 'N';
31812 
31813 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31814 l_bflow_applied_to_amt       := NULL; -- 5132302
31815 l_entered_amt_idx            := NULL;          -- 4262811
31816 l_accted_amt_idx             := NULL;          -- 4262811
31817 l_acc_rev_flag               := NULL;          -- 4262811
31818 l_accrual_line_num           := NULL;          -- 4262811
31819 l_tmp_amt                    := NULL;          -- 4262811
31820 --
31821  
31822 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31823     l_balance_type_code <> 'B' THEN
31824 IF NVL(p_source_67,'
31825 ') =  'REVENUE_TRANSFER'
31826  THEN 
31827 
31828    --
31829    XLA_AE_LINES_PKG.SetNewLine;
31830 
31831    p_balance_type_code          := l_balance_type_code;
31832    -- set the flag so later we will know whether the gain loss line needs to be created
31833    
31834    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31835      p_actual_flag :='A';
31836    END IF;
31837 
31838    --
31839    -- bulk performance
31840    --
31841    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31842                                       p_header_num   => 0); -- 4262811
31843    --
31844    -- set accounting line options
31845    --
31846    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31847            p_natural_side_code          => 'D'
31848          , p_gain_or_loss_flag          => 'N'
31849          , p_gl_transfer_mode_code      => 'S'
31850          , p_acct_entry_type_code       => 'A'
31851          , p_switch_side_flag           => 'Y'
31852          , p_merge_duplicate_code       => 'N'
31853          );
31854    --
31855    l_acc_rev_natural_side_code := 'C';  -- 4262811
31856    -- 
31857    --
31858    -- set accounting line type info
31859    --
31860    xla_ae_lines_pkg.SetAcctLineType
31861       (p_component_type             => l_component_type
31862       ,p_event_type_code            => l_event_type_code
31863       ,p_line_definition_owner_code => l_line_definition_owner_code
31864       ,p_line_definition_code       => l_line_definition_code
31865       ,p_accounting_line_code       => l_component_code
31866       ,p_accounting_line_type_code  => l_component_type_code
31867       ,p_accounting_line_appl_id    => l_component_appl_id
31868       ,p_amb_context_code           => l_amb_context_code
31869       ,p_entity_code                => l_entity_code
31870       ,p_event_class_code           => l_event_class_code);
31871    --
31872    -- set accounting class
31873    --
31874    xla_ae_lines_pkg.SetAcctClass(
31875            p_accounting_class_code  => 'RECEIVER_REVENUE'
31876          , p_ae_header_id           => l_ae_header_id
31877          );
31878 
31879    --
31880    -- set rounding class
31881    --
31882    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31883                       'RECEIVER_REVENUE';
31884 
31885    --
31886    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31887    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31888    --
31889    -- bulk performance
31890    --
31891    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31892 
31893    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31894       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31895 
31896    -- 4955764
31897    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31898       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31899 
31900    -- 4458381 Public Sector Enh
31901    
31902    --
31903    -- set accounting attributes for the line type
31904    --
31905    l_entered_amt_idx := 22;
31906    l_accted_amt_idx  := 27;
31907    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31908    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31909    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
31910    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
31911    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
31912    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
31913    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
31914    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
31915    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
31916    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
31917    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
31918    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
31919    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
31923    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
31920    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
31921    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
31922    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
31924    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
31925    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
31926    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
31927    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
31928    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
31929    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
31930    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
31931    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
31932    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
31933    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
31934    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
31935    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
31936    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
31937    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
31938    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
31939    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
31940    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
31941    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
31942    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
31943    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
31944    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
31945    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
31946    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
31947    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
31948    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
31949    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
31950    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
31951    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
31952    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
31953    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
31954    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
31955    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
31956    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
31957    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
31958    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
31959    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
31960    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
31961    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
31962    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
31963    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
31964    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
31965    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
31966    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
31967    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
31968 
31969    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31970    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31971 
31972    ---------------------------------------------------------------------------------------------------------------
31973    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31974    ---------------------------------------------------------------------------------------------------------------
31975    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31976 
31977    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31978    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31979 
31980    IF xla_accounting_cache_pkg.GetValueChar
31981          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31982          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31983    AND l_bflow_method_code = 'PRIOR_ENTRY'
31984 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31985    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31986          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31987        )
31988    THEN
31989          xla_ae_lines_pkg.BflowUpgEntry
31990            (p_business_method_code    => l_bflow_method_code
31991            ,p_business_class_code     => l_bflow_class_code
31992            ,p_balance_type            => l_balance_type_code);
31993    ELSE
31994       NULL;
31995 -- No business flow processing for business flow method of NONE.
31996    END IF;
31997 
31998    --
31999    -- call analytical criteria
32000    --
32001    
32002    --
32003    -- call description
32004    --
32005    -- No description or it is inherited.
32006    --
32007    -- call ADRs
32008    -- Bug 4922099
32009    --
32010    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32011         (NVL(l_actual_upg_option, 'N') = 'O') OR
32012         (NVL(l_enc_upg_option, 'N') = 'O')
32013       )
32014    THEN
32015    NULL;
32016    --
32017    --
32018    
32019   l_ccid := AcctDerRule_14(
32020            p_application_id           => p_application_id
32024 , p_source_15 => p_source_15
32021          , p_ae_header_id             => l_ae_header_id 
32022 , p_source_4 => p_source_4
32023 , p_source_10 => p_source_10
32025          , x_transaction_coa_id       => l_adr_transaction_coa_id
32026          , x_accounting_coa_id        => l_adr_accounting_coa_id
32027          , x_value_type_code          => l_adr_value_type_code
32028          , p_side                     => 'NA'
32029    );
32030 
32031    xla_ae_lines_pkg.set_ccid(
32032     p_code_combination_id          => l_ccid
32033   , p_value_type_code              => l_adr_value_type_code
32034   , p_transaction_coa_id           => l_adr_transaction_coa_id
32035   , p_accounting_coa_id            => l_adr_accounting_coa_id
32036   , p_adr_code                     => 'PA_RECVR_COST_REV_ACCT_RULE'
32037   , p_adr_type_code                => 'S'
32038   , p_component_type               => l_component_type
32039   , p_component_code               => l_component_code
32040   , p_component_type_code          => l_component_type_code
32041   , p_component_appl_id            => l_component_appl_id
32042   , p_amb_context_code             => l_amb_context_code
32043   , p_side                         => 'NA'
32044   );
32045 
32046 
32047    --
32048    --
32049    END IF;
32050    --
32051    -- Bug 4922099
32052    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32053           (NVL(l_enc_upg_option, 'N') = 'O')
32054         ) AND
32055         (l_bflow_method_code = 'PRIOR_ENTRY')
32056       )
32057    THEN
32058       IF
32059       --
32060       1 = 2
32061       --
32062       THEN
32063       xla_accounting_err_pkg.build_message
32064                                     (p_appli_s_name            => 'XLA'
32065                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32066                                     ,p_token_1                 => 'LINE_NUMBER'
32067                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32068                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32069                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32070                                                                              l_component_type
32071                                                                             ,l_component_code
32072                                                                             ,l_component_type_code
32073                                                                             ,l_component_appl_id
32074                                                                             ,l_amb_context_code
32075                                                                             ,l_entity_code
32076                                                                             ,l_event_class_code
32077                                                                            )
32078                                     ,p_token_3                 => 'OWNER'
32079                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32080                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32081                                                                           ,p_lookup_code    => l_component_type_code
32082                                                                          )
32083                                     ,p_token_4                 => 'PRODUCT_NAME'
32084                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32085                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32086                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32087                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32088                                     ,p_ae_header_id            =>  NULL
32089                                        );
32090 
32091         IF (C_LEVEL_ERROR>= g_log_level) THEN
32092                  trace
32093                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32094                       ,p_level    => C_LEVEL_ERROR
32095                       ,p_module   => l_log_module);
32096         END IF;
32097       END IF;
32098    END IF;
32099    --
32100    --
32101    ------------------------------------------------------------------------------------------------
32102    -- 4219869 Business Flow
32103    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32104    -- Prior Entry.  Currently, the following code is always generated.
32105    ------------------------------------------------------------------------------------------------
32106    XLA_AE_LINES_PKG.ValidateCurrentLine;
32107 
32108    ------------------------------------------------------------------------------------
32109    -- 4219869 Business Flow
32110    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32111    ------------------------------------------------------------------------------------
32112    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32113 
32114    ----------------------------------------------------------------------------------
32115    -- 4219869 Business Flow
32116    -- Update journal entry status -- Need to generate this within IF <condition>
32120          ,p_balance_type_code => l_balance_type_code
32117    ----------------------------------------------------------------------------------
32118    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32119          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32121          );
32122 
32123    -------------------------------------------------------------------------------------------
32124    -- 4262811 - Generate the Accrual Reversal lines
32125    -------------------------------------------------------------------------------------------
32126    BEGIN
32127       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32128                               (g_array_event(p_event_id).array_value_num('header_index'));
32129       IF l_acc_rev_flag IS NULL THEN
32130          l_acc_rev_flag := 'N';
32131       END IF;
32132    EXCEPTION
32133       WHEN OTHERS THEN
32134          l_acc_rev_flag := 'N';
32135    END;
32136    --
32137    IF (l_acc_rev_flag = 'Y') THEN
32138 
32139        -- 4645092  ------------------------------------------------------------------------------
32140        -- To allow MPA report to determine if it should generate report process
32141        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32142        ------------------------------------------------------------------------------------------
32143 
32144        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32145        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32146 
32147        --
32148        -- Update the line information that should be overwritten
32149        --
32150        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32151                                          p_header_num   => 1);
32152        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32153 
32154        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32155 
32156        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32157           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32158        END IF;
32159 
32160       --
32161       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32162       --
32163       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32164           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32165       ELSE
32166           ---------------------------------------------------------------------------------------------------
32167           -- 4262811a Switch Sign
32168           ---------------------------------------------------------------------------------------------------
32169           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32170           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32171                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32172           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32173                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32174           -- 5132302
32175           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32176                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32177 
32178       END IF;
32179 
32180       -- 4955764
32181       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32182       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32183 
32184 
32185       XLA_AE_LINES_PKG.ValidateCurrentLine;
32186       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32187 
32188       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32189                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32190                ,p_balance_type_code => l_balance_type_code);
32191 
32192    END IF;
32193 
32194    -----------------------------------------------------------------------------------------
32195    -- 4262811 Multiperiod Accounting
32196    -----------------------------------------------------------------------------------------
32197      -- No MPA option is assigned.
32198 
32199 
32200 END IF;
32201 END IF;
32202 --
32203 
32204 --
32205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32206    trace
32207       (p_msg      => 'END of AcctLineType_71'
32208       ,p_level    => C_LEVEL_PROCEDURE
32209       ,p_module   => l_log_module);
32210 END IF;
32211 --
32212 EXCEPTION
32213   WHEN xla_exceptions_pkg.application_exception THEN
32214       RAISE;
32215   WHEN OTHERS THEN
32216        xla_exceptions_pkg.raise_message
32217            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_71');
32218 END AcctLineType_71;
32219 --
32220 
32221 ---------------------------------------
32222 --
32223 -- PRIVATE FUNCTION
32224 --         AcctLineType_72
32225 --
32226 ---------------------------------------
32227 PROCEDURE AcctLineType_72 (
32228   p_application_id        IN NUMBER
32229  ,p_event_id              IN NUMBER
32230  ,p_calculate_acctd_flag  IN VARCHAR2
32234  ,p_gain_or_loss_ref      OUT VARCHAR2
32231  ,p_calculate_g_l_flag    IN VARCHAR2
32232  ,p_actual_flag           IN OUT VARCHAR2
32233  ,p_balance_type_code     OUT VARCHAR2
32235  
32236 --Allow Account Override Flag
32237  , p_source_4            IN VARCHAR2
32238 --Provider Cost/ Revenue CCID
32239  , p_source_8            IN NUMBER
32240 --Adjustment Receiver Cost/ Revenue CCID
32241  , p_source_10            IN NUMBER
32242 --Receiver Cost/ Revenue CCID
32243  , p_source_15            IN NUMBER
32244 --Reversing Line Flag
32245  , p_source_22            IN VARCHAR2
32246 --Actual Upgrade Credit Accounting Class
32247  , p_source_23            IN VARCHAR2
32248 --Entered Currency Code
32249  , p_source_25            IN VARCHAR2
32250 --Exchange Rate Date
32251  , p_source_27            IN DATE
32252 --Exchange Rate
32253  , p_source_28            IN NUMBER
32254 --Exchange Rate Type
32255  , p_source_29            IN VARCHAR2
32256 --Actual Upgrade Debit Accounting Class
32257  , p_source_30            IN VARCHAR2
32258 --Use Actuals Upgrade Attributes Flag
32259  , p_source_31            IN VARCHAR2
32260 --Expenditure Item ID
32261  , p_source_32            IN NUMBER
32262 --Cost Distribution Line Number
32263  , p_source_33            IN NUMBER
32264 --Line Type
32265  , p_source_34            IN VARCHAR2
32266  , p_source_34_meaning    IN VARCHAR2
32267 --Reversed Line Number
32268  , p_source_35            IN NUMBER
32269 --Entered Amount
32270  , p_source_41            IN NUMBER
32271 --Accounted Amount
32272  , p_source_43            IN NUMBER
32273 --Transfer Amount Type
32274  , p_source_67            IN VARCHAR2
32275  , p_source_67_meaning    IN VARCHAR2
32276 )
32277 IS
32278 
32279 l_component_type              VARCHAR2(80);
32280 l_component_code              VARCHAR2(30);
32281 l_component_type_code         VARCHAR2(1);
32282 l_component_appl_id           INTEGER;
32283 l_amb_context_code            VARCHAR2(30);
32284 l_entity_code                 VARCHAR2(30);
32285 l_event_class_code            VARCHAR2(30);
32286 l_ae_header_id                NUMBER;
32287 l_event_type_code             VARCHAR2(30);
32288 l_line_definition_code        VARCHAR2(30);
32289 l_line_definition_owner_code  VARCHAR2(1);
32290 --
32291 -- adr variables
32292 l_segment                     VARCHAR2(30);
32293 l_ccid                        NUMBER;
32294 l_adr_transaction_coa_id      NUMBER;
32295 l_adr_accounting_coa_id       NUMBER;
32296 l_adr_flexfield_segment_code  VARCHAR2(30);
32297 l_adr_flex_value_set_id       NUMBER;
32298 l_adr_value_type_code         VARCHAR2(30);
32299 l_adr_value_combination_id    NUMBER;
32300 l_adr_value_segment_code      VARCHAR2(30);
32301 
32302 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32303 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32304 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32305 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32306 
32307 -- 4262811 Variables ------------------------------------------------------------------------------------------
32308 l_entered_amt_idx             NUMBER;
32309 l_accted_amt_idx              NUMBER;
32310 l_acc_rev_flag                VARCHAR2(1);
32311 l_accrual_line_num            NUMBER;
32312 l_tmp_amt                     NUMBER;
32313 l_acc_rev_natural_side_code   VARCHAR2(1);
32314 
32315 l_num_entries                 NUMBER;
32316 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32317 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32318 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32319 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32320 l_recog_line_1                NUMBER;
32321 l_recog_line_2                NUMBER;
32322 
32323 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32324 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32325 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32326 
32327 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32328 
32329 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32330 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32331 
32332 ---------------------------------------------------------------------------------------------------------------
32333 
32334 
32335 --
32336 -- bulk performance
32337 --
32338 l_balance_type_code           VARCHAR2(1);
32339 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32340 l_log_module                  VARCHAR2(240);
32341 
32342 --
32343 -- Upgrade strategy
32344 --
32345 l_actual_upg_option           VARCHAR2(1);
32346 l_enc_upg_option           VARCHAR2(1);
32347 
32348 --
32349 BEGIN
32350 --
32351 IF g_log_enabled THEN
32352       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
32353 END IF;
32354 --
32355 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32356 
32357       trace
32358          (p_msg      => 'BEGIN of AcctLineType_72'
32359          ,p_level    => C_LEVEL_PROCEDURE
32360          ,p_module   => l_log_module);
32361 
32362 END IF;
32363 --
32364 l_component_type             := 'AMB_JLT';
32365 l_component_code             := 'PA_RECEIVER_REVENUE_ADJ';
32369 l_entity_code                := 'EXPENDITURES';
32366 l_component_type_code        := 'S';
32367 l_component_appl_id          :=  275;
32368 l_amb_context_code           := 'DEFAULT';
32370 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
32371 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
32372 l_line_definition_owner_code := 'S';
32373 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
32374 --
32375 l_balance_type_code          := 'A';
32376 l_segment                     := NULL;
32377 l_ccid                        := NULL;
32378 l_adr_transaction_coa_id      := NULL;
32379 l_adr_accounting_coa_id       := NULL;
32380 l_adr_flexfield_segment_code  := NULL;
32381 l_adr_flex_value_set_id       := NULL;
32382 l_adr_value_type_code         := NULL;
32383 l_adr_value_combination_id    := NULL;
32384 l_adr_value_segment_code      := NULL;
32385 
32386 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32387 l_bflow_class_code           := '';    -- 4219869 Business Flow
32388 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32389 l_budgetary_control_flag     := 'N';
32390 
32391 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32392 l_bflow_applied_to_amt       := NULL; -- 5132302
32393 l_entered_amt_idx            := NULL;          -- 4262811
32394 l_accted_amt_idx             := NULL;          -- 4262811
32395 l_acc_rev_flag               := NULL;          -- 4262811
32396 l_accrual_line_num           := NULL;          -- 4262811
32397 l_tmp_amt                    := NULL;          -- 4262811
32398 --
32399  
32400 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32401     l_balance_type_code <> 'B' THEN
32402 IF NVL(p_source_67,'
32403 ') =  'REVENUE_TRANSFER'
32404  THEN 
32405 
32406    --
32407    XLA_AE_LINES_PKG.SetNewLine;
32408 
32409    p_balance_type_code          := l_balance_type_code;
32410    -- set the flag so later we will know whether the gain loss line needs to be created
32411    
32412    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32413      p_actual_flag :='A';
32414    END IF;
32415 
32416    --
32417    -- bulk performance
32418    --
32419    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32420                                       p_header_num   => 0); -- 4262811
32421    --
32422    -- set accounting line options
32423    --
32424    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32425            p_natural_side_code          => 'D'
32426          , p_gain_or_loss_flag          => 'N'
32427          , p_gl_transfer_mode_code      => 'S'
32428          , p_acct_entry_type_code       => 'A'
32429          , p_switch_side_flag           => 'Y'
32430          , p_merge_duplicate_code       => 'N'
32431          );
32432    --
32433    l_acc_rev_natural_side_code := 'C';  -- 4262811
32434    -- 
32435    --
32436    -- set accounting line type info
32437    --
32438    xla_ae_lines_pkg.SetAcctLineType
32439       (p_component_type             => l_component_type
32440       ,p_event_type_code            => l_event_type_code
32441       ,p_line_definition_owner_code => l_line_definition_owner_code
32442       ,p_line_definition_code       => l_line_definition_code
32443       ,p_accounting_line_code       => l_component_code
32444       ,p_accounting_line_type_code  => l_component_type_code
32445       ,p_accounting_line_appl_id    => l_component_appl_id
32446       ,p_amb_context_code           => l_amb_context_code
32447       ,p_entity_code                => l_entity_code
32448       ,p_event_class_code           => l_event_class_code);
32449    --
32450    -- set accounting class
32451    --
32452    xla_ae_lines_pkg.SetAcctClass(
32453            p_accounting_class_code  => 'RECEIVER_REVENUE'
32454          , p_ae_header_id           => l_ae_header_id
32455          );
32456 
32457    --
32458    -- set rounding class
32459    --
32460    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32461                       'RECEIVER_REVENUE';
32462 
32463    --
32464    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32465    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32466    --
32467    -- bulk performance
32468    --
32469    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32470 
32471    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32472       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32473 
32474    -- 4955764
32475    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32476       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32477 
32478    -- 4458381 Public Sector Enh
32479    
32480    --
32481    -- set accounting attributes for the line type
32482    --
32483    l_entered_amt_idx := 22;
32484    l_accted_amt_idx  := 27;
32485    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32486    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32487    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
32488    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
32489    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
32490    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
32494    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
32491    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_8);
32492    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
32493    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
32495    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
32496    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
32497    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
32498    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
32499    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
32500    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
32501    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
32502    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
32503    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
32504    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
32505    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
32506    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
32507    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_15);
32508    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
32509    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
32510    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
32511    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
32512    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
32513    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
32514    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
32515    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
32516    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
32517    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
32518    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
32519    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
32520    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
32521    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
32522    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
32523    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
32524    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
32525    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
32526    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
32527    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
32528    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
32529    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
32530    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
32531    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
32532    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
32533    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
32534    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
32535    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
32536    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
32537    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
32538    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
32539    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
32540    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
32541    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
32542    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
32543    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
32544    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
32545    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
32546 
32547    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32548    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32549 
32550    ---------------------------------------------------------------------------------------------------------------
32551    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32552    ---------------------------------------------------------------------------------------------------------------
32553    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32554 
32555    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32556    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32557 
32558    IF xla_accounting_cache_pkg.GetValueChar
32559          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32560          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32561    AND l_bflow_method_code = 'PRIOR_ENTRY'
32562 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32563    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32564          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32565        )
32566    THEN
32567          xla_ae_lines_pkg.BflowUpgEntry
32568            (p_business_method_code    => l_bflow_method_code
32569            ,p_business_class_code     => l_bflow_class_code
32570            ,p_balance_type            => l_balance_type_code);
32571    ELSE
32572       NULL;
32573 -- No business flow processing for business flow method of NONE.
32574    END IF;
32575 
32576    --
32577    -- call analytical criteria
32578    --
32579    
32580    --
32581    -- call description
32582    --
32583    -- No description or it is inherited.
32584    --
32588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32585    -- call ADRs
32586    -- Bug 4922099
32587    --
32589         (NVL(l_actual_upg_option, 'N') = 'O') OR
32590         (NVL(l_enc_upg_option, 'N') = 'O')
32591       )
32592    THEN
32593    NULL;
32594    --
32595    --
32596    
32597   l_ccid := AcctDerRule_9(
32598            p_application_id           => p_application_id
32599          , p_ae_header_id             => l_ae_header_id 
32600 , p_source_4 => p_source_4
32601 , p_source_10 => p_source_10
32602          , x_transaction_coa_id       => l_adr_transaction_coa_id
32603          , x_accounting_coa_id        => l_adr_accounting_coa_id
32604          , x_value_type_code          => l_adr_value_type_code
32605          , p_side                     => 'NA'
32606    );
32607 
32608    xla_ae_lines_pkg.set_ccid(
32609     p_code_combination_id          => l_ccid
32610   , p_value_type_code              => l_adr_value_type_code
32611   , p_transaction_coa_id           => l_adr_transaction_coa_id
32612   , p_accounting_coa_id            => l_adr_accounting_coa_id
32613   , p_adr_code                     => 'PA_RCVR_COST_REV_ADJ_ACCT_RULE'
32614   , p_adr_type_code                => 'S'
32615   , p_component_type               => l_component_type
32616   , p_component_code               => l_component_code
32617   , p_component_type_code          => l_component_type_code
32618   , p_component_appl_id            => l_component_appl_id
32619   , p_amb_context_code             => l_amb_context_code
32620   , p_side                         => 'NA'
32621   );
32622 
32623 
32624    --
32625    --
32626    END IF;
32627    --
32628    -- Bug 4922099
32629    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32630           (NVL(l_enc_upg_option, 'N') = 'O')
32631         ) AND
32632         (l_bflow_method_code = 'PRIOR_ENTRY')
32633       )
32634    THEN
32635       IF
32636       --
32637       1 = 2
32638       --
32639       THEN
32640       xla_accounting_err_pkg.build_message
32641                                     (p_appli_s_name            => 'XLA'
32642                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32643                                     ,p_token_1                 => 'LINE_NUMBER'
32644                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32645                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32646                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32647                                                                              l_component_type
32648                                                                             ,l_component_code
32649                                                                             ,l_component_type_code
32650                                                                             ,l_component_appl_id
32651                                                                             ,l_amb_context_code
32652                                                                             ,l_entity_code
32653                                                                             ,l_event_class_code
32654                                                                            )
32655                                     ,p_token_3                 => 'OWNER'
32656                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32657                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32658                                                                           ,p_lookup_code    => l_component_type_code
32659                                                                          )
32660                                     ,p_token_4                 => 'PRODUCT_NAME'
32661                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32662                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32663                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32664                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32665                                     ,p_ae_header_id            =>  NULL
32666                                        );
32667 
32668         IF (C_LEVEL_ERROR>= g_log_level) THEN
32669                  trace
32670                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32671                       ,p_level    => C_LEVEL_ERROR
32672                       ,p_module   => l_log_module);
32673         END IF;
32674       END IF;
32675    END IF;
32676    --
32677    --
32678    ------------------------------------------------------------------------------------------------
32679    -- 4219869 Business Flow
32680    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32681    -- Prior Entry.  Currently, the following code is always generated.
32682    ------------------------------------------------------------------------------------------------
32683    XLA_AE_LINES_PKG.ValidateCurrentLine;
32684 
32685    ------------------------------------------------------------------------------------
32686    -- 4219869 Business Flow
32687    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32691    ----------------------------------------------------------------------------------
32688    ------------------------------------------------------------------------------------
32689    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32690 
32692    -- 4219869 Business Flow
32693    -- Update journal entry status -- Need to generate this within IF <condition>
32694    ----------------------------------------------------------------------------------
32695    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32696          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32697          ,p_balance_type_code => l_balance_type_code
32698          );
32699 
32700    -------------------------------------------------------------------------------------------
32701    -- 4262811 - Generate the Accrual Reversal lines
32702    -------------------------------------------------------------------------------------------
32703    BEGIN
32704       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32705                               (g_array_event(p_event_id).array_value_num('header_index'));
32706       IF l_acc_rev_flag IS NULL THEN
32707          l_acc_rev_flag := 'N';
32708       END IF;
32709    EXCEPTION
32710       WHEN OTHERS THEN
32711          l_acc_rev_flag := 'N';
32712    END;
32713    --
32714    IF (l_acc_rev_flag = 'Y') THEN
32715 
32716        -- 4645092  ------------------------------------------------------------------------------
32717        -- To allow MPA report to determine if it should generate report process
32718        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32719        ------------------------------------------------------------------------------------------
32720 
32721        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32722        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32723 
32724        --
32725        -- Update the line information that should be overwritten
32726        --
32727        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32728                                          p_header_num   => 1);
32729        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32730 
32731        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32732 
32733        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32734           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32735        END IF;
32736 
32737       --
32738       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32739       --
32740       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32741           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32742       ELSE
32743           ---------------------------------------------------------------------------------------------------
32744           -- 4262811a Switch Sign
32745           ---------------------------------------------------------------------------------------------------
32746           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32747           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32748                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32749           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32750                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32751           -- 5132302
32752           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32753                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32754 
32755       END IF;
32756 
32757       -- 4955764
32758       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32759       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32760 
32761 
32762       XLA_AE_LINES_PKG.ValidateCurrentLine;
32763       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32764 
32765       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32766                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32767                ,p_balance_type_code => l_balance_type_code);
32768 
32769    END IF;
32770 
32771    -----------------------------------------------------------------------------------------
32772    -- 4262811 Multiperiod Accounting
32773    -----------------------------------------------------------------------------------------
32774      -- No MPA option is assigned.
32775 
32776 
32777 END IF;
32778 END IF;
32779 --
32780 
32781 --
32782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32783    trace
32784       (p_msg      => 'END of AcctLineType_72'
32785       ,p_level    => C_LEVEL_PROCEDURE
32786       ,p_module   => l_log_module);
32787 END IF;
32788 --
32789 EXCEPTION
32790   WHEN xla_exceptions_pkg.application_exception THEN
32791       RAISE;
32792   WHEN OTHERS THEN
32793        xla_exceptions_pkg.raise_message
32794            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_72');
32795 END AcctLineType_72;
32796 --
32797 
32801 --         AcctLineType_73
32798 ---------------------------------------
32799 --
32800 -- PRIVATE FUNCTION
32802 --
32803 ---------------------------------------
32804 PROCEDURE AcctLineType_73 (
32805   p_application_id        IN NUMBER
32806  ,p_event_id              IN NUMBER
32807  ,p_calculate_acctd_flag  IN VARCHAR2
32808  ,p_calculate_g_l_flag    IN VARCHAR2
32809  ,p_actual_flag           IN OUT VARCHAR2
32810  ,p_balance_type_code     OUT VARCHAR2
32811  ,p_gain_or_loss_ref      OUT VARCHAR2
32812  
32813 --Allow Account Override Flag
32814  , p_source_4            IN VARCHAR2
32815 --Provider Cost Destination CCID
32816  , p_source_11            IN NUMBER
32817 --Adjustment Provider Cost Destination CCID
32818  , p_source_12            IN NUMBER
32819 --Provider Cost Source CCID
32820  , p_source_13            IN NUMBER
32821 --Reversing Line Flag
32822  , p_source_22            IN VARCHAR2
32823 --Actual Upgrade Credit Accounting Class
32824  , p_source_23            IN VARCHAR2
32825 --Entered Currency Code
32826  , p_source_25            IN VARCHAR2
32827 --Exchange Rate Date
32828  , p_source_27            IN DATE
32829 --Exchange Rate
32830  , p_source_28            IN NUMBER
32831 --Exchange Rate Type
32832  , p_source_29            IN VARCHAR2
32833 --Actual Upgrade Debit Accounting Class
32834  , p_source_30            IN VARCHAR2
32835 --Use Actuals Upgrade Attributes Flag
32836  , p_source_31            IN VARCHAR2
32837 --Expenditure Item ID
32838  , p_source_32            IN NUMBER
32839 --Cost Distribution Line Number
32840  , p_source_33            IN NUMBER
32841 --Line Type
32842  , p_source_34            IN VARCHAR2
32843  , p_source_34_meaning    IN VARCHAR2
32844 --Reversed Line Number
32845  , p_source_35            IN NUMBER
32846 --Entered Amount
32847  , p_source_41            IN NUMBER
32848 --Accounted Amount
32849  , p_source_43            IN NUMBER
32850 )
32851 IS
32852 
32853 l_component_type              VARCHAR2(80);
32854 l_component_code              VARCHAR2(30);
32855 l_component_type_code         VARCHAR2(1);
32856 l_component_appl_id           INTEGER;
32857 l_amb_context_code            VARCHAR2(30);
32858 l_entity_code                 VARCHAR2(30);
32859 l_event_class_code            VARCHAR2(30);
32860 l_ae_header_id                NUMBER;
32861 l_event_type_code             VARCHAR2(30);
32862 l_line_definition_code        VARCHAR2(30);
32863 l_line_definition_owner_code  VARCHAR2(1);
32864 --
32865 -- adr variables
32866 l_segment                     VARCHAR2(30);
32867 l_ccid                        NUMBER;
32868 l_adr_transaction_coa_id      NUMBER;
32869 l_adr_accounting_coa_id       NUMBER;
32870 l_adr_flexfield_segment_code  VARCHAR2(30);
32871 l_adr_flex_value_set_id       NUMBER;
32872 l_adr_value_type_code         VARCHAR2(30);
32873 l_adr_value_combination_id    NUMBER;
32874 l_adr_value_segment_code      VARCHAR2(30);
32875 
32876 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32877 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32878 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32879 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32880 
32881 -- 4262811 Variables ------------------------------------------------------------------------------------------
32882 l_entered_amt_idx             NUMBER;
32883 l_accted_amt_idx              NUMBER;
32884 l_acc_rev_flag                VARCHAR2(1);
32885 l_accrual_line_num            NUMBER;
32886 l_tmp_amt                     NUMBER;
32887 l_acc_rev_natural_side_code   VARCHAR2(1);
32888 
32889 l_num_entries                 NUMBER;
32890 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32891 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32892 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32893 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32894 l_recog_line_1                NUMBER;
32895 l_recog_line_2                NUMBER;
32896 
32897 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32898 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32899 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32900 
32901 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32902 
32903 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32904 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32905 
32906 ---------------------------------------------------------------------------------------------------------------
32907 
32908 
32909 --
32910 -- bulk performance
32911 --
32912 l_balance_type_code           VARCHAR2(1);
32913 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32914 l_log_module                  VARCHAR2(240);
32915 
32916 --
32917 -- Upgrade strategy
32918 --
32919 l_actual_upg_option           VARCHAR2(1);
32920 l_enc_upg_option           VARCHAR2(1);
32921 
32922 --
32923 BEGIN
32924 --
32925 IF g_log_enabled THEN
32926       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
32927 END IF;
32928 --
32929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32930 
32931       trace
32932          (p_msg      => 'BEGIN of AcctLineType_73'
32936 END IF;
32933          ,p_level    => C_LEVEL_PROCEDURE
32934          ,p_module   => l_log_module);
32935 
32937 --
32938 l_component_type             := 'AMB_JLT';
32939 l_component_code             := 'PA_RECLASS_DEST';
32940 l_component_type_code        := 'S';
32941 l_component_appl_id          :=  275;
32942 l_amb_context_code           := 'DEFAULT';
32943 l_entity_code                := 'EXPENDITURES';
32944 l_event_class_code           := 'PRVDR_RECVR_RECLASS';
32945 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ALL';
32946 l_line_definition_owner_code := 'S';
32947 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
32948 --
32949 l_balance_type_code          := 'A';
32950 l_segment                     := NULL;
32951 l_ccid                        := NULL;
32952 l_adr_transaction_coa_id      := NULL;
32953 l_adr_accounting_coa_id       := NULL;
32954 l_adr_flexfield_segment_code  := NULL;
32955 l_adr_flex_value_set_id       := NULL;
32956 l_adr_value_type_code         := NULL;
32957 l_adr_value_combination_id    := NULL;
32958 l_adr_value_segment_code      := NULL;
32959 
32960 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32961 l_bflow_class_code           := '';    -- 4219869 Business Flow
32962 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32963 l_budgetary_control_flag     := 'N';
32964 
32965 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32966 l_bflow_applied_to_amt       := NULL; -- 5132302
32967 l_entered_amt_idx            := NULL;          -- 4262811
32968 l_accted_amt_idx             := NULL;          -- 4262811
32969 l_acc_rev_flag               := NULL;          -- 4262811
32970 l_accrual_line_num           := NULL;          -- 4262811
32971 l_tmp_amt                    := NULL;          -- 4262811
32972 --
32973  
32974 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32975     l_balance_type_code <> 'B' THEN
32976 
32977    --
32978    XLA_AE_LINES_PKG.SetNewLine;
32979 
32980    p_balance_type_code          := l_balance_type_code;
32981    -- set the flag so later we will know whether the gain loss line needs to be created
32982    
32983    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32984      p_actual_flag :='A';
32985    END IF;
32986 
32987    --
32988    -- bulk performance
32989    --
32990    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32991                                       p_header_num   => 0); -- 4262811
32992    --
32993    -- set accounting line options
32994    --
32995    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32996            p_natural_side_code          => 'D'
32997          , p_gain_or_loss_flag          => 'N'
32998          , p_gl_transfer_mode_code      => 'S'
32999          , p_acct_entry_type_code       => 'A'
33000          , p_switch_side_flag           => 'Y'
33001          , p_merge_duplicate_code       => 'N'
33002          );
33003    --
33004    l_acc_rev_natural_side_code := 'C';  -- 4262811
33005    -- 
33006    --
33007    -- set accounting line type info
33008    --
33009    xla_ae_lines_pkg.SetAcctLineType
33010       (p_component_type             => l_component_type
33011       ,p_event_type_code            => l_event_type_code
33012       ,p_line_definition_owner_code => l_line_definition_owner_code
33013       ,p_line_definition_code       => l_line_definition_code
33014       ,p_accounting_line_code       => l_component_code
33015       ,p_accounting_line_type_code  => l_component_type_code
33016       ,p_accounting_line_appl_id    => l_component_appl_id
33017       ,p_amb_context_code           => l_amb_context_code
33018       ,p_entity_code                => l_entity_code
33019       ,p_event_class_code           => l_event_class_code);
33020    --
33021    -- set accounting class
33022    --
33023    xla_ae_lines_pkg.SetAcctClass(
33024            p_accounting_class_code  => 'RECLASS_DESTINATION'
33025          , p_ae_header_id           => l_ae_header_id
33026          );
33027 
33028    --
33029    -- set rounding class
33030    --
33031    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33032                       'RECLASS_DESTINATION';
33033 
33034    --
33035    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33036    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33037    --
33038    -- bulk performance
33039    --
33040    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33041 
33042    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33043       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33044 
33045    -- 4955764
33046    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33047       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33048 
33049    -- 4458381 Public Sector Enh
33050    
33051    --
33052    -- set accounting attributes for the line type
33053    --
33054    l_entered_amt_idx := 22;
33055    l_accted_amt_idx  := 27;
33056    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33057    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33058    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
33062    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
33059    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
33060    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
33061    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
33063    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
33064    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
33065    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
33066    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
33067    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
33068    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
33069    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
33070    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
33071    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
33072    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
33073    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
33074    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
33075    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
33076    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
33077    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
33078    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
33079    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
33080    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
33081    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
33082    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
33083    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
33084    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
33085    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
33086    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
33087    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
33088    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
33089    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
33090    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
33091    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
33092    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
33093    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
33094    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
33095    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
33096    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
33097    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
33098    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
33099    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
33100    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
33101    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
33102    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
33103    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
33104    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
33105    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
33106    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
33107    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
33108    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
33109    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
33110    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
33111    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
33112    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
33113    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
33114    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
33115    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
33116    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
33117 
33118    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33119    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33120 
33121    ---------------------------------------------------------------------------------------------------------------
33122    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33123    ---------------------------------------------------------------------------------------------------------------
33124    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33125 
33126    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33127    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33128 
33129    IF xla_accounting_cache_pkg.GetValueChar
33130          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33131          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33132    AND l_bflow_method_code = 'PRIOR_ENTRY'
33133 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33134    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33135          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33136        )
33137    THEN
33138          xla_ae_lines_pkg.BflowUpgEntry
33139            (p_business_method_code    => l_bflow_method_code
33140            ,p_business_class_code     => l_bflow_class_code
33141            ,p_balance_type            => l_balance_type_code);
33142    ELSE
33143       NULL;
33144 -- No business flow processing for business flow method of NONE.
33145    END IF;
33146 
33147    --
33148    -- call analytical criteria
33152    -- call description
33149    --
33150    
33151    --
33153    --
33154    -- No description or it is inherited.
33155    --
33156    -- call ADRs
33157    -- Bug 4922099
33158    --
33159    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33160         (NVL(l_actual_upg_option, 'N') = 'O') OR
33161         (NVL(l_enc_upg_option, 'N') = 'O')
33162       )
33163    THEN
33164    NULL;
33165    --
33166    --
33167    
33168   l_ccid := AcctDerRule_10(
33169            p_application_id           => p_application_id
33170          , p_ae_header_id             => l_ae_header_id 
33171 , p_source_4 => p_source_4
33172 , p_source_11 => p_source_11
33173 , p_source_12 => p_source_12
33174          , x_transaction_coa_id       => l_adr_transaction_coa_id
33175          , x_accounting_coa_id        => l_adr_accounting_coa_id
33176          , x_value_type_code          => l_adr_value_type_code
33177          , p_side                     => 'NA'
33178    );
33179 
33180    xla_ae_lines_pkg.set_ccid(
33181     p_code_combination_id          => l_ccid
33182   , p_value_type_code              => l_adr_value_type_code
33183   , p_transaction_coa_id           => l_adr_transaction_coa_id
33184   , p_accounting_coa_id            => l_adr_accounting_coa_id
33185   , p_adr_code                     => 'PA_RECLASS_DEST_ACCT_RULE'
33186   , p_adr_type_code                => 'S'
33187   , p_component_type               => l_component_type
33188   , p_component_code               => l_component_code
33189   , p_component_type_code          => l_component_type_code
33190   , p_component_appl_id            => l_component_appl_id
33191   , p_amb_context_code             => l_amb_context_code
33192   , p_side                         => 'NA'
33193   );
33194 
33195 
33196    --
33197    --
33198    END IF;
33199    --
33200    -- Bug 4922099
33201    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33202           (NVL(l_enc_upg_option, 'N') = 'O')
33203         ) AND
33204         (l_bflow_method_code = 'PRIOR_ENTRY')
33205       )
33206    THEN
33207       IF
33208       --
33209       1 = 2
33210       --
33211       THEN
33212       xla_accounting_err_pkg.build_message
33213                                     (p_appli_s_name            => 'XLA'
33214                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33215                                     ,p_token_1                 => 'LINE_NUMBER'
33216                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33217                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33218                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33219                                                                              l_component_type
33220                                                                             ,l_component_code
33221                                                                             ,l_component_type_code
33222                                                                             ,l_component_appl_id
33223                                                                             ,l_amb_context_code
33224                                                                             ,l_entity_code
33225                                                                             ,l_event_class_code
33226                                                                            )
33227                                     ,p_token_3                 => 'OWNER'
33228                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33229                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33230                                                                           ,p_lookup_code    => l_component_type_code
33231                                                                          )
33232                                     ,p_token_4                 => 'PRODUCT_NAME'
33233                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33234                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33235                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33236                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33237                                     ,p_ae_header_id            =>  NULL
33238                                        );
33239 
33240         IF (C_LEVEL_ERROR>= g_log_level) THEN
33241                  trace
33242                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33243                       ,p_level    => C_LEVEL_ERROR
33244                       ,p_module   => l_log_module);
33245         END IF;
33246       END IF;
33247    END IF;
33248    --
33249    --
33250    ------------------------------------------------------------------------------------------------
33251    -- 4219869 Business Flow
33252    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33253    -- Prior Entry.  Currently, the following code is always generated.
33254    ------------------------------------------------------------------------------------------------
33255    XLA_AE_LINES_PKG.ValidateCurrentLine;
33256 
33260    ------------------------------------------------------------------------------------
33257    ------------------------------------------------------------------------------------
33258    -- 4219869 Business Flow
33259    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33261    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33262 
33263    ----------------------------------------------------------------------------------
33264    -- 4219869 Business Flow
33265    -- Update journal entry status -- Need to generate this within IF <condition>
33266    ----------------------------------------------------------------------------------
33267    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33268          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33269          ,p_balance_type_code => l_balance_type_code
33270          );
33271 
33272    -------------------------------------------------------------------------------------------
33273    -- 4262811 - Generate the Accrual Reversal lines
33274    -------------------------------------------------------------------------------------------
33275    BEGIN
33276       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33277                               (g_array_event(p_event_id).array_value_num('header_index'));
33278       IF l_acc_rev_flag IS NULL THEN
33279          l_acc_rev_flag := 'N';
33280       END IF;
33281    EXCEPTION
33282       WHEN OTHERS THEN
33283          l_acc_rev_flag := 'N';
33284    END;
33285    --
33286    IF (l_acc_rev_flag = 'Y') THEN
33287 
33288        -- 4645092  ------------------------------------------------------------------------------
33289        -- To allow MPA report to determine if it should generate report process
33290        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33291        ------------------------------------------------------------------------------------------
33292 
33293        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33294        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33295 
33296        --
33297        -- Update the line information that should be overwritten
33298        --
33299        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33300                                          p_header_num   => 1);
33301        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33302 
33303        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33304 
33305        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33306           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33307        END IF;
33308 
33309       --
33310       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33311       --
33312       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33313           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33314       ELSE
33315           ---------------------------------------------------------------------------------------------------
33316           -- 4262811a Switch Sign
33317           ---------------------------------------------------------------------------------------------------
33318           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33319           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33320                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33321           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33322                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33323           -- 5132302
33324           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33325                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33326 
33327       END IF;
33328 
33329       -- 4955764
33330       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33331       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33332 
33333 
33334       XLA_AE_LINES_PKG.ValidateCurrentLine;
33335       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33336 
33337       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33338                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33339                ,p_balance_type_code => l_balance_type_code);
33340 
33341    END IF;
33342 
33343    -----------------------------------------------------------------------------------------
33344    -- 4262811 Multiperiod Accounting
33345    -----------------------------------------------------------------------------------------
33346      -- No MPA option is assigned.
33347 
33348 
33349 END IF;
33350 --
33351 
33352 --
33353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33354    trace
33355       (p_msg      => 'END of AcctLineType_73'
33356       ,p_level    => C_LEVEL_PROCEDURE
33357       ,p_module   => l_log_module);
33358 END IF;
33359 --
33360 EXCEPTION
33361   WHEN xla_exceptions_pkg.application_exception THEN
33362       RAISE;
33363   WHEN OTHERS THEN
33367 --
33364        xla_exceptions_pkg.raise_message
33365            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_73');
33366 END AcctLineType_73;
33368 
33369 ---------------------------------------
33370 --
33371 -- PRIVATE FUNCTION
33372 --         AcctLineType_74
33373 --
33374 ---------------------------------------
33375 PROCEDURE AcctLineType_74 (
33376   p_application_id        IN NUMBER
33377  ,p_event_id              IN NUMBER
33378  ,p_calculate_acctd_flag  IN VARCHAR2
33379  ,p_calculate_g_l_flag    IN VARCHAR2
33380  ,p_actual_flag           IN OUT VARCHAR2
33381  ,p_balance_type_code     OUT VARCHAR2
33382  ,p_gain_or_loss_ref      OUT VARCHAR2
33383  
33384 --Allow Account Override Flag
33385  , p_source_4            IN VARCHAR2
33386 --Provider Cost Destination CCID
33387  , p_source_11            IN NUMBER
33388 --Adjustment Provider Cost Destination CCID
33389  , p_source_12            IN NUMBER
33390 --Provider Cost Source CCID
33391  , p_source_13            IN NUMBER
33392 --Reversing Line Flag
33393  , p_source_22            IN VARCHAR2
33394 --Actual Upgrade Credit Accounting Class
33395  , p_source_23            IN VARCHAR2
33396 --Entered Currency Code
33397  , p_source_25            IN VARCHAR2
33398 --Exchange Rate Date
33399  , p_source_27            IN DATE
33400 --Exchange Rate
33401  , p_source_28            IN NUMBER
33402 --Exchange Rate Type
33403  , p_source_29            IN VARCHAR2
33404 --Actual Upgrade Debit Accounting Class
33405  , p_source_30            IN VARCHAR2
33406 --Use Actuals Upgrade Attributes Flag
33407  , p_source_31            IN VARCHAR2
33408 --Expenditure Item ID
33409  , p_source_32            IN NUMBER
33410 --Cost Distribution Line Number
33411  , p_source_33            IN NUMBER
33412 --Line Type
33413  , p_source_34            IN VARCHAR2
33414  , p_source_34_meaning    IN VARCHAR2
33415 --Reversed Line Number
33416  , p_source_35            IN NUMBER
33417 --Entered Amount
33418  , p_source_41            IN NUMBER
33419 --Accounted Amount
33420  , p_source_43            IN NUMBER
33421 )
33422 IS
33423 
33424 l_component_type              VARCHAR2(80);
33425 l_component_code              VARCHAR2(30);
33426 l_component_type_code         VARCHAR2(1);
33427 l_component_appl_id           INTEGER;
33428 l_amb_context_code            VARCHAR2(30);
33429 l_entity_code                 VARCHAR2(30);
33430 l_event_class_code            VARCHAR2(30);
33431 l_ae_header_id                NUMBER;
33432 l_event_type_code             VARCHAR2(30);
33433 l_line_definition_code        VARCHAR2(30);
33434 l_line_definition_owner_code  VARCHAR2(1);
33435 --
33436 -- adr variables
33437 l_segment                     VARCHAR2(30);
33438 l_ccid                        NUMBER;
33439 l_adr_transaction_coa_id      NUMBER;
33440 l_adr_accounting_coa_id       NUMBER;
33441 l_adr_flexfield_segment_code  VARCHAR2(30);
33442 l_adr_flex_value_set_id       NUMBER;
33443 l_adr_value_type_code         VARCHAR2(30);
33444 l_adr_value_combination_id    NUMBER;
33445 l_adr_value_segment_code      VARCHAR2(30);
33446 
33447 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33448 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33449 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33450 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33451 
33452 -- 4262811 Variables ------------------------------------------------------------------------------------------
33453 l_entered_amt_idx             NUMBER;
33454 l_accted_amt_idx              NUMBER;
33455 l_acc_rev_flag                VARCHAR2(1);
33456 l_accrual_line_num            NUMBER;
33457 l_tmp_amt                     NUMBER;
33458 l_acc_rev_natural_side_code   VARCHAR2(1);
33459 
33460 l_num_entries                 NUMBER;
33461 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33462 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33463 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33464 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33465 l_recog_line_1                NUMBER;
33466 l_recog_line_2                NUMBER;
33467 
33468 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33469 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33470 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33471 
33472 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33473 
33474 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33475 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33476 
33477 ---------------------------------------------------------------------------------------------------------------
33478 
33479 
33480 --
33481 -- bulk performance
33482 --
33483 l_balance_type_code           VARCHAR2(1);
33484 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33485 l_log_module                  VARCHAR2(240);
33486 
33487 --
33488 -- Upgrade strategy
33489 --
33490 l_actual_upg_option           VARCHAR2(1);
33491 l_enc_upg_option           VARCHAR2(1);
33492 
33493 --
33494 BEGIN
33495 --
33496 IF g_log_enabled THEN
33500 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33497       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
33498 END IF;
33499 --
33501 
33502       trace
33503          (p_msg      => 'BEGIN of AcctLineType_74'
33504          ,p_level    => C_LEVEL_PROCEDURE
33505          ,p_module   => l_log_module);
33506 
33507 END IF;
33508 --
33509 l_component_type             := 'AMB_JLT';
33510 l_component_code             := 'PA_RECLASS_DEST_ADJ';
33511 l_component_type_code        := 'S';
33512 l_component_appl_id          :=  275;
33513 l_amb_context_code           := 'DEFAULT';
33514 l_entity_code                := 'EXPENDITURES';
33515 l_event_class_code           := 'PRVDR_RECVR_RECLASS_ADJ';
33516 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
33517 l_line_definition_owner_code := 'S';
33518 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
33519 --
33520 l_balance_type_code          := 'A';
33521 l_segment                     := NULL;
33522 l_ccid                        := NULL;
33523 l_adr_transaction_coa_id      := NULL;
33524 l_adr_accounting_coa_id       := NULL;
33525 l_adr_flexfield_segment_code  := NULL;
33526 l_adr_flex_value_set_id       := NULL;
33527 l_adr_value_type_code         := NULL;
33528 l_adr_value_combination_id    := NULL;
33529 l_adr_value_segment_code      := NULL;
33530 
33531 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33532 l_bflow_class_code           := '';    -- 4219869 Business Flow
33533 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33534 l_budgetary_control_flag     := 'N';
33535 
33536 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33537 l_bflow_applied_to_amt       := NULL; -- 5132302
33538 l_entered_amt_idx            := NULL;          -- 4262811
33539 l_accted_amt_idx             := NULL;          -- 4262811
33540 l_acc_rev_flag               := NULL;          -- 4262811
33541 l_accrual_line_num           := NULL;          -- 4262811
33542 l_tmp_amt                    := NULL;          -- 4262811
33543 --
33544  
33545 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33546     l_balance_type_code <> 'B' THEN
33547 
33548    --
33549    XLA_AE_LINES_PKG.SetNewLine;
33550 
33551    p_balance_type_code          := l_balance_type_code;
33552    -- set the flag so later we will know whether the gain loss line needs to be created
33553    
33554    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33555      p_actual_flag :='A';
33556    END IF;
33557 
33558    --
33559    -- bulk performance
33560    --
33561    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33562                                       p_header_num   => 0); -- 4262811
33563    --
33564    -- set accounting line options
33565    --
33566    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33567            p_natural_side_code          => 'D'
33568          , p_gain_or_loss_flag          => 'N'
33569          , p_gl_transfer_mode_code      => 'S'
33570          , p_acct_entry_type_code       => 'A'
33571          , p_switch_side_flag           => 'Y'
33572          , p_merge_duplicate_code       => 'N'
33573          );
33574    --
33575    l_acc_rev_natural_side_code := 'C';  -- 4262811
33576    -- 
33577    --
33578    -- set accounting line type info
33579    --
33580    xla_ae_lines_pkg.SetAcctLineType
33581       (p_component_type             => l_component_type
33582       ,p_event_type_code            => l_event_type_code
33583       ,p_line_definition_owner_code => l_line_definition_owner_code
33584       ,p_line_definition_code       => l_line_definition_code
33585       ,p_accounting_line_code       => l_component_code
33586       ,p_accounting_line_type_code  => l_component_type_code
33587       ,p_accounting_line_appl_id    => l_component_appl_id
33588       ,p_amb_context_code           => l_amb_context_code
33589       ,p_entity_code                => l_entity_code
33590       ,p_event_class_code           => l_event_class_code);
33591    --
33592    -- set accounting class
33593    --
33594    xla_ae_lines_pkg.SetAcctClass(
33595            p_accounting_class_code  => 'RECLASS_DESTINATION'
33596          , p_ae_header_id           => l_ae_header_id
33597          );
33598 
33599    --
33600    -- set rounding class
33601    --
33602    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33603                       'RECLASS_DESTINATION';
33604 
33605    --
33606    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33607    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33608    --
33609    -- bulk performance
33610    --
33611    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33612 
33613    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33614       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33615 
33616    -- 4955764
33617    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33618       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33619 
33620    -- 4458381 Public Sector Enh
33621    
33622    --
33623    -- set accounting attributes for the line type
33624    --
33625    l_entered_amt_idx := 22;
33629    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
33626    l_accted_amt_idx  := 27;
33627    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33628    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33630    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
33631    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
33632    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
33633    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
33634    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
33635    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
33636    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
33637    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
33638    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
33639    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
33640    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
33641    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
33642    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
33643    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
33644    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
33645    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
33646    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
33647    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
33648    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
33649    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
33650    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
33651    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
33652    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
33653    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
33654    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
33655    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
33656    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
33657    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
33658    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
33659    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
33660    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
33661    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
33662    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
33663    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
33664    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
33665    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
33666    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
33667    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
33668    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
33669    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
33670    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
33671    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
33672    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
33673    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
33674    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
33675    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
33676    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
33677    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
33678    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
33679    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
33680    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
33681    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
33682    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
33683    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
33684    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
33685    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
33686    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
33687    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
33688 
33689    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33690    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33691 
33692    ---------------------------------------------------------------------------------------------------------------
33693    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33694    ---------------------------------------------------------------------------------------------------------------
33695    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33696 
33697    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33698    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33699 
33700    IF xla_accounting_cache_pkg.GetValueChar
33701          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33702          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33703    AND l_bflow_method_code = 'PRIOR_ENTRY'
33704 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33705    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33706          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33707        )
33708    THEN
33709          xla_ae_lines_pkg.BflowUpgEntry
33710            (p_business_method_code    => l_bflow_method_code
33711            ,p_business_class_code     => l_bflow_class_code
33715 -- No business flow processing for business flow method of NONE.
33712            ,p_balance_type            => l_balance_type_code);
33713    ELSE
33714       NULL;
33716    END IF;
33717 
33718    --
33719    -- call analytical criteria
33720    --
33721    
33722    --
33723    -- call description
33724    --
33725    -- No description or it is inherited.
33726    --
33727    -- call ADRs
33728    -- Bug 4922099
33729    --
33730    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33731         (NVL(l_actual_upg_option, 'N') = 'O') OR
33732         (NVL(l_enc_upg_option, 'N') = 'O')
33733       )
33734    THEN
33735    NULL;
33736    --
33737    --
33738    
33739   l_ccid := AcctDerRule_11(
33740            p_application_id           => p_application_id
33741          , p_ae_header_id             => l_ae_header_id 
33742 , p_source_4 => p_source_4
33743 , p_source_12 => p_source_12
33744          , x_transaction_coa_id       => l_adr_transaction_coa_id
33745          , x_accounting_coa_id        => l_adr_accounting_coa_id
33746          , x_value_type_code          => l_adr_value_type_code
33747          , p_side                     => 'NA'
33748    );
33749 
33750    xla_ae_lines_pkg.set_ccid(
33751     p_code_combination_id          => l_ccid
33752   , p_value_type_code              => l_adr_value_type_code
33753   , p_transaction_coa_id           => l_adr_transaction_coa_id
33754   , p_accounting_coa_id            => l_adr_accounting_coa_id
33755   , p_adr_code                     => 'PA_RECLASS_DEST_ADJ_ACCT_RULE'
33756   , p_adr_type_code                => 'S'
33757   , p_component_type               => l_component_type
33758   , p_component_code               => l_component_code
33759   , p_component_type_code          => l_component_type_code
33760   , p_component_appl_id            => l_component_appl_id
33761   , p_amb_context_code             => l_amb_context_code
33762   , p_side                         => 'NA'
33763   );
33764 
33765 
33766    --
33767    --
33768    END IF;
33769    --
33770    -- Bug 4922099
33771    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33772           (NVL(l_enc_upg_option, 'N') = 'O')
33773         ) AND
33774         (l_bflow_method_code = 'PRIOR_ENTRY')
33775       )
33776    THEN
33777       IF
33778       --
33779       1 = 2
33780       --
33781       THEN
33782       xla_accounting_err_pkg.build_message
33783                                     (p_appli_s_name            => 'XLA'
33784                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33785                                     ,p_token_1                 => 'LINE_NUMBER'
33786                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33787                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33788                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33789                                                                              l_component_type
33790                                                                             ,l_component_code
33791                                                                             ,l_component_type_code
33792                                                                             ,l_component_appl_id
33793                                                                             ,l_amb_context_code
33794                                                                             ,l_entity_code
33795                                                                             ,l_event_class_code
33796                                                                            )
33797                                     ,p_token_3                 => 'OWNER'
33798                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33799                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33800                                                                           ,p_lookup_code    => l_component_type_code
33801                                                                          )
33802                                     ,p_token_4                 => 'PRODUCT_NAME'
33803                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33804                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33805                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33806                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33807                                     ,p_ae_header_id            =>  NULL
33808                                        );
33809 
33810         IF (C_LEVEL_ERROR>= g_log_level) THEN
33811                  trace
33812                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33813                       ,p_level    => C_LEVEL_ERROR
33814                       ,p_module   => l_log_module);
33815         END IF;
33816       END IF;
33817    END IF;
33818    --
33819    --
33820    ------------------------------------------------------------------------------------------------
33821    -- 4219869 Business Flow
33822    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33826 
33823    -- Prior Entry.  Currently, the following code is always generated.
33824    ------------------------------------------------------------------------------------------------
33825    XLA_AE_LINES_PKG.ValidateCurrentLine;
33827    ------------------------------------------------------------------------------------
33828    -- 4219869 Business Flow
33829    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33830    ------------------------------------------------------------------------------------
33831    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33832 
33833    ----------------------------------------------------------------------------------
33834    -- 4219869 Business Flow
33835    -- Update journal entry status -- Need to generate this within IF <condition>
33836    ----------------------------------------------------------------------------------
33837    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33838          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33839          ,p_balance_type_code => l_balance_type_code
33840          );
33841 
33842    -------------------------------------------------------------------------------------------
33843    -- 4262811 - Generate the Accrual Reversal lines
33844    -------------------------------------------------------------------------------------------
33845    BEGIN
33846       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33847                               (g_array_event(p_event_id).array_value_num('header_index'));
33848       IF l_acc_rev_flag IS NULL THEN
33849          l_acc_rev_flag := 'N';
33850       END IF;
33851    EXCEPTION
33852       WHEN OTHERS THEN
33853          l_acc_rev_flag := 'N';
33854    END;
33855    --
33856    IF (l_acc_rev_flag = 'Y') THEN
33857 
33858        -- 4645092  ------------------------------------------------------------------------------
33859        -- To allow MPA report to determine if it should generate report process
33860        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33861        ------------------------------------------------------------------------------------------
33862 
33863        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33864        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33865 
33866        --
33867        -- Update the line information that should be overwritten
33868        --
33869        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33870                                          p_header_num   => 1);
33871        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33872 
33873        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33874 
33875        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33876           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33877        END IF;
33878 
33879       --
33880       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33881       --
33882       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33883           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33884       ELSE
33885           ---------------------------------------------------------------------------------------------------
33886           -- 4262811a Switch Sign
33887           ---------------------------------------------------------------------------------------------------
33888           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33889           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33890                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33891           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33892                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33893           -- 5132302
33894           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33895                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33896 
33897       END IF;
33898 
33899       -- 4955764
33900       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33901       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33902 
33903 
33904       XLA_AE_LINES_PKG.ValidateCurrentLine;
33905       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33906 
33907       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33908                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33909                ,p_balance_type_code => l_balance_type_code);
33910 
33911    END IF;
33912 
33913    -----------------------------------------------------------------------------------------
33914    -- 4262811 Multiperiod Accounting
33915    -----------------------------------------------------------------------------------------
33916      -- No MPA option is assigned.
33917 
33918 
33919 END IF;
33920 --
33921 
33922 --
33923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33924    trace
33925       (p_msg      => 'END of AcctLineType_74'
33929 --
33926       ,p_level    => C_LEVEL_PROCEDURE
33927       ,p_module   => l_log_module);
33928 END IF;
33930 EXCEPTION
33931   WHEN xla_exceptions_pkg.application_exception THEN
33932       RAISE;
33933   WHEN OTHERS THEN
33934        xla_exceptions_pkg.raise_message
33935            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_74');
33936 END AcctLineType_74;
33937 --
33938 
33939 ---------------------------------------
33940 --
33941 -- PRIVATE FUNCTION
33942 --         AcctLineType_75
33943 --
33944 ---------------------------------------
33945 PROCEDURE AcctLineType_75 (
33946   p_application_id        IN NUMBER
33947  ,p_event_id              IN NUMBER
33948  ,p_calculate_acctd_flag  IN VARCHAR2
33949  ,p_calculate_g_l_flag    IN VARCHAR2
33950  ,p_actual_flag           IN OUT VARCHAR2
33951  ,p_balance_type_code     OUT VARCHAR2
33952  ,p_gain_or_loss_ref      OUT VARCHAR2
33953  
33954 --Allow Account Override Flag
33955  , p_source_4            IN VARCHAR2
33956 --Provider Cost Destination CCID
33957  , p_source_11            IN NUMBER
33958 --Provider Cost Source CCID
33959  , p_source_13            IN NUMBER
33960 --Adjustment Provider Cost Source CCID
33961  , p_source_14            IN NUMBER
33962 --Reversing Line Flag
33963  , p_source_22            IN VARCHAR2
33964 --Actual Upgrade Credit Accounting Class
33965  , p_source_23            IN VARCHAR2
33966 --Entered Currency Code
33967  , p_source_25            IN VARCHAR2
33968 --Exchange Rate Date
33969  , p_source_27            IN DATE
33970 --Exchange Rate
33971  , p_source_28            IN NUMBER
33972 --Exchange Rate Type
33973  , p_source_29            IN VARCHAR2
33974 --Actual Upgrade Debit Accounting Class
33975  , p_source_30            IN VARCHAR2
33976 --Use Actuals Upgrade Attributes Flag
33977  , p_source_31            IN VARCHAR2
33978 --Expenditure Item ID
33979  , p_source_32            IN NUMBER
33980 --Cost Distribution Line Number
33981  , p_source_33            IN NUMBER
33982 --Line Type
33983  , p_source_34            IN VARCHAR2
33984  , p_source_34_meaning    IN VARCHAR2
33985 --Reversed Line Number
33986  , p_source_35            IN NUMBER
33987 --Entered Amount
33988  , p_source_41            IN NUMBER
33989 --Accounted Amount
33990  , p_source_43            IN NUMBER
33991 )
33992 IS
33993 
33994 l_component_type              VARCHAR2(80);
33995 l_component_code              VARCHAR2(30);
33996 l_component_type_code         VARCHAR2(1);
33997 l_component_appl_id           INTEGER;
33998 l_amb_context_code            VARCHAR2(30);
33999 l_entity_code                 VARCHAR2(30);
34000 l_event_class_code            VARCHAR2(30);
34001 l_ae_header_id                NUMBER;
34002 l_event_type_code             VARCHAR2(30);
34003 l_line_definition_code        VARCHAR2(30);
34004 l_line_definition_owner_code  VARCHAR2(1);
34005 --
34006 -- adr variables
34007 l_segment                     VARCHAR2(30);
34008 l_ccid                        NUMBER;
34009 l_adr_transaction_coa_id      NUMBER;
34010 l_adr_accounting_coa_id       NUMBER;
34011 l_adr_flexfield_segment_code  VARCHAR2(30);
34012 l_adr_flex_value_set_id       NUMBER;
34013 l_adr_value_type_code         VARCHAR2(30);
34014 l_adr_value_combination_id    NUMBER;
34015 l_adr_value_segment_code      VARCHAR2(30);
34016 
34017 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34018 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34019 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34020 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34021 
34022 -- 4262811 Variables ------------------------------------------------------------------------------------------
34023 l_entered_amt_idx             NUMBER;
34024 l_accted_amt_idx              NUMBER;
34025 l_acc_rev_flag                VARCHAR2(1);
34026 l_accrual_line_num            NUMBER;
34027 l_tmp_amt                     NUMBER;
34028 l_acc_rev_natural_side_code   VARCHAR2(1);
34029 
34030 l_num_entries                 NUMBER;
34031 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34032 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34033 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34034 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34035 l_recog_line_1                NUMBER;
34036 l_recog_line_2                NUMBER;
34037 
34038 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34039 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34040 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34041 
34042 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34043 
34044 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34045 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34046 
34047 ---------------------------------------------------------------------------------------------------------------
34048 
34049 
34050 --
34051 -- bulk performance
34052 --
34053 l_balance_type_code           VARCHAR2(1);
34054 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34055 l_log_module                  VARCHAR2(240);
34056 
34057 --
34061 l_enc_upg_option           VARCHAR2(1);
34058 -- Upgrade strategy
34059 --
34060 l_actual_upg_option           VARCHAR2(1);
34062 
34063 --
34064 BEGIN
34065 --
34066 IF g_log_enabled THEN
34067       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
34068 END IF;
34069 --
34070 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34071 
34072       trace
34073          (p_msg      => 'BEGIN of AcctLineType_75'
34074          ,p_level    => C_LEVEL_PROCEDURE
34075          ,p_module   => l_log_module);
34076 
34077 END IF;
34078 --
34079 l_component_type             := 'AMB_JLT';
34080 l_component_code             := 'PA_RECLASS_SOURCE';
34081 l_component_type_code        := 'S';
34082 l_component_appl_id          :=  275;
34083 l_amb_context_code           := 'DEFAULT';
34084 l_entity_code                := 'EXPENDITURES';
34085 l_event_class_code           := 'PRVDR_RECVR_RECLASS';
34086 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ALL';
34087 l_line_definition_owner_code := 'S';
34088 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
34089 --
34090 l_balance_type_code          := 'A';
34091 l_segment                     := NULL;
34092 l_ccid                        := NULL;
34093 l_adr_transaction_coa_id      := NULL;
34094 l_adr_accounting_coa_id       := NULL;
34095 l_adr_flexfield_segment_code  := NULL;
34096 l_adr_flex_value_set_id       := NULL;
34097 l_adr_value_type_code         := NULL;
34098 l_adr_value_combination_id    := NULL;
34099 l_adr_value_segment_code      := NULL;
34100 
34101 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34102 l_bflow_class_code           := '';    -- 4219869 Business Flow
34103 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34104 l_budgetary_control_flag     := 'N';
34105 
34106 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34107 l_bflow_applied_to_amt       := NULL; -- 5132302
34108 l_entered_amt_idx            := NULL;          -- 4262811
34109 l_accted_amt_idx             := NULL;          -- 4262811
34110 l_acc_rev_flag               := NULL;          -- 4262811
34111 l_accrual_line_num           := NULL;          -- 4262811
34112 l_tmp_amt                    := NULL;          -- 4262811
34113 --
34114  
34115 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34116     l_balance_type_code <> 'B' THEN
34117 
34118    --
34119    XLA_AE_LINES_PKG.SetNewLine;
34120 
34121    p_balance_type_code          := l_balance_type_code;
34122    -- set the flag so later we will know whether the gain loss line needs to be created
34123    
34124    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34125      p_actual_flag :='A';
34126    END IF;
34127 
34128    --
34129    -- bulk performance
34130    --
34131    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34132                                       p_header_num   => 0); -- 4262811
34133    --
34134    -- set accounting line options
34135    --
34136    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34137            p_natural_side_code          => 'C'
34138          , p_gain_or_loss_flag          => 'N'
34139          , p_gl_transfer_mode_code      => 'S'
34140          , p_acct_entry_type_code       => 'A'
34141          , p_switch_side_flag           => 'Y'
34142          , p_merge_duplicate_code       => 'N'
34143          );
34144    --
34145    l_acc_rev_natural_side_code := 'D';  -- 4262811
34146    -- 
34147    --
34148    -- set accounting line type info
34149    --
34150    xla_ae_lines_pkg.SetAcctLineType
34151       (p_component_type             => l_component_type
34152       ,p_event_type_code            => l_event_type_code
34153       ,p_line_definition_owner_code => l_line_definition_owner_code
34154       ,p_line_definition_code       => l_line_definition_code
34155       ,p_accounting_line_code       => l_component_code
34156       ,p_accounting_line_type_code  => l_component_type_code
34157       ,p_accounting_line_appl_id    => l_component_appl_id
34158       ,p_amb_context_code           => l_amb_context_code
34159       ,p_entity_code                => l_entity_code
34160       ,p_event_class_code           => l_event_class_code);
34161    --
34162    -- set accounting class
34163    --
34164    xla_ae_lines_pkg.SetAcctClass(
34165            p_accounting_class_code  => 'RECLASS_SOURCE'
34166          , p_ae_header_id           => l_ae_header_id
34167          );
34168 
34169    --
34170    -- set rounding class
34171    --
34172    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34173                       'RECLASS_SOURCE';
34174 
34175    --
34176    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34177    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34178    --
34179    -- bulk performance
34180    --
34181    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34182 
34183    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34184       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34185 
34186    -- 4955764
34187    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34188       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34192    --
34189 
34190    -- 4458381 Public Sector Enh
34191    
34193    -- set accounting attributes for the line type
34194    --
34195    l_entered_amt_idx := 22;
34196    l_accted_amt_idx  := 27;
34197    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34198    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34199    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
34200    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
34201    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
34202    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
34203    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
34204    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
34205    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
34206    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
34207    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
34208    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
34209    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
34210    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
34211    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
34212    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
34213    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
34214    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
34215    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
34216    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
34217    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
34218    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
34219    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
34220    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
34221    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
34222    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
34223    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
34224    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
34225    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
34226    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
34227    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
34228    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
34229    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
34230    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
34231    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
34232    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
34233    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
34234    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
34235    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
34236    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
34237    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
34238    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
34239    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
34240    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
34241    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
34242    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
34243    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
34244    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
34245    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
34246    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
34247    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
34248    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
34249    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
34250    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
34251    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
34252    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
34253    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
34254    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
34255    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
34256    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
34257    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
34258 
34259    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34260    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34261 
34262    ---------------------------------------------------------------------------------------------------------------
34263    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34264    ---------------------------------------------------------------------------------------------------------------
34265    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34266 
34267    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34268    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34269 
34270    IF xla_accounting_cache_pkg.GetValueChar
34271          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34272          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34273    AND l_bflow_method_code = 'PRIOR_ENTRY'
34274 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34275    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34276          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34277        )
34278    THEN
34282            ,p_balance_type            => l_balance_type_code);
34279          xla_ae_lines_pkg.BflowUpgEntry
34280            (p_business_method_code    => l_bflow_method_code
34281            ,p_business_class_code     => l_bflow_class_code
34283    ELSE
34284       NULL;
34285 -- No business flow processing for business flow method of NONE.
34286    END IF;
34287 
34288    --
34289    -- call analytical criteria
34290    --
34291    
34292    --
34293    -- call description
34294    --
34295    -- No description or it is inherited.
34296    --
34297    -- call ADRs
34298    -- Bug 4922099
34299    --
34300    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34301         (NVL(l_actual_upg_option, 'N') = 'O') OR
34302         (NVL(l_enc_upg_option, 'N') = 'O')
34303       )
34304    THEN
34305    NULL;
34306    --
34307    --
34308    
34309   l_ccid := AcctDerRule_12(
34310            p_application_id           => p_application_id
34311          , p_ae_header_id             => l_ae_header_id 
34312 , p_source_4 => p_source_4
34313 , p_source_13 => p_source_13
34314 , p_source_14 => p_source_14
34315          , x_transaction_coa_id       => l_adr_transaction_coa_id
34316          , x_accounting_coa_id        => l_adr_accounting_coa_id
34317          , x_value_type_code          => l_adr_value_type_code
34318          , p_side                     => 'NA'
34319    );
34320 
34321    xla_ae_lines_pkg.set_ccid(
34322     p_code_combination_id          => l_ccid
34323   , p_value_type_code              => l_adr_value_type_code
34324   , p_transaction_coa_id           => l_adr_transaction_coa_id
34325   , p_accounting_coa_id            => l_adr_accounting_coa_id
34326   , p_adr_code                     => 'PA_RECLASS_SOURCE_ACCT_RULE'
34327   , p_adr_type_code                => 'S'
34328   , p_component_type               => l_component_type
34329   , p_component_code               => l_component_code
34330   , p_component_type_code          => l_component_type_code
34331   , p_component_appl_id            => l_component_appl_id
34332   , p_amb_context_code             => l_amb_context_code
34333   , p_side                         => 'NA'
34334   );
34335 
34336 
34337    --
34338    --
34339    END IF;
34340    --
34341    -- Bug 4922099
34342    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34343           (NVL(l_enc_upg_option, 'N') = 'O')
34344         ) AND
34345         (l_bflow_method_code = 'PRIOR_ENTRY')
34346       )
34347    THEN
34348       IF
34349       --
34350       1 = 2
34351       --
34352       THEN
34353       xla_accounting_err_pkg.build_message
34354                                     (p_appli_s_name            => 'XLA'
34355                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34356                                     ,p_token_1                 => 'LINE_NUMBER'
34357                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34358                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34359                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34360                                                                              l_component_type
34361                                                                             ,l_component_code
34362                                                                             ,l_component_type_code
34363                                                                             ,l_component_appl_id
34364                                                                             ,l_amb_context_code
34365                                                                             ,l_entity_code
34366                                                                             ,l_event_class_code
34367                                                                            )
34368                                     ,p_token_3                 => 'OWNER'
34369                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34370                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34371                                                                           ,p_lookup_code    => l_component_type_code
34372                                                                          )
34373                                     ,p_token_4                 => 'PRODUCT_NAME'
34374                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34375                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34376                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34377                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34378                                     ,p_ae_header_id            =>  NULL
34379                                        );
34380 
34381         IF (C_LEVEL_ERROR>= g_log_level) THEN
34382                  trace
34383                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34384                       ,p_level    => C_LEVEL_ERROR
34385                       ,p_module   => l_log_module);
34386         END IF;
34387       END IF;
34388    END IF;
34389    --
34390    --
34391    ------------------------------------------------------------------------------------------------
34395    ------------------------------------------------------------------------------------------------
34392    -- 4219869 Business Flow
34393    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34394    -- Prior Entry.  Currently, the following code is always generated.
34396    XLA_AE_LINES_PKG.ValidateCurrentLine;
34397 
34398    ------------------------------------------------------------------------------------
34399    -- 4219869 Business Flow
34400    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34401    ------------------------------------------------------------------------------------
34402    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34403 
34404    ----------------------------------------------------------------------------------
34405    -- 4219869 Business Flow
34406    -- Update journal entry status -- Need to generate this within IF <condition>
34407    ----------------------------------------------------------------------------------
34408    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34409          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34410          ,p_balance_type_code => l_balance_type_code
34411          );
34412 
34413    -------------------------------------------------------------------------------------------
34414    -- 4262811 - Generate the Accrual Reversal lines
34415    -------------------------------------------------------------------------------------------
34416    BEGIN
34417       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34418                               (g_array_event(p_event_id).array_value_num('header_index'));
34419       IF l_acc_rev_flag IS NULL THEN
34420          l_acc_rev_flag := 'N';
34421       END IF;
34422    EXCEPTION
34423       WHEN OTHERS THEN
34424          l_acc_rev_flag := 'N';
34425    END;
34426    --
34427    IF (l_acc_rev_flag = 'Y') THEN
34428 
34429        -- 4645092  ------------------------------------------------------------------------------
34430        -- To allow MPA report to determine if it should generate report process
34431        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34432        ------------------------------------------------------------------------------------------
34433 
34434        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34435        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34436 
34437        --
34438        -- Update the line information that should be overwritten
34439        --
34440        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34441                                          p_header_num   => 1);
34442        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34443 
34444        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34445 
34446        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34447           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34448        END IF;
34449 
34450       --
34451       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34452       --
34453       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34454           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34455       ELSE
34456           ---------------------------------------------------------------------------------------------------
34457           -- 4262811a Switch Sign
34458           ---------------------------------------------------------------------------------------------------
34459           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34460           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34461                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34462           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34463                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34464           -- 5132302
34465           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34466                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34467 
34468       END IF;
34469 
34470       -- 4955764
34471       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34473 
34474 
34475       XLA_AE_LINES_PKG.ValidateCurrentLine;
34476       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34477 
34478       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34479                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34480                ,p_balance_type_code => l_balance_type_code);
34481 
34482    END IF;
34483 
34484    -----------------------------------------------------------------------------------------
34485    -- 4262811 Multiperiod Accounting
34486    -----------------------------------------------------------------------------------------
34487      -- No MPA option is assigned.
34488 
34489 
34490 END IF;
34491 --
34492 
34493 --
34494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34498       ,p_module   => l_log_module);
34495    trace
34496       (p_msg      => 'END of AcctLineType_75'
34497       ,p_level    => C_LEVEL_PROCEDURE
34499 END IF;
34500 --
34501 EXCEPTION
34502   WHEN xla_exceptions_pkg.application_exception THEN
34503       RAISE;
34504   WHEN OTHERS THEN
34505        xla_exceptions_pkg.raise_message
34506            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_75');
34507 END AcctLineType_75;
34508 --
34509 
34510 ---------------------------------------
34511 --
34512 -- PRIVATE FUNCTION
34513 --         AcctLineType_76
34514 --
34515 ---------------------------------------
34516 PROCEDURE AcctLineType_76 (
34517   p_application_id        IN NUMBER
34518  ,p_event_id              IN NUMBER
34519  ,p_calculate_acctd_flag  IN VARCHAR2
34520  ,p_calculate_g_l_flag    IN VARCHAR2
34521  ,p_actual_flag           IN OUT VARCHAR2
34522  ,p_balance_type_code     OUT VARCHAR2
34523  ,p_gain_or_loss_ref      OUT VARCHAR2
34524  
34525 --Allow Account Override Flag
34526  , p_source_4            IN VARCHAR2
34527 --Provider Cost Destination CCID
34528  , p_source_11            IN NUMBER
34529 --Provider Cost Source CCID
34530  , p_source_13            IN NUMBER
34531 --Adjustment Provider Cost Source CCID
34532  , p_source_14            IN NUMBER
34533 --Reversing Line Flag
34534  , p_source_22            IN VARCHAR2
34535 --Actual Upgrade Credit Accounting Class
34536  , p_source_23            IN VARCHAR2
34537 --Entered Currency Code
34538  , p_source_25            IN VARCHAR2
34539 --Exchange Rate Date
34540  , p_source_27            IN DATE
34541 --Exchange Rate
34542  , p_source_28            IN NUMBER
34543 --Exchange Rate Type
34544  , p_source_29            IN VARCHAR2
34545 --Actual Upgrade Debit Accounting Class
34546  , p_source_30            IN VARCHAR2
34547 --Use Actuals Upgrade Attributes Flag
34548  , p_source_31            IN VARCHAR2
34549 --Expenditure Item ID
34550  , p_source_32            IN NUMBER
34551 --Cost Distribution Line Number
34552  , p_source_33            IN NUMBER
34553 --Line Type
34554  , p_source_34            IN VARCHAR2
34555  , p_source_34_meaning    IN VARCHAR2
34556 --Reversed Line Number
34557  , p_source_35            IN NUMBER
34558 --Entered Amount
34559  , p_source_41            IN NUMBER
34560 --Accounted Amount
34561  , p_source_43            IN NUMBER
34562 )
34563 IS
34564 
34565 l_component_type              VARCHAR2(80);
34566 l_component_code              VARCHAR2(30);
34567 l_component_type_code         VARCHAR2(1);
34568 l_component_appl_id           INTEGER;
34569 l_amb_context_code            VARCHAR2(30);
34570 l_entity_code                 VARCHAR2(30);
34571 l_event_class_code            VARCHAR2(30);
34572 l_ae_header_id                NUMBER;
34573 l_event_type_code             VARCHAR2(30);
34574 l_line_definition_code        VARCHAR2(30);
34575 l_line_definition_owner_code  VARCHAR2(1);
34576 --
34577 -- adr variables
34578 l_segment                     VARCHAR2(30);
34579 l_ccid                        NUMBER;
34580 l_adr_transaction_coa_id      NUMBER;
34581 l_adr_accounting_coa_id       NUMBER;
34582 l_adr_flexfield_segment_code  VARCHAR2(30);
34583 l_adr_flex_value_set_id       NUMBER;
34584 l_adr_value_type_code         VARCHAR2(30);
34585 l_adr_value_combination_id    NUMBER;
34586 l_adr_value_segment_code      VARCHAR2(30);
34587 
34588 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34589 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34590 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34591 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34592 
34593 -- 4262811 Variables ------------------------------------------------------------------------------------------
34594 l_entered_amt_idx             NUMBER;
34595 l_accted_amt_idx              NUMBER;
34596 l_acc_rev_flag                VARCHAR2(1);
34597 l_accrual_line_num            NUMBER;
34598 l_tmp_amt                     NUMBER;
34599 l_acc_rev_natural_side_code   VARCHAR2(1);
34600 
34601 l_num_entries                 NUMBER;
34602 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34603 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34604 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34605 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34606 l_recog_line_1                NUMBER;
34607 l_recog_line_2                NUMBER;
34608 
34609 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34610 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34611 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34612 
34613 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34614 
34615 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34616 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34617 
34618 ---------------------------------------------------------------------------------------------------------------
34619 
34620 
34621 --
34622 -- bulk performance
34623 --
34624 l_balance_type_code           VARCHAR2(1);
34625 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34629 -- Upgrade strategy
34626 l_log_module                  VARCHAR2(240);
34627 
34628 --
34630 --
34631 l_actual_upg_option           VARCHAR2(1);
34632 l_enc_upg_option           VARCHAR2(1);
34633 
34634 --
34635 BEGIN
34636 --
34637 IF g_log_enabled THEN
34638       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
34639 END IF;
34640 --
34641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34642 
34643       trace
34644          (p_msg      => 'BEGIN of AcctLineType_76'
34645          ,p_level    => C_LEVEL_PROCEDURE
34646          ,p_module   => l_log_module);
34647 
34648 END IF;
34649 --
34650 l_component_type             := 'AMB_JLT';
34651 l_component_code             := 'PA_RECLASS_SOURCE_ADJ';
34652 l_component_type_code        := 'S';
34653 l_component_appl_id          :=  275;
34654 l_amb_context_code           := 'DEFAULT';
34655 l_entity_code                := 'EXPENDITURES';
34656 l_event_class_code           := 'PRVDR_RECVR_RECLASS_ADJ';
34657 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
34658 l_line_definition_owner_code := 'S';
34659 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
34660 --
34661 l_balance_type_code          := 'A';
34662 l_segment                     := NULL;
34663 l_ccid                        := NULL;
34664 l_adr_transaction_coa_id      := NULL;
34665 l_adr_accounting_coa_id       := NULL;
34666 l_adr_flexfield_segment_code  := NULL;
34667 l_adr_flex_value_set_id       := NULL;
34668 l_adr_value_type_code         := NULL;
34669 l_adr_value_combination_id    := NULL;
34670 l_adr_value_segment_code      := NULL;
34671 
34672 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34673 l_bflow_class_code           := '';    -- 4219869 Business Flow
34674 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34675 l_budgetary_control_flag     := 'N';
34676 
34677 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34678 l_bflow_applied_to_amt       := NULL; -- 5132302
34679 l_entered_amt_idx            := NULL;          -- 4262811
34680 l_accted_amt_idx             := NULL;          -- 4262811
34681 l_acc_rev_flag               := NULL;          -- 4262811
34682 l_accrual_line_num           := NULL;          -- 4262811
34683 l_tmp_amt                    := NULL;          -- 4262811
34684 --
34685  
34686 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34687     l_balance_type_code <> 'B' THEN
34688 
34689    --
34690    XLA_AE_LINES_PKG.SetNewLine;
34691 
34692    p_balance_type_code          := l_balance_type_code;
34693    -- set the flag so later we will know whether the gain loss line needs to be created
34694    
34695    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34696      p_actual_flag :='A';
34697    END IF;
34698 
34699    --
34700    -- bulk performance
34701    --
34702    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34703                                       p_header_num   => 0); -- 4262811
34704    --
34705    -- set accounting line options
34706    --
34707    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34708            p_natural_side_code          => 'C'
34709          , p_gain_or_loss_flag          => 'N'
34710          , p_gl_transfer_mode_code      => 'S'
34711          , p_acct_entry_type_code       => 'A'
34712          , p_switch_side_flag           => 'Y'
34713          , p_merge_duplicate_code       => 'N'
34714          );
34715    --
34716    l_acc_rev_natural_side_code := 'D';  -- 4262811
34717    -- 
34718    --
34719    -- set accounting line type info
34720    --
34721    xla_ae_lines_pkg.SetAcctLineType
34722       (p_component_type             => l_component_type
34723       ,p_event_type_code            => l_event_type_code
34724       ,p_line_definition_owner_code => l_line_definition_owner_code
34725       ,p_line_definition_code       => l_line_definition_code
34726       ,p_accounting_line_code       => l_component_code
34727       ,p_accounting_line_type_code  => l_component_type_code
34728       ,p_accounting_line_appl_id    => l_component_appl_id
34729       ,p_amb_context_code           => l_amb_context_code
34730       ,p_entity_code                => l_entity_code
34731       ,p_event_class_code           => l_event_class_code);
34732    --
34733    -- set accounting class
34734    --
34735    xla_ae_lines_pkg.SetAcctClass(
34736            p_accounting_class_code  => 'RECLASS_SOURCE'
34737          , p_ae_header_id           => l_ae_header_id
34738          );
34739 
34740    --
34741    -- set rounding class
34742    --
34743    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34744                       'RECLASS_SOURCE';
34745 
34746    --
34747    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34748    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34749    --
34750    -- bulk performance
34751    --
34752    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34753 
34754    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34755       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34756 
34757    -- 4955764
34758    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34762    
34759       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34760 
34761    -- 4458381 Public Sector Enh
34763    --
34764    -- set accounting attributes for the line type
34765    --
34766    l_entered_amt_idx := 22;
34767    l_accted_amt_idx  := 27;
34768    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34769    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34770    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
34771    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
34772    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
34773    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
34774    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_13);
34775    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
34776    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
34777    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
34778    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
34779    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
34780    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
34781    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
34782    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
34783    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
34784    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
34785    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
34786    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
34787    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
34788    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
34789    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
34790    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_11);
34791    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
34792    l_rec_acct_attrs.array_num_value(12)  := p_source_41;
34793    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
34794    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
34795    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
34796    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
34797    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
34798    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
34799    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
34800    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
34801    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
34802    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
34803    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
34804    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
34805    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
34806    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_32);
34807    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
34808    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_33);
34809    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
34810    l_rec_acct_attrs.array_char_value(21)  := p_source_34;
34811    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
34812    l_rec_acct_attrs.array_num_value(22)  := p_source_41;
34813    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
34814    l_rec_acct_attrs.array_char_value(23)  := p_source_25;
34815    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
34816    l_rec_acct_attrs.array_date_value(24)  := p_source_27;
34817    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
34818    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
34819    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
34820    l_rec_acct_attrs.array_char_value(26)  := p_source_29;
34821    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
34822    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
34823    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
34824    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_32);
34825    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
34826    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_35);
34827    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
34828    l_rec_acct_attrs.array_char_value(30)  := p_source_34;
34829 
34830    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34831    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34832 
34833    ---------------------------------------------------------------------------------------------------------------
34834    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34835    ---------------------------------------------------------------------------------------------------------------
34836    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34837 
34838    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34839    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34840 
34841    IF xla_accounting_cache_pkg.GetValueChar
34842          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34843          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34844    AND l_bflow_method_code = 'PRIOR_ENTRY'
34845 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34849    THEN
34846    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34847          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34848        )
34850          xla_ae_lines_pkg.BflowUpgEntry
34851            (p_business_method_code    => l_bflow_method_code
34852            ,p_business_class_code     => l_bflow_class_code
34853            ,p_balance_type            => l_balance_type_code);
34854    ELSE
34855       NULL;
34856 -- No business flow processing for business flow method of NONE.
34857    END IF;
34858 
34859    --
34860    -- call analytical criteria
34861    --
34862    
34863    --
34864    -- call description
34865    --
34866    -- No description or it is inherited.
34867    --
34868    -- call ADRs
34869    -- Bug 4922099
34870    --
34871    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34872         (NVL(l_actual_upg_option, 'N') = 'O') OR
34873         (NVL(l_enc_upg_option, 'N') = 'O')
34874       )
34875    THEN
34876    NULL;
34877    --
34878    --
34879    
34880   l_ccid := AcctDerRule_13(
34881            p_application_id           => p_application_id
34882          , p_ae_header_id             => l_ae_header_id 
34883 , p_source_4 => p_source_4
34884 , p_source_14 => p_source_14
34885          , x_transaction_coa_id       => l_adr_transaction_coa_id
34886          , x_accounting_coa_id        => l_adr_accounting_coa_id
34887          , x_value_type_code          => l_adr_value_type_code
34888          , p_side                     => 'NA'
34889    );
34890 
34891    xla_ae_lines_pkg.set_ccid(
34892     p_code_combination_id          => l_ccid
34893   , p_value_type_code              => l_adr_value_type_code
34894   , p_transaction_coa_id           => l_adr_transaction_coa_id
34895   , p_accounting_coa_id            => l_adr_accounting_coa_id
34896   , p_adr_code                     => 'PA_RECLASS_SRC_ADJ_ACCT_RULE'
34897   , p_adr_type_code                => 'S'
34898   , p_component_type               => l_component_type
34899   , p_component_code               => l_component_code
34900   , p_component_type_code          => l_component_type_code
34901   , p_component_appl_id            => l_component_appl_id
34902   , p_amb_context_code             => l_amb_context_code
34903   , p_side                         => 'NA'
34904   );
34905 
34906 
34907    --
34908    --
34909    END IF;
34910    --
34911    -- Bug 4922099
34912    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34913           (NVL(l_enc_upg_option, 'N') = 'O')
34914         ) AND
34915         (l_bflow_method_code = 'PRIOR_ENTRY')
34916       )
34917    THEN
34918       IF
34919       --
34920       1 = 2
34921       --
34922       THEN
34923       xla_accounting_err_pkg.build_message
34924                                     (p_appli_s_name            => 'XLA'
34925                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34926                                     ,p_token_1                 => 'LINE_NUMBER'
34927                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34928                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34929                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34930                                                                              l_component_type
34931                                                                             ,l_component_code
34932                                                                             ,l_component_type_code
34933                                                                             ,l_component_appl_id
34934                                                                             ,l_amb_context_code
34935                                                                             ,l_entity_code
34936                                                                             ,l_event_class_code
34937                                                                            )
34938                                     ,p_token_3                 => 'OWNER'
34939                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34940                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34941                                                                           ,p_lookup_code    => l_component_type_code
34942                                                                          )
34943                                     ,p_token_4                 => 'PRODUCT_NAME'
34944                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34945                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34946                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34947                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34948                                     ,p_ae_header_id            =>  NULL
34949                                        );
34950 
34951         IF (C_LEVEL_ERROR>= g_log_level) THEN
34952                  trace
34953                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34954                       ,p_level    => C_LEVEL_ERROR
34955                       ,p_module   => l_log_module);
34956         END IF;
34957       END IF;
34958    END IF;
34959    --
34960    --
34964    -- Prior Entry.  Currently, the following code is always generated.
34961    ------------------------------------------------------------------------------------------------
34962    -- 4219869 Business Flow
34963    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34965    ------------------------------------------------------------------------------------------------
34966    XLA_AE_LINES_PKG.ValidateCurrentLine;
34967 
34968    ------------------------------------------------------------------------------------
34969    -- 4219869 Business Flow
34970    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34971    ------------------------------------------------------------------------------------
34972    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34973 
34974    ----------------------------------------------------------------------------------
34975    -- 4219869 Business Flow
34976    -- Update journal entry status -- Need to generate this within IF <condition>
34977    ----------------------------------------------------------------------------------
34978    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34979          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34980          ,p_balance_type_code => l_balance_type_code
34981          );
34982 
34983    -------------------------------------------------------------------------------------------
34984    -- 4262811 - Generate the Accrual Reversal lines
34985    -------------------------------------------------------------------------------------------
34986    BEGIN
34987       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34988                               (g_array_event(p_event_id).array_value_num('header_index'));
34989       IF l_acc_rev_flag IS NULL THEN
34990          l_acc_rev_flag := 'N';
34991       END IF;
34992    EXCEPTION
34993       WHEN OTHERS THEN
34994          l_acc_rev_flag := 'N';
34995    END;
34996    --
34997    IF (l_acc_rev_flag = 'Y') THEN
34998 
34999        -- 4645092  ------------------------------------------------------------------------------
35000        -- To allow MPA report to determine if it should generate report process
35001        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35002        ------------------------------------------------------------------------------------------
35003 
35004        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35005        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35006 
35007        --
35008        -- Update the line information that should be overwritten
35009        --
35010        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35011                                          p_header_num   => 1);
35012        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35013 
35014        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35015 
35016        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35017           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35018        END IF;
35019 
35020       --
35021       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35022       --
35023       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35024           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35025       ELSE
35026           ---------------------------------------------------------------------------------------------------
35027           -- 4262811a Switch Sign
35028           ---------------------------------------------------------------------------------------------------
35029           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35030           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35031                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35032           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35033                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35034           -- 5132302
35035           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35036                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35037 
35038       END IF;
35039 
35040       -- 4955764
35041       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35042       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35043 
35044 
35045       XLA_AE_LINES_PKG.ValidateCurrentLine;
35046       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35047 
35048       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35049                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35050                ,p_balance_type_code => l_balance_type_code);
35051 
35052    END IF;
35053 
35054    -----------------------------------------------------------------------------------------
35055    -- 4262811 Multiperiod Accounting
35056    -----------------------------------------------------------------------------------------
35057      -- No MPA option is assigned.
35058 
35062 
35059 
35060 END IF;
35061 --
35063 --
35064 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35065    trace
35066       (p_msg      => 'END of AcctLineType_76'
35067       ,p_level    => C_LEVEL_PROCEDURE
35068       ,p_module   => l_log_module);
35069 END IF;
35070 --
35071 EXCEPTION
35072   WHEN xla_exceptions_pkg.application_exception THEN
35073       RAISE;
35074   WHEN OTHERS THEN
35075        xla_exceptions_pkg.raise_message
35076            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_76');
35077 END AcctLineType_76;
35078 --
35079 
35080 ---------------------------------------
35081 --
35082 -- PRIVATE FUNCTION
35083 --         AcctLineType_77
35084 --
35085 ---------------------------------------
35086 PROCEDURE AcctLineType_77 (
35087   p_application_id        IN NUMBER
35088  ,p_event_id              IN NUMBER
35089  ,p_calculate_acctd_flag  IN VARCHAR2
35090  ,p_calculate_g_l_flag    IN VARCHAR2
35091  ,p_actual_flag           IN OUT VARCHAR2
35092  ,p_balance_type_code     OUT VARCHAR2
35093  ,p_gain_or_loss_ref      OUT VARCHAR2
35094  
35095 --Actual Upgrade Credit Accounting Class
35096  , p_source_23            IN VARCHAR2
35097 --Entered Currency Code
35098  , p_source_25            IN VARCHAR2
35099 --Exchange Rate Date
35100  , p_source_27            IN DATE
35101 --Exchange Rate
35102  , p_source_28            IN NUMBER
35103 --Exchange Rate Type
35104  , p_source_29            IN VARCHAR2
35105 --Actual Upgrade Debit Accounting Class
35106  , p_source_30            IN VARCHAR2
35107 --Use Actuals Upgrade Attributes Flag
35108  , p_source_31            IN VARCHAR2
35109 --Revenue Distribution Type
35110  , p_source_36            IN VARCHAR2
35111 --Crediting Revenue Flag
35112  , p_source_38            IN VARCHAR2
35113 --Revenue First Distribution ID
35114  , p_source_39            IN NUMBER
35115 --Revenue Second Distribution ID
35116  , p_source_40            IN NUMBER
35117 --Entered Amount
35118  , p_source_41            IN NUMBER
35119 --Event ID
35120  , p_source_42            IN NUMBER
35121 --Accounted Amount
35122  , p_source_43            IN NUMBER
35123 --Actual Upgrade Credit CCID
35124  , p_source_59            IN NUMBER
35125 --Actual Upgrade Debit CCID
35126  , p_source_60            IN NUMBER
35127 --Application ID
35128  , p_source_61            IN NUMBER
35129 --Revenue Entity Code
35130  , p_source_62            IN VARCHAR2
35131 --Crediting Revenue First Distribution ID
35132  , p_source_63            IN NUMBER
35133 --Project ID
35134  , p_source_64            IN NUMBER
35135 --Crediting Revenue Second Distribution ID
35136  , p_source_65            IN NUMBER
35137 --Draft Revenue Number Credited
35138  , p_source_66            IN NUMBER
35139 )
35140 IS
35141 
35142 l_component_type              VARCHAR2(80);
35143 l_component_code              VARCHAR2(30);
35144 l_component_type_code         VARCHAR2(1);
35145 l_component_appl_id           INTEGER;
35146 l_amb_context_code            VARCHAR2(30);
35147 l_entity_code                 VARCHAR2(30);
35148 l_event_class_code            VARCHAR2(30);
35149 l_ae_header_id                NUMBER;
35150 l_event_type_code             VARCHAR2(30);
35151 l_line_definition_code        VARCHAR2(30);
35152 l_line_definition_owner_code  VARCHAR2(1);
35153 --
35154 -- adr variables
35155 l_segment                     VARCHAR2(30);
35156 l_ccid                        NUMBER;
35157 l_adr_transaction_coa_id      NUMBER;
35158 l_adr_accounting_coa_id       NUMBER;
35159 l_adr_flexfield_segment_code  VARCHAR2(30);
35160 l_adr_flex_value_set_id       NUMBER;
35161 l_adr_value_type_code         VARCHAR2(30);
35162 l_adr_value_combination_id    NUMBER;
35163 l_adr_value_segment_code      VARCHAR2(30);
35164 
35165 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35166 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35167 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35168 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35169 
35170 -- 4262811 Variables ------------------------------------------------------------------------------------------
35171 l_entered_amt_idx             NUMBER;
35172 l_accted_amt_idx              NUMBER;
35173 l_acc_rev_flag                VARCHAR2(1);
35174 l_accrual_line_num            NUMBER;
35175 l_tmp_amt                     NUMBER;
35176 l_acc_rev_natural_side_code   VARCHAR2(1);
35177 
35178 l_num_entries                 NUMBER;
35179 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35180 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35181 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35182 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35183 l_recog_line_1                NUMBER;
35184 l_recog_line_2                NUMBER;
35185 
35186 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35187 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35188 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35189 
35190 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35191 
35195 ---------------------------------------------------------------------------------------------------------------
35192 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35193 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35194 
35196 
35197 
35198 --
35199 -- bulk performance
35200 --
35201 l_balance_type_code           VARCHAR2(1);
35202 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35203 l_log_module                  VARCHAR2(240);
35204 
35205 --
35206 -- Upgrade strategy
35207 --
35208 l_actual_upg_option           VARCHAR2(1);
35209 l_enc_upg_option           VARCHAR2(1);
35210 
35211 --
35212 BEGIN
35213 --
35214 IF g_log_enabled THEN
35215       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
35216 END IF;
35217 --
35218 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35219 
35220       trace
35221          (p_msg      => 'BEGIN of AcctLineType_77'
35222          ,p_level    => C_LEVEL_PROCEDURE
35223          ,p_module   => l_log_module);
35224 
35225 END IF;
35226 --
35227 l_component_type             := 'AMB_JLT';
35228 l_component_code             := 'PA_REV_ADJ';
35229 l_component_type_code        := 'S';
35230 l_component_appl_id          :=  275;
35231 l_amb_context_code           := 'DEFAULT';
35232 l_entity_code                := 'REVENUE';
35233 l_event_class_code           := 'REVENUE_ADJ';
35234 l_event_type_code            := 'REVENUE_ADJ_ALL';
35235 l_line_definition_owner_code := 'S';
35236 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
35237 --
35238 l_balance_type_code          := 'A';
35239 l_segment                     := NULL;
35240 l_ccid                        := NULL;
35241 l_adr_transaction_coa_id      := NULL;
35242 l_adr_accounting_coa_id       := NULL;
35243 l_adr_flexfield_segment_code  := NULL;
35244 l_adr_flex_value_set_id       := NULL;
35245 l_adr_value_type_code         := NULL;
35246 l_adr_value_combination_id    := NULL;
35247 l_adr_value_segment_code      := NULL;
35248 
35249 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
35250 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
35251 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
35252 l_budgetary_control_flag     := 'N';
35253 
35254 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35255 l_bflow_applied_to_amt       := NULL; -- 5132302
35256 l_entered_amt_idx            := NULL;          -- 4262811
35257 l_accted_amt_idx             := NULL;          -- 4262811
35258 l_acc_rev_flag               := NULL;          -- 4262811
35259 l_accrual_line_num           := NULL;          -- 4262811
35260 l_tmp_amt                    := NULL;          -- 4262811
35261 --
35262  
35263 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35264     l_balance_type_code <> 'B' THEN
35265 IF NVL(p_source_36,'
35266 ') =  'Revenue - Normal Revenue' AND 
35267 NVL(p_source_38,'
35268 ') =  'Y'
35269  THEN 
35270 
35271    --
35272    XLA_AE_LINES_PKG.SetNewLine;
35273 
35274    p_balance_type_code          := l_balance_type_code;
35275    -- set the flag so later we will know whether the gain loss line needs to be created
35276    
35277    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35278      p_actual_flag :='A';
35279    END IF;
35280 
35281    --
35282    -- bulk performance
35283    --
35284    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35285                                       p_header_num   => 0); -- 4262811
35286    --
35287    -- set accounting line options
35288    --
35289    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35290            p_natural_side_code          => 'D'
35291          , p_gain_or_loss_flag          => 'N'
35292          , p_gl_transfer_mode_code      => 'S'
35293          , p_acct_entry_type_code       => 'A'
35294          , p_switch_side_flag           => 'Y'
35295          , p_merge_duplicate_code       => 'N'
35296          );
35297    --
35298    l_acc_rev_natural_side_code := 'C';  -- 4262811
35299    -- 
35300    --
35301    -- set accounting line type info
35302    --
35303    xla_ae_lines_pkg.SetAcctLineType
35304       (p_component_type             => l_component_type
35305       ,p_event_type_code            => l_event_type_code
35306       ,p_line_definition_owner_code => l_line_definition_owner_code
35307       ,p_line_definition_code       => l_line_definition_code
35308       ,p_accounting_line_code       => l_component_code
35309       ,p_accounting_line_type_code  => l_component_type_code
35310       ,p_accounting_line_appl_id    => l_component_appl_id
35311       ,p_amb_context_code           => l_amb_context_code
35312       ,p_entity_code                => l_entity_code
35313       ,p_event_class_code           => l_event_class_code);
35314    --
35315    -- set accounting class
35316    --
35317    xla_ae_lines_pkg.SetAcctClass(
35318            p_accounting_class_code  => 'REVENUE_ADJ'
35319          , p_ae_header_id           => l_ae_header_id
35320          );
35321 
35322    --
35323    -- set rounding class
35324    --
35325    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35326                       'REVENUE_ADJ';
35327 
35328    --
35332    -- bulk performance
35329    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35330    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35331    --
35333    --
35334    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35335 
35336    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35337       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35338 
35339    -- 4955764
35340    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35341       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35342 
35343    -- 4458381 Public Sector Enh
35344    
35345    --
35346    -- set accounting attributes for the line type
35347    --
35348    l_entered_amt_idx := 28;
35349    l_accted_amt_idx  := 31;
35350    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35351    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
35352    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
35353    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
35354    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
35355    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
35356    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
35357    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
35358    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
35359    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
35360    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
35361    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
35362    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
35363    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
35364    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
35365    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
35366    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
35367    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
35368    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
35369    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
35370    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
35371    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
35372    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
35373    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
35374    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
35375    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
35376    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
35377    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
35378    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
35379    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
35380    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
35381    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
35382    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
35383    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
35384    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
35385    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
35386    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
35387    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35388    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
35389    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
35390    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
35391    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
35392    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
35393    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35394    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
35395    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
35396    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
35397    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
35398    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
35399    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
35400    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
35401    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
35402    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
35403    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
35404    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
35405    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
35406    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
35407    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
35408    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
35409    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
35410    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_42);
35411    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
35412    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
35413 
35414    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35415    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35416 
35417    ---------------------------------------------------------------------------------------------------------------
35421 
35418    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35419    ---------------------------------------------------------------------------------------------------------------
35420    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35422    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35423    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35424 
35425    IF xla_accounting_cache_pkg.GetValueChar
35426          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35427          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35428    AND l_bflow_method_code = 'PRIOR_ENTRY'
35429 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35430    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35431          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35432        )
35433    THEN
35434          xla_ae_lines_pkg.BflowUpgEntry
35435            (p_business_method_code    => l_bflow_method_code
35436            ,p_business_class_code     => l_bflow_class_code
35437            ,p_balance_type            => l_balance_type_code);
35438    ELSE
35439       NULL;
35440 XLA_AE_LINES_PKG.business_flow_validation(
35441                                 p_business_method_code     => l_bflow_method_code
35442                                ,p_business_class_code      => l_bflow_class_code
35443                                ,p_inherit_description_flag => l_inherit_desc_flag);
35444    END IF;
35445 
35446    --
35447    -- call analytical criteria
35448    --
35449    -- Inherited Analytical Criteria for business flow method of Prior Entry.
35450    --
35451    -- call description
35452    --
35453    -- No description or it is inherited.
35454    --
35455    -- call ADRs
35456    -- Bug 4922099
35457    --
35458    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35459         (NVL(l_actual_upg_option, 'N') = 'O') OR
35460         (NVL(l_enc_upg_option, 'N') = 'O')
35461       )
35462    THEN
35463    NULL;
35464    --
35465    --
35466    
35467    --
35468    --
35469    END IF;
35470    --
35471    -- Bug 4922099
35472    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35473           (NVL(l_enc_upg_option, 'N') = 'O')
35474         ) AND
35475         (l_bflow_method_code = 'PRIOR_ENTRY')
35476       )
35477    THEN
35478       IF
35479       --
35480       1 = 1
35481       --
35482       THEN
35483       xla_accounting_err_pkg.build_message
35484                                     (p_appli_s_name            => 'XLA'
35485                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35486                                     ,p_token_1                 => 'LINE_NUMBER'
35487                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35488                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35489                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35490                                                                              l_component_type
35491                                                                             ,l_component_code
35492                                                                             ,l_component_type_code
35493                                                                             ,l_component_appl_id
35494                                                                             ,l_amb_context_code
35495                                                                             ,l_entity_code
35496                                                                             ,l_event_class_code
35497                                                                            )
35498                                     ,p_token_3                 => 'OWNER'
35499                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35500                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35501                                                                           ,p_lookup_code    => l_component_type_code
35502                                                                          )
35503                                     ,p_token_4                 => 'PRODUCT_NAME'
35504                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35505                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35506                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35507                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35508                                     ,p_ae_header_id            =>  NULL
35509                                        );
35510 
35511         IF (C_LEVEL_ERROR>= g_log_level) THEN
35512                  trace
35513                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35514                       ,p_level    => C_LEVEL_ERROR
35515                       ,p_module   => l_log_module);
35516         END IF;
35517       END IF;
35518    END IF;
35519    --
35520    --
35521    ------------------------------------------------------------------------------------------------
35522    -- 4219869 Business Flow
35526    -- No ValidateCurrentLine for business flow method of Prior Entry
35523    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35524    -- Prior Entry.  Currently, the following code is always generated.
35525    ------------------------------------------------------------------------------------------------
35527 
35528    ------------------------------------------------------------------------------------
35529    -- 4219869 Business Flow
35530    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35531    ------------------------------------------------------------------------------------
35532    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35533 
35534    ----------------------------------------------------------------------------------
35535    -- 4219869 Business Flow
35536    -- Update journal entry status -- Need to generate this within IF <condition>
35537    ----------------------------------------------------------------------------------
35538    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35539          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35540          ,p_balance_type_code => l_balance_type_code
35541          );
35542 
35543    -------------------------------------------------------------------------------------------
35544    -- 4262811 - Generate the Accrual Reversal lines
35545    -------------------------------------------------------------------------------------------
35546    BEGIN
35547       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35548                               (g_array_event(p_event_id).array_value_num('header_index'));
35549       IF l_acc_rev_flag IS NULL THEN
35550          l_acc_rev_flag := 'N';
35551       END IF;
35552    EXCEPTION
35553       WHEN OTHERS THEN
35554          l_acc_rev_flag := 'N';
35555    END;
35556    --
35557    IF (l_acc_rev_flag = 'Y') THEN
35558 
35559        -- 4645092  ------------------------------------------------------------------------------
35560        -- To allow MPA report to determine if it should generate report process
35561        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35562        ------------------------------------------------------------------------------------------
35563 
35564        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35565        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35566 
35567        --
35568        -- Update the line information that should be overwritten
35569        --
35570        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35571                                          p_header_num   => 1);
35572        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35573 
35574        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35575 
35576        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35577           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35578        END IF;
35579 
35580       --
35581       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35582       --
35583       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35584           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35585       ELSE
35586           ---------------------------------------------------------------------------------------------------
35587           -- 4262811a Switch Sign
35588           ---------------------------------------------------------------------------------------------------
35589           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35590           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35591                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35592           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35593                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35594           -- 5132302
35595           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35596                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35597 
35598       END IF;
35599 
35600       -- 4955764
35601       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35602       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35603 
35604 
35605       XLA_AE_LINES_PKG.ValidateCurrentLine;
35606       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35607 
35608       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35609                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35610                ,p_balance_type_code => l_balance_type_code);
35611 
35612    END IF;
35613 
35614    -----------------------------------------------------------------------------------------
35615    -- 4262811 Multiperiod Accounting
35616    -----------------------------------------------------------------------------------------
35617      -- No MPA option is assigned.
35618 
35619 
35620 END IF;
35621 END IF;
35622 --
35623 
35624 --
35625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35629       ,p_module   => l_log_module);
35626    trace
35627       (p_msg      => 'END of AcctLineType_77'
35628       ,p_level    => C_LEVEL_PROCEDURE
35630 END IF;
35631 --
35632 EXCEPTION
35633   WHEN xla_exceptions_pkg.application_exception THEN
35634       RAISE;
35635   WHEN OTHERS THEN
35636        xla_exceptions_pkg.raise_message
35637            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_77');
35638 END AcctLineType_77;
35639 --
35640 
35641 ---------------------------------------
35642 --
35643 -- PRIVATE FUNCTION
35644 --         AcctLineType_78
35645 --
35646 ---------------------------------------
35647 PROCEDURE AcctLineType_78 (
35648   p_application_id        IN NUMBER
35649  ,p_event_id              IN NUMBER
35650  ,p_calculate_acctd_flag  IN VARCHAR2
35651  ,p_calculate_g_l_flag    IN VARCHAR2
35652  ,p_actual_flag           IN OUT VARCHAR2
35653  ,p_balance_type_code     OUT VARCHAR2
35654  ,p_gain_or_loss_ref      OUT VARCHAR2
35655  
35656 --Budget Code Combination ID
35657  , p_source_2            IN NUMBER
35658 --Cost CCID
35659  , p_source_3            IN NUMBER
35660 --Allow Account Override Flag
35661  , p_source_4            IN VARCHAR2
35662 --Adjustment Cost CCID
35663  , p_source_5            IN NUMBER
35664 --Cost Clearing CCID
35665  , p_source_6            IN NUMBER
35666 --Reversing Line Flag
35667  , p_source_22            IN VARCHAR2
35668 --Actual Upgrade Credit Accounting Class
35669  , p_source_23            IN VARCHAR2
35670 --Entered Currency Code
35671  , p_source_25            IN VARCHAR2
35672 --Exchange Rate Date
35673  , p_source_27            IN DATE
35674 --Exchange Rate
35675  , p_source_28            IN NUMBER
35676 --Exchange Rate Type
35677  , p_source_29            IN VARCHAR2
35678 --Actual Upgrade Debit Accounting Class
35679  , p_source_30            IN VARCHAR2
35680 --Use Actuals Upgrade Attributes Flag
35681  , p_source_31            IN VARCHAR2
35682 --Expenditure Item ID
35683  , p_source_32            IN NUMBER
35684 --Cost Distribution Line Number
35685  , p_source_33            IN NUMBER
35686 --Line Type
35687  , p_source_34            IN VARCHAR2
35688  , p_source_34_meaning    IN VARCHAR2
35689 --Reversed Line Number
35690  , p_source_35            IN NUMBER
35691 --Entered Burdened Cost
35692  , p_source_44            IN NUMBER
35693 --Accounted Burdened Cost
35694  , p_source_45            IN NUMBER
35695 --Encumbrance Amount
35696  , p_source_46            IN NUMBER
35697 --Project Encumbrance Applied to Application Identifier
35698  , p_source_47            IN NUMBER
35699 --Project Encumbrance Applied to Distribution Type
35700  , p_source_48            IN VARCHAR2
35701 --Project Encumbrance Applied to Entity Code
35702  , p_source_49            IN VARCHAR2
35703 --Project Encumbrance Applied to First Distribution ID
35704  , p_source_50            IN NUMBER
35705 --Project Encumbrance Applied to First System Transaction ID
35706  , p_source_51            IN NUMBER
35707 --Project Encumbrance Applied to Second Distribution ID
35708  , p_source_52            IN VARCHAR2
35709 --Encumbrance Upgrade Credit Accounting Class
35710  , p_source_53            IN VARCHAR2
35711 --Encumbrance Upgrade Debit Accounting Class
35712  , p_source_54            IN VARCHAR2
35713 --Use Encumbrance Upgrade Attributes Flag
35714  , p_source_55            IN VARCHAR2
35715 --Encumbrance Type ID
35716  , p_source_56            IN NUMBER
35717 --Project Encumbrance Type ID
35718  , p_source_57            IN NUMBER
35719 )
35720 IS
35721 
35722 l_component_type              VARCHAR2(80);
35723 l_component_code              VARCHAR2(30);
35724 l_component_type_code         VARCHAR2(1);
35725 l_component_appl_id           INTEGER;
35726 l_amb_context_code            VARCHAR2(30);
35727 l_entity_code                 VARCHAR2(30);
35728 l_event_class_code            VARCHAR2(30);
35729 l_ae_header_id                NUMBER;
35730 l_event_type_code             VARCHAR2(30);
35731 l_line_definition_code        VARCHAR2(30);
35732 l_line_definition_owner_code  VARCHAR2(1);
35733 --
35734 -- adr variables
35735 l_segment                     VARCHAR2(30);
35736 l_ccid                        NUMBER;
35737 l_adr_transaction_coa_id      NUMBER;
35738 l_adr_accounting_coa_id       NUMBER;
35739 l_adr_flexfield_segment_code  VARCHAR2(30);
35740 l_adr_flex_value_set_id       NUMBER;
35741 l_adr_value_type_code         VARCHAR2(30);
35742 l_adr_value_combination_id    NUMBER;
35743 l_adr_value_segment_code      VARCHAR2(30);
35744 
35745 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35746 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35747 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35748 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35749 
35750 -- 4262811 Variables ------------------------------------------------------------------------------------------
35751 l_entered_amt_idx             NUMBER;
35752 l_accted_amt_idx              NUMBER;
35753 l_acc_rev_flag                VARCHAR2(1);
35754 l_accrual_line_num            NUMBER;
35755 l_tmp_amt                     NUMBER;
35756 l_acc_rev_natural_side_code   VARCHAR2(1);
35757 
35758 l_num_entries                 NUMBER;
35759 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35763 l_recog_line_1                NUMBER;
35760 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35761 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35762 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35764 l_recog_line_2                NUMBER;
35765 
35766 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35767 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35768 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35769 
35770 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35771 
35772 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35773 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35774 
35775 ---------------------------------------------------------------------------------------------------------------
35776 
35777 
35778 --
35779 -- bulk performance
35780 --
35781 l_balance_type_code           VARCHAR2(1);
35782 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35783 l_log_module                  VARCHAR2(240);
35784 
35785 --
35786 -- Upgrade strategy
35787 --
35788 l_actual_upg_option           VARCHAR2(1);
35789 l_enc_upg_option           VARCHAR2(1);
35790 
35791 --
35792 BEGIN
35793 --
35794 IF g_log_enabled THEN
35795       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
35796 END IF;
35797 --
35798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35799 
35800       trace
35801          (p_msg      => 'BEGIN of AcctLineType_78'
35802          ,p_level    => C_LEVEL_PROCEDURE
35803          ,p_module   => l_log_module);
35804 
35805 END IF;
35806 --
35807 l_component_type             := 'AMB_JLT';
35808 l_component_code             := 'PA_TOT_BURDENED_COST';
35809 l_component_type_code        := 'S';
35810 l_component_appl_id          :=  275;
35811 l_amb_context_code           := 'DEFAULT';
35812 l_entity_code                := 'EXPENDITURES';
35813 l_event_class_code           := 'TOT_BURDENED_COST';
35814 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
35815 l_line_definition_owner_code := 'S';
35816 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
35817 --
35818 l_balance_type_code          := 'A';
35819 l_segment                     := NULL;
35820 l_ccid                        := NULL;
35821 l_adr_transaction_coa_id      := NULL;
35822 l_adr_accounting_coa_id       := NULL;
35823 l_adr_flexfield_segment_code  := NULL;
35824 l_adr_flex_value_set_id       := NULL;
35825 l_adr_value_type_code         := NULL;
35826 l_adr_value_combination_id    := NULL;
35827 l_adr_value_segment_code      := NULL;
35828 
35829 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35830 l_bflow_class_code           := '';    -- 4219869 Business Flow
35831 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35832 l_budgetary_control_flag     := 'N';
35833 
35834 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35835 l_bflow_applied_to_amt       := NULL; -- 5132302
35836 l_entered_amt_idx            := NULL;          -- 4262811
35837 l_accted_amt_idx             := NULL;          -- 4262811
35838 l_acc_rev_flag               := NULL;          -- 4262811
35839 l_accrual_line_num           := NULL;          -- 4262811
35840 l_tmp_amt                    := NULL;          -- 4262811
35841 --
35842  
35843 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35844     l_balance_type_code <> 'B' THEN
35845 IF NVL(p_source_34,'
35846 ') =  'D'
35847  THEN 
35848 
35849    --
35850    XLA_AE_LINES_PKG.SetNewLine;
35851 
35852    p_balance_type_code          := l_balance_type_code;
35853    -- set the flag so later we will know whether the gain loss line needs to be created
35854    
35855    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35856      p_actual_flag :='A';
35857    END IF;
35858 
35859    --
35860    -- bulk performance
35861    --
35862    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35863                                       p_header_num   => 0); -- 4262811
35864    --
35865    -- set accounting line options
35866    --
35867    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35868            p_natural_side_code          => 'D'
35869          , p_gain_or_loss_flag          => 'N'
35870          , p_gl_transfer_mode_code      => 'S'
35871          , p_acct_entry_type_code       => 'A'
35872          , p_switch_side_flag           => 'Y'
35873          , p_merge_duplicate_code       => 'N'
35874          );
35875    --
35876    l_acc_rev_natural_side_code := 'C';  -- 4262811
35877    -- 
35878    --
35879    -- set accounting line type info
35880    --
35881    xla_ae_lines_pkg.SetAcctLineType
35882       (p_component_type             => l_component_type
35883       ,p_event_type_code            => l_event_type_code
35884       ,p_line_definition_owner_code => l_line_definition_owner_code
35885       ,p_line_definition_code       => l_line_definition_code
35886       ,p_accounting_line_code       => l_component_code
35887       ,p_accounting_line_type_code  => l_component_type_code
35888       ,p_accounting_line_appl_id    => l_component_appl_id
35889       ,p_amb_context_code           => l_amb_context_code
35893    -- set accounting class
35890       ,p_entity_code                => l_entity_code
35891       ,p_event_class_code           => l_event_class_code);
35892    --
35894    --
35895    xla_ae_lines_pkg.SetAcctClass(
35896            p_accounting_class_code  => 'COST'
35897          , p_ae_header_id           => l_ae_header_id
35898          );
35899 
35900    --
35901    -- set rounding class
35902    --
35903    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35904                       'COST';
35905 
35906    --
35907    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35908    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35909    --
35910    -- bulk performance
35911    --
35912    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35913 
35914    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35915       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35916 
35917    -- 4955764
35918    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35919       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35920 
35921    -- 4458381 Public Sector Enh
35922    
35923    --
35924    -- set accounting attributes for the line type
35925    --
35926    l_entered_amt_idx := 40;
35927    l_accted_amt_idx  := 46;
35928    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
35929    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35930    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
35931    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
35932    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
35933    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
35934    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
35935    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
35936    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
35937    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
35938    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
35939    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
35940    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
35941    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
35942    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
35943    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
35944    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
35945    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
35946    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
35947    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
35948    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
35949    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
35950    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
35951    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
35952    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
35953    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
35954    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
35955    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
35956    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
35957    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
35958    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
35959    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
35960    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
35961    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
35962    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
35963    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
35964    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
35965    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
35966    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
35967    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
35968    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
35969    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35970    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
35971    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
35972    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
35973    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
35974    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
35975    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35976    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
35977    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
35978    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
35979    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
35980    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
35981    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
35982    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
35983    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
35984    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
35985    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
35986    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
35990    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
35987    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
35988    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
35989    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
35991    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
35992    l_rec_acct_attrs.array_char_value(32)  := 
35993 xla_ae_sources_pkg.GetSystemSourceChar(
35994    p_source_code           => 'XLA_CURRENCY_CODE'
35995  , p_source_type_code      => 'Y'
35996  , p_source_application_id =>  602
35997 );
35998    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
35999    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
36000    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
36001    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
36002    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
36003    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
36004    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
36005    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
36006    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
36007    l_rec_acct_attrs.array_char_value(37)  := 
36008 xla_ae_sources_pkg.GetSystemSourceChar(
36009    p_source_code           => 'XLA_CURRENCY_CODE'
36010  , p_source_type_code      => 'Y'
36011  , p_source_application_id =>  602
36012 );
36013    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
36014    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
36015    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
36016    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
36017    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
36018    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
36019    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
36020    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
36021    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
36022    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
36023    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
36024    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
36025    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
36026    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
36027    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
36028    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
36029    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
36030    l_rec_acct_attrs.array_num_value(46)  := p_source_45;
36031    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
36032    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
36033    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
36034    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
36035    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
36036    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
36037    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
36038    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
36039    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
36040    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
36041 
36042    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36043    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36044 
36045    ---------------------------------------------------------------------------------------------------------------
36046    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36047    ---------------------------------------------------------------------------------------------------------------
36048    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36049 
36050    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36051    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36052 
36053    IF xla_accounting_cache_pkg.GetValueChar
36054          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36055          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36056    AND l_bflow_method_code = 'PRIOR_ENTRY'
36057 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36058    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36059          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36060        )
36061    THEN
36062          xla_ae_lines_pkg.BflowUpgEntry
36063            (p_business_method_code    => l_bflow_method_code
36064            ,p_business_class_code     => l_bflow_class_code
36065            ,p_balance_type            => l_balance_type_code);
36066    ELSE
36067       NULL;
36068 -- No business flow processing for business flow method of NONE.
36069    END IF;
36070 
36071    --
36072    -- call analytical criteria
36073    --
36074    
36075    --
36076    -- call description
36077    --
36078    -- No description or it is inherited.
36079    --
36080    -- call ADRs
36081    -- Bug 4922099
36082    --
36083    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36084         (NVL(l_actual_upg_option, 'N') = 'O') OR
36085         (NVL(l_enc_upg_option, 'N') = 'O')
36086       )
36087    THEN
36088    NULL;
36089    --
36090    --
36091    
36092   l_ccid := AcctDerRule_3(
36096 , p_source_4 => p_source_4
36093            p_application_id           => p_application_id
36094          , p_ae_header_id             => l_ae_header_id 
36095 , p_source_3 => p_source_3
36097 , p_source_5 => p_source_5
36098          , x_transaction_coa_id       => l_adr_transaction_coa_id
36099          , x_accounting_coa_id        => l_adr_accounting_coa_id
36100          , x_value_type_code          => l_adr_value_type_code
36101          , p_side                     => 'NA'
36102    );
36103 
36104    xla_ae_lines_pkg.set_ccid(
36105     p_code_combination_id          => l_ccid
36106   , p_value_type_code              => l_adr_value_type_code
36107   , p_transaction_coa_id           => l_adr_transaction_coa_id
36108   , p_accounting_coa_id            => l_adr_accounting_coa_id
36109   , p_adr_code                     => 'PA_COST_ACCT_RULE'
36110   , p_adr_type_code                => 'S'
36111   , p_component_type               => l_component_type
36112   , p_component_code               => l_component_code
36113   , p_component_type_code          => l_component_type_code
36114   , p_component_appl_id            => l_component_appl_id
36115   , p_amb_context_code             => l_amb_context_code
36116   , p_side                         => 'NA'
36117   );
36118 
36119 
36120    --
36121    --
36122    END IF;
36123    --
36124    -- Bug 4922099
36125    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36126           (NVL(l_enc_upg_option, 'N') = 'O')
36127         ) AND
36128         (l_bflow_method_code = 'PRIOR_ENTRY')
36129       )
36130    THEN
36131       IF
36132       --
36133       1 = 2
36134       --
36135       THEN
36136       xla_accounting_err_pkg.build_message
36137                                     (p_appli_s_name            => 'XLA'
36138                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36139                                     ,p_token_1                 => 'LINE_NUMBER'
36140                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36141                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36142                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36143                                                                              l_component_type
36144                                                                             ,l_component_code
36145                                                                             ,l_component_type_code
36146                                                                             ,l_component_appl_id
36147                                                                             ,l_amb_context_code
36148                                                                             ,l_entity_code
36149                                                                             ,l_event_class_code
36150                                                                            )
36151                                     ,p_token_3                 => 'OWNER'
36152                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36153                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36154                                                                           ,p_lookup_code    => l_component_type_code
36155                                                                          )
36156                                     ,p_token_4                 => 'PRODUCT_NAME'
36157                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36158                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36159                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36160                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36161                                     ,p_ae_header_id            =>  NULL
36162                                        );
36163 
36164         IF (C_LEVEL_ERROR>= g_log_level) THEN
36165                  trace
36166                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36167                       ,p_level    => C_LEVEL_ERROR
36168                       ,p_module   => l_log_module);
36169         END IF;
36170       END IF;
36171    END IF;
36172    --
36173    --
36174    ------------------------------------------------------------------------------------------------
36175    -- 4219869 Business Flow
36176    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36177    -- Prior Entry.  Currently, the following code is always generated.
36178    ------------------------------------------------------------------------------------------------
36179    XLA_AE_LINES_PKG.ValidateCurrentLine;
36180 
36181    ------------------------------------------------------------------------------------
36182    -- 4219869 Business Flow
36183    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36184    ------------------------------------------------------------------------------------
36185    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36186 
36187    ----------------------------------------------------------------------------------
36188    -- 4219869 Business Flow
36189    -- Update journal entry status -- Need to generate this within IF <condition>
36190    ----------------------------------------------------------------------------------
36194          );
36191    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36192          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36193          ,p_balance_type_code => l_balance_type_code
36195 
36196    -------------------------------------------------------------------------------------------
36197    -- 4262811 - Generate the Accrual Reversal lines
36198    -------------------------------------------------------------------------------------------
36199    BEGIN
36200       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36201                               (g_array_event(p_event_id).array_value_num('header_index'));
36202       IF l_acc_rev_flag IS NULL THEN
36203          l_acc_rev_flag := 'N';
36204       END IF;
36205    EXCEPTION
36206       WHEN OTHERS THEN
36207          l_acc_rev_flag := 'N';
36208    END;
36209    --
36210    IF (l_acc_rev_flag = 'Y') THEN
36211 
36212        -- 4645092  ------------------------------------------------------------------------------
36213        -- To allow MPA report to determine if it should generate report process
36214        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36215        ------------------------------------------------------------------------------------------
36216 
36217        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36218        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36219 
36220        --
36221        -- Update the line information that should be overwritten
36222        --
36223        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36224                                          p_header_num   => 1);
36225        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36226 
36227        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36228 
36229        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36230           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36231        END IF;
36232 
36233       --
36234       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36235       --
36236       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36237           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36238       ELSE
36239           ---------------------------------------------------------------------------------------------------
36240           -- 4262811a Switch Sign
36241           ---------------------------------------------------------------------------------------------------
36242           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36243           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36244                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36245           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36246                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36247           -- 5132302
36248           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36249                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36250 
36251       END IF;
36252 
36253       -- 4955764
36254       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36255       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36256 
36257 
36258       XLA_AE_LINES_PKG.ValidateCurrentLine;
36259       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36260 
36261       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36262                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36263                ,p_balance_type_code => l_balance_type_code);
36264 
36265    END IF;
36266 
36267    -----------------------------------------------------------------------------------------
36268    -- 4262811 Multiperiod Accounting
36269    -----------------------------------------------------------------------------------------
36270      -- No MPA option is assigned.
36271 
36272 
36273 END IF;
36274 END IF;
36275 --
36276 
36277 --
36278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36279    trace
36280       (p_msg      => 'END of AcctLineType_78'
36281       ,p_level    => C_LEVEL_PROCEDURE
36282       ,p_module   => l_log_module);
36283 END IF;
36284 --
36285 EXCEPTION
36286   WHEN xla_exceptions_pkg.application_exception THEN
36287       RAISE;
36288   WHEN OTHERS THEN
36289        xla_exceptions_pkg.raise_message
36290            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_78');
36291 END AcctLineType_78;
36292 --
36293 
36294 ---------------------------------------
36295 --
36296 -- PRIVATE FUNCTION
36297 --         AcctLineType_79
36298 --
36299 ---------------------------------------
36300 PROCEDURE AcctLineType_79 (
36301   p_application_id        IN NUMBER
36302  ,p_event_id              IN NUMBER
36303  ,p_calculate_acctd_flag  IN VARCHAR2
36304  ,p_calculate_g_l_flag    IN VARCHAR2
36305  ,p_actual_flag           IN OUT VARCHAR2
36309 --Budget Code Combination ID
36306  ,p_balance_type_code     OUT VARCHAR2
36307  ,p_gain_or_loss_ref      OUT VARCHAR2
36308  
36310  , p_source_2            IN NUMBER
36311 --Cost CCID
36312  , p_source_3            IN NUMBER
36313 --Allow Account Override Flag
36314  , p_source_4            IN VARCHAR2
36315 --Adjustment Cost CCID
36316  , p_source_5            IN NUMBER
36317 --Cost Clearing CCID
36318  , p_source_6            IN NUMBER
36319 --Reversing Line Flag
36320  , p_source_22            IN VARCHAR2
36321 --Actual Upgrade Credit Accounting Class
36322  , p_source_23            IN VARCHAR2
36323 --Entered Currency Code
36324  , p_source_25            IN VARCHAR2
36325 --Exchange Rate Date
36326  , p_source_27            IN DATE
36327 --Exchange Rate
36328  , p_source_28            IN NUMBER
36329 --Exchange Rate Type
36330  , p_source_29            IN VARCHAR2
36331 --Actual Upgrade Debit Accounting Class
36332  , p_source_30            IN VARCHAR2
36333 --Use Actuals Upgrade Attributes Flag
36334  , p_source_31            IN VARCHAR2
36335 --Expenditure Item ID
36336  , p_source_32            IN NUMBER
36337 --Cost Distribution Line Number
36338  , p_source_33            IN NUMBER
36339 --Line Type
36340  , p_source_34            IN VARCHAR2
36341  , p_source_34_meaning    IN VARCHAR2
36342 --Reversed Line Number
36343  , p_source_35            IN NUMBER
36344 --Entered Burdened Cost
36345  , p_source_44            IN NUMBER
36346 --Accounted Burdened Cost
36347  , p_source_45            IN NUMBER
36348 --Encumbrance Amount
36349  , p_source_46            IN NUMBER
36350 --Project Encumbrance Applied to Application Identifier
36351  , p_source_47            IN NUMBER
36352 --Project Encumbrance Applied to Distribution Type
36353  , p_source_48            IN VARCHAR2
36354 --Project Encumbrance Applied to Entity Code
36355  , p_source_49            IN VARCHAR2
36356 --Project Encumbrance Applied to First Distribution ID
36357  , p_source_50            IN NUMBER
36358 --Project Encumbrance Applied to First System Transaction ID
36359  , p_source_51            IN NUMBER
36360 --Project Encumbrance Applied to Second Distribution ID
36361  , p_source_52            IN VARCHAR2
36362 --Encumbrance Upgrade Debit Accounting Class
36363  , p_source_54            IN VARCHAR2
36364 --Use Encumbrance Upgrade Attributes Flag
36365  , p_source_55            IN VARCHAR2
36366 --Encumbrance Type ID
36367  , p_source_56            IN NUMBER
36368 --Project Encumbrance Type ID
36369  , p_source_57            IN NUMBER
36370 )
36371 IS
36372 
36373 l_component_type              VARCHAR2(80);
36374 l_component_code              VARCHAR2(30);
36375 l_component_type_code         VARCHAR2(1);
36376 l_component_appl_id           INTEGER;
36377 l_amb_context_code            VARCHAR2(30);
36378 l_entity_code                 VARCHAR2(30);
36379 l_event_class_code            VARCHAR2(30);
36380 l_ae_header_id                NUMBER;
36381 l_event_type_code             VARCHAR2(30);
36382 l_line_definition_code        VARCHAR2(30);
36383 l_line_definition_owner_code  VARCHAR2(1);
36384 --
36385 -- adr variables
36386 l_segment                     VARCHAR2(30);
36387 l_ccid                        NUMBER;
36388 l_adr_transaction_coa_id      NUMBER;
36389 l_adr_accounting_coa_id       NUMBER;
36390 l_adr_flexfield_segment_code  VARCHAR2(30);
36391 l_adr_flex_value_set_id       NUMBER;
36392 l_adr_value_type_code         VARCHAR2(30);
36393 l_adr_value_combination_id    NUMBER;
36394 l_adr_value_segment_code      VARCHAR2(30);
36395 
36396 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36397 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36398 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36399 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36400 
36401 -- 4262811 Variables ------------------------------------------------------------------------------------------
36402 l_entered_amt_idx             NUMBER;
36403 l_accted_amt_idx              NUMBER;
36404 l_acc_rev_flag                VARCHAR2(1);
36405 l_accrual_line_num            NUMBER;
36406 l_tmp_amt                     NUMBER;
36407 l_acc_rev_natural_side_code   VARCHAR2(1);
36408 
36409 l_num_entries                 NUMBER;
36410 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36411 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36412 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36413 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36414 l_recog_line_1                NUMBER;
36415 l_recog_line_2                NUMBER;
36416 
36417 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36418 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36419 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36420 
36421 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36422 
36423 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36424 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36425 
36426 ---------------------------------------------------------------------------------------------------------------
36427 
36428 
36429 --
36430 -- bulk performance
36434 l_log_module                  VARCHAR2(240);
36431 --
36432 l_balance_type_code           VARCHAR2(1);
36433 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36435 
36436 --
36437 -- Upgrade strategy
36438 --
36439 l_actual_upg_option           VARCHAR2(1);
36440 l_enc_upg_option           VARCHAR2(1);
36441 
36442 --
36443 BEGIN
36444 --
36445 IF g_log_enabled THEN
36446       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
36447 END IF;
36448 --
36449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36450 
36451       trace
36452          (p_msg      => 'BEGIN of AcctLineType_79'
36453          ,p_level    => C_LEVEL_PROCEDURE
36454          ,p_module   => l_log_module);
36455 
36456 END IF;
36457 --
36458 l_component_type             := 'AMB_JLT';
36459 l_component_code             := 'PA_TOT_BURDENED_COST_ADJ';
36460 l_component_type_code        := 'S';
36461 l_component_appl_id          :=  275;
36462 l_amb_context_code           := 'DEFAULT';
36463 l_entity_code                := 'EXPENDITURES';
36464 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
36465 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
36466 l_line_definition_owner_code := 'S';
36467 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
36468 --
36469 l_balance_type_code          := 'A';
36470 l_segment                     := NULL;
36471 l_ccid                        := NULL;
36472 l_adr_transaction_coa_id      := NULL;
36473 l_adr_accounting_coa_id       := NULL;
36474 l_adr_flexfield_segment_code  := NULL;
36475 l_adr_flex_value_set_id       := NULL;
36476 l_adr_value_type_code         := NULL;
36477 l_adr_value_combination_id    := NULL;
36478 l_adr_value_segment_code      := NULL;
36479 
36480 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36481 l_bflow_class_code           := '';    -- 4219869 Business Flow
36482 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36483 l_budgetary_control_flag     := 'N';
36484 
36485 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36486 l_bflow_applied_to_amt       := NULL; -- 5132302
36487 l_entered_amt_idx            := NULL;          -- 4262811
36488 l_accted_amt_idx             := NULL;          -- 4262811
36489 l_acc_rev_flag               := NULL;          -- 4262811
36490 l_accrual_line_num           := NULL;          -- 4262811
36491 l_tmp_amt                    := NULL;          -- 4262811
36492 --
36493  
36494 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36495     l_balance_type_code <> 'B' THEN
36496 IF NVL(p_source_34,'
36497 ') =  'D'
36498  THEN 
36499 
36500    --
36501    XLA_AE_LINES_PKG.SetNewLine;
36502 
36503    p_balance_type_code          := l_balance_type_code;
36504    -- set the flag so later we will know whether the gain loss line needs to be created
36505    
36506    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36507      p_actual_flag :='A';
36508    END IF;
36509 
36510    --
36511    -- bulk performance
36512    --
36513    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36514                                       p_header_num   => 0); -- 4262811
36515    --
36516    -- set accounting line options
36517    --
36518    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36519            p_natural_side_code          => 'D'
36520          , p_gain_or_loss_flag          => 'N'
36521          , p_gl_transfer_mode_code      => 'S'
36522          , p_acct_entry_type_code       => 'A'
36523          , p_switch_side_flag           => 'Y'
36524          , p_merge_duplicate_code       => 'N'
36525          );
36526    --
36527    l_acc_rev_natural_side_code := 'C';  -- 4262811
36528    -- 
36529    --
36530    -- set accounting line type info
36531    --
36532    xla_ae_lines_pkg.SetAcctLineType
36533       (p_component_type             => l_component_type
36534       ,p_event_type_code            => l_event_type_code
36535       ,p_line_definition_owner_code => l_line_definition_owner_code
36536       ,p_line_definition_code       => l_line_definition_code
36537       ,p_accounting_line_code       => l_component_code
36538       ,p_accounting_line_type_code  => l_component_type_code
36539       ,p_accounting_line_appl_id    => l_component_appl_id
36540       ,p_amb_context_code           => l_amb_context_code
36541       ,p_entity_code                => l_entity_code
36542       ,p_event_class_code           => l_event_class_code);
36543    --
36544    -- set accounting class
36545    --
36546    xla_ae_lines_pkg.SetAcctClass(
36547            p_accounting_class_code  => 'COST'
36548          , p_ae_header_id           => l_ae_header_id
36549          );
36550 
36551    --
36552    -- set rounding class
36553    --
36554    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36555                       'COST';
36556 
36557    --
36558    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36559    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36560    --
36561    -- bulk performance
36562    --
36563    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36564 
36565    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36569    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36566       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36567 
36568    -- 4955764
36570       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36571 
36572    -- 4458381 Public Sector Enh
36573    
36574    --
36575    -- set accounting attributes for the line type
36576    --
36577    l_entered_amt_idx := 35;
36578    l_accted_amt_idx  := 40;
36579    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
36580    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36581    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
36582    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
36583    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
36584    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
36585    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
36586    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
36587    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
36588    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
36589    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
36590    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
36591    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
36592    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
36593    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
36594    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
36595    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
36596    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
36597    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
36598    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
36599    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
36600    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
36601    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
36602    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
36603    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
36604    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
36605    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
36606    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
36607    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
36608    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
36609    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
36610    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
36611    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
36612    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
36613    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
36614    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
36615    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
36616    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
36617    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
36618    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
36619    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
36620    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36621    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
36622    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
36623    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
36624    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
36625    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
36626    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36627    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
36628    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
36629    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
36630    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
36631    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
36632    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
36633    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
36634    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
36635    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
36636    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
36637    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
36638    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
36639    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
36640    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
36641    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
36642    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
36643    l_rec_acct_attrs.array_char_value(32)  := 
36644 xla_ae_sources_pkg.GetSystemSourceChar(
36645    p_source_code           => 'XLA_CURRENCY_CODE'
36646  , p_source_type_code      => 'Y'
36647  , p_source_application_id =>  602
36648 );
36649    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
36650    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
36651    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
36652    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
36653    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
36654    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
36655    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
36659    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
36656    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
36657    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
36658    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
36660    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
36661    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
36662    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
36663    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
36664    l_rec_acct_attrs.array_num_value(40)  := p_source_45;
36665    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
36666    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
36667    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
36668    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
36669    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
36670    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
36671    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
36672    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
36673    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
36674    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
36675 
36676    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36677    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36678 
36679    ---------------------------------------------------------------------------------------------------------------
36680    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36681    ---------------------------------------------------------------------------------------------------------------
36682    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36683 
36684    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36685    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36686 
36687    IF xla_accounting_cache_pkg.GetValueChar
36688          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36689          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36690    AND l_bflow_method_code = 'PRIOR_ENTRY'
36691 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36692    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36693          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36694        )
36695    THEN
36696          xla_ae_lines_pkg.BflowUpgEntry
36697            (p_business_method_code    => l_bflow_method_code
36698            ,p_business_class_code     => l_bflow_class_code
36699            ,p_balance_type            => l_balance_type_code);
36700    ELSE
36701       NULL;
36702 -- No business flow processing for business flow method of NONE.
36703    END IF;
36704 
36705    --
36706    -- call analytical criteria
36707    --
36708    
36709    --
36710    -- call description
36711    --
36712    -- No description or it is inherited.
36713    --
36714    -- call ADRs
36715    -- Bug 4922099
36716    --
36717    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36718         (NVL(l_actual_upg_option, 'N') = 'O') OR
36719         (NVL(l_enc_upg_option, 'N') = 'O')
36720       )
36721    THEN
36722    NULL;
36723    --
36724    --
36725    
36726   l_ccid := AcctDerRule_4(
36727            p_application_id           => p_application_id
36728          , p_ae_header_id             => l_ae_header_id 
36729 , p_source_4 => p_source_4
36730 , p_source_5 => p_source_5
36731          , x_transaction_coa_id       => l_adr_transaction_coa_id
36732          , x_accounting_coa_id        => l_adr_accounting_coa_id
36733          , x_value_type_code          => l_adr_value_type_code
36734          , p_side                     => 'NA'
36735    );
36736 
36737    xla_ae_lines_pkg.set_ccid(
36738     p_code_combination_id          => l_ccid
36739   , p_value_type_code              => l_adr_value_type_code
36740   , p_transaction_coa_id           => l_adr_transaction_coa_id
36741   , p_accounting_coa_id            => l_adr_accounting_coa_id
36742   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
36743   , p_adr_type_code                => 'S'
36744   , p_component_type               => l_component_type
36745   , p_component_code               => l_component_code
36746   , p_component_type_code          => l_component_type_code
36747   , p_component_appl_id            => l_component_appl_id
36748   , p_amb_context_code             => l_amb_context_code
36749   , p_side                         => 'NA'
36750   );
36751 
36752 
36753    --
36754    --
36755    END IF;
36756    --
36757    -- Bug 4922099
36758    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36759           (NVL(l_enc_upg_option, 'N') = 'O')
36760         ) AND
36761         (l_bflow_method_code = 'PRIOR_ENTRY')
36762       )
36763    THEN
36764       IF
36765       --
36766       1 = 2
36767       --
36768       THEN
36769       xla_accounting_err_pkg.build_message
36770                                     (p_appli_s_name            => 'XLA'
36771                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36772                                     ,p_token_1                 => 'LINE_NUMBER'
36773                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36777                                                                             ,l_component_code
36774                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36775                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36776                                                                              l_component_type
36778                                                                             ,l_component_type_code
36779                                                                             ,l_component_appl_id
36780                                                                             ,l_amb_context_code
36781                                                                             ,l_entity_code
36782                                                                             ,l_event_class_code
36783                                                                            )
36784                                     ,p_token_3                 => 'OWNER'
36785                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36786                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36787                                                                           ,p_lookup_code    => l_component_type_code
36788                                                                          )
36789                                     ,p_token_4                 => 'PRODUCT_NAME'
36790                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36791                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36792                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36793                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36794                                     ,p_ae_header_id            =>  NULL
36795                                        );
36796 
36797         IF (C_LEVEL_ERROR>= g_log_level) THEN
36798                  trace
36799                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36800                       ,p_level    => C_LEVEL_ERROR
36801                       ,p_module   => l_log_module);
36802         END IF;
36803       END IF;
36804    END IF;
36805    --
36806    --
36807    ------------------------------------------------------------------------------------------------
36808    -- 4219869 Business Flow
36809    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36810    -- Prior Entry.  Currently, the following code is always generated.
36811    ------------------------------------------------------------------------------------------------
36812    XLA_AE_LINES_PKG.ValidateCurrentLine;
36813 
36814    ------------------------------------------------------------------------------------
36815    -- 4219869 Business Flow
36816    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36817    ------------------------------------------------------------------------------------
36818    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36819 
36820    ----------------------------------------------------------------------------------
36821    -- 4219869 Business Flow
36822    -- Update journal entry status -- Need to generate this within IF <condition>
36823    ----------------------------------------------------------------------------------
36824    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36825          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36826          ,p_balance_type_code => l_balance_type_code
36827          );
36828 
36829    -------------------------------------------------------------------------------------------
36830    -- 4262811 - Generate the Accrual Reversal lines
36831    -------------------------------------------------------------------------------------------
36832    BEGIN
36833       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36834                               (g_array_event(p_event_id).array_value_num('header_index'));
36835       IF l_acc_rev_flag IS NULL THEN
36836          l_acc_rev_flag := 'N';
36837       END IF;
36838    EXCEPTION
36839       WHEN OTHERS THEN
36840          l_acc_rev_flag := 'N';
36841    END;
36842    --
36843    IF (l_acc_rev_flag = 'Y') THEN
36844 
36845        -- 4645092  ------------------------------------------------------------------------------
36846        -- To allow MPA report to determine if it should generate report process
36847        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36848        ------------------------------------------------------------------------------------------
36849 
36850        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36851        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36852 
36853        --
36854        -- Update the line information that should be overwritten
36855        --
36856        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36857                                          p_header_num   => 1);
36858        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36859 
36860        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36861 
36862        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36866       --
36863           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36864        END IF;
36865 
36867       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36868       --
36869       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36870           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36871       ELSE
36872           ---------------------------------------------------------------------------------------------------
36873           -- 4262811a Switch Sign
36874           ---------------------------------------------------------------------------------------------------
36875           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36876           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36877                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36878           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36879                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36880           -- 5132302
36881           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36882                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36883 
36884       END IF;
36885 
36886       -- 4955764
36887       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36888       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36889 
36890 
36891       XLA_AE_LINES_PKG.ValidateCurrentLine;
36892       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36893 
36894       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36895                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36896                ,p_balance_type_code => l_balance_type_code);
36897 
36898    END IF;
36899 
36900    -----------------------------------------------------------------------------------------
36901    -- 4262811 Multiperiod Accounting
36902    -----------------------------------------------------------------------------------------
36903      -- No MPA option is assigned.
36904 
36905 
36906 END IF;
36907 END IF;
36908 --
36909 
36910 --
36911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36912    trace
36913       (p_msg      => 'END of AcctLineType_79'
36914       ,p_level    => C_LEVEL_PROCEDURE
36915       ,p_module   => l_log_module);
36916 END IF;
36917 --
36918 EXCEPTION
36919   WHEN xla_exceptions_pkg.application_exception THEN
36920       RAISE;
36921   WHEN OTHERS THEN
36922        xla_exceptions_pkg.raise_message
36923            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_79');
36924 END AcctLineType_79;
36925 --
36926 
36927 ---------------------------------------
36928 --
36929 -- PRIVATE FUNCTION
36930 --         AcctLineType_80
36931 --
36932 ---------------------------------------
36933 PROCEDURE AcctLineType_80 (
36934   p_application_id        IN NUMBER
36935  ,p_event_id              IN NUMBER
36936  ,p_calculate_acctd_flag  IN VARCHAR2
36937  ,p_calculate_g_l_flag    IN VARCHAR2
36938  ,p_actual_flag           IN OUT VARCHAR2
36939  ,p_balance_type_code     OUT VARCHAR2
36940  ,p_gain_or_loss_ref      OUT VARCHAR2
36941  
36942 --Budget Code Combination ID
36943  , p_source_2            IN NUMBER
36944 --Cost CCID
36945  , p_source_3            IN NUMBER
36946 --Allow Account Override Flag
36947  , p_source_4            IN VARCHAR2
36948 --Cost Clearing CCID
36949  , p_source_6            IN NUMBER
36950 --Adjustment Cost Clearing CCID
36951  , p_source_7            IN NUMBER
36952 --Reversing Line Flag
36953  , p_source_22            IN VARCHAR2
36954 --Actual Upgrade Credit Accounting Class
36955  , p_source_23            IN VARCHAR2
36956 --Entered Currency Code
36957  , p_source_25            IN VARCHAR2
36958 --Exchange Rate Date
36959  , p_source_27            IN DATE
36960 --Exchange Rate
36961  , p_source_28            IN NUMBER
36962 --Exchange Rate Type
36963  , p_source_29            IN VARCHAR2
36964 --Actual Upgrade Debit Accounting Class
36965  , p_source_30            IN VARCHAR2
36966 --Use Actuals Upgrade Attributes Flag
36967  , p_source_31            IN VARCHAR2
36968 --Expenditure Item ID
36969  , p_source_32            IN NUMBER
36970 --Cost Distribution Line Number
36971  , p_source_33            IN NUMBER
36972 --Line Type
36973  , p_source_34            IN VARCHAR2
36974  , p_source_34_meaning    IN VARCHAR2
36975 --Reversed Line Number
36976  , p_source_35            IN NUMBER
36977 --Entered Burdened Cost
36978  , p_source_44            IN NUMBER
36979 --Accounted Burdened Cost
36980  , p_source_45            IN NUMBER
36981 --Encumbrance Amount
36982  , p_source_46            IN NUMBER
36983 --Project Encumbrance Applied to Application Identifier
36984  , p_source_47            IN NUMBER
36985 --Project Encumbrance Applied to Distribution Type
36986  , p_source_48            IN VARCHAR2
36987 --Project Encumbrance Applied to Entity Code
36991 --Project Encumbrance Applied to First System Transaction ID
36988  , p_source_49            IN VARCHAR2
36989 --Project Encumbrance Applied to First Distribution ID
36990  , p_source_50            IN NUMBER
36992  , p_source_51            IN NUMBER
36993 --Project Encumbrance Applied to Second Distribution ID
36994  , p_source_52            IN VARCHAR2
36995 --Encumbrance Upgrade Credit Accounting Class
36996  , p_source_53            IN VARCHAR2
36997 --Encumbrance Upgrade Debit Accounting Class
36998  , p_source_54            IN VARCHAR2
36999 --Use Encumbrance Upgrade Attributes Flag
37000  , p_source_55            IN VARCHAR2
37001 --Encumbrance Type ID
37002  , p_source_56            IN NUMBER
37003 --Project Encumbrance Type ID
37004  , p_source_57            IN NUMBER
37005 )
37006 IS
37007 
37008 l_component_type              VARCHAR2(80);
37009 l_component_code              VARCHAR2(30);
37010 l_component_type_code         VARCHAR2(1);
37011 l_component_appl_id           INTEGER;
37012 l_amb_context_code            VARCHAR2(30);
37013 l_entity_code                 VARCHAR2(30);
37014 l_event_class_code            VARCHAR2(30);
37015 l_ae_header_id                NUMBER;
37016 l_event_type_code             VARCHAR2(30);
37017 l_line_definition_code        VARCHAR2(30);
37018 l_line_definition_owner_code  VARCHAR2(1);
37019 --
37020 -- adr variables
37021 l_segment                     VARCHAR2(30);
37022 l_ccid                        NUMBER;
37023 l_adr_transaction_coa_id      NUMBER;
37024 l_adr_accounting_coa_id       NUMBER;
37025 l_adr_flexfield_segment_code  VARCHAR2(30);
37026 l_adr_flex_value_set_id       NUMBER;
37027 l_adr_value_type_code         VARCHAR2(30);
37028 l_adr_value_combination_id    NUMBER;
37029 l_adr_value_segment_code      VARCHAR2(30);
37030 
37031 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37032 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37033 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37034 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37035 
37036 -- 4262811 Variables ------------------------------------------------------------------------------------------
37037 l_entered_amt_idx             NUMBER;
37038 l_accted_amt_idx              NUMBER;
37039 l_acc_rev_flag                VARCHAR2(1);
37040 l_accrual_line_num            NUMBER;
37041 l_tmp_amt                     NUMBER;
37042 l_acc_rev_natural_side_code   VARCHAR2(1);
37043 
37044 l_num_entries                 NUMBER;
37045 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37046 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37047 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37048 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37049 l_recog_line_1                NUMBER;
37050 l_recog_line_2                NUMBER;
37051 
37052 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37053 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37054 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37055 
37056 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37057 
37058 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37059 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37060 
37061 ---------------------------------------------------------------------------------------------------------------
37062 
37063 
37064 --
37065 -- bulk performance
37066 --
37067 l_balance_type_code           VARCHAR2(1);
37068 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37069 l_log_module                  VARCHAR2(240);
37070 
37071 --
37072 -- Upgrade strategy
37073 --
37074 l_actual_upg_option           VARCHAR2(1);
37075 l_enc_upg_option           VARCHAR2(1);
37076 
37077 --
37078 BEGIN
37079 --
37080 IF g_log_enabled THEN
37081       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
37082 END IF;
37083 --
37084 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37085 
37086       trace
37087          (p_msg      => 'BEGIN of AcctLineType_80'
37088          ,p_level    => C_LEVEL_PROCEDURE
37089          ,p_module   => l_log_module);
37090 
37091 END IF;
37092 --
37093 l_component_type             := 'AMB_JLT';
37094 l_component_code             := 'PA_TOT_BURDENED_COST_CLEARING';
37095 l_component_type_code        := 'S';
37096 l_component_appl_id          :=  275;
37097 l_amb_context_code           := 'DEFAULT';
37098 l_entity_code                := 'EXPENDITURES';
37099 l_event_class_code           := 'TOT_BURDENED_COST';
37100 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
37101 l_line_definition_owner_code := 'S';
37102 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
37103 --
37104 l_balance_type_code          := 'A';
37105 l_segment                     := NULL;
37106 l_ccid                        := NULL;
37107 l_adr_transaction_coa_id      := NULL;
37108 l_adr_accounting_coa_id       := NULL;
37109 l_adr_flexfield_segment_code  := NULL;
37110 l_adr_flex_value_set_id       := NULL;
37111 l_adr_value_type_code         := NULL;
37112 l_adr_value_combination_id    := NULL;
37113 l_adr_value_segment_code      := NULL;
37114 
37115 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37119 
37116 l_bflow_class_code           := '';    -- 4219869 Business Flow
37117 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37118 l_budgetary_control_flag     := 'N';
37120 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37121 l_bflow_applied_to_amt       := NULL; -- 5132302
37122 l_entered_amt_idx            := NULL;          -- 4262811
37123 l_accted_amt_idx             := NULL;          -- 4262811
37124 l_acc_rev_flag               := NULL;          -- 4262811
37125 l_accrual_line_num           := NULL;          -- 4262811
37126 l_tmp_amt                    := NULL;          -- 4262811
37127 --
37128  
37129 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37130     l_balance_type_code <> 'B' THEN
37131 IF NVL(p_source_34,'
37132 ') =  'C'
37133  THEN 
37134 
37135    --
37136    XLA_AE_LINES_PKG.SetNewLine;
37137 
37138    p_balance_type_code          := l_balance_type_code;
37139    -- set the flag so later we will know whether the gain loss line needs to be created
37140    
37141    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37142      p_actual_flag :='A';
37143    END IF;
37144 
37145    --
37146    -- bulk performance
37147    --
37148    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37149                                       p_header_num   => 0); -- 4262811
37150    --
37151    -- set accounting line options
37152    --
37153    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37154            p_natural_side_code          => 'C'
37155          , p_gain_or_loss_flag          => 'N'
37156          , p_gl_transfer_mode_code      => 'S'
37157          , p_acct_entry_type_code       => 'A'
37158          , p_switch_side_flag           => 'Y'
37159          , p_merge_duplicate_code       => 'N'
37160          );
37161    --
37162    l_acc_rev_natural_side_code := 'D';  -- 4262811
37163    -- 
37164    --
37165    -- set accounting line type info
37166    --
37167    xla_ae_lines_pkg.SetAcctLineType
37168       (p_component_type             => l_component_type
37169       ,p_event_type_code            => l_event_type_code
37170       ,p_line_definition_owner_code => l_line_definition_owner_code
37171       ,p_line_definition_code       => l_line_definition_code
37172       ,p_accounting_line_code       => l_component_code
37173       ,p_accounting_line_type_code  => l_component_type_code
37174       ,p_accounting_line_appl_id    => l_component_appl_id
37175       ,p_amb_context_code           => l_amb_context_code
37176       ,p_entity_code                => l_entity_code
37177       ,p_event_class_code           => l_event_class_code);
37178    --
37179    -- set accounting class
37180    --
37181    xla_ae_lines_pkg.SetAcctClass(
37182            p_accounting_class_code  => 'COST_CLEARING'
37183          , p_ae_header_id           => l_ae_header_id
37184          );
37185 
37186    --
37187    -- set rounding class
37188    --
37189    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37190                       'COST_CLEARING';
37191 
37192    --
37193    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37194    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37195    --
37196    -- bulk performance
37197    --
37198    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37199 
37200    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37201       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37202 
37203    -- 4955764
37204    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37205       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37206 
37207    -- 4458381 Public Sector Enh
37208    
37209    --
37210    -- set accounting attributes for the line type
37211    --
37212    l_entered_amt_idx := 40;
37213    l_accted_amt_idx  := 46;
37214    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
37215    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37216    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
37217    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
37218    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
37219    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
37220    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
37221    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
37222    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
37223    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
37224    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
37225    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
37226    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
37227    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
37228    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
37229    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
37230    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
37231    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
37232    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
37233    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
37237    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
37234    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
37235    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
37236    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
37238    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
37239    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
37240    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
37241    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
37242    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
37243    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
37244    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
37245    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
37246    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
37247    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
37248    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
37249    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
37250    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
37251    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
37252    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
37253    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
37254    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
37255    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37256    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
37257    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
37258    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
37259    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
37260    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
37261    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37262    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
37263    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
37264    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
37265    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
37266    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
37267    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
37268    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
37269    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
37270    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
37271    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
37272    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
37273    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
37274    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
37275    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
37276    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
37277    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
37278    l_rec_acct_attrs.array_char_value(32)  := 
37279 xla_ae_sources_pkg.GetSystemSourceChar(
37280    p_source_code           => 'XLA_CURRENCY_CODE'
37281  , p_source_type_code      => 'Y'
37282  , p_source_application_id =>  602
37283 );
37284    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
37285    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
37286    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
37287    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
37288    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
37289    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
37290    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
37291    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
37292    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
37293    l_rec_acct_attrs.array_char_value(37)  := 
37294 xla_ae_sources_pkg.GetSystemSourceChar(
37295    p_source_code           => 'XLA_CURRENCY_CODE'
37296  , p_source_type_code      => 'Y'
37297  , p_source_application_id =>  602
37298 );
37299    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
37300    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
37301    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
37302    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
37303    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
37304    l_rec_acct_attrs.array_num_value(40)  := p_source_44;
37305    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
37306    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
37307    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
37308    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
37309    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
37310    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
37311    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
37312    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
37313    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
37314    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
37315    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
37316    l_rec_acct_attrs.array_num_value(46)  := p_source_45;
37317    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
37318    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
37319    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
37320    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
37321    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
37325    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
37322    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
37323    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
37324    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
37326    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
37327 
37328    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37329    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37330 
37331    ---------------------------------------------------------------------------------------------------------------
37332    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37333    ---------------------------------------------------------------------------------------------------------------
37334    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37335 
37336    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37337    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37338 
37339    IF xla_accounting_cache_pkg.GetValueChar
37340          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37341          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37342    AND l_bflow_method_code = 'PRIOR_ENTRY'
37343 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37344    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37345          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37346        )
37347    THEN
37348          xla_ae_lines_pkg.BflowUpgEntry
37349            (p_business_method_code    => l_bflow_method_code
37350            ,p_business_class_code     => l_bflow_class_code
37351            ,p_balance_type            => l_balance_type_code);
37352    ELSE
37353       NULL;
37354 -- No business flow processing for business flow method of NONE.
37355    END IF;
37356 
37357    --
37358    -- call analytical criteria
37359    --
37360    
37361    --
37362    -- call description
37363    --
37364    -- No description or it is inherited.
37365    --
37366    -- call ADRs
37367    -- Bug 4922099
37368    --
37369    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37370         (NVL(l_actual_upg_option, 'N') = 'O') OR
37371         (NVL(l_enc_upg_option, 'N') = 'O')
37372       )
37373    THEN
37374    NULL;
37375    --
37376    --
37377    
37378   l_ccid := AcctDerRule_5(
37379            p_application_id           => p_application_id
37380          , p_ae_header_id             => l_ae_header_id 
37381 , p_source_4 => p_source_4
37382 , p_source_6 => p_source_6
37383 , p_source_7 => p_source_7
37384          , x_transaction_coa_id       => l_adr_transaction_coa_id
37385          , x_accounting_coa_id        => l_adr_accounting_coa_id
37386          , x_value_type_code          => l_adr_value_type_code
37387          , p_side                     => 'NA'
37388    );
37389 
37390    xla_ae_lines_pkg.set_ccid(
37391     p_code_combination_id          => l_ccid
37392   , p_value_type_code              => l_adr_value_type_code
37393   , p_transaction_coa_id           => l_adr_transaction_coa_id
37394   , p_accounting_coa_id            => l_adr_accounting_coa_id
37395   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
37396   , p_adr_type_code                => 'S'
37397   , p_component_type               => l_component_type
37398   , p_component_code               => l_component_code
37399   , p_component_type_code          => l_component_type_code
37400   , p_component_appl_id            => l_component_appl_id
37401   , p_amb_context_code             => l_amb_context_code
37402   , p_side                         => 'NA'
37403   );
37404 
37405 
37406    --
37407    --
37408    END IF;
37409    --
37410    -- Bug 4922099
37411    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37412           (NVL(l_enc_upg_option, 'N') = 'O')
37413         ) AND
37414         (l_bflow_method_code = 'PRIOR_ENTRY')
37415       )
37416    THEN
37417       IF
37418       --
37419       1 = 2
37420       --
37421       THEN
37422       xla_accounting_err_pkg.build_message
37423                                     (p_appli_s_name            => 'XLA'
37424                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37425                                     ,p_token_1                 => 'LINE_NUMBER'
37426                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37427                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37428                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37429                                                                              l_component_type
37430                                                                             ,l_component_code
37431                                                                             ,l_component_type_code
37432                                                                             ,l_component_appl_id
37433                                                                             ,l_amb_context_code
37434                                                                             ,l_entity_code
37435                                                                             ,l_event_class_code
37439                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37436                                                                            )
37437                                     ,p_token_3                 => 'OWNER'
37438                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37440                                                                           ,p_lookup_code    => l_component_type_code
37441                                                                          )
37442                                     ,p_token_4                 => 'PRODUCT_NAME'
37443                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37444                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37445                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37446                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37447                                     ,p_ae_header_id            =>  NULL
37448                                        );
37449 
37450         IF (C_LEVEL_ERROR>= g_log_level) THEN
37451                  trace
37452                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37453                       ,p_level    => C_LEVEL_ERROR
37454                       ,p_module   => l_log_module);
37455         END IF;
37456       END IF;
37457    END IF;
37458    --
37459    --
37460    ------------------------------------------------------------------------------------------------
37461    -- 4219869 Business Flow
37462    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37463    -- Prior Entry.  Currently, the following code is always generated.
37464    ------------------------------------------------------------------------------------------------
37465    XLA_AE_LINES_PKG.ValidateCurrentLine;
37466 
37467    ------------------------------------------------------------------------------------
37468    -- 4219869 Business Flow
37469    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37470    ------------------------------------------------------------------------------------
37471    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37472 
37473    ----------------------------------------------------------------------------------
37474    -- 4219869 Business Flow
37475    -- Update journal entry status -- Need to generate this within IF <condition>
37476    ----------------------------------------------------------------------------------
37477    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37478          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37479          ,p_balance_type_code => l_balance_type_code
37480          );
37481 
37482    -------------------------------------------------------------------------------------------
37483    -- 4262811 - Generate the Accrual Reversal lines
37484    -------------------------------------------------------------------------------------------
37485    BEGIN
37486       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37487                               (g_array_event(p_event_id).array_value_num('header_index'));
37488       IF l_acc_rev_flag IS NULL THEN
37489          l_acc_rev_flag := 'N';
37490       END IF;
37491    EXCEPTION
37492       WHEN OTHERS THEN
37493          l_acc_rev_flag := 'N';
37494    END;
37495    --
37496    IF (l_acc_rev_flag = 'Y') THEN
37497 
37498        -- 4645092  ------------------------------------------------------------------------------
37499        -- To allow MPA report to determine if it should generate report process
37500        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37501        ------------------------------------------------------------------------------------------
37502 
37503        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37504        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37505 
37506        --
37507        -- Update the line information that should be overwritten
37508        --
37509        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37510                                          p_header_num   => 1);
37511        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37512 
37513        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37514 
37515        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37516           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37517        END IF;
37518 
37519       --
37520       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37521       --
37522       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37523           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37524       ELSE
37525           ---------------------------------------------------------------------------------------------------
37526           -- 4262811a Switch Sign
37527           ---------------------------------------------------------------------------------------------------
37528           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37532                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37529           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37530                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37531           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37533           -- 5132302
37534           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37535                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37536 
37537       END IF;
37538 
37539       -- 4955764
37540       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37541       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37542 
37543 
37544       XLA_AE_LINES_PKG.ValidateCurrentLine;
37545       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37546 
37547       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37548                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37549                ,p_balance_type_code => l_balance_type_code);
37550 
37551    END IF;
37552 
37553    -----------------------------------------------------------------------------------------
37554    -- 4262811 Multiperiod Accounting
37555    -----------------------------------------------------------------------------------------
37556      -- No MPA option is assigned.
37557 
37558 
37559 END IF;
37560 END IF;
37561 --
37562 
37563 --
37564 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37565    trace
37566       (p_msg      => 'END of AcctLineType_80'
37567       ,p_level    => C_LEVEL_PROCEDURE
37568       ,p_module   => l_log_module);
37569 END IF;
37570 --
37571 EXCEPTION
37572   WHEN xla_exceptions_pkg.application_exception THEN
37573       RAISE;
37574   WHEN OTHERS THEN
37575        xla_exceptions_pkg.raise_message
37576            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_80');
37577 END AcctLineType_80;
37578 --
37579 
37580 ---------------------------------------
37581 --
37582 -- PRIVATE FUNCTION
37583 --         AcctLineType_81
37584 --
37585 ---------------------------------------
37586 PROCEDURE AcctLineType_81 (
37587   p_application_id        IN NUMBER
37588  ,p_event_id              IN NUMBER
37589  ,p_calculate_acctd_flag  IN VARCHAR2
37590  ,p_calculate_g_l_flag    IN VARCHAR2
37591  ,p_actual_flag           IN OUT VARCHAR2
37592  ,p_balance_type_code     OUT VARCHAR2
37593  ,p_gain_or_loss_ref      OUT VARCHAR2
37594  
37595 --Budget Code Combination ID
37596  , p_source_2            IN NUMBER
37597 --Cost CCID
37598  , p_source_3            IN NUMBER
37599 --Allow Account Override Flag
37600  , p_source_4            IN VARCHAR2
37601 --Cost Clearing CCID
37602  , p_source_6            IN NUMBER
37603 --Adjustment Cost Clearing CCID
37604  , p_source_7            IN NUMBER
37605 --Reversing Line Flag
37606  , p_source_22            IN VARCHAR2
37607 --Actual Upgrade Credit Accounting Class
37608  , p_source_23            IN VARCHAR2
37609 --Entered Currency Code
37610  , p_source_25            IN VARCHAR2
37611 --Exchange Rate Date
37612  , p_source_27            IN DATE
37613 --Exchange Rate
37614  , p_source_28            IN NUMBER
37615 --Exchange Rate Type
37616  , p_source_29            IN VARCHAR2
37617 --Actual Upgrade Debit Accounting Class
37618  , p_source_30            IN VARCHAR2
37619 --Use Actuals Upgrade Attributes Flag
37620  , p_source_31            IN VARCHAR2
37621 --Expenditure Item ID
37622  , p_source_32            IN NUMBER
37623 --Cost Distribution Line Number
37624  , p_source_33            IN NUMBER
37625 --Line Type
37626  , p_source_34            IN VARCHAR2
37627  , p_source_34_meaning    IN VARCHAR2
37628 --Reversed Line Number
37629  , p_source_35            IN NUMBER
37630 --Entered Burdened Cost
37631  , p_source_44            IN NUMBER
37632 --Accounted Burdened Cost
37633  , p_source_45            IN NUMBER
37634 --Encumbrance Amount
37635  , p_source_46            IN NUMBER
37636 --Project Encumbrance Applied to Application Identifier
37637  , p_source_47            IN NUMBER
37638 --Project Encumbrance Applied to Distribution Type
37639  , p_source_48            IN VARCHAR2
37640 --Project Encumbrance Applied to Entity Code
37641  , p_source_49            IN VARCHAR2
37642 --Project Encumbrance Applied to First Distribution ID
37643  , p_source_50            IN NUMBER
37644 --Project Encumbrance Applied to First System Transaction ID
37645  , p_source_51            IN NUMBER
37646 --Project Encumbrance Applied to Second Distribution ID
37647  , p_source_52            IN VARCHAR2
37648 --Encumbrance Upgrade Debit Accounting Class
37649  , p_source_54            IN VARCHAR2
37650 --Use Encumbrance Upgrade Attributes Flag
37651  , p_source_55            IN VARCHAR2
37652 --Encumbrance Type ID
37653  , p_source_56            IN NUMBER
37654 --Project Encumbrance Type ID
37655  , p_source_57            IN NUMBER
37656 )
37657 IS
37658 
37659 l_component_type              VARCHAR2(80);
37660 l_component_code              VARCHAR2(30);
37661 l_component_type_code         VARCHAR2(1);
37662 l_component_appl_id           INTEGER;
37666 l_ae_header_id                NUMBER;
37663 l_amb_context_code            VARCHAR2(30);
37664 l_entity_code                 VARCHAR2(30);
37665 l_event_class_code            VARCHAR2(30);
37667 l_event_type_code             VARCHAR2(30);
37668 l_line_definition_code        VARCHAR2(30);
37669 l_line_definition_owner_code  VARCHAR2(1);
37670 --
37671 -- adr variables
37672 l_segment                     VARCHAR2(30);
37673 l_ccid                        NUMBER;
37674 l_adr_transaction_coa_id      NUMBER;
37675 l_adr_accounting_coa_id       NUMBER;
37676 l_adr_flexfield_segment_code  VARCHAR2(30);
37677 l_adr_flex_value_set_id       NUMBER;
37678 l_adr_value_type_code         VARCHAR2(30);
37679 l_adr_value_combination_id    NUMBER;
37680 l_adr_value_segment_code      VARCHAR2(30);
37681 
37682 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37683 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37684 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37685 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37686 
37687 -- 4262811 Variables ------------------------------------------------------------------------------------------
37688 l_entered_amt_idx             NUMBER;
37689 l_accted_amt_idx              NUMBER;
37690 l_acc_rev_flag                VARCHAR2(1);
37691 l_accrual_line_num            NUMBER;
37692 l_tmp_amt                     NUMBER;
37693 l_acc_rev_natural_side_code   VARCHAR2(1);
37694 
37695 l_num_entries                 NUMBER;
37696 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37697 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37698 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37699 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37700 l_recog_line_1                NUMBER;
37701 l_recog_line_2                NUMBER;
37702 
37703 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37704 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37705 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37706 
37707 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37708 
37709 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37710 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37711 
37712 ---------------------------------------------------------------------------------------------------------------
37713 
37714 
37715 --
37716 -- bulk performance
37717 --
37718 l_balance_type_code           VARCHAR2(1);
37719 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37720 l_log_module                  VARCHAR2(240);
37721 
37722 --
37723 -- Upgrade strategy
37724 --
37725 l_actual_upg_option           VARCHAR2(1);
37726 l_enc_upg_option           VARCHAR2(1);
37727 
37728 --
37729 BEGIN
37730 --
37731 IF g_log_enabled THEN
37732       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
37733 END IF;
37734 --
37735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37736 
37737       trace
37738          (p_msg      => 'BEGIN of AcctLineType_81'
37739          ,p_level    => C_LEVEL_PROCEDURE
37740          ,p_module   => l_log_module);
37741 
37742 END IF;
37743 --
37744 l_component_type             := 'AMB_JLT';
37745 l_component_code             := 'PA_TOT_BURDENED_COST_CLEAR_ADJ';
37746 l_component_type_code        := 'S';
37747 l_component_appl_id          :=  275;
37748 l_amb_context_code           := 'DEFAULT';
37749 l_entity_code                := 'EXPENDITURES';
37750 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
37751 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
37752 l_line_definition_owner_code := 'S';
37753 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
37754 --
37755 l_balance_type_code          := 'A';
37756 l_segment                     := NULL;
37757 l_ccid                        := NULL;
37758 l_adr_transaction_coa_id      := NULL;
37759 l_adr_accounting_coa_id       := NULL;
37760 l_adr_flexfield_segment_code  := NULL;
37761 l_adr_flex_value_set_id       := NULL;
37762 l_adr_value_type_code         := NULL;
37763 l_adr_value_combination_id    := NULL;
37764 l_adr_value_segment_code      := NULL;
37765 
37766 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37767 l_bflow_class_code           := '';    -- 4219869 Business Flow
37768 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37769 l_budgetary_control_flag     := 'N';
37770 
37771 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37772 l_bflow_applied_to_amt       := NULL; -- 5132302
37773 l_entered_amt_idx            := NULL;          -- 4262811
37774 l_accted_amt_idx             := NULL;          -- 4262811
37775 l_acc_rev_flag               := NULL;          -- 4262811
37776 l_accrual_line_num           := NULL;          -- 4262811
37777 l_tmp_amt                    := NULL;          -- 4262811
37778 --
37779  
37780 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37781     l_balance_type_code <> 'B' THEN
37782 IF NVL(p_source_34,'
37783 ') =  'C'
37784  THEN 
37785 
37786    --
37787    XLA_AE_LINES_PKG.SetNewLine;
37788 
37789    p_balance_type_code          := l_balance_type_code;
37793      p_actual_flag :='A';
37790    -- set the flag so later we will know whether the gain loss line needs to be created
37791    
37792    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37794    END IF;
37795 
37796    --
37797    -- bulk performance
37798    --
37799    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37800                                       p_header_num   => 0); -- 4262811
37801    --
37802    -- set accounting line options
37803    --
37804    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37805            p_natural_side_code          => 'C'
37806          , p_gain_or_loss_flag          => 'N'
37807          , p_gl_transfer_mode_code      => 'S'
37808          , p_acct_entry_type_code       => 'A'
37809          , p_switch_side_flag           => 'Y'
37810          , p_merge_duplicate_code       => 'N'
37811          );
37812    --
37813    l_acc_rev_natural_side_code := 'D';  -- 4262811
37814    -- 
37815    --
37816    -- set accounting line type info
37817    --
37818    xla_ae_lines_pkg.SetAcctLineType
37819       (p_component_type             => l_component_type
37820       ,p_event_type_code            => l_event_type_code
37821       ,p_line_definition_owner_code => l_line_definition_owner_code
37822       ,p_line_definition_code       => l_line_definition_code
37823       ,p_accounting_line_code       => l_component_code
37824       ,p_accounting_line_type_code  => l_component_type_code
37825       ,p_accounting_line_appl_id    => l_component_appl_id
37826       ,p_amb_context_code           => l_amb_context_code
37827       ,p_entity_code                => l_entity_code
37828       ,p_event_class_code           => l_event_class_code);
37829    --
37830    -- set accounting class
37831    --
37832    xla_ae_lines_pkg.SetAcctClass(
37833            p_accounting_class_code  => 'COST_CLEARING'
37834          , p_ae_header_id           => l_ae_header_id
37835          );
37836 
37837    --
37838    -- set rounding class
37839    --
37840    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37841                       'COST_CLEARING';
37842 
37843    --
37844    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37845    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37846    --
37847    -- bulk performance
37848    --
37849    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37850 
37851    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37852       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37853 
37854    -- 4955764
37855    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37856       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37857 
37858    -- 4458381 Public Sector Enh
37859    
37860    --
37861    -- set accounting attributes for the line type
37862    --
37863    l_entered_amt_idx := 35;
37864    l_accted_amt_idx  := 40;
37865    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
37866    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37867    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
37868    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
37869    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
37870    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
37871    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
37872    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
37873    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
37874    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
37875    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
37876    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
37877    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
37878    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
37879    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
37880    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
37881    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
37882    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
37883    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
37884    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
37885    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
37886    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
37887    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
37888    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
37889    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
37890    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
37891    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
37892    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
37893    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
37894    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
37895    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
37896    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
37897    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
37898    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
37899    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
37903    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
37900    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
37901    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
37902    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
37904    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
37905    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
37906    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37907    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
37908    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
37909    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
37910    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
37911    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
37912    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37913    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
37914    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
37915    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
37916    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
37917    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
37918    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
37919    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
37920    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
37921    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
37922    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
37923    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
37924    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
37925    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
37926    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
37927    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
37928    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
37929    l_rec_acct_attrs.array_char_value(32)  := 
37930 xla_ae_sources_pkg.GetSystemSourceChar(
37931    p_source_code           => 'XLA_CURRENCY_CODE'
37932  , p_source_type_code      => 'Y'
37933  , p_source_application_id =>  602
37934 );
37935    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
37936    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
37937    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
37938    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
37939    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
37940    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
37941    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
37942    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
37943    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
37944    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
37945    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
37946    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
37947    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
37948    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
37949    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
37950    l_rec_acct_attrs.array_num_value(40)  := p_source_45;
37951    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
37952    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
37953    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
37954    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
37955    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
37956    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
37957    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
37958    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
37959    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
37960    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
37961 
37962    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37963    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37964 
37965    ---------------------------------------------------------------------------------------------------------------
37966    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37967    ---------------------------------------------------------------------------------------------------------------
37968    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37969 
37970    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37971    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37972 
37973    IF xla_accounting_cache_pkg.GetValueChar
37974          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37975          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37976    AND l_bflow_method_code = 'PRIOR_ENTRY'
37977 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37978    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37979          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37980        )
37981    THEN
37982          xla_ae_lines_pkg.BflowUpgEntry
37983            (p_business_method_code    => l_bflow_method_code
37984            ,p_business_class_code     => l_bflow_class_code
37985            ,p_balance_type            => l_balance_type_code);
37986    ELSE
37987       NULL;
37988 -- No business flow processing for business flow method of NONE.
37992    -- call analytical criteria
37989    END IF;
37990 
37991    --
37993    --
37994    
37995    --
37996    -- call description
37997    --
37998    -- No description or it is inherited.
37999    --
38000    -- call ADRs
38001    -- Bug 4922099
38002    --
38003    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38004         (NVL(l_actual_upg_option, 'N') = 'O') OR
38005         (NVL(l_enc_upg_option, 'N') = 'O')
38006       )
38007    THEN
38008    NULL;
38009    --
38010    --
38011    
38012   l_ccid := AcctDerRule_6(
38013            p_application_id           => p_application_id
38014          , p_ae_header_id             => l_ae_header_id 
38015 , p_source_4 => p_source_4
38016 , p_source_7 => p_source_7
38017          , x_transaction_coa_id       => l_adr_transaction_coa_id
38018          , x_accounting_coa_id        => l_adr_accounting_coa_id
38019          , x_value_type_code          => l_adr_value_type_code
38020          , p_side                     => 'NA'
38021    );
38022 
38023    xla_ae_lines_pkg.set_ccid(
38024     p_code_combination_id          => l_ccid
38025   , p_value_type_code              => l_adr_value_type_code
38026   , p_transaction_coa_id           => l_adr_transaction_coa_id
38027   , p_accounting_coa_id            => l_adr_accounting_coa_id
38028   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
38029   , p_adr_type_code                => 'S'
38030   , p_component_type               => l_component_type
38031   , p_component_code               => l_component_code
38032   , p_component_type_code          => l_component_type_code
38033   , p_component_appl_id            => l_component_appl_id
38034   , p_amb_context_code             => l_amb_context_code
38035   , p_side                         => 'NA'
38036   );
38037 
38038 
38039    --
38040    --
38041    END IF;
38042    --
38043    -- Bug 4922099
38044    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38045           (NVL(l_enc_upg_option, 'N') = 'O')
38046         ) AND
38047         (l_bflow_method_code = 'PRIOR_ENTRY')
38048       )
38049    THEN
38050       IF
38051       --
38052       1 = 2
38053       --
38054       THEN
38055       xla_accounting_err_pkg.build_message
38056                                     (p_appli_s_name            => 'XLA'
38057                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38058                                     ,p_token_1                 => 'LINE_NUMBER'
38059                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38060                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38061                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38062                                                                              l_component_type
38063                                                                             ,l_component_code
38064                                                                             ,l_component_type_code
38065                                                                             ,l_component_appl_id
38066                                                                             ,l_amb_context_code
38067                                                                             ,l_entity_code
38068                                                                             ,l_event_class_code
38069                                                                            )
38070                                     ,p_token_3                 => 'OWNER'
38071                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38072                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38073                                                                           ,p_lookup_code    => l_component_type_code
38074                                                                          )
38075                                     ,p_token_4                 => 'PRODUCT_NAME'
38076                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38077                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38078                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38079                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38080                                     ,p_ae_header_id            =>  NULL
38081                                        );
38082 
38083         IF (C_LEVEL_ERROR>= g_log_level) THEN
38084                  trace
38085                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38086                       ,p_level    => C_LEVEL_ERROR
38087                       ,p_module   => l_log_module);
38088         END IF;
38089       END IF;
38090    END IF;
38091    --
38092    --
38093    ------------------------------------------------------------------------------------------------
38094    -- 4219869 Business Flow
38095    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38096    -- Prior Entry.  Currently, the following code is always generated.
38097    ------------------------------------------------------------------------------------------------
38101    -- 4219869 Business Flow
38098    XLA_AE_LINES_PKG.ValidateCurrentLine;
38099 
38100    ------------------------------------------------------------------------------------
38102    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38103    ------------------------------------------------------------------------------------
38104    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38105 
38106    ----------------------------------------------------------------------------------
38107    -- 4219869 Business Flow
38108    -- Update journal entry status -- Need to generate this within IF <condition>
38109    ----------------------------------------------------------------------------------
38110    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38111          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38112          ,p_balance_type_code => l_balance_type_code
38113          );
38114 
38115    -------------------------------------------------------------------------------------------
38116    -- 4262811 - Generate the Accrual Reversal lines
38117    -------------------------------------------------------------------------------------------
38118    BEGIN
38119       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38120                               (g_array_event(p_event_id).array_value_num('header_index'));
38121       IF l_acc_rev_flag IS NULL THEN
38122          l_acc_rev_flag := 'N';
38123       END IF;
38124    EXCEPTION
38125       WHEN OTHERS THEN
38126          l_acc_rev_flag := 'N';
38127    END;
38128    --
38129    IF (l_acc_rev_flag = 'Y') THEN
38130 
38131        -- 4645092  ------------------------------------------------------------------------------
38132        -- To allow MPA report to determine if it should generate report process
38133        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38134        ------------------------------------------------------------------------------------------
38135 
38136        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38137        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38138 
38139        --
38140        -- Update the line information that should be overwritten
38141        --
38142        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38143                                          p_header_num   => 1);
38144        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38145 
38146        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38147 
38148        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38149           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38150        END IF;
38151 
38152       --
38153       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38154       --
38155       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38156           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38157       ELSE
38158           ---------------------------------------------------------------------------------------------------
38159           -- 4262811a Switch Sign
38160           ---------------------------------------------------------------------------------------------------
38161           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38162           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38163                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38164           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38165                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38166           -- 5132302
38167           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38168                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38169 
38170       END IF;
38171 
38172       -- 4955764
38173       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38174       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38175 
38176 
38177       XLA_AE_LINES_PKG.ValidateCurrentLine;
38178       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38179 
38180       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38181                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38182                ,p_balance_type_code => l_balance_type_code);
38183 
38184    END IF;
38185 
38186    -----------------------------------------------------------------------------------------
38187    -- 4262811 Multiperiod Accounting
38188    -----------------------------------------------------------------------------------------
38189      -- No MPA option is assigned.
38190 
38191 
38192 END IF;
38193 END IF;
38194 --
38195 
38196 --
38197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38198    trace
38199       (p_msg      => 'END of AcctLineType_81'
38200       ,p_level    => C_LEVEL_PROCEDURE
38201       ,p_module   => l_log_module);
38202 END IF;
38203 --
38204 EXCEPTION
38208        xla_exceptions_pkg.raise_message
38205   WHEN xla_exceptions_pkg.application_exception THEN
38206       RAISE;
38207   WHEN OTHERS THEN
38209            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_81');
38210 END AcctLineType_81;
38211 --
38212 
38213 ---------------------------------------
38214 --
38215 -- PRIVATE FUNCTION
38216 --         AcctLineType_82
38217 --
38218 ---------------------------------------
38219 PROCEDURE AcctLineType_82 (
38220   p_application_id        IN NUMBER
38221  ,p_event_id              IN NUMBER
38222  ,p_calculate_acctd_flag  IN VARCHAR2
38223  ,p_calculate_g_l_flag    IN VARCHAR2
38224  ,p_actual_flag           IN OUT VARCHAR2
38225  ,p_balance_type_code     OUT VARCHAR2
38226  ,p_gain_or_loss_ref      OUT VARCHAR2
38227  
38228 --Unbilled Receivables CCID
38229  , p_source_19            IN NUMBER
38230 --Entered Currency Code
38231  , p_source_25            IN VARCHAR2
38232 --Exchange Rate Date
38233  , p_source_27            IN DATE
38234 --Exchange Rate
38235  , p_source_28            IN NUMBER
38236 --Exchange Rate Type
38237  , p_source_29            IN VARCHAR2
38238 --Revenue Distribution Type
38239  , p_source_36            IN VARCHAR2
38240 --Crediting Revenue Flag
38241  , p_source_38            IN VARCHAR2
38242 --Revenue First Distribution ID
38243  , p_source_39            IN NUMBER
38244 --Revenue Second Distribution ID
38245  , p_source_40            IN NUMBER
38246 --Entered Amount
38247  , p_source_41            IN NUMBER
38248 --Event ID
38249  , p_source_42            IN NUMBER
38250 --Accounted Amount
38251  , p_source_43            IN NUMBER
38252 )
38253 IS
38254 
38255 l_component_type              VARCHAR2(80);
38256 l_component_code              VARCHAR2(30);
38257 l_component_type_code         VARCHAR2(1);
38258 l_component_appl_id           INTEGER;
38259 l_amb_context_code            VARCHAR2(30);
38260 l_entity_code                 VARCHAR2(30);
38261 l_event_class_code            VARCHAR2(30);
38262 l_ae_header_id                NUMBER;
38263 l_event_type_code             VARCHAR2(30);
38264 l_line_definition_code        VARCHAR2(30);
38265 l_line_definition_owner_code  VARCHAR2(1);
38266 --
38267 -- adr variables
38268 l_segment                     VARCHAR2(30);
38269 l_ccid                        NUMBER;
38270 l_adr_transaction_coa_id      NUMBER;
38271 l_adr_accounting_coa_id       NUMBER;
38272 l_adr_flexfield_segment_code  VARCHAR2(30);
38273 l_adr_flex_value_set_id       NUMBER;
38274 l_adr_value_type_code         VARCHAR2(30);
38275 l_adr_value_combination_id    NUMBER;
38276 l_adr_value_segment_code      VARCHAR2(30);
38277 
38278 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38279 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38280 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38281 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38282 
38283 -- 4262811 Variables ------------------------------------------------------------------------------------------
38284 l_entered_amt_idx             NUMBER;
38285 l_accted_amt_idx              NUMBER;
38286 l_acc_rev_flag                VARCHAR2(1);
38287 l_accrual_line_num            NUMBER;
38288 l_tmp_amt                     NUMBER;
38289 l_acc_rev_natural_side_code   VARCHAR2(1);
38290 
38291 l_num_entries                 NUMBER;
38292 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38293 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38294 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38295 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38296 l_recog_line_1                NUMBER;
38297 l_recog_line_2                NUMBER;
38298 
38299 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38300 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38301 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38302 
38303 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38304 
38305 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38306 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38307 
38308 ---------------------------------------------------------------------------------------------------------------
38309 
38310 
38311 --
38312 -- bulk performance
38313 --
38314 l_balance_type_code           VARCHAR2(1);
38315 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38316 l_log_module                  VARCHAR2(240);
38317 
38318 --
38319 -- Upgrade strategy
38320 --
38321 l_actual_upg_option           VARCHAR2(1);
38322 l_enc_upg_option           VARCHAR2(1);
38323 
38324 --
38325 BEGIN
38326 --
38327 IF g_log_enabled THEN
38328       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
38329 END IF;
38330 --
38331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38332 
38333       trace
38334          (p_msg      => 'BEGIN of AcctLineType_82'
38335          ,p_level    => C_LEVEL_PROCEDURE
38336          ,p_module   => l_log_module);
38337 
38338 END IF;
38339 --
38340 l_component_type             := 'AMB_JLT';
38341 l_component_code             := 'PA_UBR';
38342 l_component_type_code        := 'S';
38343 l_component_appl_id          :=  275;
38347 l_event_type_code            := 'REVENUE_ALL';
38344 l_amb_context_code           := 'DEFAULT';
38345 l_entity_code                := 'REVENUE';
38346 l_event_class_code           := 'REVENUE';
38348 l_line_definition_owner_code := 'S';
38349 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
38350 --
38351 l_balance_type_code          := 'A';
38352 l_segment                     := NULL;
38353 l_ccid                        := NULL;
38354 l_adr_transaction_coa_id      := NULL;
38355 l_adr_accounting_coa_id       := NULL;
38356 l_adr_flexfield_segment_code  := NULL;
38357 l_adr_flex_value_set_id       := NULL;
38358 l_adr_value_type_code         := NULL;
38359 l_adr_value_combination_id    := NULL;
38360 l_adr_value_segment_code      := NULL;
38361 
38362 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38363 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
38364 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38365 l_budgetary_control_flag     := 'N';
38366 
38367 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38368 l_bflow_applied_to_amt       := NULL; -- 5132302
38369 l_entered_amt_idx            := NULL;          -- 4262811
38370 l_accted_amt_idx             := NULL;          -- 4262811
38371 l_acc_rev_flag               := NULL;          -- 4262811
38372 l_accrual_line_num           := NULL;          -- 4262811
38373 l_tmp_amt                    := NULL;          -- 4262811
38374 --
38375  
38376 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38377     l_balance_type_code <> 'B' THEN
38378 IF NVL(p_source_36,'
38379 ') =  'Revenue - UBR' AND 
38380 NVL(p_source_38,'
38381 ') =  'N'
38382  THEN 
38383 
38384    --
38385    XLA_AE_LINES_PKG.SetNewLine;
38386 
38387    p_balance_type_code          := l_balance_type_code;
38388    -- set the flag so later we will know whether the gain loss line needs to be created
38389    
38390    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38391      p_actual_flag :='A';
38392    END IF;
38393 
38394    --
38395    -- bulk performance
38396    --
38397    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38398                                       p_header_num   => 0); -- 4262811
38399    --
38400    -- set accounting line options
38401    --
38402    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38403            p_natural_side_code          => 'D'
38404          , p_gain_or_loss_flag          => 'N'
38405          , p_gl_transfer_mode_code      => 'S'
38406          , p_acct_entry_type_code       => 'A'
38407          , p_switch_side_flag           => 'Y'
38408          , p_merge_duplicate_code       => 'N'
38409          );
38410    --
38411    l_acc_rev_natural_side_code := 'C';  -- 4262811
38412    -- 
38413    --
38414    -- set accounting line type info
38415    --
38416    xla_ae_lines_pkg.SetAcctLineType
38417       (p_component_type             => l_component_type
38418       ,p_event_type_code            => l_event_type_code
38419       ,p_line_definition_owner_code => l_line_definition_owner_code
38420       ,p_line_definition_code       => l_line_definition_code
38421       ,p_accounting_line_code       => l_component_code
38422       ,p_accounting_line_type_code  => l_component_type_code
38423       ,p_accounting_line_appl_id    => l_component_appl_id
38424       ,p_amb_context_code           => l_amb_context_code
38425       ,p_entity_code                => l_entity_code
38426       ,p_event_class_code           => l_event_class_code);
38427    --
38428    -- set accounting class
38429    --
38430    xla_ae_lines_pkg.SetAcctClass(
38431            p_accounting_class_code  => 'UNBILL'
38432          , p_ae_header_id           => l_ae_header_id
38433          );
38434 
38435    --
38436    -- set rounding class
38437    --
38438    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38439                       'UNBILL';
38440 
38441    --
38442    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38443    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38444    --
38445    -- bulk performance
38446    --
38447    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38448 
38449    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38450       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38451 
38452    -- 4955764
38453    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38454       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38455 
38456    -- 4458381 Public Sector Enh
38457    
38458    --
38459    -- set accounting attributes for the line type
38460    --
38461    l_entered_amt_idx := 4;
38462    l_accted_amt_idx  := 10;
38463    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38464    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38465    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
38466    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
38467    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
38468    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
38469    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
38473    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
38470    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
38471    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
38472    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
38474    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
38475    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
38476    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
38477    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
38478    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
38479    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
38480    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
38481    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
38482    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
38483    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
38484 
38485    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38486    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38487 
38488    ---------------------------------------------------------------------------------------------------------------
38489    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38490    ---------------------------------------------------------------------------------------------------------------
38491    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38492 
38493    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38494    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38495 
38496    IF xla_accounting_cache_pkg.GetValueChar
38497          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38498          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38499    AND l_bflow_method_code = 'PRIOR_ENTRY'
38500 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38501    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38502          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38503        )
38504    THEN
38505          xla_ae_lines_pkg.BflowUpgEntry
38506            (p_business_method_code    => l_bflow_method_code
38507            ,p_business_class_code     => l_bflow_class_code
38508            ,p_balance_type            => l_balance_type_code);
38509    ELSE
38510       NULL;
38511 -- No business flow processing for business flow method of NONE.
38512    END IF;
38513 
38514    --
38515    -- call analytical criteria
38516    --
38517    
38518    --
38519    -- call description
38520    --
38521    -- No description or it is inherited.
38522    --
38523    -- call ADRs
38524    -- Bug 4922099
38525    --
38526    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38527         (NVL(l_actual_upg_option, 'N') = 'O') OR
38528         (NVL(l_enc_upg_option, 'N') = 'O')
38529       )
38530    THEN
38531    NULL;
38532    --
38533    --
38534    
38535   l_ccid := AcctDerRule_18(
38536            p_application_id           => p_application_id
38537          , p_ae_header_id             => l_ae_header_id 
38538 , p_source_19 => p_source_19
38539          , x_transaction_coa_id       => l_adr_transaction_coa_id
38540          , x_accounting_coa_id        => l_adr_accounting_coa_id
38541          , x_value_type_code          => l_adr_value_type_code
38542          , p_side                     => 'NA'
38543    );
38544 
38545    xla_ae_lines_pkg.set_ccid(
38546     p_code_combination_id          => l_ccid
38547   , p_value_type_code              => l_adr_value_type_code
38548   , p_transaction_coa_id           => l_adr_transaction_coa_id
38549   , p_accounting_coa_id            => l_adr_accounting_coa_id
38550   , p_adr_code                     => 'UBR_RULE'
38551   , p_adr_type_code                => 'S'
38552   , p_component_type               => l_component_type
38553   , p_component_code               => l_component_code
38554   , p_component_type_code          => l_component_type_code
38555   , p_component_appl_id            => l_component_appl_id
38556   , p_amb_context_code             => l_amb_context_code
38557   , p_side                         => 'NA'
38558   );
38559 
38560 
38561    --
38562    --
38563    END IF;
38564    --
38565    -- Bug 4922099
38566    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38567           (NVL(l_enc_upg_option, 'N') = 'O')
38568         ) AND
38569         (l_bflow_method_code = 'PRIOR_ENTRY')
38570       )
38571    THEN
38572       IF
38573       --
38574       1 = 2
38575       --
38576       THEN
38577       xla_accounting_err_pkg.build_message
38578                                     (p_appli_s_name            => 'XLA'
38579                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38580                                     ,p_token_1                 => 'LINE_NUMBER'
38581                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38582                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38583                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38584                                                                              l_component_type
38585                                                                             ,l_component_code
38589                                                                             ,l_entity_code
38586                                                                             ,l_component_type_code
38587                                                                             ,l_component_appl_id
38588                                                                             ,l_amb_context_code
38590                                                                             ,l_event_class_code
38591                                                                            )
38592                                     ,p_token_3                 => 'OWNER'
38593                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38594                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38595                                                                           ,p_lookup_code    => l_component_type_code
38596                                                                          )
38597                                     ,p_token_4                 => 'PRODUCT_NAME'
38598                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38599                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38600                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38601                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38602                                     ,p_ae_header_id            =>  NULL
38603                                        );
38604 
38605         IF (C_LEVEL_ERROR>= g_log_level) THEN
38606                  trace
38607                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38608                       ,p_level    => C_LEVEL_ERROR
38609                       ,p_module   => l_log_module);
38610         END IF;
38611       END IF;
38612    END IF;
38613    --
38614    --
38615    ------------------------------------------------------------------------------------------------
38616    -- 4219869 Business Flow
38617    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38618    -- Prior Entry.  Currently, the following code is always generated.
38619    ------------------------------------------------------------------------------------------------
38620    XLA_AE_LINES_PKG.ValidateCurrentLine;
38621 
38622    ------------------------------------------------------------------------------------
38623    -- 4219869 Business Flow
38624    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38625    ------------------------------------------------------------------------------------
38626    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38627 
38628    ----------------------------------------------------------------------------------
38629    -- 4219869 Business Flow
38630    -- Update journal entry status -- Need to generate this within IF <condition>
38631    ----------------------------------------------------------------------------------
38632    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38633          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38634          ,p_balance_type_code => l_balance_type_code
38635          );
38636 
38637    -------------------------------------------------------------------------------------------
38638    -- 4262811 - Generate the Accrual Reversal lines
38639    -------------------------------------------------------------------------------------------
38640    BEGIN
38641       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38642                               (g_array_event(p_event_id).array_value_num('header_index'));
38643       IF l_acc_rev_flag IS NULL THEN
38644          l_acc_rev_flag := 'N';
38645       END IF;
38646    EXCEPTION
38647       WHEN OTHERS THEN
38648          l_acc_rev_flag := 'N';
38649    END;
38650    --
38651    IF (l_acc_rev_flag = 'Y') THEN
38652 
38653        -- 4645092  ------------------------------------------------------------------------------
38654        -- To allow MPA report to determine if it should generate report process
38655        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38656        ------------------------------------------------------------------------------------------
38657 
38658        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38659        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38660 
38661        --
38662        -- Update the line information that should be overwritten
38663        --
38664        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38665                                          p_header_num   => 1);
38666        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38667 
38668        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38669 
38670        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38671           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38672        END IF;
38673 
38674       --
38675       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38676       --
38677       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38681           -- 4262811a Switch Sign
38678           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38679       ELSE
38680           ---------------------------------------------------------------------------------------------------
38682           ---------------------------------------------------------------------------------------------------
38683           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38684           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38685                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38686           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38687                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38688           -- 5132302
38689           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38690                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38691 
38692       END IF;
38693 
38694       -- 4955764
38695       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38697 
38698 
38699       XLA_AE_LINES_PKG.ValidateCurrentLine;
38700       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38701 
38702       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38703                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38704                ,p_balance_type_code => l_balance_type_code);
38705 
38706    END IF;
38707 
38708    -----------------------------------------------------------------------------------------
38709    -- 4262811 Multiperiod Accounting
38710    -----------------------------------------------------------------------------------------
38711      -- No MPA option is assigned.
38712 
38713 
38714 END IF;
38715 END IF;
38716 --
38717 
38718 --
38719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38720    trace
38721       (p_msg      => 'END of AcctLineType_82'
38722       ,p_level    => C_LEVEL_PROCEDURE
38723       ,p_module   => l_log_module);
38724 END IF;
38725 --
38726 EXCEPTION
38727   WHEN xla_exceptions_pkg.application_exception THEN
38728       RAISE;
38729   WHEN OTHERS THEN
38730        xla_exceptions_pkg.raise_message
38731            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_82');
38732 END AcctLineType_82;
38733 --
38734 
38735 ---------------------------------------
38736 --
38737 -- PRIVATE FUNCTION
38738 --         AcctLineType_83
38739 --
38740 ---------------------------------------
38741 PROCEDURE AcctLineType_83 (
38742   p_application_id        IN NUMBER
38743  ,p_event_id              IN NUMBER
38744  ,p_calculate_acctd_flag  IN VARCHAR2
38745  ,p_calculate_g_l_flag    IN VARCHAR2
38746  ,p_actual_flag           IN OUT VARCHAR2
38747  ,p_balance_type_code     OUT VARCHAR2
38748  ,p_gain_or_loss_ref      OUT VARCHAR2
38749  
38750 --Unbilled Receivables CCID
38751  , p_source_19            IN NUMBER
38752 --Actual Upgrade Credit Accounting Class
38753  , p_source_23            IN VARCHAR2
38754 --Entered Currency Code
38755  , p_source_25            IN VARCHAR2
38756 --Exchange Rate Date
38757  , p_source_27            IN DATE
38758 --Exchange Rate
38759  , p_source_28            IN NUMBER
38760 --Exchange Rate Type
38761  , p_source_29            IN VARCHAR2
38762 --Actual Upgrade Debit Accounting Class
38763  , p_source_30            IN VARCHAR2
38764 --Use Actuals Upgrade Attributes Flag
38765  , p_source_31            IN VARCHAR2
38766 --Revenue Distribution Type
38767  , p_source_36            IN VARCHAR2
38768 --Crediting Revenue Flag
38769  , p_source_38            IN VARCHAR2
38770 --Revenue First Distribution ID
38771  , p_source_39            IN NUMBER
38772 --Revenue Second Distribution ID
38773  , p_source_40            IN NUMBER
38774 --Entered Amount
38775  , p_source_41            IN NUMBER
38776 --Event ID
38777  , p_source_42            IN NUMBER
38778 --Accounted Amount
38779  , p_source_43            IN NUMBER
38780 --Actual Upgrade Credit CCID
38781  , p_source_59            IN NUMBER
38782 --Actual Upgrade Debit CCID
38783  , p_source_60            IN NUMBER
38784 --Application ID
38785  , p_source_61            IN NUMBER
38786 --Revenue Entity Code
38787  , p_source_62            IN VARCHAR2
38788 --Crediting Revenue First Distribution ID
38789  , p_source_63            IN NUMBER
38790 --Project ID
38791  , p_source_64            IN NUMBER
38792 --Crediting Revenue Second Distribution ID
38793  , p_source_65            IN NUMBER
38794 --Draft Revenue Number Credited
38795  , p_source_66            IN NUMBER
38796 )
38797 IS
38798 
38799 l_component_type              VARCHAR2(80);
38800 l_component_code              VARCHAR2(30);
38801 l_component_type_code         VARCHAR2(1);
38802 l_component_appl_id           INTEGER;
38803 l_amb_context_code            VARCHAR2(30);
38804 l_entity_code                 VARCHAR2(30);
38805 l_event_class_code            VARCHAR2(30);
38809 l_line_definition_owner_code  VARCHAR2(1);
38806 l_ae_header_id                NUMBER;
38807 l_event_type_code             VARCHAR2(30);
38808 l_line_definition_code        VARCHAR2(30);
38810 --
38811 -- adr variables
38812 l_segment                     VARCHAR2(30);
38813 l_ccid                        NUMBER;
38814 l_adr_transaction_coa_id      NUMBER;
38815 l_adr_accounting_coa_id       NUMBER;
38816 l_adr_flexfield_segment_code  VARCHAR2(30);
38817 l_adr_flex_value_set_id       NUMBER;
38818 l_adr_value_type_code         VARCHAR2(30);
38819 l_adr_value_combination_id    NUMBER;
38820 l_adr_value_segment_code      VARCHAR2(30);
38821 
38822 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38823 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38824 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38825 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38826 
38827 -- 4262811 Variables ------------------------------------------------------------------------------------------
38828 l_entered_amt_idx             NUMBER;
38829 l_accted_amt_idx              NUMBER;
38830 l_acc_rev_flag                VARCHAR2(1);
38831 l_accrual_line_num            NUMBER;
38832 l_tmp_amt                     NUMBER;
38833 l_acc_rev_natural_side_code   VARCHAR2(1);
38834 
38835 l_num_entries                 NUMBER;
38836 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38837 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38838 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38839 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38840 l_recog_line_1                NUMBER;
38841 l_recog_line_2                NUMBER;
38842 
38843 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38844 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38845 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38846 
38847 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38848 
38849 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38850 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38851 
38852 ---------------------------------------------------------------------------------------------------------------
38853 
38854 
38855 --
38856 -- bulk performance
38857 --
38858 l_balance_type_code           VARCHAR2(1);
38859 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38860 l_log_module                  VARCHAR2(240);
38861 
38862 --
38863 -- Upgrade strategy
38864 --
38865 l_actual_upg_option           VARCHAR2(1);
38866 l_enc_upg_option           VARCHAR2(1);
38867 
38868 --
38869 BEGIN
38870 --
38871 IF g_log_enabled THEN
38872       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
38873 END IF;
38874 --
38875 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38876 
38877       trace
38878          (p_msg      => 'BEGIN of AcctLineType_83'
38879          ,p_level    => C_LEVEL_PROCEDURE
38880          ,p_module   => l_log_module);
38881 
38882 END IF;
38883 --
38884 l_component_type             := 'AMB_JLT';
38885 l_component_code             := 'PA_UBR_ADJ';
38886 l_component_type_code        := 'S';
38887 l_component_appl_id          :=  275;
38888 l_amb_context_code           := 'DEFAULT';
38889 l_entity_code                := 'REVENUE';
38890 l_event_class_code           := 'REVENUE_ADJ';
38891 l_event_type_code            := 'REVENUE_ADJ_ALL';
38892 l_line_definition_owner_code := 'S';
38893 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
38894 --
38895 l_balance_type_code          := 'A';
38896 l_segment                     := NULL;
38897 l_ccid                        := NULL;
38898 l_adr_transaction_coa_id      := NULL;
38899 l_adr_accounting_coa_id       := NULL;
38900 l_adr_flexfield_segment_code  := NULL;
38901 l_adr_flex_value_set_id       := NULL;
38902 l_adr_value_type_code         := NULL;
38903 l_adr_value_combination_id    := NULL;
38904 l_adr_value_segment_code      := NULL;
38905 
38906 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38907 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
38908 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38909 l_budgetary_control_flag     := 'N';
38910 
38911 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38912 l_bflow_applied_to_amt       := NULL; -- 5132302
38913 l_entered_amt_idx            := NULL;          -- 4262811
38914 l_accted_amt_idx             := NULL;          -- 4262811
38915 l_acc_rev_flag               := NULL;          -- 4262811
38916 l_accrual_line_num           := NULL;          -- 4262811
38917 l_tmp_amt                    := NULL;          -- 4262811
38918 --
38919  
38920 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38921     l_balance_type_code <> 'B' THEN
38922 IF NVL(p_source_36,'
38923 ') =  'Revenue - UBR' AND 
38924 NVL(p_source_38,'
38925 ') =  'Y'
38926  THEN 
38927 
38928    --
38929    XLA_AE_LINES_PKG.SetNewLine;
38930 
38931    p_balance_type_code          := l_balance_type_code;
38932    -- set the flag so later we will know whether the gain loss line needs to be created
38933    
38934    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38935      p_actual_flag :='A';
38936    END IF;
38940    --
38937 
38938    --
38939    -- bulk performance
38941    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38942                                       p_header_num   => 0); -- 4262811
38943    --
38944    -- set accounting line options
38945    --
38946    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38947            p_natural_side_code          => 'C'
38948          , p_gain_or_loss_flag          => 'N'
38949          , p_gl_transfer_mode_code      => 'S'
38950          , p_acct_entry_type_code       => 'A'
38951          , p_switch_side_flag           => 'Y'
38952          , p_merge_duplicate_code       => 'N'
38953          );
38954    --
38955    l_acc_rev_natural_side_code := 'D';  -- 4262811
38956    -- 
38957    --
38958    -- set accounting line type info
38959    --
38960    xla_ae_lines_pkg.SetAcctLineType
38961       (p_component_type             => l_component_type
38962       ,p_event_type_code            => l_event_type_code
38963       ,p_line_definition_owner_code => l_line_definition_owner_code
38964       ,p_line_definition_code       => l_line_definition_code
38965       ,p_accounting_line_code       => l_component_code
38966       ,p_accounting_line_type_code  => l_component_type_code
38967       ,p_accounting_line_appl_id    => l_component_appl_id
38968       ,p_amb_context_code           => l_amb_context_code
38969       ,p_entity_code                => l_entity_code
38970       ,p_event_class_code           => l_event_class_code);
38971    --
38972    -- set accounting class
38973    --
38974    xla_ae_lines_pkg.SetAcctClass(
38975            p_accounting_class_code  => 'UNBILL'
38976          , p_ae_header_id           => l_ae_header_id
38977          );
38978 
38979    --
38980    -- set rounding class
38981    --
38982    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38983                       'UNBILL';
38984 
38985    --
38986    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38987    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38988    --
38989    -- bulk performance
38990    --
38991    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38992 
38993    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38994       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38995 
38996    -- 4955764
38997    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38998       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38999 
39000    -- 4458381 Public Sector Enh
39001    
39002    --
39003    -- set accounting attributes for the line type
39004    --
39005    l_entered_amt_idx := 28;
39006    l_accted_amt_idx  := 34;
39007    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39008    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
39009    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
39010    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
39011    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
39012    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
39013    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
39014    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
39015    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
39016    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
39017    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
39018    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
39019    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
39020    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
39021    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
39022    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
39023    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
39024    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
39025    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
39026    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
39027    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
39028    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
39029    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
39030    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
39031    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
39032    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
39033    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
39034    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
39035    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
39036    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
39037    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
39038    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
39039    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
39040    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
39041    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
39042    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
39043    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
39044    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
39045    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
39049    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
39046    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
39047    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
39048    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
39050    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
39051    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
39052    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
39053    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
39054    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
39055    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
39056    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
39057    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
39058    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
39059    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
39060    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
39061    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
39062    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
39063    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
39064    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
39065    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
39066    l_rec_acct_attrs.array_acct_attr_code(30) := 'EXCHANGE_DATE';
39067    l_rec_acct_attrs.array_date_value(30)  := p_source_27;
39068    l_rec_acct_attrs.array_acct_attr_code(31) := 'EXCHANGE_RATE';
39069    l_rec_acct_attrs.array_num_value(31)  := p_source_28;
39070    l_rec_acct_attrs.array_acct_attr_code(32) := 'EXCHANGE_RATE_TYPE';
39071    l_rec_acct_attrs.array_char_value(32)  := p_source_29;
39072    l_rec_acct_attrs.array_acct_attr_code(33) := 'GAIN_LOSS_REFERENCE';
39073    l_rec_acct_attrs.array_num_value(33)  :=  to_char(p_source_42);
39074    l_rec_acct_attrs.array_acct_attr_code(34) := 'LEDGER_AMOUNT';
39075    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
39076 
39077    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39078    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39079 
39080    ---------------------------------------------------------------------------------------------------------------
39081    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39082    ---------------------------------------------------------------------------------------------------------------
39083    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39084 
39085    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39086    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39087 
39088    IF xla_accounting_cache_pkg.GetValueChar
39089          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39090          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39091    AND l_bflow_method_code = 'PRIOR_ENTRY'
39092 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39093    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39094          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39095        )
39096    THEN
39097          xla_ae_lines_pkg.BflowUpgEntry
39098            (p_business_method_code    => l_bflow_method_code
39099            ,p_business_class_code     => l_bflow_class_code
39100            ,p_balance_type            => l_balance_type_code);
39101    ELSE
39102       NULL;
39103 -- No business flow processing for business flow method of NONE.
39104    END IF;
39105 
39106    --
39107    -- call analytical criteria
39108    --
39109    
39110    --
39111    -- call description
39112    --
39113    -- No description or it is inherited.
39114    --
39115    -- call ADRs
39116    -- Bug 4922099
39117    --
39118    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39119         (NVL(l_actual_upg_option, 'N') = 'O') OR
39120         (NVL(l_enc_upg_option, 'N') = 'O')
39121       )
39122    THEN
39123    NULL;
39124    --
39125    --
39126    
39127   l_ccid := AcctDerRule_18(
39128            p_application_id           => p_application_id
39129          , p_ae_header_id             => l_ae_header_id 
39130 , p_source_19 => p_source_19
39131          , x_transaction_coa_id       => l_adr_transaction_coa_id
39132          , x_accounting_coa_id        => l_adr_accounting_coa_id
39133          , x_value_type_code          => l_adr_value_type_code
39134          , p_side                     => 'NA'
39135    );
39136 
39137    xla_ae_lines_pkg.set_ccid(
39138     p_code_combination_id          => l_ccid
39139   , p_value_type_code              => l_adr_value_type_code
39140   , p_transaction_coa_id           => l_adr_transaction_coa_id
39141   , p_accounting_coa_id            => l_adr_accounting_coa_id
39142   , p_adr_code                     => 'UBR_RULE'
39143   , p_adr_type_code                => 'S'
39144   , p_component_type               => l_component_type
39145   , p_component_code               => l_component_code
39146   , p_component_type_code          => l_component_type_code
39147   , p_component_appl_id            => l_component_appl_id
39148   , p_amb_context_code             => l_amb_context_code
39149   , p_side                         => 'NA'
39150   );
39151 
39152 
39153    --
39154    --
39155    END IF;
39159           (NVL(l_enc_upg_option, 'N') = 'O')
39156    --
39157    -- Bug 4922099
39158    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39160         ) AND
39161         (l_bflow_method_code = 'PRIOR_ENTRY')
39162       )
39163    THEN
39164       IF
39165       --
39166       1 = 2
39167       --
39168       THEN
39169       xla_accounting_err_pkg.build_message
39170                                     (p_appli_s_name            => 'XLA'
39171                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39172                                     ,p_token_1                 => 'LINE_NUMBER'
39173                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39174                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39175                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39176                                                                              l_component_type
39177                                                                             ,l_component_code
39178                                                                             ,l_component_type_code
39179                                                                             ,l_component_appl_id
39180                                                                             ,l_amb_context_code
39181                                                                             ,l_entity_code
39182                                                                             ,l_event_class_code
39183                                                                            )
39184                                     ,p_token_3                 => 'OWNER'
39185                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39186                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39187                                                                           ,p_lookup_code    => l_component_type_code
39188                                                                          )
39189                                     ,p_token_4                 => 'PRODUCT_NAME'
39190                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39191                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39192                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39193                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39194                                     ,p_ae_header_id            =>  NULL
39195                                        );
39196 
39197         IF (C_LEVEL_ERROR>= g_log_level) THEN
39198                  trace
39199                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39200                       ,p_level    => C_LEVEL_ERROR
39201                       ,p_module   => l_log_module);
39202         END IF;
39203       END IF;
39204    END IF;
39205    --
39206    --
39207    ------------------------------------------------------------------------------------------------
39208    -- 4219869 Business Flow
39209    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39210    -- Prior Entry.  Currently, the following code is always generated.
39211    ------------------------------------------------------------------------------------------------
39212    XLA_AE_LINES_PKG.ValidateCurrentLine;
39213 
39214    ------------------------------------------------------------------------------------
39215    -- 4219869 Business Flow
39216    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39217    ------------------------------------------------------------------------------------
39218    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39219 
39220    ----------------------------------------------------------------------------------
39221    -- 4219869 Business Flow
39222    -- Update journal entry status -- Need to generate this within IF <condition>
39223    ----------------------------------------------------------------------------------
39224    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39225          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39226          ,p_balance_type_code => l_balance_type_code
39227          );
39228 
39229    -------------------------------------------------------------------------------------------
39230    -- 4262811 - Generate the Accrual Reversal lines
39231    -------------------------------------------------------------------------------------------
39232    BEGIN
39233       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39234                               (g_array_event(p_event_id).array_value_num('header_index'));
39235       IF l_acc_rev_flag IS NULL THEN
39236          l_acc_rev_flag := 'N';
39237       END IF;
39238    EXCEPTION
39239       WHEN OTHERS THEN
39240          l_acc_rev_flag := 'N';
39241    END;
39242    --
39243    IF (l_acc_rev_flag = 'Y') THEN
39244 
39245        -- 4645092  ------------------------------------------------------------------------------
39246        -- To allow MPA report to determine if it should generate report process
39247        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39248        ------------------------------------------------------------------------------------------
39252 
39249 
39250        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39251        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39253        --
39254        -- Update the line information that should be overwritten
39255        --
39256        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39257                                          p_header_num   => 1);
39258        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39259 
39260        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39261 
39262        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39263           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39264        END IF;
39265 
39266       --
39267       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39268       --
39269       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39270           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39271       ELSE
39272           ---------------------------------------------------------------------------------------------------
39273           -- 4262811a Switch Sign
39274           ---------------------------------------------------------------------------------------------------
39275           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39276           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39277                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39278           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39279                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39280           -- 5132302
39281           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39282                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39283 
39284       END IF;
39285 
39286       -- 4955764
39287       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39288       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39289 
39290 
39291       XLA_AE_LINES_PKG.ValidateCurrentLine;
39292       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39293 
39294       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39295                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39296                ,p_balance_type_code => l_balance_type_code);
39297 
39298    END IF;
39299 
39300    -----------------------------------------------------------------------------------------
39301    -- 4262811 Multiperiod Accounting
39302    -----------------------------------------------------------------------------------------
39303      -- No MPA option is assigned.
39304 
39305 
39306 END IF;
39307 END IF;
39308 --
39309 
39310 --
39311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39312    trace
39313       (p_msg      => 'END of AcctLineType_83'
39314       ,p_level    => C_LEVEL_PROCEDURE
39315       ,p_module   => l_log_module);
39316 END IF;
39317 --
39318 EXCEPTION
39319   WHEN xla_exceptions_pkg.application_exception THEN
39320       RAISE;
39321   WHEN OTHERS THEN
39322        xla_exceptions_pkg.raise_message
39323            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_83');
39324 END AcctLineType_83;
39325 --
39326 
39327 ---------------------------------------
39328 --
39329 -- PRIVATE FUNCTION
39330 --         AcctLineType_84
39331 --
39332 ---------------------------------------
39333 PROCEDURE AcctLineType_84 (
39334   p_application_id        IN NUMBER
39335  ,p_event_id              IN NUMBER
39336  ,p_calculate_acctd_flag  IN VARCHAR2
39337  ,p_calculate_g_l_flag    IN VARCHAR2
39338  ,p_actual_flag           IN OUT VARCHAR2
39339  ,p_balance_type_code     OUT VARCHAR2
39340  ,p_gain_or_loss_ref      OUT VARCHAR2
39341  
39342 --Unearned Revenue CCID
39343  , p_source_20            IN NUMBER
39344 --Entered Currency Code
39345  , p_source_25            IN VARCHAR2
39346 --Exchange Rate Date
39347  , p_source_27            IN DATE
39348 --Exchange Rate
39349  , p_source_28            IN NUMBER
39350 --Exchange Rate Type
39351  , p_source_29            IN VARCHAR2
39352 --Revenue Distribution Type
39353  , p_source_36            IN VARCHAR2
39354 --Crediting Revenue Flag
39355  , p_source_38            IN VARCHAR2
39356 --Revenue First Distribution ID
39357  , p_source_39            IN NUMBER
39358 --Revenue Second Distribution ID
39359  , p_source_40            IN NUMBER
39360 --Entered Amount
39361  , p_source_41            IN NUMBER
39362 --Event ID
39363  , p_source_42            IN NUMBER
39364 --Accounted Amount
39365  , p_source_43            IN NUMBER
39366 )
39367 IS
39368 
39369 l_component_type              VARCHAR2(80);
39370 l_component_code              VARCHAR2(30);
39371 l_component_type_code         VARCHAR2(1);
39372 l_component_appl_id           INTEGER;
39376 l_ae_header_id                NUMBER;
39373 l_amb_context_code            VARCHAR2(30);
39374 l_entity_code                 VARCHAR2(30);
39375 l_event_class_code            VARCHAR2(30);
39377 l_event_type_code             VARCHAR2(30);
39378 l_line_definition_code        VARCHAR2(30);
39379 l_line_definition_owner_code  VARCHAR2(1);
39380 --
39381 -- adr variables
39382 l_segment                     VARCHAR2(30);
39383 l_ccid                        NUMBER;
39384 l_adr_transaction_coa_id      NUMBER;
39385 l_adr_accounting_coa_id       NUMBER;
39386 l_adr_flexfield_segment_code  VARCHAR2(30);
39387 l_adr_flex_value_set_id       NUMBER;
39388 l_adr_value_type_code         VARCHAR2(30);
39389 l_adr_value_combination_id    NUMBER;
39390 l_adr_value_segment_code      VARCHAR2(30);
39391 
39392 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39393 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39394 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39395 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39396 
39397 -- 4262811 Variables ------------------------------------------------------------------------------------------
39398 l_entered_amt_idx             NUMBER;
39399 l_accted_amt_idx              NUMBER;
39400 l_acc_rev_flag                VARCHAR2(1);
39401 l_accrual_line_num            NUMBER;
39402 l_tmp_amt                     NUMBER;
39403 l_acc_rev_natural_side_code   VARCHAR2(1);
39404 
39405 l_num_entries                 NUMBER;
39406 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39407 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39408 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39409 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39410 l_recog_line_1                NUMBER;
39411 l_recog_line_2                NUMBER;
39412 
39413 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39414 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39415 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39416 
39417 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39418 
39419 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39420 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39421 
39422 ---------------------------------------------------------------------------------------------------------------
39423 
39424 
39425 --
39426 -- bulk performance
39427 --
39428 l_balance_type_code           VARCHAR2(1);
39429 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39430 l_log_module                  VARCHAR2(240);
39431 
39432 --
39433 -- Upgrade strategy
39434 --
39435 l_actual_upg_option           VARCHAR2(1);
39436 l_enc_upg_option           VARCHAR2(1);
39437 
39438 --
39439 BEGIN
39440 --
39441 IF g_log_enabled THEN
39442       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
39443 END IF;
39444 --
39445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39446 
39447       trace
39448          (p_msg      => 'BEGIN of AcctLineType_84'
39449          ,p_level    => C_LEVEL_PROCEDURE
39450          ,p_module   => l_log_module);
39451 
39452 END IF;
39453 --
39454 l_component_type             := 'AMB_JLT';
39455 l_component_code             := 'PA_UER';
39456 l_component_type_code        := 'S';
39457 l_component_appl_id          :=  275;
39458 l_amb_context_code           := 'DEFAULT';
39459 l_entity_code                := 'REVENUE';
39460 l_event_class_code           := 'REVENUE';
39461 l_event_type_code            := 'REVENUE_ALL';
39462 l_line_definition_owner_code := 'S';
39463 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
39464 --
39465 l_balance_type_code          := 'A';
39466 l_segment                     := NULL;
39467 l_ccid                        := NULL;
39468 l_adr_transaction_coa_id      := NULL;
39469 l_adr_accounting_coa_id       := NULL;
39470 l_adr_flexfield_segment_code  := NULL;
39471 l_adr_flex_value_set_id       := NULL;
39472 l_adr_value_type_code         := NULL;
39473 l_adr_value_combination_id    := NULL;
39474 l_adr_value_segment_code      := NULL;
39475 
39476 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39477 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
39478 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39479 l_budgetary_control_flag     := 'N';
39480 
39481 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39482 l_bflow_applied_to_amt       := NULL; -- 5132302
39483 l_entered_amt_idx            := NULL;          -- 4262811
39484 l_accted_amt_idx             := NULL;          -- 4262811
39485 l_acc_rev_flag               := NULL;          -- 4262811
39486 l_accrual_line_num           := NULL;          -- 4262811
39487 l_tmp_amt                    := NULL;          -- 4262811
39488 --
39489  
39490 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39491     l_balance_type_code <> 'B' THEN
39492 IF NVL(p_source_36,'
39493 ') =  'Revenue - UER' AND 
39494 NVL(p_source_38,'
39495 ') =  'N'
39496  THEN 
39497 
39498    --
39499    XLA_AE_LINES_PKG.SetNewLine;
39500 
39501    p_balance_type_code          := l_balance_type_code;
39505      p_actual_flag :='A';
39502    -- set the flag so later we will know whether the gain loss line needs to be created
39503    
39504    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39506    END IF;
39507 
39508    --
39509    -- bulk performance
39510    --
39511    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39512                                       p_header_num   => 0); -- 4262811
39513    --
39514    -- set accounting line options
39515    --
39516    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39517            p_natural_side_code          => 'D'
39518          , p_gain_or_loss_flag          => 'N'
39519          , p_gl_transfer_mode_code      => 'S'
39520          , p_acct_entry_type_code       => 'A'
39521          , p_switch_side_flag           => 'Y'
39522          , p_merge_duplicate_code       => 'N'
39523          );
39524    --
39525    l_acc_rev_natural_side_code := 'C';  -- 4262811
39526    -- 
39527    --
39528    -- set accounting line type info
39529    --
39530    xla_ae_lines_pkg.SetAcctLineType
39531       (p_component_type             => l_component_type
39532       ,p_event_type_code            => l_event_type_code
39533       ,p_line_definition_owner_code => l_line_definition_owner_code
39534       ,p_line_definition_code       => l_line_definition_code
39535       ,p_accounting_line_code       => l_component_code
39536       ,p_accounting_line_type_code  => l_component_type_code
39537       ,p_accounting_line_appl_id    => l_component_appl_id
39538       ,p_amb_context_code           => l_amb_context_code
39539       ,p_entity_code                => l_entity_code
39540       ,p_event_class_code           => l_event_class_code);
39541    --
39542    -- set accounting class
39543    --
39544    xla_ae_lines_pkg.SetAcctClass(
39545            p_accounting_class_code  => 'UNEARNED_REVENUE'
39546          , p_ae_header_id           => l_ae_header_id
39547          );
39548 
39549    --
39550    -- set rounding class
39551    --
39552    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39553                       'UNEARNED_REVENUE';
39554 
39555    --
39556    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39557    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39558    --
39559    -- bulk performance
39560    --
39561    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39562 
39563    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39564       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39565 
39566    -- 4955764
39567    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39568       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39569 
39570    -- 4458381 Public Sector Enh
39571    
39572    --
39573    -- set accounting attributes for the line type
39574    --
39575    l_entered_amt_idx := 4;
39576    l_accted_amt_idx  := 10;
39577    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39578    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39579    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
39580    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
39581    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
39582    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
39583    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
39584    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
39585    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
39586    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
39587    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
39588    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
39589    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
39590    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
39591    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
39592    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
39593    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
39594    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
39595    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
39596    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
39597    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
39598 
39599    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39600    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39601 
39602    ---------------------------------------------------------------------------------------------------------------
39603    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39604    ---------------------------------------------------------------------------------------------------------------
39605    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39606 
39607    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39608    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39609 
39610    IF xla_accounting_cache_pkg.GetValueChar
39611          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39615    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39612          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39613    AND l_bflow_method_code = 'PRIOR_ENTRY'
39614 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39616          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39617        )
39618    THEN
39619          xla_ae_lines_pkg.BflowUpgEntry
39620            (p_business_method_code    => l_bflow_method_code
39621            ,p_business_class_code     => l_bflow_class_code
39622            ,p_balance_type            => l_balance_type_code);
39623    ELSE
39624       NULL;
39625 -- No business flow processing for business flow method of NONE.
39626    END IF;
39627 
39628    --
39629    -- call analytical criteria
39630    --
39631    
39632    --
39633    -- call description
39634    --
39635    -- No description or it is inherited.
39636    --
39637    -- call ADRs
39638    -- Bug 4922099
39639    --
39640    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39641         (NVL(l_actual_upg_option, 'N') = 'O') OR
39642         (NVL(l_enc_upg_option, 'N') = 'O')
39643       )
39644    THEN
39645    NULL;
39646    --
39647    --
39648    
39649   l_ccid := AcctDerRule_19(
39650            p_application_id           => p_application_id
39651          , p_ae_header_id             => l_ae_header_id 
39652 , p_source_20 => p_source_20
39653          , x_transaction_coa_id       => l_adr_transaction_coa_id
39654          , x_accounting_coa_id        => l_adr_accounting_coa_id
39655          , x_value_type_code          => l_adr_value_type_code
39656          , p_side                     => 'NA'
39657    );
39658 
39659    xla_ae_lines_pkg.set_ccid(
39660     p_code_combination_id          => l_ccid
39661   , p_value_type_code              => l_adr_value_type_code
39662   , p_transaction_coa_id           => l_adr_transaction_coa_id
39663   , p_accounting_coa_id            => l_adr_accounting_coa_id
39664   , p_adr_code                     => 'UER_RULE'
39665   , p_adr_type_code                => 'S'
39666   , p_component_type               => l_component_type
39667   , p_component_code               => l_component_code
39668   , p_component_type_code          => l_component_type_code
39669   , p_component_appl_id            => l_component_appl_id
39670   , p_amb_context_code             => l_amb_context_code
39671   , p_side                         => 'NA'
39672   );
39673 
39674 
39675    --
39676    --
39677    END IF;
39678    --
39679    -- Bug 4922099
39680    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39681           (NVL(l_enc_upg_option, 'N') = 'O')
39682         ) AND
39683         (l_bflow_method_code = 'PRIOR_ENTRY')
39684       )
39685    THEN
39686       IF
39687       --
39688       1 = 2
39689       --
39690       THEN
39691       xla_accounting_err_pkg.build_message
39692                                     (p_appli_s_name            => 'XLA'
39693                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39694                                     ,p_token_1                 => 'LINE_NUMBER'
39695                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39696                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39697                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39698                                                                              l_component_type
39699                                                                             ,l_component_code
39700                                                                             ,l_component_type_code
39701                                                                             ,l_component_appl_id
39702                                                                             ,l_amb_context_code
39703                                                                             ,l_entity_code
39704                                                                             ,l_event_class_code
39705                                                                            )
39706                                     ,p_token_3                 => 'OWNER'
39707                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39708                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39709                                                                           ,p_lookup_code    => l_component_type_code
39710                                                                          )
39711                                     ,p_token_4                 => 'PRODUCT_NAME'
39712                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39713                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39714                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39715                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39716                                     ,p_ae_header_id            =>  NULL
39717                                        );
39718 
39719         IF (C_LEVEL_ERROR>= g_log_level) THEN
39720                  trace
39721                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39722                       ,p_level    => C_LEVEL_ERROR
39726    END IF;
39723                       ,p_module   => l_log_module);
39724         END IF;
39725       END IF;
39727    --
39728    --
39729    ------------------------------------------------------------------------------------------------
39730    -- 4219869 Business Flow
39731    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39732    -- Prior Entry.  Currently, the following code is always generated.
39733    ------------------------------------------------------------------------------------------------
39734    XLA_AE_LINES_PKG.ValidateCurrentLine;
39735 
39736    ------------------------------------------------------------------------------------
39737    -- 4219869 Business Flow
39738    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39739    ------------------------------------------------------------------------------------
39740    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39741 
39742    ----------------------------------------------------------------------------------
39743    -- 4219869 Business Flow
39744    -- Update journal entry status -- Need to generate this within IF <condition>
39745    ----------------------------------------------------------------------------------
39746    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39747          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39748          ,p_balance_type_code => l_balance_type_code
39749          );
39750 
39751    -------------------------------------------------------------------------------------------
39752    -- 4262811 - Generate the Accrual Reversal lines
39753    -------------------------------------------------------------------------------------------
39754    BEGIN
39755       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39756                               (g_array_event(p_event_id).array_value_num('header_index'));
39757       IF l_acc_rev_flag IS NULL THEN
39758          l_acc_rev_flag := 'N';
39759       END IF;
39760    EXCEPTION
39761       WHEN OTHERS THEN
39762          l_acc_rev_flag := 'N';
39763    END;
39764    --
39765    IF (l_acc_rev_flag = 'Y') THEN
39766 
39767        -- 4645092  ------------------------------------------------------------------------------
39768        -- To allow MPA report to determine if it should generate report process
39769        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39770        ------------------------------------------------------------------------------------------
39771 
39772        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39773        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39774 
39775        --
39776        -- Update the line information that should be overwritten
39777        --
39778        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39779                                          p_header_num   => 1);
39780        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39781 
39782        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39783 
39784        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39785           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39786        END IF;
39787 
39788       --
39789       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39790       --
39791       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39792           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39793       ELSE
39794           ---------------------------------------------------------------------------------------------------
39795           -- 4262811a Switch Sign
39796           ---------------------------------------------------------------------------------------------------
39797           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39798           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39799                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39800           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39801                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39802           -- 5132302
39803           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39804                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39805 
39806       END IF;
39807 
39808       -- 4955764
39809       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39810       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39811 
39812 
39813       XLA_AE_LINES_PKG.ValidateCurrentLine;
39814       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39815 
39816       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39817                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39818                ,p_balance_type_code => l_balance_type_code);
39819 
39820    END IF;
39821 
39822    -----------------------------------------------------------------------------------------
39826 
39823    -- 4262811 Multiperiod Accounting
39824    -----------------------------------------------------------------------------------------
39825      -- No MPA option is assigned.
39827 
39828 END IF;
39829 END IF;
39830 --
39831 
39832 --
39833 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39834    trace
39835       (p_msg      => 'END of AcctLineType_84'
39836       ,p_level    => C_LEVEL_PROCEDURE
39837       ,p_module   => l_log_module);
39838 END IF;
39839 --
39840 EXCEPTION
39841   WHEN xla_exceptions_pkg.application_exception THEN
39842       RAISE;
39843   WHEN OTHERS THEN
39844        xla_exceptions_pkg.raise_message
39845            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_84');
39846 END AcctLineType_84;
39847 --
39848 
39849 ---------------------------------------
39850 --
39851 -- PRIVATE FUNCTION
39852 --         AcctLineType_85
39853 --
39854 ---------------------------------------
39855 PROCEDURE AcctLineType_85 (
39856   p_application_id        IN NUMBER
39857  ,p_event_id              IN NUMBER
39858  ,p_calculate_acctd_flag  IN VARCHAR2
39859  ,p_calculate_g_l_flag    IN VARCHAR2
39860  ,p_actual_flag           IN OUT VARCHAR2
39861  ,p_balance_type_code     OUT VARCHAR2
39862  ,p_gain_or_loss_ref      OUT VARCHAR2
39863  
39864 --Unearned Revenue CCID
39865  , p_source_20            IN NUMBER
39866 --Actual Upgrade Credit Accounting Class
39867  , p_source_23            IN VARCHAR2
39868 --Entered Currency Code
39869  , p_source_25            IN VARCHAR2
39870 --Exchange Rate Date
39871  , p_source_27            IN DATE
39872 --Exchange Rate
39873  , p_source_28            IN NUMBER
39874 --Exchange Rate Type
39875  , p_source_29            IN VARCHAR2
39876 --Actual Upgrade Debit Accounting Class
39877  , p_source_30            IN VARCHAR2
39878 --Use Actuals Upgrade Attributes Flag
39879  , p_source_31            IN VARCHAR2
39880 --Revenue Distribution Type
39881  , p_source_36            IN VARCHAR2
39882 --Crediting Revenue Flag
39883  , p_source_38            IN VARCHAR2
39884 --Revenue First Distribution ID
39885  , p_source_39            IN NUMBER
39886 --Revenue Second Distribution ID
39887  , p_source_40            IN NUMBER
39888 --Entered Amount
39889  , p_source_41            IN NUMBER
39890 --Event ID
39891  , p_source_42            IN NUMBER
39892 --Accounted Amount
39893  , p_source_43            IN NUMBER
39894 --Actual Upgrade Credit CCID
39895  , p_source_59            IN NUMBER
39896 --Actual Upgrade Debit CCID
39897  , p_source_60            IN NUMBER
39898 --Application ID
39899  , p_source_61            IN NUMBER
39900 --Revenue Entity Code
39901  , p_source_62            IN VARCHAR2
39902 --Crediting Revenue First Distribution ID
39903  , p_source_63            IN NUMBER
39904 --Project ID
39905  , p_source_64            IN NUMBER
39906 --Crediting Revenue Second Distribution ID
39907  , p_source_65            IN NUMBER
39908 --Draft Revenue Number Credited
39909  , p_source_66            IN NUMBER
39910 )
39911 IS
39912 
39913 l_component_type              VARCHAR2(80);
39914 l_component_code              VARCHAR2(30);
39915 l_component_type_code         VARCHAR2(1);
39916 l_component_appl_id           INTEGER;
39917 l_amb_context_code            VARCHAR2(30);
39918 l_entity_code                 VARCHAR2(30);
39919 l_event_class_code            VARCHAR2(30);
39920 l_ae_header_id                NUMBER;
39921 l_event_type_code             VARCHAR2(30);
39922 l_line_definition_code        VARCHAR2(30);
39923 l_line_definition_owner_code  VARCHAR2(1);
39924 --
39925 -- adr variables
39926 l_segment                     VARCHAR2(30);
39927 l_ccid                        NUMBER;
39928 l_adr_transaction_coa_id      NUMBER;
39929 l_adr_accounting_coa_id       NUMBER;
39930 l_adr_flexfield_segment_code  VARCHAR2(30);
39931 l_adr_flex_value_set_id       NUMBER;
39932 l_adr_value_type_code         VARCHAR2(30);
39933 l_adr_value_combination_id    NUMBER;
39934 l_adr_value_segment_code      VARCHAR2(30);
39935 
39936 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39937 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39938 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39939 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39940 
39941 -- 4262811 Variables ------------------------------------------------------------------------------------------
39942 l_entered_amt_idx             NUMBER;
39943 l_accted_amt_idx              NUMBER;
39944 l_acc_rev_flag                VARCHAR2(1);
39945 l_accrual_line_num            NUMBER;
39946 l_tmp_amt                     NUMBER;
39947 l_acc_rev_natural_side_code   VARCHAR2(1);
39948 
39949 l_num_entries                 NUMBER;
39950 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39951 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39952 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39953 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39954 l_recog_line_1                NUMBER;
39955 l_recog_line_2                NUMBER;
39956 
39957 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39958 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39962 
39959 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39960 
39961 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39963 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39964 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39965 
39966 ---------------------------------------------------------------------------------------------------------------
39967 
39968 
39969 --
39970 -- bulk performance
39971 --
39972 l_balance_type_code           VARCHAR2(1);
39973 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39974 l_log_module                  VARCHAR2(240);
39975 
39976 --
39977 -- Upgrade strategy
39978 --
39979 l_actual_upg_option           VARCHAR2(1);
39980 l_enc_upg_option           VARCHAR2(1);
39981 
39982 --
39983 BEGIN
39984 --
39985 IF g_log_enabled THEN
39986       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
39987 END IF;
39988 --
39989 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39990 
39991       trace
39992          (p_msg      => 'BEGIN of AcctLineType_85'
39993          ,p_level    => C_LEVEL_PROCEDURE
39994          ,p_module   => l_log_module);
39995 
39996 END IF;
39997 --
39998 l_component_type             := 'AMB_JLT';
39999 l_component_code             := 'PA_UER_ADJ';
40000 l_component_type_code        := 'S';
40001 l_component_appl_id          :=  275;
40002 l_amb_context_code           := 'DEFAULT';
40003 l_entity_code                := 'REVENUE';
40004 l_event_class_code           := 'REVENUE_ADJ';
40005 l_event_type_code            := 'REVENUE_ADJ_ALL';
40006 l_line_definition_owner_code := 'S';
40007 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
40008 --
40009 l_balance_type_code          := 'A';
40010 l_segment                     := NULL;
40011 l_ccid                        := NULL;
40012 l_adr_transaction_coa_id      := NULL;
40013 l_adr_accounting_coa_id       := NULL;
40014 l_adr_flexfield_segment_code  := NULL;
40015 l_adr_flex_value_set_id       := NULL;
40016 l_adr_value_type_code         := NULL;
40017 l_adr_value_combination_id    := NULL;
40018 l_adr_value_segment_code      := NULL;
40019 
40020 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40021 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
40022 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40023 l_budgetary_control_flag     := 'N';
40024 
40025 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40026 l_bflow_applied_to_amt       := NULL; -- 5132302
40027 l_entered_amt_idx            := NULL;          -- 4262811
40028 l_accted_amt_idx             := NULL;          -- 4262811
40029 l_acc_rev_flag               := NULL;          -- 4262811
40030 l_accrual_line_num           := NULL;          -- 4262811
40031 l_tmp_amt                    := NULL;          -- 4262811
40032 --
40033  
40034 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40035     l_balance_type_code <> 'B' THEN
40036 IF NVL(p_source_36,'
40037 ') =  'Revenue - UER' AND 
40038 NVL(p_source_38,'
40039 ') =  'Y'
40040  THEN 
40041 
40042    --
40043    XLA_AE_LINES_PKG.SetNewLine;
40044 
40045    p_balance_type_code          := l_balance_type_code;
40046    -- set the flag so later we will know whether the gain loss line needs to be created
40047    
40048    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40049      p_actual_flag :='A';
40050    END IF;
40051 
40052    --
40053    -- bulk performance
40054    --
40055    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40056                                       p_header_num   => 0); -- 4262811
40057    --
40058    -- set accounting line options
40059    --
40060    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40061            p_natural_side_code          => 'C'
40062          , p_gain_or_loss_flag          => 'N'
40063          , p_gl_transfer_mode_code      => 'S'
40064          , p_acct_entry_type_code       => 'A'
40065          , p_switch_side_flag           => 'Y'
40066          , p_merge_duplicate_code       => 'N'
40067          );
40068    --
40069    l_acc_rev_natural_side_code := 'D';  -- 4262811
40070    -- 
40071    --
40072    -- set accounting line type info
40073    --
40074    xla_ae_lines_pkg.SetAcctLineType
40075       (p_component_type             => l_component_type
40076       ,p_event_type_code            => l_event_type_code
40077       ,p_line_definition_owner_code => l_line_definition_owner_code
40078       ,p_line_definition_code       => l_line_definition_code
40079       ,p_accounting_line_code       => l_component_code
40080       ,p_accounting_line_type_code  => l_component_type_code
40081       ,p_accounting_line_appl_id    => l_component_appl_id
40082       ,p_amb_context_code           => l_amb_context_code
40083       ,p_entity_code                => l_entity_code
40084       ,p_event_class_code           => l_event_class_code);
40085    --
40086    -- set accounting class
40087    --
40088    xla_ae_lines_pkg.SetAcctClass(
40089            p_accounting_class_code  => 'UNEARNED_REVENUE'
40090          , p_ae_header_id           => l_ae_header_id
40091          );
40092 
40093    --
40094    -- set rounding class
40095    --
40099    --
40096    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40097                       'UNEARNED_REVENUE';
40098 
40100    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40101    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40102    --
40103    -- bulk performance
40104    --
40105    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40106 
40107    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40108       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40109 
40110    -- 4955764
40111    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40112       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40113 
40114    -- 4458381 Public Sector Enh
40115    
40116    --
40117    -- set accounting attributes for the line type
40118    --
40119    l_entered_amt_idx := 28;
40120    l_accted_amt_idx  := 34;
40121    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40122    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
40123    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
40124    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
40125    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_59);
40126    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
40127    l_rec_acct_attrs.array_num_value(3)  := p_source_41;
40128    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
40129    l_rec_acct_attrs.array_char_value(4)  := p_source_25;
40130    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
40131    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
40132    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
40133    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
40134    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
40135    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
40136    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
40137    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
40138    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
40139    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
40140    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
40141    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_60);
40142    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
40143    l_rec_acct_attrs.array_num_value(11)  := p_source_41;
40144    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
40145    l_rec_acct_attrs.array_char_value(12)  := p_source_25;
40146    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
40147    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
40148    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
40149    l_rec_acct_attrs.array_date_value(14)  := p_source_27;
40150    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
40151    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
40152    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
40153    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
40154    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
40155    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
40156    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
40157    l_rec_acct_attrs.array_num_value(18)  := p_source_61;
40158    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
40159    l_rec_acct_attrs.array_char_value(19)  := p_source_36;
40160    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
40161    l_rec_acct_attrs.array_char_value(20)  := p_source_62;
40162    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
40163    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_63);
40164    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
40165    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_64);
40166    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
40167    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_65);
40168    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
40169    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_66);
40170    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
40171    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_39);
40172    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
40173    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_40);
40174    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
40175    l_rec_acct_attrs.array_char_value(27)  := p_source_36;
40176    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
40177    l_rec_acct_attrs.array_num_value(28)  := p_source_41;
40178    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
40179    l_rec_acct_attrs.array_char_value(29)  := p_source_25;
40180    l_rec_acct_attrs.array_acct_attr_code(30) := 'EXCHANGE_DATE';
40181    l_rec_acct_attrs.array_date_value(30)  := p_source_27;
40182    l_rec_acct_attrs.array_acct_attr_code(31) := 'EXCHANGE_RATE';
40183    l_rec_acct_attrs.array_num_value(31)  := p_source_28;
40184    l_rec_acct_attrs.array_acct_attr_code(32) := 'EXCHANGE_RATE_TYPE';
40185    l_rec_acct_attrs.array_char_value(32)  := p_source_29;
40189    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
40186    l_rec_acct_attrs.array_acct_attr_code(33) := 'GAIN_LOSS_REFERENCE';
40187    l_rec_acct_attrs.array_num_value(33)  :=  to_char(p_source_42);
40188    l_rec_acct_attrs.array_acct_attr_code(34) := 'LEDGER_AMOUNT';
40190 
40191    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40192    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40193 
40194    ---------------------------------------------------------------------------------------------------------------
40195    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40196    ---------------------------------------------------------------------------------------------------------------
40197    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40198 
40199    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40200    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40201 
40202    IF xla_accounting_cache_pkg.GetValueChar
40203          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40204          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40205    AND l_bflow_method_code = 'PRIOR_ENTRY'
40206 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40207    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40208          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40209        )
40210    THEN
40211          xla_ae_lines_pkg.BflowUpgEntry
40212            (p_business_method_code    => l_bflow_method_code
40213            ,p_business_class_code     => l_bflow_class_code
40214            ,p_balance_type            => l_balance_type_code);
40215    ELSE
40216       NULL;
40217 -- No business flow processing for business flow method of NONE.
40218    END IF;
40219 
40220    --
40221    -- call analytical criteria
40222    --
40223    
40224    --
40225    -- call description
40226    --
40227    -- No description or it is inherited.
40228    --
40229    -- call ADRs
40230    -- Bug 4922099
40231    --
40232    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40233         (NVL(l_actual_upg_option, 'N') = 'O') OR
40234         (NVL(l_enc_upg_option, 'N') = 'O')
40235       )
40236    THEN
40237    NULL;
40238    --
40239    --
40240    
40241   l_ccid := AcctDerRule_19(
40242            p_application_id           => p_application_id
40243          , p_ae_header_id             => l_ae_header_id 
40244 , p_source_20 => p_source_20
40245          , x_transaction_coa_id       => l_adr_transaction_coa_id
40246          , x_accounting_coa_id        => l_adr_accounting_coa_id
40247          , x_value_type_code          => l_adr_value_type_code
40248          , p_side                     => 'NA'
40249    );
40250 
40251    xla_ae_lines_pkg.set_ccid(
40252     p_code_combination_id          => l_ccid
40253   , p_value_type_code              => l_adr_value_type_code
40254   , p_transaction_coa_id           => l_adr_transaction_coa_id
40255   , p_accounting_coa_id            => l_adr_accounting_coa_id
40256   , p_adr_code                     => 'UER_RULE'
40257   , p_adr_type_code                => 'S'
40258   , p_component_type               => l_component_type
40259   , p_component_code               => l_component_code
40260   , p_component_type_code          => l_component_type_code
40261   , p_component_appl_id            => l_component_appl_id
40262   , p_amb_context_code             => l_amb_context_code
40263   , p_side                         => 'NA'
40264   );
40265 
40266 
40267    --
40268    --
40269    END IF;
40270    --
40271    -- Bug 4922099
40272    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40273           (NVL(l_enc_upg_option, 'N') = 'O')
40274         ) AND
40275         (l_bflow_method_code = 'PRIOR_ENTRY')
40276       )
40277    THEN
40278       IF
40279       --
40280       1 = 2
40281       --
40282       THEN
40283       xla_accounting_err_pkg.build_message
40284                                     (p_appli_s_name            => 'XLA'
40285                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40286                                     ,p_token_1                 => 'LINE_NUMBER'
40287                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40288                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40289                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40290                                                                              l_component_type
40291                                                                             ,l_component_code
40292                                                                             ,l_component_type_code
40293                                                                             ,l_component_appl_id
40294                                                                             ,l_amb_context_code
40295                                                                             ,l_entity_code
40296                                                                             ,l_event_class_code
40297                                                                            )
40301                                                                           ,p_lookup_code    => l_component_type_code
40298                                     ,p_token_3                 => 'OWNER'
40299                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40300                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40302                                                                          )
40303                                     ,p_token_4                 => 'PRODUCT_NAME'
40304                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40305                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40306                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40307                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40308                                     ,p_ae_header_id            =>  NULL
40309                                        );
40310 
40311         IF (C_LEVEL_ERROR>= g_log_level) THEN
40312                  trace
40313                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40314                       ,p_level    => C_LEVEL_ERROR
40315                       ,p_module   => l_log_module);
40316         END IF;
40317       END IF;
40318    END IF;
40319    --
40320    --
40321    ------------------------------------------------------------------------------------------------
40322    -- 4219869 Business Flow
40323    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40324    -- Prior Entry.  Currently, the following code is always generated.
40325    ------------------------------------------------------------------------------------------------
40326    XLA_AE_LINES_PKG.ValidateCurrentLine;
40327 
40328    ------------------------------------------------------------------------------------
40329    -- 4219869 Business Flow
40330    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40331    ------------------------------------------------------------------------------------
40332    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40333 
40334    ----------------------------------------------------------------------------------
40335    -- 4219869 Business Flow
40336    -- Update journal entry status -- Need to generate this within IF <condition>
40337    ----------------------------------------------------------------------------------
40338    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40339          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40340          ,p_balance_type_code => l_balance_type_code
40341          );
40342 
40343    -------------------------------------------------------------------------------------------
40344    -- 4262811 - Generate the Accrual Reversal lines
40345    -------------------------------------------------------------------------------------------
40346    BEGIN
40347       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40348                               (g_array_event(p_event_id).array_value_num('header_index'));
40349       IF l_acc_rev_flag IS NULL THEN
40350          l_acc_rev_flag := 'N';
40351       END IF;
40352    EXCEPTION
40353       WHEN OTHERS THEN
40354          l_acc_rev_flag := 'N';
40355    END;
40356    --
40357    IF (l_acc_rev_flag = 'Y') THEN
40358 
40359        -- 4645092  ------------------------------------------------------------------------------
40360        -- To allow MPA report to determine if it should generate report process
40361        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40362        ------------------------------------------------------------------------------------------
40363 
40364        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40365        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40366 
40367        --
40368        -- Update the line information that should be overwritten
40369        --
40370        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40371                                          p_header_num   => 1);
40372        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40373 
40374        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40375 
40376        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40377           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40378        END IF;
40379 
40380       --
40381       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40382       --
40383       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40384           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40385       ELSE
40386           ---------------------------------------------------------------------------------------------------
40387           -- 4262811a Switch Sign
40388           ---------------------------------------------------------------------------------------------------
40389           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40390           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40394           -- 5132302
40391                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40392           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40393                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40395           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40396                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40397 
40398       END IF;
40399 
40400       -- 4955764
40401       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40402       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40403 
40404 
40405       XLA_AE_LINES_PKG.ValidateCurrentLine;
40406       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40407 
40408       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40409                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40410                ,p_balance_type_code => l_balance_type_code);
40411 
40412    END IF;
40413 
40414    -----------------------------------------------------------------------------------------
40415    -- 4262811 Multiperiod Accounting
40416    -----------------------------------------------------------------------------------------
40417      -- No MPA option is assigned.
40418 
40419 
40420 END IF;
40421 END IF;
40422 --
40423 
40424 --
40425 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40426    trace
40427       (p_msg      => 'END of AcctLineType_85'
40428       ,p_level    => C_LEVEL_PROCEDURE
40429       ,p_module   => l_log_module);
40430 END IF;
40431 --
40432 EXCEPTION
40433   WHEN xla_exceptions_pkg.application_exception THEN
40434       RAISE;
40435   WHEN OTHERS THEN
40436        xla_exceptions_pkg.raise_message
40437            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_85');
40438 END AcctLineType_85;
40439 --
40440 
40441 ---------------------------------------
40442 --
40443 -- PRIVATE FUNCTION
40444 --         AcctLineType_86
40445 --
40446 ---------------------------------------
40447 PROCEDURE AcctLineType_86 (
40448   p_application_id        IN NUMBER
40449  ,p_event_id              IN NUMBER
40450  ,p_calculate_acctd_flag  IN VARCHAR2
40451  ,p_calculate_g_l_flag    IN VARCHAR2
40452  ,p_actual_flag           IN OUT VARCHAR2
40453  ,p_balance_type_code     OUT VARCHAR2
40454  ,p_gain_or_loss_ref      OUT VARCHAR2
40455  
40456 --Revenue CCID
40457  , p_source_18            IN NUMBER
40458 --Entered Currency Code
40459  , p_source_25            IN VARCHAR2
40460 --Exchange Rate Date
40461  , p_source_27            IN DATE
40462 --Exchange Rate
40463  , p_source_28            IN NUMBER
40464 --Exchange Rate Type
40465  , p_source_29            IN VARCHAR2
40466 --Revenue Distribution Type
40467  , p_source_36            IN VARCHAR2
40468 --System Linkage Function
40469  , p_source_37            IN VARCHAR2
40470 --Crediting Revenue Flag
40471  , p_source_38            IN VARCHAR2
40472 --Revenue First Distribution ID
40473  , p_source_39            IN NUMBER
40474 --Revenue Second Distribution ID
40475  , p_source_40            IN NUMBER
40476 --Entered Amount
40477  , p_source_41            IN NUMBER
40478 --Event ID
40479  , p_source_42            IN NUMBER
40480 --Accounted Amount
40481  , p_source_43            IN NUMBER
40482 )
40483 IS
40484 
40485 l_component_type              VARCHAR2(80);
40486 l_component_code              VARCHAR2(30);
40487 l_component_type_code         VARCHAR2(1);
40488 l_component_appl_id           INTEGER;
40489 l_amb_context_code            VARCHAR2(30);
40490 l_entity_code                 VARCHAR2(30);
40491 l_event_class_code            VARCHAR2(30);
40492 l_ae_header_id                NUMBER;
40493 l_event_type_code             VARCHAR2(30);
40494 l_line_definition_code        VARCHAR2(30);
40495 l_line_definition_owner_code  VARCHAR2(1);
40496 --
40497 -- adr variables
40498 l_segment                     VARCHAR2(30);
40499 l_ccid                        NUMBER;
40500 l_adr_transaction_coa_id      NUMBER;
40501 l_adr_accounting_coa_id       NUMBER;
40502 l_adr_flexfield_segment_code  VARCHAR2(30);
40503 l_adr_flex_value_set_id       NUMBER;
40504 l_adr_value_type_code         VARCHAR2(30);
40505 l_adr_value_combination_id    NUMBER;
40506 l_adr_value_segment_code      VARCHAR2(30);
40507 
40508 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40509 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40510 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40511 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40512 
40513 -- 4262811 Variables ------------------------------------------------------------------------------------------
40514 l_entered_amt_idx             NUMBER;
40515 l_accted_amt_idx              NUMBER;
40516 l_acc_rev_flag                VARCHAR2(1);
40517 l_accrual_line_num            NUMBER;
40518 l_tmp_amt                     NUMBER;
40519 l_acc_rev_natural_side_code   VARCHAR2(1);
40520 
40521 l_num_entries                 NUMBER;
40522 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40526 l_recog_line_1                NUMBER;
40523 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40524 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40525 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40527 l_recog_line_2                NUMBER;
40528 
40529 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40530 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40531 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40532 
40533 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40534 
40535 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40536 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40537 
40538 ---------------------------------------------------------------------------------------------------------------
40539 
40540 
40541 --
40542 -- bulk performance
40543 --
40544 l_balance_type_code           VARCHAR2(1);
40545 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40546 l_log_module                  VARCHAR2(240);
40547 
40548 --
40549 -- Upgrade strategy
40550 --
40551 l_actual_upg_option           VARCHAR2(1);
40552 l_enc_upg_option           VARCHAR2(1);
40553 
40554 --
40555 BEGIN
40556 --
40557 IF g_log_enabled THEN
40558       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
40559 END IF;
40560 --
40561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40562 
40563       trace
40564          (p_msg      => 'BEGIN of AcctLineType_86'
40565          ,p_level    => C_LEVEL_PROCEDURE
40566          ,p_module   => l_log_module);
40567 
40568 END IF;
40569 --
40570 l_component_type             := 'AMB_JLT';
40571 l_component_code             := 'PA_USG_REV';
40572 l_component_type_code        := 'S';
40573 l_component_appl_id          :=  275;
40574 l_amb_context_code           := 'DEFAULT';
40575 l_entity_code                := 'REVENUE';
40576 l_event_class_code           := 'REVENUE';
40577 l_event_type_code            := 'REVENUE_ALL';
40578 l_line_definition_owner_code := 'S';
40579 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
40580 --
40581 l_balance_type_code          := 'A';
40582 l_segment                     := NULL;
40583 l_ccid                        := NULL;
40584 l_adr_transaction_coa_id      := NULL;
40585 l_adr_accounting_coa_id       := NULL;
40586 l_adr_flexfield_segment_code  := NULL;
40587 l_adr_flex_value_set_id       := NULL;
40588 l_adr_value_type_code         := NULL;
40589 l_adr_value_combination_id    := NULL;
40590 l_adr_value_segment_code      := NULL;
40591 
40592 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40593 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
40594 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40595 l_budgetary_control_flag     := 'N';
40596 
40597 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40598 l_bflow_applied_to_amt       := NULL; -- 5132302
40599 l_entered_amt_idx            := NULL;          -- 4262811
40600 l_accted_amt_idx             := NULL;          -- 4262811
40601 l_acc_rev_flag               := NULL;          -- 4262811
40602 l_accrual_line_num           := NULL;          -- 4262811
40603 l_tmp_amt                    := NULL;          -- 4262811
40604 --
40605  
40606 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40607     l_balance_type_code <> 'B' THEN
40608 IF NVL(p_source_36,'
40609 ') =  'Revenue - Normal Revenue' AND 
40610 NVL(p_source_37,'
40611 ') =  'USG' AND 
40612 NVL(p_source_38,'
40613 ') =  'N'
40614  THEN 
40615 
40616    --
40617    XLA_AE_LINES_PKG.SetNewLine;
40618 
40619    p_balance_type_code          := l_balance_type_code;
40620    -- set the flag so later we will know whether the gain loss line needs to be created
40621    
40622    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40623      p_actual_flag :='A';
40624    END IF;
40625 
40626    --
40627    -- bulk performance
40628    --
40629    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40630                                       p_header_num   => 0); -- 4262811
40631    --
40632    -- set accounting line options
40633    --
40634    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40635            p_natural_side_code          => 'C'
40636          , p_gain_or_loss_flag          => 'N'
40637          , p_gl_transfer_mode_code      => 'S'
40638          , p_acct_entry_type_code       => 'A'
40639          , p_switch_side_flag           => 'Y'
40640          , p_merge_duplicate_code       => 'N'
40641          );
40642    --
40643    l_acc_rev_natural_side_code := 'D';  -- 4262811
40644    -- 
40645    --
40646    -- set accounting line type info
40647    --
40648    xla_ae_lines_pkg.SetAcctLineType
40649       (p_component_type             => l_component_type
40650       ,p_event_type_code            => l_event_type_code
40651       ,p_line_definition_owner_code => l_line_definition_owner_code
40652       ,p_line_definition_code       => l_line_definition_code
40653       ,p_accounting_line_code       => l_component_code
40654       ,p_accounting_line_type_code  => l_component_type_code
40655       ,p_accounting_line_appl_id    => l_component_appl_id
40659    --
40656       ,p_amb_context_code           => l_amb_context_code
40657       ,p_entity_code                => l_entity_code
40658       ,p_event_class_code           => l_event_class_code);
40660    -- set accounting class
40661    --
40662    xla_ae_lines_pkg.SetAcctClass(
40663            p_accounting_class_code  => 'REVENUE'
40664          , p_ae_header_id           => l_ae_header_id
40665          );
40666 
40667    --
40668    -- set rounding class
40669    --
40670    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40671                       'REVENUE';
40672 
40673    --
40674    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40675    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40676    --
40677    -- bulk performance
40678    --
40679    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40680 
40681    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40682       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40683 
40684    -- 4955764
40685    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40686       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40687 
40688    -- 4458381 Public Sector Enh
40689    
40690    --
40691    -- set accounting attributes for the line type
40692    --
40693    l_entered_amt_idx := 4;
40694    l_accted_amt_idx  := 10;
40695    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40696    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40697    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
40698    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
40699    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
40700    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
40701    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
40702    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
40703    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
40704    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
40705    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
40706    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
40707    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
40708    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
40709    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
40710    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
40711    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
40712    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
40713    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
40714    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
40715    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
40716 
40717    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40718    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40719 
40720    ---------------------------------------------------------------------------------------------------------------
40721    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40722    ---------------------------------------------------------------------------------------------------------------
40723    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40724 
40725    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40726    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40727 
40728    IF xla_accounting_cache_pkg.GetValueChar
40729          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40730          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40731    AND l_bflow_method_code = 'PRIOR_ENTRY'
40732 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40733    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40734          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40735        )
40736    THEN
40737          xla_ae_lines_pkg.BflowUpgEntry
40738            (p_business_method_code    => l_bflow_method_code
40739            ,p_business_class_code     => l_bflow_class_code
40740            ,p_balance_type            => l_balance_type_code);
40741    ELSE
40742       NULL;
40743 -- No business flow processing for business flow method of NONE.
40744    END IF;
40745 
40746    --
40747    -- call analytical criteria
40748    --
40749    
40750    --
40751    -- call description
40752    --
40753    -- No description or it is inherited.
40754    --
40755    -- call ADRs
40756    -- Bug 4922099
40757    --
40758    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40759         (NVL(l_actual_upg_option, 'N') = 'O') OR
40760         (NVL(l_enc_upg_option, 'N') = 'O')
40761       )
40762    THEN
40763    NULL;
40764    --
40765    --
40766    
40767   l_ccid := AcctDerRule_17(
40768            p_application_id           => p_application_id
40769          , p_ae_header_id             => l_ae_header_id 
40770 , p_source_18 => p_source_18
40771          , x_transaction_coa_id       => l_adr_transaction_coa_id
40775    );
40772          , x_accounting_coa_id        => l_adr_accounting_coa_id
40773          , x_value_type_code          => l_adr_value_type_code
40774          , p_side                     => 'NA'
40776 
40777    xla_ae_lines_pkg.set_ccid(
40778     p_code_combination_id          => l_ccid
40779   , p_value_type_code              => l_adr_value_type_code
40780   , p_transaction_coa_id           => l_adr_transaction_coa_id
40781   , p_accounting_coa_id            => l_adr_accounting_coa_id
40782   , p_adr_code                     => 'REVENUE_RULE'
40783   , p_adr_type_code                => 'S'
40784   , p_component_type               => l_component_type
40785   , p_component_code               => l_component_code
40786   , p_component_type_code          => l_component_type_code
40787   , p_component_appl_id            => l_component_appl_id
40788   , p_amb_context_code             => l_amb_context_code
40789   , p_side                         => 'NA'
40790   );
40791 
40792 
40793    --
40794    --
40795    END IF;
40796    --
40797    -- Bug 4922099
40798    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40799           (NVL(l_enc_upg_option, 'N') = 'O')
40800         ) AND
40801         (l_bflow_method_code = 'PRIOR_ENTRY')
40802       )
40803    THEN
40804       IF
40805       --
40806       1 = 2
40807       --
40808       THEN
40809       xla_accounting_err_pkg.build_message
40810                                     (p_appli_s_name            => 'XLA'
40811                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40812                                     ,p_token_1                 => 'LINE_NUMBER'
40813                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40814                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40815                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40816                                                                              l_component_type
40817                                                                             ,l_component_code
40818                                                                             ,l_component_type_code
40819                                                                             ,l_component_appl_id
40820                                                                             ,l_amb_context_code
40821                                                                             ,l_entity_code
40822                                                                             ,l_event_class_code
40823                                                                            )
40824                                     ,p_token_3                 => 'OWNER'
40825                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40826                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40827                                                                           ,p_lookup_code    => l_component_type_code
40828                                                                          )
40829                                     ,p_token_4                 => 'PRODUCT_NAME'
40830                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40831                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40832                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40833                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40834                                     ,p_ae_header_id            =>  NULL
40835                                        );
40836 
40837         IF (C_LEVEL_ERROR>= g_log_level) THEN
40838                  trace
40839                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40840                       ,p_level    => C_LEVEL_ERROR
40841                       ,p_module   => l_log_module);
40842         END IF;
40843       END IF;
40844    END IF;
40845    --
40846    --
40847    ------------------------------------------------------------------------------------------------
40848    -- 4219869 Business Flow
40849    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40850    -- Prior Entry.  Currently, the following code is always generated.
40851    ------------------------------------------------------------------------------------------------
40852    XLA_AE_LINES_PKG.ValidateCurrentLine;
40853 
40854    ------------------------------------------------------------------------------------
40855    -- 4219869 Business Flow
40856    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40857    ------------------------------------------------------------------------------------
40858    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40859 
40860    ----------------------------------------------------------------------------------
40861    -- 4219869 Business Flow
40862    -- Update journal entry status -- Need to generate this within IF <condition>
40863    ----------------------------------------------------------------------------------
40864    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40865          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40866          ,p_balance_type_code => l_balance_type_code
40867          );
40868 
40872    BEGIN
40869    -------------------------------------------------------------------------------------------
40870    -- 4262811 - Generate the Accrual Reversal lines
40871    -------------------------------------------------------------------------------------------
40873       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40874                               (g_array_event(p_event_id).array_value_num('header_index'));
40875       IF l_acc_rev_flag IS NULL THEN
40876          l_acc_rev_flag := 'N';
40877       END IF;
40878    EXCEPTION
40879       WHEN OTHERS THEN
40880          l_acc_rev_flag := 'N';
40881    END;
40882    --
40883    IF (l_acc_rev_flag = 'Y') THEN
40884 
40885        -- 4645092  ------------------------------------------------------------------------------
40886        -- To allow MPA report to determine if it should generate report process
40887        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40888        ------------------------------------------------------------------------------------------
40889 
40890        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40891        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40892 
40893        --
40894        -- Update the line information that should be overwritten
40895        --
40896        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40897                                          p_header_num   => 1);
40898        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40899 
40900        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40901 
40902        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40903           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40904        END IF;
40905 
40906       --
40907       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40908       --
40909       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40910           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40911       ELSE
40912           ---------------------------------------------------------------------------------------------------
40913           -- 4262811a Switch Sign
40914           ---------------------------------------------------------------------------------------------------
40915           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40916           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40917                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40918           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40919                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40920           -- 5132302
40921           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40922                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40923 
40924       END IF;
40925 
40926       -- 4955764
40927       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40928       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40929 
40930 
40931       XLA_AE_LINES_PKG.ValidateCurrentLine;
40932       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40933 
40934       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40935                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40936                ,p_balance_type_code => l_balance_type_code);
40937 
40938    END IF;
40939 
40940    -----------------------------------------------------------------------------------------
40941    -- 4262811 Multiperiod Accounting
40942    -----------------------------------------------------------------------------------------
40943      -- No MPA option is assigned.
40944 
40945 
40946 END IF;
40947 END IF;
40948 --
40949 
40950 --
40951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40952    trace
40953       (p_msg      => 'END of AcctLineType_86'
40954       ,p_level    => C_LEVEL_PROCEDURE
40955       ,p_module   => l_log_module);
40956 END IF;
40957 --
40958 EXCEPTION
40959   WHEN xla_exceptions_pkg.application_exception THEN
40960       RAISE;
40961   WHEN OTHERS THEN
40962        xla_exceptions_pkg.raise_message
40963            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_86');
40964 END AcctLineType_86;
40965 --
40966 
40967 ---------------------------------------
40968 --
40969 -- PRIVATE FUNCTION
40970 --         AcctLineType_87
40971 --
40972 ---------------------------------------
40973 PROCEDURE AcctLineType_87 (
40974   p_application_id        IN NUMBER
40975  ,p_event_id              IN NUMBER
40976  ,p_calculate_acctd_flag  IN VARCHAR2
40977  ,p_calculate_g_l_flag    IN VARCHAR2
40978  ,p_actual_flag           IN OUT VARCHAR2
40979  ,p_balance_type_code     OUT VARCHAR2
40980  ,p_gain_or_loss_ref      OUT VARCHAR2
40981  
40982 --Revenue CCID
40983  , p_source_18            IN NUMBER
40984 --Entered Currency Code
40985  , p_source_25            IN VARCHAR2
40989  , p_source_28            IN NUMBER
40986 --Exchange Rate Date
40987  , p_source_27            IN DATE
40988 --Exchange Rate
40990 --Exchange Rate Type
40991  , p_source_29            IN VARCHAR2
40992 --Revenue Distribution Type
40993  , p_source_36            IN VARCHAR2
40994 --System Linkage Function
40995  , p_source_37            IN VARCHAR2
40996 --Crediting Revenue Flag
40997  , p_source_38            IN VARCHAR2
40998 --Revenue First Distribution ID
40999  , p_source_39            IN NUMBER
41000 --Revenue Second Distribution ID
41001  , p_source_40            IN NUMBER
41002 --Entered Amount
41003  , p_source_41            IN NUMBER
41004 --Event ID
41005  , p_source_42            IN NUMBER
41006 --Accounted Amount
41007  , p_source_43            IN NUMBER
41008 )
41009 IS
41010 
41011 l_component_type              VARCHAR2(80);
41012 l_component_code              VARCHAR2(30);
41013 l_component_type_code         VARCHAR2(1);
41014 l_component_appl_id           INTEGER;
41015 l_amb_context_code            VARCHAR2(30);
41016 l_entity_code                 VARCHAR2(30);
41017 l_event_class_code            VARCHAR2(30);
41018 l_ae_header_id                NUMBER;
41019 l_event_type_code             VARCHAR2(30);
41020 l_line_definition_code        VARCHAR2(30);
41021 l_line_definition_owner_code  VARCHAR2(1);
41022 --
41023 -- adr variables
41024 l_segment                     VARCHAR2(30);
41025 l_ccid                        NUMBER;
41026 l_adr_transaction_coa_id      NUMBER;
41027 l_adr_accounting_coa_id       NUMBER;
41028 l_adr_flexfield_segment_code  VARCHAR2(30);
41029 l_adr_flex_value_set_id       NUMBER;
41030 l_adr_value_type_code         VARCHAR2(30);
41031 l_adr_value_combination_id    NUMBER;
41032 l_adr_value_segment_code      VARCHAR2(30);
41033 
41034 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41035 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41036 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41037 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41038 
41039 -- 4262811 Variables ------------------------------------------------------------------------------------------
41040 l_entered_amt_idx             NUMBER;
41041 l_accted_amt_idx              NUMBER;
41042 l_acc_rev_flag                VARCHAR2(1);
41043 l_accrual_line_num            NUMBER;
41044 l_tmp_amt                     NUMBER;
41045 l_acc_rev_natural_side_code   VARCHAR2(1);
41046 
41047 l_num_entries                 NUMBER;
41048 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41049 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41050 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41051 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41052 l_recog_line_1                NUMBER;
41053 l_recog_line_2                NUMBER;
41054 
41055 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41056 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41057 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41058 
41059 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41060 
41061 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41062 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41063 
41064 ---------------------------------------------------------------------------------------------------------------
41065 
41066 
41067 --
41068 -- bulk performance
41069 --
41070 l_balance_type_code           VARCHAR2(1);
41071 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41072 l_log_module                  VARCHAR2(240);
41073 
41074 --
41075 -- Upgrade strategy
41076 --
41077 l_actual_upg_option           VARCHAR2(1);
41078 l_enc_upg_option           VARCHAR2(1);
41079 
41080 --
41081 BEGIN
41082 --
41083 IF g_log_enabled THEN
41084       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
41085 END IF;
41086 --
41087 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41088 
41089       trace
41090          (p_msg      => 'BEGIN of AcctLineType_87'
41091          ,p_level    => C_LEVEL_PROCEDURE
41092          ,p_module   => l_log_module);
41093 
41094 END IF;
41095 --
41096 l_component_type             := 'AMB_JLT';
41097 l_component_code             := 'PA_VI_REV';
41098 l_component_type_code        := 'S';
41099 l_component_appl_id          :=  275;
41100 l_amb_context_code           := 'DEFAULT';
41101 l_entity_code                := 'REVENUE';
41102 l_event_class_code           := 'REVENUE';
41103 l_event_type_code            := 'REVENUE_ALL';
41104 l_line_definition_owner_code := 'S';
41105 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
41106 --
41107 l_balance_type_code          := 'A';
41108 l_segment                     := NULL;
41109 l_ccid                        := NULL;
41110 l_adr_transaction_coa_id      := NULL;
41111 l_adr_accounting_coa_id       := NULL;
41112 l_adr_flexfield_segment_code  := NULL;
41113 l_adr_flex_value_set_id       := NULL;
41114 l_adr_value_type_code         := NULL;
41115 l_adr_value_combination_id    := NULL;
41116 l_adr_value_segment_code      := NULL;
41117 
41118 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41122 
41119 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
41120 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41121 l_budgetary_control_flag     := 'N';
41123 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41124 l_bflow_applied_to_amt       := NULL; -- 5132302
41125 l_entered_amt_idx            := NULL;          -- 4262811
41126 l_accted_amt_idx             := NULL;          -- 4262811
41127 l_acc_rev_flag               := NULL;          -- 4262811
41128 l_accrual_line_num           := NULL;          -- 4262811
41129 l_tmp_amt                    := NULL;          -- 4262811
41130 --
41131  
41132 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41133     l_balance_type_code <> 'B' THEN
41134 IF NVL(p_source_36,'
41135 ') =  'Revenue - Normal Revenue' AND 
41136 NVL(p_source_37,'
41137 ') =  'VI' AND 
41138 NVL(p_source_38,'
41139 ') =  'N'
41140  THEN 
41141 
41142    --
41143    XLA_AE_LINES_PKG.SetNewLine;
41144 
41145    p_balance_type_code          := l_balance_type_code;
41146    -- set the flag so later we will know whether the gain loss line needs to be created
41147    
41148    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41149      p_actual_flag :='A';
41150    END IF;
41151 
41152    --
41153    -- bulk performance
41154    --
41155    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41156                                       p_header_num   => 0); -- 4262811
41157    --
41158    -- set accounting line options
41159    --
41160    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41161            p_natural_side_code          => 'C'
41162          , p_gain_or_loss_flag          => 'N'
41163          , p_gl_transfer_mode_code      => 'S'
41164          , p_acct_entry_type_code       => 'A'
41165          , p_switch_side_flag           => 'Y'
41166          , p_merge_duplicate_code       => 'N'
41167          );
41168    --
41169    l_acc_rev_natural_side_code := 'D';  -- 4262811
41170    -- 
41171    --
41172    -- set accounting line type info
41173    --
41174    xla_ae_lines_pkg.SetAcctLineType
41175       (p_component_type             => l_component_type
41176       ,p_event_type_code            => l_event_type_code
41177       ,p_line_definition_owner_code => l_line_definition_owner_code
41178       ,p_line_definition_code       => l_line_definition_code
41179       ,p_accounting_line_code       => l_component_code
41180       ,p_accounting_line_type_code  => l_component_type_code
41181       ,p_accounting_line_appl_id    => l_component_appl_id
41182       ,p_amb_context_code           => l_amb_context_code
41183       ,p_entity_code                => l_entity_code
41184       ,p_event_class_code           => l_event_class_code);
41185    --
41186    -- set accounting class
41187    --
41188    xla_ae_lines_pkg.SetAcctClass(
41189            p_accounting_class_code  => 'REVENUE'
41190          , p_ae_header_id           => l_ae_header_id
41191          );
41192 
41193    --
41194    -- set rounding class
41195    --
41196    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41197                       'REVENUE';
41198 
41199    --
41200    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41201    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41202    --
41203    -- bulk performance
41204    --
41205    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41206 
41207    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41208       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41209 
41210    -- 4955764
41211    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41212       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41213 
41214    -- 4458381 Public Sector Enh
41215    
41216    --
41217    -- set accounting attributes for the line type
41218    --
41219    l_entered_amt_idx := 4;
41220    l_accted_amt_idx  := 10;
41221    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41222    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41223    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
41224    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
41225    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
41226    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
41227    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
41228    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
41229    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
41230    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
41231    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
41232    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
41233    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
41234    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
41235    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
41236    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
41237    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
41238    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
41242 
41239    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
41240    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
41241    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
41243    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41244    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41245 
41246    ---------------------------------------------------------------------------------------------------------------
41247    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41248    ---------------------------------------------------------------------------------------------------------------
41249    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41250 
41251    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41252    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41253 
41254    IF xla_accounting_cache_pkg.GetValueChar
41255          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41256          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41257    AND l_bflow_method_code = 'PRIOR_ENTRY'
41258 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41259    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41260          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41261        )
41262    THEN
41263          xla_ae_lines_pkg.BflowUpgEntry
41264            (p_business_method_code    => l_bflow_method_code
41265            ,p_business_class_code     => l_bflow_class_code
41266            ,p_balance_type            => l_balance_type_code);
41267    ELSE
41268       NULL;
41269 -- No business flow processing for business flow method of NONE.
41270    END IF;
41271 
41272    --
41273    -- call analytical criteria
41274    --
41275    
41276    --
41277    -- call description
41278    --
41279    -- No description or it is inherited.
41280    --
41281    -- call ADRs
41282    -- Bug 4922099
41283    --
41284    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41285         (NVL(l_actual_upg_option, 'N') = 'O') OR
41286         (NVL(l_enc_upg_option, 'N') = 'O')
41287       )
41288    THEN
41289    NULL;
41290    --
41291    --
41292    
41293   l_ccid := AcctDerRule_17(
41294            p_application_id           => p_application_id
41295          , p_ae_header_id             => l_ae_header_id 
41296 , p_source_18 => p_source_18
41297          , x_transaction_coa_id       => l_adr_transaction_coa_id
41298          , x_accounting_coa_id        => l_adr_accounting_coa_id
41299          , x_value_type_code          => l_adr_value_type_code
41300          , p_side                     => 'NA'
41301    );
41302 
41303    xla_ae_lines_pkg.set_ccid(
41304     p_code_combination_id          => l_ccid
41305   , p_value_type_code              => l_adr_value_type_code
41306   , p_transaction_coa_id           => l_adr_transaction_coa_id
41307   , p_accounting_coa_id            => l_adr_accounting_coa_id
41308   , p_adr_code                     => 'REVENUE_RULE'
41309   , p_adr_type_code                => 'S'
41310   , p_component_type               => l_component_type
41311   , p_component_code               => l_component_code
41312   , p_component_type_code          => l_component_type_code
41313   , p_component_appl_id            => l_component_appl_id
41314   , p_amb_context_code             => l_amb_context_code
41315   , p_side                         => 'NA'
41316   );
41317 
41318 
41319    --
41320    --
41321    END IF;
41322    --
41323    -- Bug 4922099
41324    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41325           (NVL(l_enc_upg_option, 'N') = 'O')
41326         ) AND
41327         (l_bflow_method_code = 'PRIOR_ENTRY')
41328       )
41329    THEN
41330       IF
41331       --
41332       1 = 2
41333       --
41334       THEN
41335       xla_accounting_err_pkg.build_message
41336                                     (p_appli_s_name            => 'XLA'
41337                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41338                                     ,p_token_1                 => 'LINE_NUMBER'
41339                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41340                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41341                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41342                                                                              l_component_type
41343                                                                             ,l_component_code
41344                                                                             ,l_component_type_code
41345                                                                             ,l_component_appl_id
41346                                                                             ,l_amb_context_code
41347                                                                             ,l_entity_code
41348                                                                             ,l_event_class_code
41349                                                                            )
41350                                     ,p_token_3                 => 'OWNER'
41354                                                                          )
41351                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41352                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41353                                                                           ,p_lookup_code    => l_component_type_code
41355                                     ,p_token_4                 => 'PRODUCT_NAME'
41356                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41357                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41358                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41359                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41360                                     ,p_ae_header_id            =>  NULL
41361                                        );
41362 
41363         IF (C_LEVEL_ERROR>= g_log_level) THEN
41364                  trace
41365                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41366                       ,p_level    => C_LEVEL_ERROR
41367                       ,p_module   => l_log_module);
41368         END IF;
41369       END IF;
41370    END IF;
41371    --
41372    --
41373    ------------------------------------------------------------------------------------------------
41374    -- 4219869 Business Flow
41375    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41376    -- Prior Entry.  Currently, the following code is always generated.
41377    ------------------------------------------------------------------------------------------------
41378    XLA_AE_LINES_PKG.ValidateCurrentLine;
41379 
41380    ------------------------------------------------------------------------------------
41381    -- 4219869 Business Flow
41382    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41383    ------------------------------------------------------------------------------------
41384    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41385 
41386    ----------------------------------------------------------------------------------
41387    -- 4219869 Business Flow
41388    -- Update journal entry status -- Need to generate this within IF <condition>
41389    ----------------------------------------------------------------------------------
41390    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41391          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41392          ,p_balance_type_code => l_balance_type_code
41393          );
41394 
41395    -------------------------------------------------------------------------------------------
41396    -- 4262811 - Generate the Accrual Reversal lines
41397    -------------------------------------------------------------------------------------------
41398    BEGIN
41399       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41400                               (g_array_event(p_event_id).array_value_num('header_index'));
41401       IF l_acc_rev_flag IS NULL THEN
41402          l_acc_rev_flag := 'N';
41403       END IF;
41404    EXCEPTION
41405       WHEN OTHERS THEN
41406          l_acc_rev_flag := 'N';
41407    END;
41408    --
41409    IF (l_acc_rev_flag = 'Y') THEN
41410 
41411        -- 4645092  ------------------------------------------------------------------------------
41412        -- To allow MPA report to determine if it should generate report process
41413        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41414        ------------------------------------------------------------------------------------------
41415 
41416        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41417        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41418 
41419        --
41420        -- Update the line information that should be overwritten
41421        --
41422        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41423                                          p_header_num   => 1);
41424        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41425 
41426        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41427 
41428        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41429           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41430        END IF;
41431 
41432       --
41433       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41434       --
41435       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41436           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41437       ELSE
41438           ---------------------------------------------------------------------------------------------------
41439           -- 4262811a Switch Sign
41440           ---------------------------------------------------------------------------------------------------
41441           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41442           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41443                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41447           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41444           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41445                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41446           -- 5132302
41448                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41449 
41450       END IF;
41451 
41452       -- 4955764
41453       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41454       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41455 
41456 
41457       XLA_AE_LINES_PKG.ValidateCurrentLine;
41458       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41459 
41460       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41461                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41462                ,p_balance_type_code => l_balance_type_code);
41463 
41464    END IF;
41465 
41466    -----------------------------------------------------------------------------------------
41467    -- 4262811 Multiperiod Accounting
41468    -----------------------------------------------------------------------------------------
41469      -- No MPA option is assigned.
41470 
41471 
41472 END IF;
41473 END IF;
41474 --
41475 
41476 --
41477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41478    trace
41479       (p_msg      => 'END of AcctLineType_87'
41480       ,p_level    => C_LEVEL_PROCEDURE
41481       ,p_module   => l_log_module);
41482 END IF;
41483 --
41484 EXCEPTION
41485   WHEN xla_exceptions_pkg.application_exception THEN
41486       RAISE;
41487   WHEN OTHERS THEN
41488        xla_exceptions_pkg.raise_message
41489            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_87');
41490 END AcctLineType_87;
41491 --
41492 
41493 ---------------------------------------
41494 --
41495 -- PRIVATE FUNCTION
41496 --         AcctLineType_88
41497 --
41498 ---------------------------------------
41499 PROCEDURE AcctLineType_88 (
41500   p_application_id        IN NUMBER
41501  ,p_event_id              IN NUMBER
41502  ,p_calculate_acctd_flag  IN VARCHAR2
41503  ,p_calculate_g_l_flag    IN VARCHAR2
41504  ,p_actual_flag           IN OUT VARCHAR2
41505  ,p_balance_type_code     OUT VARCHAR2
41506  ,p_gain_or_loss_ref      OUT VARCHAR2
41507  
41508 --Revenue CCID
41509  , p_source_18            IN NUMBER
41510 --Entered Currency Code
41511  , p_source_25            IN VARCHAR2
41512 --Exchange Rate Date
41513  , p_source_27            IN DATE
41514 --Exchange Rate
41515  , p_source_28            IN NUMBER
41516 --Exchange Rate Type
41517  , p_source_29            IN VARCHAR2
41518 --Revenue Distribution Type
41519  , p_source_36            IN VARCHAR2
41520 --System Linkage Function
41521  , p_source_37            IN VARCHAR2
41522 --Crediting Revenue Flag
41523  , p_source_38            IN VARCHAR2
41524 --Revenue First Distribution ID
41525  , p_source_39            IN NUMBER
41526 --Revenue Second Distribution ID
41527  , p_source_40            IN NUMBER
41528 --Entered Amount
41529  , p_source_41            IN NUMBER
41530 --Event ID
41531  , p_source_42            IN NUMBER
41532 --Accounted Amount
41533  , p_source_43            IN NUMBER
41534 )
41535 IS
41536 
41537 l_component_type              VARCHAR2(80);
41538 l_component_code              VARCHAR2(30);
41539 l_component_type_code         VARCHAR2(1);
41540 l_component_appl_id           INTEGER;
41541 l_amb_context_code            VARCHAR2(30);
41542 l_entity_code                 VARCHAR2(30);
41543 l_event_class_code            VARCHAR2(30);
41544 l_ae_header_id                NUMBER;
41545 l_event_type_code             VARCHAR2(30);
41546 l_line_definition_code        VARCHAR2(30);
41547 l_line_definition_owner_code  VARCHAR2(1);
41548 --
41549 -- adr variables
41550 l_segment                     VARCHAR2(30);
41551 l_ccid                        NUMBER;
41552 l_adr_transaction_coa_id      NUMBER;
41553 l_adr_accounting_coa_id       NUMBER;
41554 l_adr_flexfield_segment_code  VARCHAR2(30);
41555 l_adr_flex_value_set_id       NUMBER;
41556 l_adr_value_type_code         VARCHAR2(30);
41557 l_adr_value_combination_id    NUMBER;
41558 l_adr_value_segment_code      VARCHAR2(30);
41559 
41560 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41561 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41562 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41563 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41564 
41565 -- 4262811 Variables ------------------------------------------------------------------------------------------
41566 l_entered_amt_idx             NUMBER;
41567 l_accted_amt_idx              NUMBER;
41568 l_acc_rev_flag                VARCHAR2(1);
41569 l_accrual_line_num            NUMBER;
41570 l_tmp_amt                     NUMBER;
41571 l_acc_rev_natural_side_code   VARCHAR2(1);
41572 
41573 l_num_entries                 NUMBER;
41574 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41575 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41576 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41577 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41581 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41578 l_recog_line_1                NUMBER;
41579 l_recog_line_2                NUMBER;
41580 
41582 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41583 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41584 
41585 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41586 
41587 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41588 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41589 
41590 ---------------------------------------------------------------------------------------------------------------
41591 
41592 
41593 --
41594 -- bulk performance
41595 --
41596 l_balance_type_code           VARCHAR2(1);
41597 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41598 l_log_module                  VARCHAR2(240);
41599 
41600 --
41601 -- Upgrade strategy
41602 --
41603 l_actual_upg_option           VARCHAR2(1);
41604 l_enc_upg_option           VARCHAR2(1);
41605 
41606 --
41607 BEGIN
41608 --
41609 IF g_log_enabled THEN
41610       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
41611 END IF;
41612 --
41613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41614 
41615       trace
41616          (p_msg      => 'BEGIN of AcctLineType_88'
41617          ,p_level    => C_LEVEL_PROCEDURE
41618          ,p_module   => l_log_module);
41619 
41620 END IF;
41621 --
41622 l_component_type             := 'AMB_JLT';
41623 l_component_code             := 'PA_WIP_REV';
41624 l_component_type_code        := 'S';
41625 l_component_appl_id          :=  275;
41626 l_amb_context_code           := 'DEFAULT';
41627 l_entity_code                := 'REVENUE';
41628 l_event_class_code           := 'REVENUE';
41629 l_event_type_code            := 'REVENUE_ALL';
41630 l_line_definition_owner_code := 'S';
41631 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
41632 --
41633 l_balance_type_code          := 'A';
41634 l_segment                     := NULL;
41635 l_ccid                        := NULL;
41636 l_adr_transaction_coa_id      := NULL;
41637 l_adr_accounting_coa_id       := NULL;
41638 l_adr_flexfield_segment_code  := NULL;
41639 l_adr_flex_value_set_id       := NULL;
41640 l_adr_value_type_code         := NULL;
41641 l_adr_value_combination_id    := NULL;
41642 l_adr_value_segment_code      := NULL;
41643 
41644 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41645 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
41646 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41647 l_budgetary_control_flag     := 'N';
41648 
41649 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41650 l_bflow_applied_to_amt       := NULL; -- 5132302
41651 l_entered_amt_idx            := NULL;          -- 4262811
41652 l_accted_amt_idx             := NULL;          -- 4262811
41653 l_acc_rev_flag               := NULL;          -- 4262811
41654 l_accrual_line_num           := NULL;          -- 4262811
41655 l_tmp_amt                    := NULL;          -- 4262811
41656 --
41657  
41658 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41659     l_balance_type_code <> 'B' THEN
41660 IF NVL(p_source_36,'
41661 ') =  'Revenue - Normal Revenue' AND 
41662 NVL(p_source_37,'
41663 ') =  'WIP' AND 
41664 NVL(p_source_38,'
41665 ') =  'N'
41666  THEN 
41667 
41668    --
41669    XLA_AE_LINES_PKG.SetNewLine;
41670 
41671    p_balance_type_code          := l_balance_type_code;
41672    -- set the flag so later we will know whether the gain loss line needs to be created
41673    
41674    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41675      p_actual_flag :='A';
41676    END IF;
41677 
41678    --
41679    -- bulk performance
41680    --
41681    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41682                                       p_header_num   => 0); -- 4262811
41683    --
41684    -- set accounting line options
41685    --
41686    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41687            p_natural_side_code          => 'C'
41688          , p_gain_or_loss_flag          => 'N'
41689          , p_gl_transfer_mode_code      => 'S'
41690          , p_acct_entry_type_code       => 'A'
41691          , p_switch_side_flag           => 'Y'
41692          , p_merge_duplicate_code       => 'N'
41693          );
41694    --
41695    l_acc_rev_natural_side_code := 'D';  -- 4262811
41696    -- 
41697    --
41698    -- set accounting line type info
41699    --
41700    xla_ae_lines_pkg.SetAcctLineType
41701       (p_component_type             => l_component_type
41702       ,p_event_type_code            => l_event_type_code
41703       ,p_line_definition_owner_code => l_line_definition_owner_code
41704       ,p_line_definition_code       => l_line_definition_code
41705       ,p_accounting_line_code       => l_component_code
41706       ,p_accounting_line_type_code  => l_component_type_code
41707       ,p_accounting_line_appl_id    => l_component_appl_id
41708       ,p_amb_context_code           => l_amb_context_code
41709       ,p_entity_code                => l_entity_code
41710       ,p_event_class_code           => l_event_class_code);
41711    --
41712    -- set accounting class
41716          , p_ae_header_id           => l_ae_header_id
41713    --
41714    xla_ae_lines_pkg.SetAcctClass(
41715            p_accounting_class_code  => 'REVENUE'
41717          );
41718 
41719    --
41720    -- set rounding class
41721    --
41722    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41723                       'REVENUE';
41724 
41725    --
41726    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41727    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41728    --
41729    -- bulk performance
41730    --
41731    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41732 
41733    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41734       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41735 
41736    -- 4955764
41737    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41738       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41739 
41740    -- 4458381 Public Sector Enh
41741    
41742    --
41743    -- set accounting attributes for the line type
41744    --
41745    l_entered_amt_idx := 4;
41746    l_accted_amt_idx  := 10;
41747    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41748    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41749    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_39);
41750    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
41751    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
41752    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
41753    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
41754    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
41755    l_rec_acct_attrs.array_num_value(4)  := p_source_41;
41756    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
41757    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
41758    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
41759    l_rec_acct_attrs.array_date_value(6)  := p_source_27;
41760    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
41761    l_rec_acct_attrs.array_num_value(7)  := p_source_28;
41762    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
41763    l_rec_acct_attrs.array_char_value(8)  := p_source_29;
41764    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
41765    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_42);
41766    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
41767    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
41768 
41769    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41770    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41771 
41772    ---------------------------------------------------------------------------------------------------------------
41773    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41774    ---------------------------------------------------------------------------------------------------------------
41775    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41776 
41777    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41778    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41779 
41780    IF xla_accounting_cache_pkg.GetValueChar
41781          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41782          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41783    AND l_bflow_method_code = 'PRIOR_ENTRY'
41784 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41785    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41786          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41787        )
41788    THEN
41789          xla_ae_lines_pkg.BflowUpgEntry
41790            (p_business_method_code    => l_bflow_method_code
41791            ,p_business_class_code     => l_bflow_class_code
41792            ,p_balance_type            => l_balance_type_code);
41793    ELSE
41794       NULL;
41795 -- No business flow processing for business flow method of NONE.
41796    END IF;
41797 
41798    --
41799    -- call analytical criteria
41800    --
41801    
41802    --
41803    -- call description
41804    --
41805    -- No description or it is inherited.
41806    --
41807    -- call ADRs
41808    -- Bug 4922099
41809    --
41810    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41811         (NVL(l_actual_upg_option, 'N') = 'O') OR
41812         (NVL(l_enc_upg_option, 'N') = 'O')
41813       )
41814    THEN
41815    NULL;
41816    --
41817    --
41818    
41819   l_ccid := AcctDerRule_17(
41820            p_application_id           => p_application_id
41821          , p_ae_header_id             => l_ae_header_id 
41822 , p_source_18 => p_source_18
41823          , x_transaction_coa_id       => l_adr_transaction_coa_id
41824          , x_accounting_coa_id        => l_adr_accounting_coa_id
41825          , x_value_type_code          => l_adr_value_type_code
41826          , p_side                     => 'NA'
41827    );
41828 
41832   , p_transaction_coa_id           => l_adr_transaction_coa_id
41829    xla_ae_lines_pkg.set_ccid(
41830     p_code_combination_id          => l_ccid
41831   , p_value_type_code              => l_adr_value_type_code
41833   , p_accounting_coa_id            => l_adr_accounting_coa_id
41834   , p_adr_code                     => 'REVENUE_RULE'
41835   , p_adr_type_code                => 'S'
41836   , p_component_type               => l_component_type
41837   , p_component_code               => l_component_code
41838   , p_component_type_code          => l_component_type_code
41839   , p_component_appl_id            => l_component_appl_id
41840   , p_amb_context_code             => l_amb_context_code
41841   , p_side                         => 'NA'
41842   );
41843 
41844 
41845    --
41846    --
41847    END IF;
41848    --
41849    -- Bug 4922099
41850    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41851           (NVL(l_enc_upg_option, 'N') = 'O')
41852         ) AND
41853         (l_bflow_method_code = 'PRIOR_ENTRY')
41854       )
41855    THEN
41856       IF
41857       --
41858       1 = 2
41859       --
41860       THEN
41861       xla_accounting_err_pkg.build_message
41862                                     (p_appli_s_name            => 'XLA'
41863                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41864                                     ,p_token_1                 => 'LINE_NUMBER'
41865                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41866                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41867                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41868                                                                              l_component_type
41869                                                                             ,l_component_code
41870                                                                             ,l_component_type_code
41871                                                                             ,l_component_appl_id
41872                                                                             ,l_amb_context_code
41873                                                                             ,l_entity_code
41874                                                                             ,l_event_class_code
41875                                                                            )
41876                                     ,p_token_3                 => 'OWNER'
41877                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41878                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41879                                                                           ,p_lookup_code    => l_component_type_code
41880                                                                          )
41881                                     ,p_token_4                 => 'PRODUCT_NAME'
41882                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41883                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41884                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41885                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41886                                     ,p_ae_header_id            =>  NULL
41887                                        );
41888 
41889         IF (C_LEVEL_ERROR>= g_log_level) THEN
41890                  trace
41891                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41892                       ,p_level    => C_LEVEL_ERROR
41893                       ,p_module   => l_log_module);
41894         END IF;
41895       END IF;
41896    END IF;
41897    --
41898    --
41899    ------------------------------------------------------------------------------------------------
41900    -- 4219869 Business Flow
41901    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41902    -- Prior Entry.  Currently, the following code is always generated.
41903    ------------------------------------------------------------------------------------------------
41904    XLA_AE_LINES_PKG.ValidateCurrentLine;
41905 
41906    ------------------------------------------------------------------------------------
41907    -- 4219869 Business Flow
41908    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41909    ------------------------------------------------------------------------------------
41910    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41911 
41912    ----------------------------------------------------------------------------------
41913    -- 4219869 Business Flow
41914    -- Update journal entry status -- Need to generate this within IF <condition>
41915    ----------------------------------------------------------------------------------
41916    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41917          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41918          ,p_balance_type_code => l_balance_type_code
41919          );
41920 
41921    -------------------------------------------------------------------------------------------
41922    -- 4262811 - Generate the Accrual Reversal lines
41926                               (g_array_event(p_event_id).array_value_num('header_index'));
41923    -------------------------------------------------------------------------------------------
41924    BEGIN
41925       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41927       IF l_acc_rev_flag IS NULL THEN
41928          l_acc_rev_flag := 'N';
41929       END IF;
41930    EXCEPTION
41931       WHEN OTHERS THEN
41932          l_acc_rev_flag := 'N';
41933    END;
41934    --
41935    IF (l_acc_rev_flag = 'Y') THEN
41936 
41937        -- 4645092  ------------------------------------------------------------------------------
41938        -- To allow MPA report to determine if it should generate report process
41939        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41940        ------------------------------------------------------------------------------------------
41941 
41942        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41943        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41944 
41945        --
41946        -- Update the line information that should be overwritten
41947        --
41948        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41949                                          p_header_num   => 1);
41950        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41951 
41952        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41953 
41954        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41955           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41956        END IF;
41957 
41958       --
41959       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41960       --
41961       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41962           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41963       ELSE
41964           ---------------------------------------------------------------------------------------------------
41965           -- 4262811a Switch Sign
41966           ---------------------------------------------------------------------------------------------------
41967           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41968           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41969                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41970           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41971                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41972           -- 5132302
41973           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41974                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41975 
41976       END IF;
41977 
41978       -- 4955764
41979       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41980       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41981 
41982 
41983       XLA_AE_LINES_PKG.ValidateCurrentLine;
41984       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41985 
41986       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41987                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41988                ,p_balance_type_code => l_balance_type_code);
41989 
41990    END IF;
41991 
41992    -----------------------------------------------------------------------------------------
41993    -- 4262811 Multiperiod Accounting
41994    -----------------------------------------------------------------------------------------
41995      -- No MPA option is assigned.
41996 
41997 
41998 END IF;
41999 END IF;
42000 --
42001 
42002 --
42003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42004    trace
42005       (p_msg      => 'END of AcctLineType_88'
42006       ,p_level    => C_LEVEL_PROCEDURE
42007       ,p_module   => l_log_module);
42008 END IF;
42009 --
42010 EXCEPTION
42011   WHEN xla_exceptions_pkg.application_exception THEN
42012       RAISE;
42013   WHEN OTHERS THEN
42014        xla_exceptions_pkg.raise_message
42015            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_88');
42016 END AcctLineType_88;
42017 --
42018 
42019 ---------------------------------------
42020 --
42021 -- PRIVATE FUNCTION
42022 --         AcctLineType_89
42023 --
42024 ---------------------------------------
42025 PROCEDURE AcctLineType_89 (
42026   p_application_id        IN NUMBER
42027  ,p_event_id              IN NUMBER
42028  ,p_calculate_acctd_flag  IN VARCHAR2
42029  ,p_calculate_g_l_flag    IN VARCHAR2
42030  ,p_actual_flag           IN OUT VARCHAR2
42031  ,p_balance_type_code     OUT VARCHAR2
42032  ,p_gain_or_loss_ref      OUT VARCHAR2
42033  
42034 --Budget Code Combination ID
42035  , p_source_2            IN NUMBER
42036 --Cost CCID
42037  , p_source_3            IN NUMBER
42038 --Cost Clearing CCID
42039  , p_source_6            IN NUMBER
42040 --Reversing Line Flag
42041  , p_source_22            IN VARCHAR2
42045  , p_source_25            IN VARCHAR2
42042 --Actual Upgrade Credit Accounting Class
42043  , p_source_23            IN VARCHAR2
42044 --Entered Currency Code
42046 --Exchange Rate Date
42047  , p_source_27            IN DATE
42048 --Exchange Rate
42049  , p_source_28            IN NUMBER
42050 --Exchange Rate Type
42051  , p_source_29            IN VARCHAR2
42052 --Actual Upgrade Debit Accounting Class
42053  , p_source_30            IN VARCHAR2
42054 --Use Actuals Upgrade Attributes Flag
42055  , p_source_31            IN VARCHAR2
42056 --Expenditure Item ID
42057  , p_source_32            IN NUMBER
42058 --Cost Distribution Line Number
42059  , p_source_33            IN NUMBER
42060 --Line Type
42061  , p_source_34            IN VARCHAR2
42062  , p_source_34_meaning    IN VARCHAR2
42063 --Reversed Line Number
42064  , p_source_35            IN NUMBER
42065 --Entered Burdened Cost
42066  , p_source_44            IN NUMBER
42067 --Accounted Burdened Cost
42068  , p_source_45            IN NUMBER
42069 --Encumbrance Amount
42070  , p_source_46            IN NUMBER
42071 --Project Encumbrance Applied to Application Identifier
42072  , p_source_47            IN NUMBER
42073 --Project Encumbrance Applied to Distribution Type
42074  , p_source_48            IN VARCHAR2
42075 --Project Encumbrance Applied to Entity Code
42076  , p_source_49            IN VARCHAR2
42077 --Project Encumbrance Applied to First Distribution ID
42078  , p_source_50            IN NUMBER
42079 --Project Encumbrance Applied to First System Transaction ID
42080  , p_source_51            IN NUMBER
42081 --Project Encumbrance Applied to Second Distribution ID
42082  , p_source_52            IN VARCHAR2
42083 --Encumbrance Upgrade Debit Accounting Class
42084  , p_source_54            IN VARCHAR2
42085 --Use Encumbrance Upgrade Attributes Flag
42086  , p_source_55            IN VARCHAR2
42087 --Encumbrance Type ID
42088  , p_source_56            IN NUMBER
42089 --Project Encumbrance Type ID
42090  , p_source_57            IN NUMBER
42091 )
42092 IS
42093 
42094 l_component_type              VARCHAR2(80);
42095 l_component_code              VARCHAR2(30);
42096 l_component_type_code         VARCHAR2(1);
42097 l_component_appl_id           INTEGER;
42098 l_amb_context_code            VARCHAR2(30);
42099 l_entity_code                 VARCHAR2(30);
42100 l_event_class_code            VARCHAR2(30);
42101 l_ae_header_id                NUMBER;
42102 l_event_type_code             VARCHAR2(30);
42103 l_line_definition_code        VARCHAR2(30);
42104 l_line_definition_owner_code  VARCHAR2(1);
42105 --
42106 -- adr variables
42107 l_segment                     VARCHAR2(30);
42108 l_ccid                        NUMBER;
42109 l_adr_transaction_coa_id      NUMBER;
42110 l_adr_accounting_coa_id       NUMBER;
42111 l_adr_flexfield_segment_code  VARCHAR2(30);
42112 l_adr_flex_value_set_id       NUMBER;
42113 l_adr_value_type_code         VARCHAR2(30);
42114 l_adr_value_combination_id    NUMBER;
42115 l_adr_value_segment_code      VARCHAR2(30);
42116 
42117 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42118 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42119 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42120 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42121 
42122 -- 4262811 Variables ------------------------------------------------------------------------------------------
42123 l_entered_amt_idx             NUMBER;
42124 l_accted_amt_idx              NUMBER;
42125 l_acc_rev_flag                VARCHAR2(1);
42126 l_accrual_line_num            NUMBER;
42127 l_tmp_amt                     NUMBER;
42128 l_acc_rev_natural_side_code   VARCHAR2(1);
42129 
42130 l_num_entries                 NUMBER;
42131 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42132 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42133 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42134 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42135 l_recog_line_1                NUMBER;
42136 l_recog_line_2                NUMBER;
42137 
42138 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42139 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42140 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42141 
42142 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42143 
42144 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42145 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42146 
42147 ---------------------------------------------------------------------------------------------------------------
42148 
42149 
42150 --
42151 -- bulk performance
42152 --
42153 l_balance_type_code           VARCHAR2(1);
42154 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42155 l_log_module                  VARCHAR2(240);
42156 
42157 --
42158 -- Upgrade strategy
42159 --
42160 l_actual_upg_option           VARCHAR2(1);
42161 l_enc_upg_option           VARCHAR2(1);
42162 
42163 --
42164 BEGIN
42165 --
42166 IF g_log_enabled THEN
42167       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
42168 END IF;
42169 --
42170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42171 
42172       trace
42176 
42173          (p_msg      => 'BEGIN of AcctLineType_89'
42174          ,p_level    => C_LEVEL_PROCEDURE
42175          ,p_module   => l_log_module);
42177 END IF;
42178 --
42179 l_component_type             := 'AMB_JLT';
42180 l_component_code             := 'REINSTATE_PROJ_ENC';
42181 l_component_type_code        := 'S';
42182 l_component_appl_id          :=  275;
42183 l_amb_context_code           := 'DEFAULT';
42184 l_entity_code                := 'EXPENDITURES';
42185 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
42186 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
42187 l_line_definition_owner_code := 'S';
42188 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
42189 --
42190 l_balance_type_code          := 'E';
42191 l_segment                     := NULL;
42192 l_ccid                        := NULL;
42193 l_adr_transaction_coa_id      := NULL;
42194 l_adr_accounting_coa_id       := NULL;
42195 l_adr_flexfield_segment_code  := NULL;
42196 l_adr_flex_value_set_id       := NULL;
42197 l_adr_value_type_code         := NULL;
42198 l_adr_value_combination_id    := NULL;
42199 l_adr_value_segment_code      := NULL;
42200 
42201 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
42202 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
42203 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42204 l_budgetary_control_flag     := 'N';
42205 
42206 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42207 l_bflow_applied_to_amt       := NULL; -- 5132302
42208 l_entered_amt_idx            := NULL;          -- 4262811
42209 l_accted_amt_idx             := NULL;          -- 4262811
42210 l_acc_rev_flag               := NULL;          -- 4262811
42211 l_accrual_line_num           := NULL;          -- 4262811
42212 l_tmp_amt                    := NULL;          -- 4262811
42213 --
42214  
42215 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42216     l_balance_type_code <> 'B' THEN
42217 IF NVL(p_source_34,'
42218 ') =  'E'
42219  THEN 
42220 
42221    --
42222    XLA_AE_LINES_PKG.SetNewLine;
42223 
42224    p_balance_type_code          := l_balance_type_code;
42225    -- set the flag so later we will know whether the gain loss line needs to be created
42226    
42227    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42228      p_actual_flag :='A';
42229    END IF;
42230 
42231    --
42232    -- bulk performance
42233    --
42234    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42235                                       p_header_num   => 0); -- 4262811
42236    --
42237    -- set accounting line options
42238    --
42239    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42240            p_natural_side_code          => 'D'
42241          , p_gain_or_loss_flag          => 'N'
42242          , p_gl_transfer_mode_code      => 'S'
42243          , p_acct_entry_type_code       => 'E'
42244          , p_switch_side_flag           => 'N'
42245          , p_merge_duplicate_code       => 'N'
42246          );
42247    --
42248    l_acc_rev_natural_side_code := 'C';  -- 4262811
42249    -- 
42250    --
42251    -- set accounting line type info
42252    --
42253    xla_ae_lines_pkg.SetAcctLineType
42254       (p_component_type             => l_component_type
42255       ,p_event_type_code            => l_event_type_code
42256       ,p_line_definition_owner_code => l_line_definition_owner_code
42257       ,p_line_definition_code       => l_line_definition_code
42258       ,p_accounting_line_code       => l_component_code
42259       ,p_accounting_line_type_code  => l_component_type_code
42260       ,p_accounting_line_appl_id    => l_component_appl_id
42261       ,p_amb_context_code           => l_amb_context_code
42262       ,p_entity_code                => l_entity_code
42263       ,p_event_class_code           => l_event_class_code);
42264    --
42265    -- set accounting class
42266    --
42267    xla_ae_lines_pkg.SetAcctClass(
42268            p_accounting_class_code  => 'PA_BUDGET_ENC'
42269          , p_ae_header_id           => l_ae_header_id
42270          );
42271 
42272    --
42273    -- set rounding class
42274    --
42275    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42276                       'PA_BUDGET_ENC';
42277 
42278    --
42279    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42280    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42281    --
42282    -- bulk performance
42283    --
42284    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42285 
42286    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42287       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42288 
42289    -- 4955764
42290    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42291       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42292 
42293    -- 4458381 Public Sector Enh
42294    
42295    --
42296    -- set accounting attributes for the line type
42297    --
42298    l_entered_amt_idx := 35;
42299    l_accted_amt_idx  := 37;
42300    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
42304    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
42301    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42302    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
42303    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
42305    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
42306    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
42307    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
42308    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
42309    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
42310    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
42311    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
42312    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
42313    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
42314    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
42315    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
42316    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
42317    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
42318    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
42319    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
42320    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
42321    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
42322    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
42323    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
42324    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
42325    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
42326    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
42327    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
42328    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
42329    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
42330    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
42331    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
42332    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
42333    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
42334    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
42335    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
42336    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
42337    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
42338    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
42339    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
42340    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
42341    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
42342    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
42343    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
42344    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
42345    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
42346    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
42347    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
42348    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
42349    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
42350    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
42351    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
42352    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
42353    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
42354    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
42355    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
42356    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
42357    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
42358    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
42359    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
42360    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
42361    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
42362    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
42363    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
42364    l_rec_acct_attrs.array_char_value(32)  := 
42365 xla_ae_sources_pkg.GetSystemSourceChar(
42366    p_source_code           => 'XLA_CURRENCY_CODE'
42367  , p_source_type_code      => 'Y'
42368  , p_source_application_id =>  602
42369 );
42370    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
42371    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
42372    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
42373    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
42374    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
42375    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
42376    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
42377    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
42378    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
42379    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
42380    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
42381    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
42382    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
42383    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
42387    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
42384    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
42385    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
42386    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
42388    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
42389    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
42390 
42391    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42392    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42393 
42394    ---------------------------------------------------------------------------------------------------------------
42395    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42396    ---------------------------------------------------------------------------------------------------------------
42397    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42398 
42399    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42400    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42401 
42402    IF xla_accounting_cache_pkg.GetValueChar
42403          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42404          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42405    AND l_bflow_method_code = 'PRIOR_ENTRY'
42406 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42407    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42408          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42409        )
42410    THEN
42411          xla_ae_lines_pkg.BflowUpgEntry
42412            (p_business_method_code    => l_bflow_method_code
42413            ,p_business_class_code     => l_bflow_class_code
42414            ,p_balance_type            => l_balance_type_code);
42415    ELSE
42416       NULL;
42417 XLA_AE_LINES_PKG.business_flow_validation(
42418                                 p_business_method_code     => l_bflow_method_code
42419                                ,p_business_class_code      => l_bflow_class_code
42420                                ,p_inherit_description_flag => l_inherit_desc_flag);
42421    END IF;
42422 
42423    --
42424    -- call analytical criteria
42425    --
42426    -- Inherited Analytical Criteria for business flow method of Prior Entry.
42427    --
42428    -- call description
42429    --
42430    -- No description or it is inherited.
42431    --
42432    -- call ADRs
42433    -- Bug 4922099
42434    --
42435    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42436         (NVL(l_actual_upg_option, 'N') = 'O') OR
42437         (NVL(l_enc_upg_option, 'N') = 'O')
42438       )
42439    THEN
42440    NULL;
42441    --
42442    --
42443    
42444    --
42445    --
42446    END IF;
42447    --
42448    -- Bug 4922099
42449    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42450           (NVL(l_enc_upg_option, 'N') = 'O')
42451         ) AND
42452         (l_bflow_method_code = 'PRIOR_ENTRY')
42453       )
42454    THEN
42455       IF
42456       --
42457       1 = 1
42458       --
42459       THEN
42460       xla_accounting_err_pkg.build_message
42461                                     (p_appli_s_name            => 'XLA'
42462                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42463                                     ,p_token_1                 => 'LINE_NUMBER'
42464                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42465                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42466                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42467                                                                              l_component_type
42468                                                                             ,l_component_code
42469                                                                             ,l_component_type_code
42470                                                                             ,l_component_appl_id
42471                                                                             ,l_amb_context_code
42472                                                                             ,l_entity_code
42473                                                                             ,l_event_class_code
42474                                                                            )
42475                                     ,p_token_3                 => 'OWNER'
42476                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42477                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42478                                                                           ,p_lookup_code    => l_component_type_code
42479                                                                          )
42480                                     ,p_token_4                 => 'PRODUCT_NAME'
42481                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42482                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42483                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42487 
42484                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42485                                     ,p_ae_header_id            =>  NULL
42486                                        );
42488         IF (C_LEVEL_ERROR>= g_log_level) THEN
42489                  trace
42490                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42491                       ,p_level    => C_LEVEL_ERROR
42492                       ,p_module   => l_log_module);
42493         END IF;
42494       END IF;
42495    END IF;
42496    --
42497    --
42498    ------------------------------------------------------------------------------------------------
42499    -- 4219869 Business Flow
42500    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42501    -- Prior Entry.  Currently, the following code is always generated.
42502    ------------------------------------------------------------------------------------------------
42503    -- No ValidateCurrentLine for business flow method of Prior Entry
42504 
42505    ------------------------------------------------------------------------------------
42506    -- 4219869 Business Flow
42507    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42508    ------------------------------------------------------------------------------------
42509    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42510 
42511    ----------------------------------------------------------------------------------
42512    -- 4219869 Business Flow
42513    -- Update journal entry status -- Need to generate this within IF <condition>
42514    ----------------------------------------------------------------------------------
42515    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42516          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42517          ,p_balance_type_code => l_balance_type_code
42518          );
42519 
42520    -------------------------------------------------------------------------------------------
42521    -- 4262811 - Generate the Accrual Reversal lines
42522    -------------------------------------------------------------------------------------------
42523    BEGIN
42524       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42525                               (g_array_event(p_event_id).array_value_num('header_index'));
42526       IF l_acc_rev_flag IS NULL THEN
42527          l_acc_rev_flag := 'N';
42528       END IF;
42529    EXCEPTION
42530       WHEN OTHERS THEN
42531          l_acc_rev_flag := 'N';
42532    END;
42533    --
42534    IF (l_acc_rev_flag = 'Y') THEN
42535 
42536        -- 4645092  ------------------------------------------------------------------------------
42537        -- To allow MPA report to determine if it should generate report process
42538        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42539        ------------------------------------------------------------------------------------------
42540 
42541        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42542        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42543 
42544        --
42545        -- Update the line information that should be overwritten
42546        --
42547        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42548                                          p_header_num   => 1);
42549        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42550 
42551        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42552 
42553        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42554           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42555        END IF;
42556 
42557       --
42558       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42559       --
42560       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42561           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42562       ELSE
42563           ---------------------------------------------------------------------------------------------------
42564           -- 4262811a Switch Sign
42565           ---------------------------------------------------------------------------------------------------
42566           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42567           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42568                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42569           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42570                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42571           -- 5132302
42572           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42573                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42574 
42575       END IF;
42576 
42577       -- 4955764
42578       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42579       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42580 
42581 
42582       XLA_AE_LINES_PKG.ValidateCurrentLine;
42583       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42584 
42588 
42585       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42586                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42587                ,p_balance_type_code => l_balance_type_code);
42589    END IF;
42590 
42591    -----------------------------------------------------------------------------------------
42592    -- 4262811 Multiperiod Accounting
42593    -----------------------------------------------------------------------------------------
42594      -- No MPA option is assigned.
42595 
42596 
42597 END IF;
42598 END IF;
42599 --
42600 
42601 --
42602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42603    trace
42604       (p_msg      => 'END of AcctLineType_89'
42605       ,p_level    => C_LEVEL_PROCEDURE
42606       ,p_module   => l_log_module);
42607 END IF;
42608 --
42609 EXCEPTION
42610   WHEN xla_exceptions_pkg.application_exception THEN
42611       RAISE;
42612   WHEN OTHERS THEN
42613        xla_exceptions_pkg.raise_message
42614            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_89');
42615 END AcctLineType_89;
42616 --
42617 
42618 ---------------------------------------
42619 --
42620 -- PRIVATE FUNCTION
42621 --         AcctLineType_90
42622 --
42623 ---------------------------------------
42624 PROCEDURE AcctLineType_90 (
42625   p_application_id        IN NUMBER
42626  ,p_event_id              IN NUMBER
42627  ,p_calculate_acctd_flag  IN VARCHAR2
42628  ,p_calculate_g_l_flag    IN VARCHAR2
42629  ,p_actual_flag           IN OUT VARCHAR2
42630  ,p_balance_type_code     OUT VARCHAR2
42631  ,p_gain_or_loss_ref      OUT VARCHAR2
42632  
42633 --Budget Code Combination ID
42634  , p_source_2            IN NUMBER
42635 --Cost CCID
42636  , p_source_3            IN NUMBER
42637 --Cost Clearing CCID
42638  , p_source_6            IN NUMBER
42639 --Reversing Line Flag
42640  , p_source_22            IN VARCHAR2
42641 --Actual Upgrade Credit Accounting Class
42642  , p_source_23            IN VARCHAR2
42643 --Entered Currency Code
42644  , p_source_25            IN VARCHAR2
42645 --Exchange Rate Date
42646  , p_source_27            IN DATE
42647 --Exchange Rate
42648  , p_source_28            IN NUMBER
42649 --Exchange Rate Type
42650  , p_source_29            IN VARCHAR2
42651 --Actual Upgrade Debit Accounting Class
42652  , p_source_30            IN VARCHAR2
42653 --Use Actuals Upgrade Attributes Flag
42654  , p_source_31            IN VARCHAR2
42655 --Expenditure Item ID
42656  , p_source_32            IN NUMBER
42657 --Cost Distribution Line Number
42658  , p_source_33            IN NUMBER
42659 --Line Type
42660  , p_source_34            IN VARCHAR2
42661  , p_source_34_meaning    IN VARCHAR2
42662 --Reversed Line Number
42663  , p_source_35            IN NUMBER
42664 --Entered Burdened Cost
42665  , p_source_44            IN NUMBER
42666 --Accounted Burdened Cost
42667  , p_source_45            IN NUMBER
42668 --Encumbrance Amount
42669  , p_source_46            IN NUMBER
42670 --Project Encumbrance Applied to Application Identifier
42671  , p_source_47            IN NUMBER
42672 --Project Encumbrance Applied to Distribution Type
42673  , p_source_48            IN VARCHAR2
42674 --Project Encumbrance Applied to Entity Code
42675  , p_source_49            IN VARCHAR2
42676 --Project Encumbrance Applied to First Distribution ID
42677  , p_source_50            IN NUMBER
42678 --Project Encumbrance Applied to First System Transaction ID
42679  , p_source_51            IN NUMBER
42680 --Project Encumbrance Applied to Second Distribution ID
42681  , p_source_52            IN VARCHAR2
42682 --Encumbrance Upgrade Credit Accounting Class
42683  , p_source_53            IN VARCHAR2
42684 --Encumbrance Upgrade Debit Accounting Class
42685  , p_source_54            IN VARCHAR2
42686 --Use Encumbrance Upgrade Attributes Flag
42687  , p_source_55            IN VARCHAR2
42688 --Encumbrance Type ID
42689  , p_source_56            IN NUMBER
42690 --Project Encumbrance Type ID
42691  , p_source_57            IN NUMBER
42692 )
42693 IS
42694 
42695 l_component_type              VARCHAR2(80);
42696 l_component_code              VARCHAR2(30);
42697 l_component_type_code         VARCHAR2(1);
42698 l_component_appl_id           INTEGER;
42699 l_amb_context_code            VARCHAR2(30);
42700 l_entity_code                 VARCHAR2(30);
42701 l_event_class_code            VARCHAR2(30);
42702 l_ae_header_id                NUMBER;
42703 l_event_type_code             VARCHAR2(30);
42704 l_line_definition_code        VARCHAR2(30);
42705 l_line_definition_owner_code  VARCHAR2(1);
42706 --
42707 -- adr variables
42708 l_segment                     VARCHAR2(30);
42709 l_ccid                        NUMBER;
42710 l_adr_transaction_coa_id      NUMBER;
42711 l_adr_accounting_coa_id       NUMBER;
42712 l_adr_flexfield_segment_code  VARCHAR2(30);
42713 l_adr_flex_value_set_id       NUMBER;
42714 l_adr_value_type_code         VARCHAR2(30);
42715 l_adr_value_combination_id    NUMBER;
42716 l_adr_value_segment_code      VARCHAR2(30);
42717 
42718 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42719 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42720 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42721 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42722 
42726 l_acc_rev_flag                VARCHAR2(1);
42723 -- 4262811 Variables ------------------------------------------------------------------------------------------
42724 l_entered_amt_idx             NUMBER;
42725 l_accted_amt_idx              NUMBER;
42727 l_accrual_line_num            NUMBER;
42728 l_tmp_amt                     NUMBER;
42729 l_acc_rev_natural_side_code   VARCHAR2(1);
42730 
42731 l_num_entries                 NUMBER;
42732 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42733 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42734 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42735 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42736 l_recog_line_1                NUMBER;
42737 l_recog_line_2                NUMBER;
42738 
42739 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42740 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42741 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42742 
42743 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42744 
42745 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42746 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42747 
42748 ---------------------------------------------------------------------------------------------------------------
42749 
42750 
42751 --
42752 -- bulk performance
42753 --
42754 l_balance_type_code           VARCHAR2(1);
42755 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42756 l_log_module                  VARCHAR2(240);
42757 
42758 --
42759 -- Upgrade strategy
42760 --
42761 l_actual_upg_option           VARCHAR2(1);
42762 l_enc_upg_option           VARCHAR2(1);
42763 
42764 --
42765 BEGIN
42766 --
42767 IF g_log_enabled THEN
42768       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
42769 END IF;
42770 --
42771 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42772 
42773       trace
42774          (p_msg      => 'BEGIN of AcctLineType_90'
42775          ,p_level    => C_LEVEL_PROCEDURE
42776          ,p_module   => l_log_module);
42777 
42778 END IF;
42779 --
42780 l_component_type             := 'AMB_JLT';
42781 l_component_code             := 'REINSTATE_PROJ_ENC';
42782 l_component_type_code        := 'S';
42783 l_component_appl_id          :=  275;
42784 l_amb_context_code           := 'DEFAULT';
42785 l_entity_code                := 'EXPENDITURES';
42786 l_event_class_code           := 'BURDEN_COST';
42787 l_event_type_code            := 'BURDEN_COST_ALL';
42788 l_line_definition_owner_code := 'S';
42789 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
42790 --
42791 l_balance_type_code          := 'E';
42792 l_segment                     := NULL;
42793 l_ccid                        := NULL;
42794 l_adr_transaction_coa_id      := NULL;
42795 l_adr_accounting_coa_id       := NULL;
42796 l_adr_flexfield_segment_code  := NULL;
42797 l_adr_flex_value_set_id       := NULL;
42798 l_adr_value_type_code         := NULL;
42799 l_adr_value_combination_id    := NULL;
42800 l_adr_value_segment_code      := NULL;
42801 
42802 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
42803 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
42804 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42805 l_budgetary_control_flag     := 'N';
42806 
42807 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42808 l_bflow_applied_to_amt       := NULL; -- 5132302
42809 l_entered_amt_idx            := NULL;          -- 4262811
42810 l_accted_amt_idx             := NULL;          -- 4262811
42811 l_acc_rev_flag               := NULL;          -- 4262811
42812 l_accrual_line_num           := NULL;          -- 4262811
42813 l_tmp_amt                    := NULL;          -- 4262811
42814 --
42815  
42816 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42817     l_balance_type_code <> 'B' THEN
42818 IF NVL(p_source_34,'
42819 ') =  'E'
42820  THEN 
42821 
42822    --
42823    XLA_AE_LINES_PKG.SetNewLine;
42824 
42825    p_balance_type_code          := l_balance_type_code;
42826    -- set the flag so later we will know whether the gain loss line needs to be created
42827    
42828    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42829      p_actual_flag :='A';
42830    END IF;
42831 
42832    --
42833    -- bulk performance
42834    --
42835    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42836                                       p_header_num   => 0); -- 4262811
42837    --
42838    -- set accounting line options
42839    --
42840    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42841            p_natural_side_code          => 'D'
42842          , p_gain_or_loss_flag          => 'N'
42843          , p_gl_transfer_mode_code      => 'S'
42844          , p_acct_entry_type_code       => 'E'
42845          , p_switch_side_flag           => 'N'
42846          , p_merge_duplicate_code       => 'N'
42847          );
42848    --
42849    l_acc_rev_natural_side_code := 'C';  -- 4262811
42850    -- 
42851    --
42852    -- set accounting line type info
42853    --
42854    xla_ae_lines_pkg.SetAcctLineType
42858       ,p_line_definition_code       => l_line_definition_code
42855       (p_component_type             => l_component_type
42856       ,p_event_type_code            => l_event_type_code
42857       ,p_line_definition_owner_code => l_line_definition_owner_code
42859       ,p_accounting_line_code       => l_component_code
42860       ,p_accounting_line_type_code  => l_component_type_code
42861       ,p_accounting_line_appl_id    => l_component_appl_id
42862       ,p_amb_context_code           => l_amb_context_code
42863       ,p_entity_code                => l_entity_code
42864       ,p_event_class_code           => l_event_class_code);
42865    --
42866    -- set accounting class
42867    --
42868    xla_ae_lines_pkg.SetAcctClass(
42869            p_accounting_class_code  => 'PA_BUDGET_ENC'
42870          , p_ae_header_id           => l_ae_header_id
42871          );
42872 
42873    --
42874    -- set rounding class
42875    --
42876    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42877                       'PA_BUDGET_ENC';
42878 
42879    --
42880    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42881    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42882    --
42883    -- bulk performance
42884    --
42885    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42886 
42887    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42888       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42889 
42890    -- 4955764
42891    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42892       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42893 
42894    -- 4458381 Public Sector Enh
42895    
42896    --
42897    -- set accounting attributes for the line type
42898    --
42899    l_entered_amt_idx := 40;
42900    l_accted_amt_idx  := 42;
42901    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
42902    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42903    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
42904    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
42905    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
42906    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
42907    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
42908    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
42909    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
42910    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
42911    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
42912    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
42913    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
42914    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
42915    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
42916    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
42917    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
42918    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
42919    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
42920    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
42921    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
42922    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
42923    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
42924    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
42925    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
42926    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
42927    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
42928    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
42929    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
42930    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
42931    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
42932    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
42933    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
42934    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
42935    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
42936    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
42937    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
42938    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
42939    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
42940    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
42941    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
42942    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
42943    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
42944    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
42945    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
42946    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
42947    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
42948    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
42949    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
42950    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
42954    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
42951    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
42952    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
42953    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
42955    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
42956    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
42957    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
42958    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
42959    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
42960    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
42961    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
42962    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
42963    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
42964    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
42965    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
42966    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
42967    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
42968    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
42969    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
42970    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
42971    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
42972    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
42973    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
42974    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
42975    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
42976    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
42977    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
42978    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
42979    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
42980    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
42981    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
42982    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
42983    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
42984    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
42985    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
42986    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
42987    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
42988    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
42989    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
42990    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
42991    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
42992    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
42993    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
42994    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
42995    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
42996 
42997    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42998    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42999 
43000    ---------------------------------------------------------------------------------------------------------------
43001    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43002    ---------------------------------------------------------------------------------------------------------------
43003    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43004 
43005    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43006    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43007 
43008    IF xla_accounting_cache_pkg.GetValueChar
43009          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43010          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43011    AND l_bflow_method_code = 'PRIOR_ENTRY'
43012 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43013    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43014          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43015        )
43016    THEN
43017          xla_ae_lines_pkg.BflowUpgEntry
43018            (p_business_method_code    => l_bflow_method_code
43019            ,p_business_class_code     => l_bflow_class_code
43020            ,p_balance_type            => l_balance_type_code);
43021    ELSE
43022       NULL;
43023 XLA_AE_LINES_PKG.business_flow_validation(
43024                                 p_business_method_code     => l_bflow_method_code
43025                                ,p_business_class_code      => l_bflow_class_code
43026                                ,p_inherit_description_flag => l_inherit_desc_flag);
43027    END IF;
43028 
43029    --
43030    -- call analytical criteria
43031    --
43032    -- Inherited Analytical Criteria for business flow method of Prior Entry.
43033    --
43034    -- call description
43035    --
43036    -- No description or it is inherited.
43037    --
43038    -- call ADRs
43039    -- Bug 4922099
43040    --
43041    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43042         (NVL(l_actual_upg_option, 'N') = 'O') OR
43043         (NVL(l_enc_upg_option, 'N') = 'O')
43044       )
43045    THEN
43046    NULL;
43047    --
43051    --
43048    --
43049    
43050    --
43052    END IF;
43053    --
43054    -- Bug 4922099
43055    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43056           (NVL(l_enc_upg_option, 'N') = 'O')
43057         ) AND
43058         (l_bflow_method_code = 'PRIOR_ENTRY')
43059       )
43060    THEN
43061       IF
43062       --
43063       1 = 1
43064       --
43065       THEN
43066       xla_accounting_err_pkg.build_message
43067                                     (p_appli_s_name            => 'XLA'
43068                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43069                                     ,p_token_1                 => 'LINE_NUMBER'
43070                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43071                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43072                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43073                                                                              l_component_type
43074                                                                             ,l_component_code
43075                                                                             ,l_component_type_code
43076                                                                             ,l_component_appl_id
43077                                                                             ,l_amb_context_code
43078                                                                             ,l_entity_code
43079                                                                             ,l_event_class_code
43080                                                                            )
43081                                     ,p_token_3                 => 'OWNER'
43082                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43083                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43084                                                                           ,p_lookup_code    => l_component_type_code
43085                                                                          )
43086                                     ,p_token_4                 => 'PRODUCT_NAME'
43087                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43088                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43089                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43090                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43091                                     ,p_ae_header_id            =>  NULL
43092                                        );
43093 
43094         IF (C_LEVEL_ERROR>= g_log_level) THEN
43095                  trace
43096                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43097                       ,p_level    => C_LEVEL_ERROR
43098                       ,p_module   => l_log_module);
43099         END IF;
43100       END IF;
43101    END IF;
43102    --
43103    --
43104    ------------------------------------------------------------------------------------------------
43105    -- 4219869 Business Flow
43106    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43107    -- Prior Entry.  Currently, the following code is always generated.
43108    ------------------------------------------------------------------------------------------------
43109    -- No ValidateCurrentLine for business flow method of Prior Entry
43110 
43111    ------------------------------------------------------------------------------------
43112    -- 4219869 Business Flow
43113    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43114    ------------------------------------------------------------------------------------
43115    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43116 
43117    ----------------------------------------------------------------------------------
43118    -- 4219869 Business Flow
43119    -- Update journal entry status -- Need to generate this within IF <condition>
43120    ----------------------------------------------------------------------------------
43121    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43122          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43123          ,p_balance_type_code => l_balance_type_code
43124          );
43125 
43126    -------------------------------------------------------------------------------------------
43127    -- 4262811 - Generate the Accrual Reversal lines
43128    -------------------------------------------------------------------------------------------
43129    BEGIN
43130       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43131                               (g_array_event(p_event_id).array_value_num('header_index'));
43132       IF l_acc_rev_flag IS NULL THEN
43133          l_acc_rev_flag := 'N';
43134       END IF;
43135    EXCEPTION
43136       WHEN OTHERS THEN
43137          l_acc_rev_flag := 'N';
43138    END;
43139    --
43140    IF (l_acc_rev_flag = 'Y') THEN
43141 
43142        -- 4645092  ------------------------------------------------------------------------------
43143        -- To allow MPA report to determine if it should generate report process
43144        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43145        ------------------------------------------------------------------------------------------
43149 
43146 
43147        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43148        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43150        --
43151        -- Update the line information that should be overwritten
43152        --
43153        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43154                                          p_header_num   => 1);
43155        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43156 
43157        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43158 
43159        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43160           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43161        END IF;
43162 
43163       --
43164       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43165       --
43166       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43167           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43168       ELSE
43169           ---------------------------------------------------------------------------------------------------
43170           -- 4262811a Switch Sign
43171           ---------------------------------------------------------------------------------------------------
43172           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43173           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43174                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43175           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43176                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43177           -- 5132302
43178           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43179                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43180 
43181       END IF;
43182 
43183       -- 4955764
43184       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43185       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43186 
43187 
43188       XLA_AE_LINES_PKG.ValidateCurrentLine;
43189       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43190 
43191       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43192                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43193                ,p_balance_type_code => l_balance_type_code);
43194 
43195    END IF;
43196 
43197    -----------------------------------------------------------------------------------------
43198    -- 4262811 Multiperiod Accounting
43199    -----------------------------------------------------------------------------------------
43200      -- No MPA option is assigned.
43201 
43202 
43203 END IF;
43204 END IF;
43205 --
43206 
43207 --
43208 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43209    trace
43210       (p_msg      => 'END of AcctLineType_90'
43211       ,p_level    => C_LEVEL_PROCEDURE
43212       ,p_module   => l_log_module);
43213 END IF;
43214 --
43215 EXCEPTION
43216   WHEN xla_exceptions_pkg.application_exception THEN
43217       RAISE;
43218   WHEN OTHERS THEN
43219        xla_exceptions_pkg.raise_message
43220            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_90');
43221 END AcctLineType_90;
43222 --
43223 
43224 ---------------------------------------
43225 --
43226 -- PRIVATE FUNCTION
43227 --         AcctLineType_91
43228 --
43229 ---------------------------------------
43230 PROCEDURE AcctLineType_91 (
43231   p_application_id        IN NUMBER
43232  ,p_event_id              IN NUMBER
43233  ,p_calculate_acctd_flag  IN VARCHAR2
43234  ,p_calculate_g_l_flag    IN VARCHAR2
43235  ,p_actual_flag           IN OUT VARCHAR2
43236  ,p_balance_type_code     OUT VARCHAR2
43237  ,p_gain_or_loss_ref      OUT VARCHAR2
43238  
43239 --Budget Code Combination ID
43240  , p_source_2            IN NUMBER
43241 --Cost CCID
43242  , p_source_3            IN NUMBER
43243 --Cost Clearing CCID
43244  , p_source_6            IN NUMBER
43245 --Reversing Line Flag
43246  , p_source_22            IN VARCHAR2
43247 --Actual Upgrade Credit Accounting Class
43248  , p_source_23            IN VARCHAR2
43249 --Entered Currency Code
43250  , p_source_25            IN VARCHAR2
43251 --Exchange Rate Date
43252  , p_source_27            IN DATE
43253 --Exchange Rate
43254  , p_source_28            IN NUMBER
43255 --Exchange Rate Type
43256  , p_source_29            IN VARCHAR2
43257 --Actual Upgrade Debit Accounting Class
43258  , p_source_30            IN VARCHAR2
43259 --Use Actuals Upgrade Attributes Flag
43260  , p_source_31            IN VARCHAR2
43261 --Expenditure Item ID
43262  , p_source_32            IN NUMBER
43263 --Cost Distribution Line Number
43264  , p_source_33            IN NUMBER
43265 --Line Type
43266  , p_source_34            IN VARCHAR2
43267  , p_source_34_meaning    IN VARCHAR2
43268 --Reversed Line Number
43269  , p_source_35            IN NUMBER
43270 --Entered Burdened Cost
43274 --Encumbrance Amount
43271  , p_source_44            IN NUMBER
43272 --Accounted Burdened Cost
43273  , p_source_45            IN NUMBER
43275  , p_source_46            IN NUMBER
43276 --Project Encumbrance Applied to Application Identifier
43277  , p_source_47            IN NUMBER
43278 --Project Encumbrance Applied to Distribution Type
43279  , p_source_48            IN VARCHAR2
43280 --Project Encumbrance Applied to Entity Code
43281  , p_source_49            IN VARCHAR2
43282 --Project Encumbrance Applied to First Distribution ID
43283  , p_source_50            IN NUMBER
43284 --Project Encumbrance Applied to First System Transaction ID
43285  , p_source_51            IN NUMBER
43286 --Project Encumbrance Applied to Second Distribution ID
43287  , p_source_52            IN VARCHAR2
43288 --Encumbrance Upgrade Credit Accounting Class
43289  , p_source_53            IN VARCHAR2
43290 --Encumbrance Upgrade Debit Accounting Class
43291  , p_source_54            IN VARCHAR2
43292 --Use Encumbrance Upgrade Attributes Flag
43293  , p_source_55            IN VARCHAR2
43294 --Encumbrance Type ID
43295  , p_source_56            IN NUMBER
43296 --Project Encumbrance Type ID
43297  , p_source_57            IN NUMBER
43298 )
43299 IS
43300 
43301 l_component_type              VARCHAR2(80);
43302 l_component_code              VARCHAR2(30);
43303 l_component_type_code         VARCHAR2(1);
43304 l_component_appl_id           INTEGER;
43305 l_amb_context_code            VARCHAR2(30);
43306 l_entity_code                 VARCHAR2(30);
43307 l_event_class_code            VARCHAR2(30);
43308 l_ae_header_id                NUMBER;
43309 l_event_type_code             VARCHAR2(30);
43310 l_line_definition_code        VARCHAR2(30);
43311 l_line_definition_owner_code  VARCHAR2(1);
43312 --
43313 -- adr variables
43314 l_segment                     VARCHAR2(30);
43315 l_ccid                        NUMBER;
43316 l_adr_transaction_coa_id      NUMBER;
43317 l_adr_accounting_coa_id       NUMBER;
43318 l_adr_flexfield_segment_code  VARCHAR2(30);
43319 l_adr_flex_value_set_id       NUMBER;
43320 l_adr_value_type_code         VARCHAR2(30);
43321 l_adr_value_combination_id    NUMBER;
43322 l_adr_value_segment_code      VARCHAR2(30);
43323 
43324 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43325 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43326 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43327 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43328 
43329 -- 4262811 Variables ------------------------------------------------------------------------------------------
43330 l_entered_amt_idx             NUMBER;
43331 l_accted_amt_idx              NUMBER;
43332 l_acc_rev_flag                VARCHAR2(1);
43333 l_accrual_line_num            NUMBER;
43334 l_tmp_amt                     NUMBER;
43335 l_acc_rev_natural_side_code   VARCHAR2(1);
43336 
43337 l_num_entries                 NUMBER;
43338 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43339 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43340 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43341 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43342 l_recog_line_1                NUMBER;
43343 l_recog_line_2                NUMBER;
43344 
43345 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43346 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43347 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43348 
43349 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43350 
43351 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43352 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43353 
43354 ---------------------------------------------------------------------------------------------------------------
43355 
43356 
43357 --
43358 -- bulk performance
43359 --
43360 l_balance_type_code           VARCHAR2(1);
43361 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43362 l_log_module                  VARCHAR2(240);
43363 
43364 --
43365 -- Upgrade strategy
43366 --
43367 l_actual_upg_option           VARCHAR2(1);
43368 l_enc_upg_option           VARCHAR2(1);
43369 
43370 --
43371 BEGIN
43372 --
43373 IF g_log_enabled THEN
43374       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
43375 END IF;
43376 --
43377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43378 
43379       trace
43380          (p_msg      => 'BEGIN of AcctLineType_91'
43381          ,p_level    => C_LEVEL_PROCEDURE
43382          ,p_module   => l_log_module);
43383 
43384 END IF;
43385 --
43386 l_component_type             := 'AMB_JLT';
43387 l_component_code             := 'REINSTATE_PROJ_ENC';
43388 l_component_type_code        := 'S';
43389 l_component_appl_id          :=  275;
43390 l_amb_context_code           := 'DEFAULT';
43391 l_entity_code                := 'EXPENDITURES';
43392 l_event_class_code           := 'TOT_BURDENED_COST';
43393 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
43394 l_line_definition_owner_code := 'S';
43395 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
43396 --
43397 l_balance_type_code          := 'E';
43401 l_adr_accounting_coa_id       := NULL;
43398 l_segment                     := NULL;
43399 l_ccid                        := NULL;
43400 l_adr_transaction_coa_id      := NULL;
43402 l_adr_flexfield_segment_code  := NULL;
43403 l_adr_flex_value_set_id       := NULL;
43404 l_adr_value_type_code         := NULL;
43405 l_adr_value_combination_id    := NULL;
43406 l_adr_value_segment_code      := NULL;
43407 
43408 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
43409 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
43410 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43411 l_budgetary_control_flag     := 'N';
43412 
43413 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43414 l_bflow_applied_to_amt       := NULL; -- 5132302
43415 l_entered_amt_idx            := NULL;          -- 4262811
43416 l_accted_amt_idx             := NULL;          -- 4262811
43417 l_acc_rev_flag               := NULL;          -- 4262811
43418 l_accrual_line_num           := NULL;          -- 4262811
43419 l_tmp_amt                    := NULL;          -- 4262811
43420 --
43421  
43422 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43423     l_balance_type_code <> 'B' THEN
43424 IF NVL(p_source_34,'
43425 ') =  'E'
43426  THEN 
43427 
43428    --
43429    XLA_AE_LINES_PKG.SetNewLine;
43430 
43431    p_balance_type_code          := l_balance_type_code;
43432    -- set the flag so later we will know whether the gain loss line needs to be created
43433    
43434    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43435      p_actual_flag :='A';
43436    END IF;
43437 
43438    --
43439    -- bulk performance
43440    --
43441    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43442                                       p_header_num   => 0); -- 4262811
43443    --
43444    -- set accounting line options
43445    --
43446    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43447            p_natural_side_code          => 'D'
43448          , p_gain_or_loss_flag          => 'N'
43449          , p_gl_transfer_mode_code      => 'S'
43450          , p_acct_entry_type_code       => 'E'
43451          , p_switch_side_flag           => 'N'
43452          , p_merge_duplicate_code       => 'N'
43453          );
43454    --
43455    l_acc_rev_natural_side_code := 'C';  -- 4262811
43456    -- 
43457    --
43458    -- set accounting line type info
43459    --
43460    xla_ae_lines_pkg.SetAcctLineType
43461       (p_component_type             => l_component_type
43462       ,p_event_type_code            => l_event_type_code
43463       ,p_line_definition_owner_code => l_line_definition_owner_code
43464       ,p_line_definition_code       => l_line_definition_code
43465       ,p_accounting_line_code       => l_component_code
43466       ,p_accounting_line_type_code  => l_component_type_code
43467       ,p_accounting_line_appl_id    => l_component_appl_id
43468       ,p_amb_context_code           => l_amb_context_code
43469       ,p_entity_code                => l_entity_code
43470       ,p_event_class_code           => l_event_class_code);
43471    --
43472    -- set accounting class
43473    --
43474    xla_ae_lines_pkg.SetAcctClass(
43475            p_accounting_class_code  => 'PA_BUDGET_ENC'
43476          , p_ae_header_id           => l_ae_header_id
43477          );
43478 
43479    --
43480    -- set rounding class
43481    --
43482    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43483                       'PA_BUDGET_ENC';
43484 
43485    --
43486    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43487    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43488    --
43489    -- bulk performance
43490    --
43491    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43492 
43493    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43494       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43495 
43496    -- 4955764
43497    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43498       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43499 
43500    -- 4458381 Public Sector Enh
43501    
43502    --
43503    -- set accounting attributes for the line type
43504    --
43505    l_entered_amt_idx := 40;
43506    l_accted_amt_idx  := 43;
43507    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
43508    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43509    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
43510    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
43511    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
43512    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
43513    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
43514    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
43515    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
43516    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
43517    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
43521    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
43518    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
43519    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
43520    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
43522    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
43523    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
43524    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
43525    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
43526    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
43527    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
43528    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
43529    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
43530    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
43531    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
43532    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
43533    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
43534    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
43535    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
43536    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
43537    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
43538    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
43539    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
43540    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
43541    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
43542    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
43543    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
43544    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
43545    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
43546    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
43547    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
43548    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43549    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
43550    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
43551    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
43552    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
43553    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
43554    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43555    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
43556    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
43557    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
43558    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
43559    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
43560    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
43561    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
43562    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
43563    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
43564    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
43565    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
43566    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
43567    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
43568    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
43569    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
43570    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
43571    l_rec_acct_attrs.array_char_value(32)  := 
43572 xla_ae_sources_pkg.GetSystemSourceChar(
43573    p_source_code           => 'XLA_CURRENCY_CODE'
43574  , p_source_type_code      => 'Y'
43575  , p_source_application_id =>  602
43576 );
43577    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
43578    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
43579    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
43580    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
43581    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
43582    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
43583    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
43584    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
43585    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
43586    l_rec_acct_attrs.array_char_value(37)  := 
43587 xla_ae_sources_pkg.GetSystemSourceChar(
43588    p_source_code           => 'XLA_CURRENCY_CODE'
43589  , p_source_type_code      => 'Y'
43590  , p_source_application_id =>  602
43591 );
43592    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
43593    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
43594    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
43595    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
43596    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
43597    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
43598    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
43599    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
43600    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
43601    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
43602    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
43603    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
43604    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
43605    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
43609    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
43606    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
43607    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
43608    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
43610    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
43611    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
43612    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
43613    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
43614 
43615    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43616    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43617 
43618    ---------------------------------------------------------------------------------------------------------------
43619    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43620    ---------------------------------------------------------------------------------------------------------------
43621    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43622 
43623    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43624    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43625 
43626    IF xla_accounting_cache_pkg.GetValueChar
43627          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43628          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43629    AND l_bflow_method_code = 'PRIOR_ENTRY'
43630 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43631    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43632          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43633        )
43634    THEN
43635          xla_ae_lines_pkg.BflowUpgEntry
43636            (p_business_method_code    => l_bflow_method_code
43637            ,p_business_class_code     => l_bflow_class_code
43638            ,p_balance_type            => l_balance_type_code);
43639    ELSE
43640       NULL;
43641 XLA_AE_LINES_PKG.business_flow_validation(
43642                                 p_business_method_code     => l_bflow_method_code
43643                                ,p_business_class_code      => l_bflow_class_code
43644                                ,p_inherit_description_flag => l_inherit_desc_flag);
43645    END IF;
43646 
43647    --
43648    -- call analytical criteria
43649    --
43650    -- Inherited Analytical Criteria for business flow method of Prior Entry.
43651    --
43652    -- call description
43653    --
43654    -- No description or it is inherited.
43655    --
43656    -- call ADRs
43657    -- Bug 4922099
43658    --
43659    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43660         (NVL(l_actual_upg_option, 'N') = 'O') OR
43661         (NVL(l_enc_upg_option, 'N') = 'O')
43662       )
43663    THEN
43664    NULL;
43665    --
43666    --
43667    
43668    --
43669    --
43670    END IF;
43671    --
43672    -- Bug 4922099
43673    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43674           (NVL(l_enc_upg_option, 'N') = 'O')
43675         ) AND
43676         (l_bflow_method_code = 'PRIOR_ENTRY')
43677       )
43678    THEN
43679       IF
43680       --
43681       1 = 1
43682       --
43683       THEN
43684       xla_accounting_err_pkg.build_message
43685                                     (p_appli_s_name            => 'XLA'
43686                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43687                                     ,p_token_1                 => 'LINE_NUMBER'
43688                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43689                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43690                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43691                                                                              l_component_type
43692                                                                             ,l_component_code
43693                                                                             ,l_component_type_code
43694                                                                             ,l_component_appl_id
43695                                                                             ,l_amb_context_code
43696                                                                             ,l_entity_code
43697                                                                             ,l_event_class_code
43698                                                                            )
43699                                     ,p_token_3                 => 'OWNER'
43700                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43701                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43702                                                                           ,p_lookup_code    => l_component_type_code
43703                                                                          )
43704                                     ,p_token_4                 => 'PRODUCT_NAME'
43705                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43706                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43710                                        );
43707                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43708                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43709                                     ,p_ae_header_id            =>  NULL
43711 
43712         IF (C_LEVEL_ERROR>= g_log_level) THEN
43713                  trace
43714                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43715                       ,p_level    => C_LEVEL_ERROR
43716                       ,p_module   => l_log_module);
43717         END IF;
43718       END IF;
43719    END IF;
43720    --
43721    --
43722    ------------------------------------------------------------------------------------------------
43723    -- 4219869 Business Flow
43724    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43725    -- Prior Entry.  Currently, the following code is always generated.
43726    ------------------------------------------------------------------------------------------------
43727    -- No ValidateCurrentLine for business flow method of Prior Entry
43728 
43729    ------------------------------------------------------------------------------------
43730    -- 4219869 Business Flow
43731    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43732    ------------------------------------------------------------------------------------
43733    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43734 
43735    ----------------------------------------------------------------------------------
43736    -- 4219869 Business Flow
43737    -- Update journal entry status -- Need to generate this within IF <condition>
43738    ----------------------------------------------------------------------------------
43739    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43740          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43741          ,p_balance_type_code => l_balance_type_code
43742          );
43743 
43744    -------------------------------------------------------------------------------------------
43745    -- 4262811 - Generate the Accrual Reversal lines
43746    -------------------------------------------------------------------------------------------
43747    BEGIN
43748       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43749                               (g_array_event(p_event_id).array_value_num('header_index'));
43750       IF l_acc_rev_flag IS NULL THEN
43751          l_acc_rev_flag := 'N';
43752       END IF;
43753    EXCEPTION
43754       WHEN OTHERS THEN
43755          l_acc_rev_flag := 'N';
43756    END;
43757    --
43758    IF (l_acc_rev_flag = 'Y') THEN
43759 
43760        -- 4645092  ------------------------------------------------------------------------------
43761        -- To allow MPA report to determine if it should generate report process
43762        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43763        ------------------------------------------------------------------------------------------
43764 
43765        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43766        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43767 
43768        --
43769        -- Update the line information that should be overwritten
43770        --
43771        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43772                                          p_header_num   => 1);
43773        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43774 
43775        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43776 
43777        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43778           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43779        END IF;
43780 
43781       --
43782       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43783       --
43784       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43785           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43786       ELSE
43787           ---------------------------------------------------------------------------------------------------
43788           -- 4262811a Switch Sign
43789           ---------------------------------------------------------------------------------------------------
43790           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43791           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43792                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43793           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43794                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43795           -- 5132302
43796           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43797                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43798 
43799       END IF;
43800 
43801       -- 4955764
43802       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43803       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43804 
43805 
43809       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43806       XLA_AE_LINES_PKG.ValidateCurrentLine;
43807       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43808 
43810                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43811                ,p_balance_type_code => l_balance_type_code);
43812 
43813    END IF;
43814 
43815    -----------------------------------------------------------------------------------------
43816    -- 4262811 Multiperiod Accounting
43817    -----------------------------------------------------------------------------------------
43818      -- No MPA option is assigned.
43819 
43820 
43821 END IF;
43822 END IF;
43823 --
43824 
43825 --
43826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43827    trace
43828       (p_msg      => 'END of AcctLineType_91'
43829       ,p_level    => C_LEVEL_PROCEDURE
43830       ,p_module   => l_log_module);
43831 END IF;
43832 --
43833 EXCEPTION
43834   WHEN xla_exceptions_pkg.application_exception THEN
43835       RAISE;
43836   WHEN OTHERS THEN
43837        xla_exceptions_pkg.raise_message
43838            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_91');
43839 END AcctLineType_91;
43840 --
43841 
43842 ---------------------------------------
43843 --
43844 -- PRIVATE FUNCTION
43845 --         AcctLineType_92
43846 --
43847 ---------------------------------------
43848 PROCEDURE AcctLineType_92 (
43849   p_application_id        IN NUMBER
43850  ,p_event_id              IN NUMBER
43851  ,p_calculate_acctd_flag  IN VARCHAR2
43852  ,p_calculate_g_l_flag    IN VARCHAR2
43853  ,p_actual_flag           IN OUT VARCHAR2
43854  ,p_balance_type_code     OUT VARCHAR2
43855  ,p_gain_or_loss_ref      OUT VARCHAR2
43856  
43857 --Budget Code Combination ID
43858  , p_source_2            IN NUMBER
43859 --Cost CCID
43860  , p_source_3            IN NUMBER
43861 --Cost Clearing CCID
43862  , p_source_6            IN NUMBER
43863 --Reversing Line Flag
43864  , p_source_22            IN VARCHAR2
43865 --Actual Upgrade Credit Accounting Class
43866  , p_source_23            IN VARCHAR2
43867 --Entered Currency Code
43868  , p_source_25            IN VARCHAR2
43869 --Exchange Rate Date
43870  , p_source_27            IN DATE
43871 --Exchange Rate
43872  , p_source_28            IN NUMBER
43873 --Exchange Rate Type
43874  , p_source_29            IN VARCHAR2
43875 --Actual Upgrade Debit Accounting Class
43876  , p_source_30            IN VARCHAR2
43877 --Use Actuals Upgrade Attributes Flag
43878  , p_source_31            IN VARCHAR2
43879 --Expenditure Item ID
43880  , p_source_32            IN NUMBER
43881 --Cost Distribution Line Number
43882  , p_source_33            IN NUMBER
43883 --Line Type
43884  , p_source_34            IN VARCHAR2
43885  , p_source_34_meaning    IN VARCHAR2
43886 --Reversed Line Number
43887  , p_source_35            IN NUMBER
43888 --Entered Burdened Cost
43889  , p_source_44            IN NUMBER
43890 --Accounted Burdened Cost
43891  , p_source_45            IN NUMBER
43892 --Encumbrance Amount
43893  , p_source_46            IN NUMBER
43894 --Project Encumbrance Applied to Application Identifier
43895  , p_source_47            IN NUMBER
43896 --Project Encumbrance Applied to Distribution Type
43897  , p_source_48            IN VARCHAR2
43898 --Project Encumbrance Applied to Entity Code
43899  , p_source_49            IN VARCHAR2
43900 --Project Encumbrance Applied to First Distribution ID
43901  , p_source_50            IN NUMBER
43902 --Project Encumbrance Applied to First System Transaction ID
43903  , p_source_51            IN NUMBER
43904 --Project Encumbrance Applied to Second Distribution ID
43905  , p_source_52            IN VARCHAR2
43906 --Encumbrance Upgrade Debit Accounting Class
43907  , p_source_54            IN VARCHAR2
43908 --Use Encumbrance Upgrade Attributes Flag
43909  , p_source_55            IN VARCHAR2
43910 --Encumbrance Type ID
43911  , p_source_56            IN NUMBER
43912 --Project Encumbrance Type ID
43913  , p_source_57            IN NUMBER
43914 --Document Type
43915  , p_source_69            IN VARCHAR2
43916  , p_source_69_meaning    IN VARCHAR2
43917 --Encumbrance Journal Lines Reversed Flag
43918  , p_source_70            IN VARCHAR2
43919 )
43920 IS
43921 
43922 l_component_type              VARCHAR2(80);
43923 l_component_code              VARCHAR2(30);
43924 l_component_type_code         VARCHAR2(1);
43925 l_component_appl_id           INTEGER;
43926 l_amb_context_code            VARCHAR2(30);
43927 l_entity_code                 VARCHAR2(30);
43928 l_event_class_code            VARCHAR2(30);
43929 l_ae_header_id                NUMBER;
43930 l_event_type_code             VARCHAR2(30);
43931 l_line_definition_code        VARCHAR2(30);
43932 l_line_definition_owner_code  VARCHAR2(1);
43933 --
43934 -- adr variables
43935 l_segment                     VARCHAR2(30);
43936 l_ccid                        NUMBER;
43937 l_adr_transaction_coa_id      NUMBER;
43938 l_adr_accounting_coa_id       NUMBER;
43939 l_adr_flexfield_segment_code  VARCHAR2(30);
43940 l_adr_flex_value_set_id       NUMBER;
43941 l_adr_value_type_code         VARCHAR2(30);
43942 l_adr_value_combination_id    NUMBER;
43943 l_adr_value_segment_code      VARCHAR2(30);
43944 
43948 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43945 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43946 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43947 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43949 
43950 -- 4262811 Variables ------------------------------------------------------------------------------------------
43951 l_entered_amt_idx             NUMBER;
43952 l_accted_amt_idx              NUMBER;
43953 l_acc_rev_flag                VARCHAR2(1);
43954 l_accrual_line_num            NUMBER;
43955 l_tmp_amt                     NUMBER;
43956 l_acc_rev_natural_side_code   VARCHAR2(1);
43957 
43958 l_num_entries                 NUMBER;
43959 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43960 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43961 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43962 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43963 l_recog_line_1                NUMBER;
43964 l_recog_line_2                NUMBER;
43965 
43966 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43967 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43968 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43969 
43970 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43971 
43972 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43973 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43974 
43975 ---------------------------------------------------------------------------------------------------------------
43976 
43977 
43978 --
43979 -- bulk performance
43980 --
43981 l_balance_type_code           VARCHAR2(1);
43982 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43983 l_log_module                  VARCHAR2(240);
43984 
43985 --
43986 -- Upgrade strategy
43987 --
43988 l_actual_upg_option           VARCHAR2(1);
43989 l_enc_upg_option           VARCHAR2(1);
43990 
43991 --
43992 BEGIN
43993 --
43994 IF g_log_enabled THEN
43995       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
43996 END IF;
43997 --
43998 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43999 
44000       trace
44001          (p_msg      => 'BEGIN of AcctLineType_92'
44002          ,p_level    => C_LEVEL_PROCEDURE
44003          ,p_module   => l_log_module);
44004 
44005 END IF;
44006 --
44007 l_component_type             := 'AMB_JLT';
44008 l_component_code             := 'REL_CANCELLED_INV_BURDENED_ENC';
44009 l_component_type_code        := 'S';
44010 l_component_appl_id          :=  275;
44011 l_amb_context_code           := 'DEFAULT';
44012 l_entity_code                := 'EXPENDITURES';
44013 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
44014 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
44015 l_line_definition_owner_code := 'S';
44016 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
44017 --
44018 l_balance_type_code          := 'E';
44019 l_segment                     := NULL;
44020 l_ccid                        := NULL;
44021 l_adr_transaction_coa_id      := NULL;
44022 l_adr_accounting_coa_id       := NULL;
44023 l_adr_flexfield_segment_code  := NULL;
44024 l_adr_flex_value_set_id       := NULL;
44025 l_adr_value_type_code         := NULL;
44026 l_adr_value_combination_id    := NULL;
44027 l_adr_value_segment_code      := NULL;
44028 
44029 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44030 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
44031 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44032 l_budgetary_control_flag     := 'N';
44033 
44034 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44035 l_bflow_applied_to_amt       := NULL; -- 5132302
44036 l_entered_amt_idx            := NULL;          -- 4262811
44037 l_accted_amt_idx             := NULL;          -- 4262811
44038 l_acc_rev_flag               := NULL;          -- 4262811
44039 l_accrual_line_num           := NULL;          -- 4262811
44040 l_tmp_amt                    := NULL;          -- 4262811
44041 --
44042  
44043 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44044     l_balance_type_code <> 'B' THEN
44045 IF NVL(p_source_34,'
44046 ') =  'E' AND 
44047 NVL(p_source_69,'
44048 ') =  'AP' AND 
44049 NVL(p_source_70,'
44050 ') =  'Y'
44051  THEN 
44052 
44053    --
44054    XLA_AE_LINES_PKG.SetNewLine;
44055 
44056    p_balance_type_code          := l_balance_type_code;
44057    -- set the flag so later we will know whether the gain loss line needs to be created
44058    
44059    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44060      p_actual_flag :='A';
44061    END IF;
44062 
44063    --
44064    -- bulk performance
44065    --
44066    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44067                                       p_header_num   => 0); -- 4262811
44068    --
44069    -- set accounting line options
44070    --
44071    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44072            p_natural_side_code          => 'C'
44076          , p_switch_side_flag           => 'N'
44073          , p_gain_or_loss_flag          => 'N'
44074          , p_gl_transfer_mode_code      => 'S'
44075          , p_acct_entry_type_code       => 'E'
44077          , p_merge_duplicate_code       => 'N'
44078          );
44079    --
44080    l_acc_rev_natural_side_code := 'D';  -- 4262811
44081    -- 
44082    --
44083    -- set accounting line type info
44084    --
44085    xla_ae_lines_pkg.SetAcctLineType
44086       (p_component_type             => l_component_type
44087       ,p_event_type_code            => l_event_type_code
44088       ,p_line_definition_owner_code => l_line_definition_owner_code
44089       ,p_line_definition_code       => l_line_definition_code
44090       ,p_accounting_line_code       => l_component_code
44091       ,p_accounting_line_type_code  => l_component_type_code
44092       ,p_accounting_line_appl_id    => l_component_appl_id
44093       ,p_amb_context_code           => l_amb_context_code
44094       ,p_entity_code                => l_entity_code
44095       ,p_event_class_code           => l_event_class_code);
44096    --
44097    -- set accounting class
44098    --
44099    xla_ae_lines_pkg.SetAcctClass(
44100            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
44101          , p_ae_header_id           => l_ae_header_id
44102          );
44103 
44104    --
44105    -- set rounding class
44106    --
44107    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44108                       'AP_INV_PA_BURDENED';
44109 
44110    --
44111    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44112    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44113    --
44114    -- bulk performance
44115    --
44116    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44117 
44118    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44119       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44120 
44121    -- 4955764
44122    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44123       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44124 
44125    -- 4458381 Public Sector Enh
44126       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1060;
44127    --
44128    -- set accounting attributes for the line type
44129    --
44130    l_entered_amt_idx := 35;
44131    l_accted_amt_idx  := 40;
44132    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
44133    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44134    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
44135    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
44136    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
44137    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
44138    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
44139    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
44140    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
44141    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
44142    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
44143    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
44144    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
44145    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
44146    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
44147    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
44148    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
44149    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
44150    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
44151    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
44152    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
44153    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
44154    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
44155    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
44156    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
44157    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
44158    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
44159    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
44160    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
44161    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
44162    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
44163    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
44164    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
44165    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
44166    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
44167    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
44168    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
44169    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
44170    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
44171    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
44172    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
44173    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44174    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
44175    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
44179    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44176    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
44177    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
44178    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
44180    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
44181    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
44182    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
44183    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
44184    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
44185    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
44186    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
44187    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
44188    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
44189    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
44190    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
44191    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
44192    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
44193    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
44194    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
44195    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
44196    l_rec_acct_attrs.array_char_value(32)  := 
44197 xla_ae_sources_pkg.GetSystemSourceChar(
44198    p_source_code           => 'XLA_CURRENCY_CODE'
44199  , p_source_type_code      => 'Y'
44200  , p_source_application_id =>  602
44201 );
44202    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
44203    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
44204    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
44205    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
44206    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
44207    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
44208    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
44209    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
44210    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
44211    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
44212    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
44213    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
44214    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
44215    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
44216    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
44217    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
44218    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
44219    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
44220    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
44221    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
44222    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
44223    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
44224    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
44225    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
44226    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
44227    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
44228 
44229    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44230    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44231 
44232    ---------------------------------------------------------------------------------------------------------------
44233    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44234    ---------------------------------------------------------------------------------------------------------------
44235    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44236 
44237    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44238    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44239 
44240    IF xla_accounting_cache_pkg.GetValueChar
44241          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44242          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44243    AND l_bflow_method_code = 'PRIOR_ENTRY'
44244 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44245    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44246          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44247        )
44248    THEN
44249          xla_ae_lines_pkg.BflowUpgEntry
44250            (p_business_method_code    => l_bflow_method_code
44251            ,p_business_class_code     => l_bflow_class_code
44252            ,p_balance_type            => l_balance_type_code);
44253    ELSE
44254       NULL;
44255 -- No business flow processing for business flow method of NONE.
44256    END IF;
44257 
44258    --
44259    -- call analytical criteria
44260    --
44261    
44262    --
44263    -- call description
44264    --
44265    -- No description or it is inherited.
44266    --
44267    -- call ADRs
44268    -- Bug 4922099
44269    --
44270    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44271         (NVL(l_actual_upg_option, 'N') = 'O') OR
44272         (NVL(l_enc_upg_option, 'N') = 'O')
44273       )
44274    THEN
44275    NULL;
44279   l_ccid := AcctDerRule_2(
44276    --
44277    --
44278    
44280            p_application_id           => p_application_id
44281          , p_ae_header_id             => l_ae_header_id 
44282 , p_source_2 => p_source_2
44283          , x_transaction_coa_id       => l_adr_transaction_coa_id
44284          , x_accounting_coa_id        => l_adr_accounting_coa_id
44285          , x_value_type_code          => l_adr_value_type_code
44286          , p_side                     => 'NA'
44287    );
44288 
44289    xla_ae_lines_pkg.set_ccid(
44290     p_code_combination_id          => l_ccid
44291   , p_value_type_code              => l_adr_value_type_code
44292   , p_transaction_coa_id           => l_adr_transaction_coa_id
44293   , p_accounting_coa_id            => l_adr_accounting_coa_id
44294   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
44295   , p_adr_type_code                => 'S'
44296   , p_component_type               => l_component_type
44297   , p_component_code               => l_component_code
44298   , p_component_type_code          => l_component_type_code
44299   , p_component_appl_id            => l_component_appl_id
44300   , p_amb_context_code             => l_amb_context_code
44301   , p_side                         => 'NA'
44302   );
44303 
44304 
44305    --
44306    --
44307    END IF;
44308    --
44309    -- Bug 4922099
44310    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44311           (NVL(l_enc_upg_option, 'N') = 'O')
44312         ) AND
44313         (l_bflow_method_code = 'PRIOR_ENTRY')
44314       )
44315    THEN
44316       IF
44317       --
44318       1 = 2
44319       --
44320       THEN
44321       xla_accounting_err_pkg.build_message
44322                                     (p_appli_s_name            => 'XLA'
44323                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44324                                     ,p_token_1                 => 'LINE_NUMBER'
44325                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44326                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44327                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44328                                                                              l_component_type
44329                                                                             ,l_component_code
44330                                                                             ,l_component_type_code
44331                                                                             ,l_component_appl_id
44332                                                                             ,l_amb_context_code
44333                                                                             ,l_entity_code
44334                                                                             ,l_event_class_code
44335                                                                            )
44336                                     ,p_token_3                 => 'OWNER'
44337                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44338                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44339                                                                           ,p_lookup_code    => l_component_type_code
44340                                                                          )
44341                                     ,p_token_4                 => 'PRODUCT_NAME'
44342                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44343                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44344                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44345                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44346                                     ,p_ae_header_id            =>  NULL
44347                                        );
44348 
44349         IF (C_LEVEL_ERROR>= g_log_level) THEN
44350                  trace
44351                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44352                       ,p_level    => C_LEVEL_ERROR
44353                       ,p_module   => l_log_module);
44354         END IF;
44355       END IF;
44356    END IF;
44357    --
44358    --
44359    ------------------------------------------------------------------------------------------------
44360    -- 4219869 Business Flow
44361    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44362    -- Prior Entry.  Currently, the following code is always generated.
44363    ------------------------------------------------------------------------------------------------
44364    XLA_AE_LINES_PKG.ValidateCurrentLine;
44365 
44366    ------------------------------------------------------------------------------------
44367    -- 4219869 Business Flow
44368    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44369    ------------------------------------------------------------------------------------
44370    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44371 
44372    ----------------------------------------------------------------------------------
44373    -- 4219869 Business Flow
44374    -- Update journal entry status -- Need to generate this within IF <condition>
44375    ----------------------------------------------------------------------------------
44376    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44380 
44377          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44378          ,p_balance_type_code => l_balance_type_code
44379          );
44381    -------------------------------------------------------------------------------------------
44382    -- 4262811 - Generate the Accrual Reversal lines
44383    -------------------------------------------------------------------------------------------
44384    BEGIN
44385       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44386                               (g_array_event(p_event_id).array_value_num('header_index'));
44387       IF l_acc_rev_flag IS NULL THEN
44388          l_acc_rev_flag := 'N';
44389       END IF;
44390    EXCEPTION
44391       WHEN OTHERS THEN
44392          l_acc_rev_flag := 'N';
44393    END;
44394    --
44395    IF (l_acc_rev_flag = 'Y') THEN
44396 
44397        -- 4645092  ------------------------------------------------------------------------------
44398        -- To allow MPA report to determine if it should generate report process
44399        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44400        ------------------------------------------------------------------------------------------
44401 
44402        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44403        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44404 
44405        --
44406        -- Update the line information that should be overwritten
44407        --
44408        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44409                                          p_header_num   => 1);
44410        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44411 
44412        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44413 
44414        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44415           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44416        END IF;
44417 
44418       --
44419       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44420       --
44421       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44422           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44423       ELSE
44424           ---------------------------------------------------------------------------------------------------
44425           -- 4262811a Switch Sign
44426           ---------------------------------------------------------------------------------------------------
44427           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44428           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44429                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44430           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44431                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44432           -- 5132302
44433           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44434                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44435 
44436       END IF;
44437 
44438       -- 4955764
44439       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44440       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44441 
44442 
44443       XLA_AE_LINES_PKG.ValidateCurrentLine;
44444       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44445 
44446       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44447                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44448                ,p_balance_type_code => l_balance_type_code);
44449 
44450    END IF;
44451 
44452    -----------------------------------------------------------------------------------------
44453    -- 4262811 Multiperiod Accounting
44454    -----------------------------------------------------------------------------------------
44455      -- No MPA option is assigned.
44456 
44457 
44458 END IF;
44459 END IF;
44460 --
44461 
44462 --
44463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44464    trace
44465       (p_msg      => 'END of AcctLineType_92'
44466       ,p_level    => C_LEVEL_PROCEDURE
44467       ,p_module   => l_log_module);
44468 END IF;
44469 --
44470 EXCEPTION
44471   WHEN xla_exceptions_pkg.application_exception THEN
44472       RAISE;
44473   WHEN OTHERS THEN
44474        xla_exceptions_pkg.raise_message
44475            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_92');
44476 END AcctLineType_92;
44477 --
44478 
44479 ---------------------------------------
44480 --
44481 -- PRIVATE FUNCTION
44482 --         AcctLineType_93
44483 --
44484 ---------------------------------------
44485 PROCEDURE AcctLineType_93 (
44486   p_application_id        IN NUMBER
44487  ,p_event_id              IN NUMBER
44488  ,p_calculate_acctd_flag  IN VARCHAR2
44489  ,p_calculate_g_l_flag    IN VARCHAR2
44490  ,p_actual_flag           IN OUT VARCHAR2
44491  ,p_balance_type_code     OUT VARCHAR2
44492  ,p_gain_or_loss_ref      OUT VARCHAR2
44496 --Cost CCID
44493  
44494 --Budget Code Combination ID
44495  , p_source_2            IN NUMBER
44497  , p_source_3            IN NUMBER
44498 --Cost Clearing CCID
44499  , p_source_6            IN NUMBER
44500 --Reversing Line Flag
44501  , p_source_22            IN VARCHAR2
44502 --Actual Upgrade Credit Accounting Class
44503  , p_source_23            IN VARCHAR2
44504 --Entered Currency Code
44505  , p_source_25            IN VARCHAR2
44506 --Exchange Rate Date
44507  , p_source_27            IN DATE
44508 --Exchange Rate
44509  , p_source_28            IN NUMBER
44510 --Exchange Rate Type
44511  , p_source_29            IN VARCHAR2
44512 --Actual Upgrade Debit Accounting Class
44513  , p_source_30            IN VARCHAR2
44514 --Use Actuals Upgrade Attributes Flag
44515  , p_source_31            IN VARCHAR2
44516 --Expenditure Item ID
44517  , p_source_32            IN NUMBER
44518 --Cost Distribution Line Number
44519  , p_source_33            IN NUMBER
44520 --Line Type
44521  , p_source_34            IN VARCHAR2
44522  , p_source_34_meaning    IN VARCHAR2
44523 --Reversed Line Number
44524  , p_source_35            IN NUMBER
44525 --Entered Burdened Cost
44526  , p_source_44            IN NUMBER
44527 --Accounted Burdened Cost
44528  , p_source_45            IN NUMBER
44529 --Encumbrance Amount
44530  , p_source_46            IN NUMBER
44531 --Project Encumbrance Applied to Application Identifier
44532  , p_source_47            IN NUMBER
44533 --Project Encumbrance Applied to Distribution Type
44534  , p_source_48            IN VARCHAR2
44535 --Project Encumbrance Applied to Entity Code
44536  , p_source_49            IN VARCHAR2
44537 --Project Encumbrance Applied to First Distribution ID
44538  , p_source_50            IN NUMBER
44539 --Project Encumbrance Applied to First System Transaction ID
44540  , p_source_51            IN NUMBER
44541 --Project Encumbrance Applied to Second Distribution ID
44542  , p_source_52            IN VARCHAR2
44543 --Encumbrance Upgrade Credit Accounting Class
44544  , p_source_53            IN VARCHAR2
44545 --Encumbrance Upgrade Debit Accounting Class
44546  , p_source_54            IN VARCHAR2
44547 --Use Encumbrance Upgrade Attributes Flag
44548  , p_source_55            IN VARCHAR2
44549 --Encumbrance Type ID
44550  , p_source_56            IN NUMBER
44551 --Project Encumbrance Type ID
44552  , p_source_57            IN NUMBER
44553 --Document Type
44554  , p_source_69            IN VARCHAR2
44555  , p_source_69_meaning    IN VARCHAR2
44556 --Encumbrance Journal Lines Reversed Flag
44557  , p_source_70            IN VARCHAR2
44558 )
44559 IS
44560 
44561 l_component_type              VARCHAR2(80);
44562 l_component_code              VARCHAR2(30);
44563 l_component_type_code         VARCHAR2(1);
44564 l_component_appl_id           INTEGER;
44565 l_amb_context_code            VARCHAR2(30);
44566 l_entity_code                 VARCHAR2(30);
44567 l_event_class_code            VARCHAR2(30);
44568 l_ae_header_id                NUMBER;
44569 l_event_type_code             VARCHAR2(30);
44570 l_line_definition_code        VARCHAR2(30);
44571 l_line_definition_owner_code  VARCHAR2(1);
44572 --
44573 -- adr variables
44574 l_segment                     VARCHAR2(30);
44575 l_ccid                        NUMBER;
44576 l_adr_transaction_coa_id      NUMBER;
44577 l_adr_accounting_coa_id       NUMBER;
44578 l_adr_flexfield_segment_code  VARCHAR2(30);
44579 l_adr_flex_value_set_id       NUMBER;
44580 l_adr_value_type_code         VARCHAR2(30);
44581 l_adr_value_combination_id    NUMBER;
44582 l_adr_value_segment_code      VARCHAR2(30);
44583 
44584 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44585 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44586 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44587 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44588 
44589 -- 4262811 Variables ------------------------------------------------------------------------------------------
44590 l_entered_amt_idx             NUMBER;
44591 l_accted_amt_idx              NUMBER;
44592 l_acc_rev_flag                VARCHAR2(1);
44593 l_accrual_line_num            NUMBER;
44594 l_tmp_amt                     NUMBER;
44595 l_acc_rev_natural_side_code   VARCHAR2(1);
44596 
44597 l_num_entries                 NUMBER;
44598 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44599 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44600 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44601 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44602 l_recog_line_1                NUMBER;
44603 l_recog_line_2                NUMBER;
44604 
44605 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44606 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44607 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44608 
44609 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44610 
44611 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44612 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44613 
44614 ---------------------------------------------------------------------------------------------------------------
44615 
44619 --
44616 
44617 --
44618 -- bulk performance
44620 l_balance_type_code           VARCHAR2(1);
44621 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44622 l_log_module                  VARCHAR2(240);
44623 
44624 --
44625 -- Upgrade strategy
44626 --
44627 l_actual_upg_option           VARCHAR2(1);
44628 l_enc_upg_option           VARCHAR2(1);
44629 
44630 --
44631 BEGIN
44632 --
44633 IF g_log_enabled THEN
44634       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
44635 END IF;
44636 --
44637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44638 
44639       trace
44640          (p_msg      => 'BEGIN of AcctLineType_93'
44641          ,p_level    => C_LEVEL_PROCEDURE
44642          ,p_module   => l_log_module);
44643 
44644 END IF;
44645 --
44646 l_component_type             := 'AMB_JLT';
44647 l_component_code             := 'REL_CANCELLED_INV_BURDENED_ENC';
44648 l_component_type_code        := 'S';
44649 l_component_appl_id          :=  275;
44650 l_amb_context_code           := 'DEFAULT';
44651 l_entity_code                := 'EXPENDITURES';
44652 l_event_class_code           := 'TOT_BURDENED_COST';
44653 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
44654 l_line_definition_owner_code := 'S';
44655 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
44656 --
44657 l_balance_type_code          := 'E';
44658 l_segment                     := NULL;
44659 l_ccid                        := NULL;
44660 l_adr_transaction_coa_id      := NULL;
44661 l_adr_accounting_coa_id       := NULL;
44662 l_adr_flexfield_segment_code  := NULL;
44663 l_adr_flex_value_set_id       := NULL;
44664 l_adr_value_type_code         := NULL;
44665 l_adr_value_combination_id    := NULL;
44666 l_adr_value_segment_code      := NULL;
44667 
44668 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44669 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
44670 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44671 l_budgetary_control_flag     := 'N';
44672 
44673 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44674 l_bflow_applied_to_amt       := NULL; -- 5132302
44675 l_entered_amt_idx            := NULL;          -- 4262811
44676 l_accted_amt_idx             := NULL;          -- 4262811
44677 l_acc_rev_flag               := NULL;          -- 4262811
44678 l_accrual_line_num           := NULL;          -- 4262811
44679 l_tmp_amt                    := NULL;          -- 4262811
44680 --
44681  
44682 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44683     l_balance_type_code <> 'B' THEN
44684 IF NVL(p_source_34,'
44685 ') =  'E' AND 
44686 NVL(p_source_69,'
44687 ') =  'AP' AND 
44688 NVL(p_source_70,'
44689 ') =  'Y'
44690  THEN 
44691 
44692    --
44693    XLA_AE_LINES_PKG.SetNewLine;
44694 
44695    p_balance_type_code          := l_balance_type_code;
44696    -- set the flag so later we will know whether the gain loss line needs to be created
44697    
44698    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44699      p_actual_flag :='A';
44700    END IF;
44701 
44702    --
44703    -- bulk performance
44704    --
44705    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44706                                       p_header_num   => 0); -- 4262811
44707    --
44708    -- set accounting line options
44709    --
44710    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44711            p_natural_side_code          => 'C'
44712          , p_gain_or_loss_flag          => 'N'
44713          , p_gl_transfer_mode_code      => 'S'
44714          , p_acct_entry_type_code       => 'E'
44715          , p_switch_side_flag           => 'N'
44716          , p_merge_duplicate_code       => 'N'
44717          );
44718    --
44719    l_acc_rev_natural_side_code := 'D';  -- 4262811
44720    -- 
44721    --
44722    -- set accounting line type info
44723    --
44724    xla_ae_lines_pkg.SetAcctLineType
44725       (p_component_type             => l_component_type
44726       ,p_event_type_code            => l_event_type_code
44727       ,p_line_definition_owner_code => l_line_definition_owner_code
44728       ,p_line_definition_code       => l_line_definition_code
44729       ,p_accounting_line_code       => l_component_code
44730       ,p_accounting_line_type_code  => l_component_type_code
44731       ,p_accounting_line_appl_id    => l_component_appl_id
44732       ,p_amb_context_code           => l_amb_context_code
44733       ,p_entity_code                => l_entity_code
44734       ,p_event_class_code           => l_event_class_code);
44735    --
44736    -- set accounting class
44737    --
44738    xla_ae_lines_pkg.SetAcctClass(
44739            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
44740          , p_ae_header_id           => l_ae_header_id
44741          );
44742 
44743    --
44744    -- set rounding class
44745    --
44746    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44747                       'AP_INV_PA_BURDENED';
44748 
44749    --
44750    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44751    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44752    --
44756 
44753    -- bulk performance
44754    --
44755    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44757    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44758       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44759 
44760    -- 4955764
44761    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44763 
44764    -- 4458381 Public Sector Enh
44765       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1060;
44766    --
44767    -- set accounting attributes for the line type
44768    --
44769    l_entered_amt_idx := 40;
44770    l_accted_amt_idx  := 46;
44771    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
44772    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44773    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
44774    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
44775    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
44776    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
44777    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
44778    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
44779    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
44780    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
44781    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
44782    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
44783    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
44784    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
44785    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
44786    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
44787    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
44788    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
44789    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
44790    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
44791    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
44792    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
44793    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
44794    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
44795    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
44796    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
44797    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
44798    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
44799    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
44800    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
44801    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
44802    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
44803    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
44804    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
44805    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
44806    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
44807    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
44808    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
44809    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
44810    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
44811    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
44812    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44813    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
44814    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
44815    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
44816    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
44817    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
44818    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44819    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
44820    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
44821    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
44822    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
44823    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
44824    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
44825    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
44826    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
44827    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
44828    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
44829    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
44830    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
44831    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
44832    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
44833    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
44834    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
44835    l_rec_acct_attrs.array_char_value(32)  := 
44836 xla_ae_sources_pkg.GetSystemSourceChar(
44837    p_source_code           => 'XLA_CURRENCY_CODE'
44838  , p_source_type_code      => 'Y'
44839  , p_source_application_id =>  602
44840 );
44841    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
44842    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
44846    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
44843    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
44844    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
44845    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
44847    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
44848    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
44849    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
44850    l_rec_acct_attrs.array_char_value(37)  := 
44851 xla_ae_sources_pkg.GetSystemSourceChar(
44852    p_source_code           => 'XLA_CURRENCY_CODE'
44853  , p_source_type_code      => 'Y'
44854  , p_source_application_id =>  602
44855 );
44856    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
44857    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
44858    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
44859    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
44860    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
44861    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
44862    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
44863    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
44864    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
44865    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
44866    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
44867    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
44868    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
44869    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
44870    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
44871    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
44872    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
44873    l_rec_acct_attrs.array_num_value(46)  := p_source_46;
44874    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
44875    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
44876    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
44877    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
44878    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
44879    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
44880    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
44881    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
44882    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
44883    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
44884 
44885    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44886    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44887 
44888    ---------------------------------------------------------------------------------------------------------------
44889    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44890    ---------------------------------------------------------------------------------------------------------------
44891    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44892 
44893    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44894    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44895 
44896    IF xla_accounting_cache_pkg.GetValueChar
44897          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44898          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44899    AND l_bflow_method_code = 'PRIOR_ENTRY'
44900 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44901    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44902          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44903        )
44904    THEN
44905          xla_ae_lines_pkg.BflowUpgEntry
44906            (p_business_method_code    => l_bflow_method_code
44907            ,p_business_class_code     => l_bflow_class_code
44908            ,p_balance_type            => l_balance_type_code);
44909    ELSE
44910       NULL;
44911 -- No business flow processing for business flow method of NONE.
44912    END IF;
44913 
44914    --
44915    -- call analytical criteria
44916    --
44917    
44918    --
44919    -- call description
44920    --
44921    -- No description or it is inherited.
44922    --
44923    -- call ADRs
44924    -- Bug 4922099
44925    --
44926    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44927         (NVL(l_actual_upg_option, 'N') = 'O') OR
44928         (NVL(l_enc_upg_option, 'N') = 'O')
44929       )
44930    THEN
44931    NULL;
44932    --
44933    --
44934    
44935   l_ccid := AcctDerRule_2(
44936            p_application_id           => p_application_id
44937          , p_ae_header_id             => l_ae_header_id 
44938 , p_source_2 => p_source_2
44939          , x_transaction_coa_id       => l_adr_transaction_coa_id
44940          , x_accounting_coa_id        => l_adr_accounting_coa_id
44941          , x_value_type_code          => l_adr_value_type_code
44942          , p_side                     => 'NA'
44943    );
44944 
44945    xla_ae_lines_pkg.set_ccid(
44946     p_code_combination_id          => l_ccid
44947   , p_value_type_code              => l_adr_value_type_code
44948   , p_transaction_coa_id           => l_adr_transaction_coa_id
44949   , p_accounting_coa_id            => l_adr_accounting_coa_id
44953   , p_component_code               => l_component_code
44950   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
44951   , p_adr_type_code                => 'S'
44952   , p_component_type               => l_component_type
44954   , p_component_type_code          => l_component_type_code
44955   , p_component_appl_id            => l_component_appl_id
44956   , p_amb_context_code             => l_amb_context_code
44957   , p_side                         => 'NA'
44958   );
44959 
44960 
44961    --
44962    --
44963    END IF;
44964    --
44965    -- Bug 4922099
44966    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44967           (NVL(l_enc_upg_option, 'N') = 'O')
44968         ) AND
44969         (l_bflow_method_code = 'PRIOR_ENTRY')
44970       )
44971    THEN
44972       IF
44973       --
44974       1 = 2
44975       --
44976       THEN
44977       xla_accounting_err_pkg.build_message
44978                                     (p_appli_s_name            => 'XLA'
44979                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44980                                     ,p_token_1                 => 'LINE_NUMBER'
44981                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44982                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44983                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44984                                                                              l_component_type
44985                                                                             ,l_component_code
44986                                                                             ,l_component_type_code
44987                                                                             ,l_component_appl_id
44988                                                                             ,l_amb_context_code
44989                                                                             ,l_entity_code
44990                                                                             ,l_event_class_code
44991                                                                            )
44992                                     ,p_token_3                 => 'OWNER'
44993                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44994                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44995                                                                           ,p_lookup_code    => l_component_type_code
44996                                                                          )
44997                                     ,p_token_4                 => 'PRODUCT_NAME'
44998                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44999                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45000                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45001                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45002                                     ,p_ae_header_id            =>  NULL
45003                                        );
45004 
45005         IF (C_LEVEL_ERROR>= g_log_level) THEN
45006                  trace
45007                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45008                       ,p_level    => C_LEVEL_ERROR
45009                       ,p_module   => l_log_module);
45010         END IF;
45011       END IF;
45012    END IF;
45013    --
45014    --
45015    ------------------------------------------------------------------------------------------------
45016    -- 4219869 Business Flow
45017    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45018    -- Prior Entry.  Currently, the following code is always generated.
45019    ------------------------------------------------------------------------------------------------
45020    XLA_AE_LINES_PKG.ValidateCurrentLine;
45021 
45022    ------------------------------------------------------------------------------------
45023    -- 4219869 Business Flow
45024    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45025    ------------------------------------------------------------------------------------
45026    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45027 
45028    ----------------------------------------------------------------------------------
45029    -- 4219869 Business Flow
45030    -- Update journal entry status -- Need to generate this within IF <condition>
45031    ----------------------------------------------------------------------------------
45032    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45033          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45034          ,p_balance_type_code => l_balance_type_code
45035          );
45036 
45037    -------------------------------------------------------------------------------------------
45038    -- 4262811 - Generate the Accrual Reversal lines
45039    -------------------------------------------------------------------------------------------
45040    BEGIN
45041       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45042                               (g_array_event(p_event_id).array_value_num('header_index'));
45043       IF l_acc_rev_flag IS NULL THEN
45044          l_acc_rev_flag := 'N';
45045       END IF;
45049    END;
45046    EXCEPTION
45047       WHEN OTHERS THEN
45048          l_acc_rev_flag := 'N';
45050    --
45051    IF (l_acc_rev_flag = 'Y') THEN
45052 
45053        -- 4645092  ------------------------------------------------------------------------------
45054        -- To allow MPA report to determine if it should generate report process
45055        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45056        ------------------------------------------------------------------------------------------
45057 
45058        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45059        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45060 
45061        --
45062        -- Update the line information that should be overwritten
45063        --
45064        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45065                                          p_header_num   => 1);
45066        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45067 
45068        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45069 
45070        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45071           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45072        END IF;
45073 
45074       --
45075       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45076       --
45077       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45078           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45079       ELSE
45080           ---------------------------------------------------------------------------------------------------
45081           -- 4262811a Switch Sign
45082           ---------------------------------------------------------------------------------------------------
45083           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45084           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45085                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45086           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45087                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45088           -- 5132302
45089           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45090                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45091 
45092       END IF;
45093 
45094       -- 4955764
45095       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45096       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45097 
45098 
45099       XLA_AE_LINES_PKG.ValidateCurrentLine;
45100       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45101 
45102       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45103                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45104                ,p_balance_type_code => l_balance_type_code);
45105 
45106    END IF;
45107 
45108    -----------------------------------------------------------------------------------------
45109    -- 4262811 Multiperiod Accounting
45110    -----------------------------------------------------------------------------------------
45111      -- No MPA option is assigned.
45112 
45113 
45114 END IF;
45115 END IF;
45116 --
45117 
45118 --
45119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45120    trace
45121       (p_msg      => 'END of AcctLineType_93'
45122       ,p_level    => C_LEVEL_PROCEDURE
45123       ,p_module   => l_log_module);
45124 END IF;
45125 --
45126 EXCEPTION
45127   WHEN xla_exceptions_pkg.application_exception THEN
45128       RAISE;
45129   WHEN OTHERS THEN
45130        xla_exceptions_pkg.raise_message
45131            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_93');
45132 END AcctLineType_93;
45133 --
45134 
45135 ---------------------------------------
45136 --
45137 -- PRIVATE FUNCTION
45138 --         AcctLineType_94
45139 --
45140 ---------------------------------------
45141 PROCEDURE AcctLineType_94 (
45142   p_application_id        IN NUMBER
45143  ,p_event_id              IN NUMBER
45144  ,p_calculate_acctd_flag  IN VARCHAR2
45145  ,p_calculate_g_l_flag    IN VARCHAR2
45146  ,p_actual_flag           IN OUT VARCHAR2
45147  ,p_balance_type_code     OUT VARCHAR2
45148  ,p_gain_or_loss_ref      OUT VARCHAR2
45149  
45150 --Budget Code Combination ID
45151  , p_source_2            IN NUMBER
45152 --Cost CCID
45153  , p_source_3            IN NUMBER
45154 --Cost Clearing CCID
45155  , p_source_6            IN NUMBER
45156 --Reversing Line Flag
45157  , p_source_22            IN VARCHAR2
45158 --Actual Upgrade Credit Accounting Class
45159  , p_source_23            IN VARCHAR2
45160 --Entered Currency Code
45161  , p_source_25            IN VARCHAR2
45162 --Exchange Rate Date
45163  , p_source_27            IN DATE
45164 --Exchange Rate
45165  , p_source_28            IN NUMBER
45166 --Exchange Rate Type
45167  , p_source_29            IN VARCHAR2
45171  , p_source_31            IN VARCHAR2
45168 --Actual Upgrade Debit Accounting Class
45169  , p_source_30            IN VARCHAR2
45170 --Use Actuals Upgrade Attributes Flag
45172 --Expenditure Item ID
45173  , p_source_32            IN NUMBER
45174 --Cost Distribution Line Number
45175  , p_source_33            IN NUMBER
45176 --Line Type
45177  , p_source_34            IN VARCHAR2
45178  , p_source_34_meaning    IN VARCHAR2
45179 --Reversed Line Number
45180  , p_source_35            IN NUMBER
45181 --Entered Burdened Cost
45182  , p_source_44            IN NUMBER
45183 --Accounted Burdened Cost
45184  , p_source_45            IN NUMBER
45185 --Encumbrance Amount
45186  , p_source_46            IN NUMBER
45187 --Project Encumbrance Applied to Application Identifier
45188  , p_source_47            IN NUMBER
45189 --Project Encumbrance Applied to Distribution Type
45190  , p_source_48            IN VARCHAR2
45191 --Project Encumbrance Applied to Entity Code
45192  , p_source_49            IN VARCHAR2
45193 --Project Encumbrance Applied to First Distribution ID
45194  , p_source_50            IN NUMBER
45195 --Project Encumbrance Applied to First System Transaction ID
45196  , p_source_51            IN NUMBER
45197 --Project Encumbrance Applied to Second Distribution ID
45198  , p_source_52            IN VARCHAR2
45199 --Encumbrance Upgrade Credit Accounting Class
45200  , p_source_53            IN VARCHAR2
45201 --Encumbrance Upgrade Debit Accounting Class
45202  , p_source_54            IN VARCHAR2
45203 --Use Encumbrance Upgrade Attributes Flag
45204  , p_source_55            IN VARCHAR2
45205 --Encumbrance Type ID
45206  , p_source_56            IN NUMBER
45207 --Project Encumbrance Type ID
45208  , p_source_57            IN NUMBER
45209 --Document Type
45210  , p_source_69            IN VARCHAR2
45211  , p_source_69_meaning    IN VARCHAR2
45212 --Encumbrance Journal Lines Reversed Flag
45213  , p_source_70            IN VARCHAR2
45214 )
45215 IS
45216 
45217 l_component_type              VARCHAR2(80);
45218 l_component_code              VARCHAR2(30);
45219 l_component_type_code         VARCHAR2(1);
45220 l_component_appl_id           INTEGER;
45221 l_amb_context_code            VARCHAR2(30);
45222 l_entity_code                 VARCHAR2(30);
45223 l_event_class_code            VARCHAR2(30);
45224 l_ae_header_id                NUMBER;
45225 l_event_type_code             VARCHAR2(30);
45226 l_line_definition_code        VARCHAR2(30);
45227 l_line_definition_owner_code  VARCHAR2(1);
45228 --
45229 -- adr variables
45230 l_segment                     VARCHAR2(30);
45231 l_ccid                        NUMBER;
45232 l_adr_transaction_coa_id      NUMBER;
45233 l_adr_accounting_coa_id       NUMBER;
45234 l_adr_flexfield_segment_code  VARCHAR2(30);
45235 l_adr_flex_value_set_id       NUMBER;
45236 l_adr_value_type_code         VARCHAR2(30);
45237 l_adr_value_combination_id    NUMBER;
45238 l_adr_value_segment_code      VARCHAR2(30);
45239 
45240 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45241 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45242 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45243 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45244 
45245 -- 4262811 Variables ------------------------------------------------------------------------------------------
45246 l_entered_amt_idx             NUMBER;
45247 l_accted_amt_idx              NUMBER;
45248 l_acc_rev_flag                VARCHAR2(1);
45249 l_accrual_line_num            NUMBER;
45250 l_tmp_amt                     NUMBER;
45251 l_acc_rev_natural_side_code   VARCHAR2(1);
45252 
45253 l_num_entries                 NUMBER;
45254 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45255 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45256 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45257 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45258 l_recog_line_1                NUMBER;
45259 l_recog_line_2                NUMBER;
45260 
45261 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45262 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45263 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45264 
45265 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45266 
45267 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45268 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45269 
45270 ---------------------------------------------------------------------------------------------------------------
45271 
45272 
45273 --
45274 -- bulk performance
45275 --
45276 l_balance_type_code           VARCHAR2(1);
45277 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45278 l_log_module                  VARCHAR2(240);
45279 
45280 --
45281 -- Upgrade strategy
45282 --
45283 l_actual_upg_option           VARCHAR2(1);
45284 l_enc_upg_option           VARCHAR2(1);
45285 
45286 --
45287 BEGIN
45288 --
45289 IF g_log_enabled THEN
45290       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
45291 END IF;
45292 --
45293 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45294 
45295       trace
45299 
45296          (p_msg      => 'BEGIN of AcctLineType_94'
45297          ,p_level    => C_LEVEL_PROCEDURE
45298          ,p_module   => l_log_module);
45300 END IF;
45301 --
45302 l_component_type             := 'AMB_JLT';
45303 l_component_code             := 'REL_CANCELLED_INV_BURDEN_ENC';
45304 l_component_type_code        := 'S';
45305 l_component_appl_id          :=  275;
45306 l_amb_context_code           := 'DEFAULT';
45307 l_entity_code                := 'EXPENDITURES';
45308 l_event_class_code           := 'BURDEN_COST';
45309 l_event_type_code            := 'BURDEN_COST_ALL';
45310 l_line_definition_owner_code := 'S';
45311 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
45312 --
45313 l_balance_type_code          := 'E';
45314 l_segment                     := NULL;
45315 l_ccid                        := NULL;
45316 l_adr_transaction_coa_id      := NULL;
45317 l_adr_accounting_coa_id       := NULL;
45318 l_adr_flexfield_segment_code  := NULL;
45319 l_adr_flex_value_set_id       := NULL;
45320 l_adr_value_type_code         := NULL;
45321 l_adr_value_combination_id    := NULL;
45322 l_adr_value_segment_code      := NULL;
45323 
45324 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45325 l_bflow_class_code           := 'AP_INV_PA_BURDEN_ENC';    -- 4219869 Business Flow
45326 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45327 l_budgetary_control_flag     := 'N';
45328 
45329 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45330 l_bflow_applied_to_amt       := NULL; -- 5132302
45331 l_entered_amt_idx            := NULL;          -- 4262811
45332 l_accted_amt_idx             := NULL;          -- 4262811
45333 l_acc_rev_flag               := NULL;          -- 4262811
45334 l_accrual_line_num           := NULL;          -- 4262811
45335 l_tmp_amt                    := NULL;          -- 4262811
45336 --
45337  
45338 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45339     l_balance_type_code <> 'B' THEN
45340 IF NVL(p_source_34,'
45341 ') =  'E' AND 
45342 NVL(p_source_69,'
45343 ') =  'AP' AND 
45344 NVL(p_source_70,'
45345 ') =  'Y'
45346  THEN 
45347 
45348    --
45349    XLA_AE_LINES_PKG.SetNewLine;
45350 
45351    p_balance_type_code          := l_balance_type_code;
45352    -- set the flag so later we will know whether the gain loss line needs to be created
45353    
45354    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45355      p_actual_flag :='A';
45356    END IF;
45357 
45358    --
45359    -- bulk performance
45360    --
45361    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45362                                       p_header_num   => 0); -- 4262811
45363    --
45364    -- set accounting line options
45365    --
45366    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45367            p_natural_side_code          => 'C'
45368          , p_gain_or_loss_flag          => 'N'
45369          , p_gl_transfer_mode_code      => 'S'
45370          , p_acct_entry_type_code       => 'E'
45371          , p_switch_side_flag           => 'N'
45372          , p_merge_duplicate_code       => 'N'
45373          );
45374    --
45375    l_acc_rev_natural_side_code := 'D';  -- 4262811
45376    -- 
45377    --
45378    -- set accounting line type info
45379    --
45380    xla_ae_lines_pkg.SetAcctLineType
45381       (p_component_type             => l_component_type
45382       ,p_event_type_code            => l_event_type_code
45383       ,p_line_definition_owner_code => l_line_definition_owner_code
45384       ,p_line_definition_code       => l_line_definition_code
45385       ,p_accounting_line_code       => l_component_code
45386       ,p_accounting_line_type_code  => l_component_type_code
45387       ,p_accounting_line_appl_id    => l_component_appl_id
45388       ,p_amb_context_code           => l_amb_context_code
45389       ,p_entity_code                => l_entity_code
45390       ,p_event_class_code           => l_event_class_code);
45391    --
45392    -- set accounting class
45393    --
45394    xla_ae_lines_pkg.SetAcctClass(
45395            p_accounting_class_code  => 'AP_INV_PA_BURDEN'
45396          , p_ae_header_id           => l_ae_header_id
45397          );
45398 
45399    --
45400    -- set rounding class
45401    --
45402    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45403                       'AP_INV_PA_BURDEN';
45404 
45405    --
45406    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45407    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45408    --
45409    -- bulk performance
45410    --
45411    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45412 
45413    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45414       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45415 
45416    -- 4955764
45417    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45419 
45420    -- 4458381 Public Sector Enh
45421       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1060;
45422    --
45423    -- set accounting attributes for the line type
45424    --
45428    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
45425    l_entered_amt_idx := 40;
45426    l_accted_amt_idx  := 45;
45427    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
45429    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
45430    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
45431    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
45432    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
45433    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
45434    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
45435    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
45436    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
45437    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
45438    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
45439    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
45440    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
45441    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
45442    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
45443    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
45444    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
45445    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
45446    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
45447    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
45448    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
45449    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
45450    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
45451    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
45452    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
45453    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
45454    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
45455    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
45456    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
45457    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
45458    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
45459    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
45460    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
45461    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
45462    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
45463    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
45464    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
45465    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
45466    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
45467    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
45468    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
45469    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
45470    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
45471    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
45472    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
45473    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
45474    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
45475    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
45476    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
45477    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
45478    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
45479    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
45480    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
45481    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
45482    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
45483    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
45484    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
45485    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
45486    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
45487    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
45488    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
45489    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
45490    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
45491    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
45492    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
45493    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
45494    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
45495    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
45496    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
45497    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
45498    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
45499    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
45500    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
45501    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
45502    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
45503    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
45504    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
45505    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
45506    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
45507    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
45508    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
45512    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
45509    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
45510    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
45511    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
45513    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
45514    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
45515    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
45516    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
45517    l_rec_acct_attrs.array_num_value(45)  := p_source_46;
45518    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
45519    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
45520    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
45521    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
45522    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
45523    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
45524    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
45525    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
45526    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
45527    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
45528 
45529    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45530    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45531 
45532    ---------------------------------------------------------------------------------------------------------------
45533    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45534    ---------------------------------------------------------------------------------------------------------------
45535    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45536 
45537    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45538    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45539 
45540    IF xla_accounting_cache_pkg.GetValueChar
45541          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45542          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45543    AND l_bflow_method_code = 'PRIOR_ENTRY'
45544 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45545    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45546          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45547        )
45548    THEN
45549          xla_ae_lines_pkg.BflowUpgEntry
45550            (p_business_method_code    => l_bflow_method_code
45551            ,p_business_class_code     => l_bflow_class_code
45552            ,p_balance_type            => l_balance_type_code);
45553    ELSE
45554       NULL;
45555 -- No business flow processing for business flow method of NONE.
45556    END IF;
45557 
45558    --
45559    -- call analytical criteria
45560    --
45561    
45562    --
45563    -- call description
45564    --
45565    -- No description or it is inherited.
45566    --
45567    -- call ADRs
45568    -- Bug 4922099
45569    --
45570    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45571         (NVL(l_actual_upg_option, 'N') = 'O') OR
45572         (NVL(l_enc_upg_option, 'N') = 'O')
45573       )
45574    THEN
45575    NULL;
45576    --
45577    --
45578    
45579   l_ccid := AcctDerRule_2(
45580            p_application_id           => p_application_id
45581          , p_ae_header_id             => l_ae_header_id 
45582 , p_source_2 => p_source_2
45583          , x_transaction_coa_id       => l_adr_transaction_coa_id
45584          , x_accounting_coa_id        => l_adr_accounting_coa_id
45585          , x_value_type_code          => l_adr_value_type_code
45586          , p_side                     => 'NA'
45587    );
45588 
45589    xla_ae_lines_pkg.set_ccid(
45590     p_code_combination_id          => l_ccid
45591   , p_value_type_code              => l_adr_value_type_code
45592   , p_transaction_coa_id           => l_adr_transaction_coa_id
45593   , p_accounting_coa_id            => l_adr_accounting_coa_id
45594   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
45595   , p_adr_type_code                => 'S'
45596   , p_component_type               => l_component_type
45597   , p_component_code               => l_component_code
45598   , p_component_type_code          => l_component_type_code
45599   , p_component_appl_id            => l_component_appl_id
45600   , p_amb_context_code             => l_amb_context_code
45601   , p_side                         => 'NA'
45602   );
45603 
45604 
45605    --
45606    --
45607    END IF;
45608    --
45609    -- Bug 4922099
45610    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45611           (NVL(l_enc_upg_option, 'N') = 'O')
45612         ) AND
45613         (l_bflow_method_code = 'PRIOR_ENTRY')
45614       )
45615    THEN
45616       IF
45617       --
45618       1 = 2
45619       --
45620       THEN
45621       xla_accounting_err_pkg.build_message
45622                                     (p_appli_s_name            => 'XLA'
45623                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45624                                     ,p_token_1                 => 'LINE_NUMBER'
45625                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45629                                                                             ,l_component_code
45626                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45627                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45628                                                                              l_component_type
45630                                                                             ,l_component_type_code
45631                                                                             ,l_component_appl_id
45632                                                                             ,l_amb_context_code
45633                                                                             ,l_entity_code
45634                                                                             ,l_event_class_code
45635                                                                            )
45636                                     ,p_token_3                 => 'OWNER'
45637                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45638                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45639                                                                           ,p_lookup_code    => l_component_type_code
45640                                                                          )
45641                                     ,p_token_4                 => 'PRODUCT_NAME'
45642                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45643                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45644                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45645                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45646                                     ,p_ae_header_id            =>  NULL
45647                                        );
45648 
45649         IF (C_LEVEL_ERROR>= g_log_level) THEN
45650                  trace
45651                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45652                       ,p_level    => C_LEVEL_ERROR
45653                       ,p_module   => l_log_module);
45654         END IF;
45655       END IF;
45656    END IF;
45657    --
45658    --
45659    ------------------------------------------------------------------------------------------------
45660    -- 4219869 Business Flow
45661    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45662    -- Prior Entry.  Currently, the following code is always generated.
45663    ------------------------------------------------------------------------------------------------
45664    XLA_AE_LINES_PKG.ValidateCurrentLine;
45665 
45666    ------------------------------------------------------------------------------------
45667    -- 4219869 Business Flow
45668    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45669    ------------------------------------------------------------------------------------
45670    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45671 
45672    ----------------------------------------------------------------------------------
45673    -- 4219869 Business Flow
45674    -- Update journal entry status -- Need to generate this within IF <condition>
45675    ----------------------------------------------------------------------------------
45676    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45677          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45678          ,p_balance_type_code => l_balance_type_code
45679          );
45680 
45681    -------------------------------------------------------------------------------------------
45682    -- 4262811 - Generate the Accrual Reversal lines
45683    -------------------------------------------------------------------------------------------
45684    BEGIN
45685       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45686                               (g_array_event(p_event_id).array_value_num('header_index'));
45687       IF l_acc_rev_flag IS NULL THEN
45688          l_acc_rev_flag := 'N';
45689       END IF;
45690    EXCEPTION
45691       WHEN OTHERS THEN
45692          l_acc_rev_flag := 'N';
45693    END;
45694    --
45695    IF (l_acc_rev_flag = 'Y') THEN
45696 
45697        -- 4645092  ------------------------------------------------------------------------------
45698        -- To allow MPA report to determine if it should generate report process
45699        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45700        ------------------------------------------------------------------------------------------
45701 
45702        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45703        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45704 
45705        --
45706        -- Update the line information that should be overwritten
45707        --
45708        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45709                                          p_header_num   => 1);
45710        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45711 
45712        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45713 
45714        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45718       --
45715           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45716        END IF;
45717 
45719       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45720       --
45721       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45722           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45723       ELSE
45724           ---------------------------------------------------------------------------------------------------
45725           -- 4262811a Switch Sign
45726           ---------------------------------------------------------------------------------------------------
45727           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45728           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45729                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45730           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45731                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45732           -- 5132302
45733           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45734                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45735 
45736       END IF;
45737 
45738       -- 4955764
45739       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45740       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45741 
45742 
45743       XLA_AE_LINES_PKG.ValidateCurrentLine;
45744       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45745 
45746       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45747                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45748                ,p_balance_type_code => l_balance_type_code);
45749 
45750    END IF;
45751 
45752    -----------------------------------------------------------------------------------------
45753    -- 4262811 Multiperiod Accounting
45754    -----------------------------------------------------------------------------------------
45755      -- No MPA option is assigned.
45756 
45757 
45758 END IF;
45759 END IF;
45760 --
45761 
45762 --
45763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45764    trace
45765       (p_msg      => 'END of AcctLineType_94'
45766       ,p_level    => C_LEVEL_PROCEDURE
45767       ,p_module   => l_log_module);
45768 END IF;
45769 --
45770 EXCEPTION
45771   WHEN xla_exceptions_pkg.application_exception THEN
45772       RAISE;
45773   WHEN OTHERS THEN
45774        xla_exceptions_pkg.raise_message
45775            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_94');
45776 END AcctLineType_94;
45777 --
45778 
45779 ---------------------------------------
45780 --
45781 -- PRIVATE FUNCTION
45782 --         AcctLineType_95
45783 --
45784 ---------------------------------------
45785 PROCEDURE AcctLineType_95 (
45786   p_application_id        IN NUMBER
45787  ,p_event_id              IN NUMBER
45788  ,p_calculate_acctd_flag  IN VARCHAR2
45789  ,p_calculate_g_l_flag    IN VARCHAR2
45790  ,p_actual_flag           IN OUT VARCHAR2
45791  ,p_balance_type_code     OUT VARCHAR2
45792  ,p_gain_or_loss_ref      OUT VARCHAR2
45793  
45794 --Budget Code Combination ID
45795  , p_source_2            IN NUMBER
45796 --Cost CCID
45797  , p_source_3            IN NUMBER
45798 --Cost Clearing CCID
45799  , p_source_6            IN NUMBER
45800 --Reversing Line Flag
45801  , p_source_22            IN VARCHAR2
45802 --Actual Upgrade Credit Accounting Class
45803  , p_source_23            IN VARCHAR2
45804 --Entered Currency Code
45805  , p_source_25            IN VARCHAR2
45806 --Exchange Rate Date
45807  , p_source_27            IN DATE
45808 --Exchange Rate
45809  , p_source_28            IN NUMBER
45810 --Exchange Rate Type
45811  , p_source_29            IN VARCHAR2
45812 --Actual Upgrade Debit Accounting Class
45813  , p_source_30            IN VARCHAR2
45814 --Use Actuals Upgrade Attributes Flag
45815  , p_source_31            IN VARCHAR2
45816 --Expenditure Item ID
45817  , p_source_32            IN NUMBER
45818 --Cost Distribution Line Number
45819  , p_source_33            IN NUMBER
45820 --Line Type
45821  , p_source_34            IN VARCHAR2
45822  , p_source_34_meaning    IN VARCHAR2
45823 --Reversed Line Number
45824  , p_source_35            IN NUMBER
45825 --Entered Burdened Cost
45826  , p_source_44            IN NUMBER
45827 --Accounted Burdened Cost
45828  , p_source_45            IN NUMBER
45829 --Encumbrance Amount
45830  , p_source_46            IN NUMBER
45831 --Project Encumbrance Applied to Application Identifier
45832  , p_source_47            IN NUMBER
45833 --Project Encumbrance Applied to Distribution Type
45834  , p_source_48            IN VARCHAR2
45835 --Project Encumbrance Applied to Entity Code
45836  , p_source_49            IN VARCHAR2
45837 --Project Encumbrance Applied to First Distribution ID
45838  , p_source_50            IN NUMBER
45842  , p_source_52            IN VARCHAR2
45839 --Project Encumbrance Applied to First System Transaction ID
45840  , p_source_51            IN NUMBER
45841 --Project Encumbrance Applied to Second Distribution ID
45843 --Encumbrance Upgrade Debit Accounting Class
45844  , p_source_54            IN VARCHAR2
45845 --Use Encumbrance Upgrade Attributes Flag
45846  , p_source_55            IN VARCHAR2
45847 --Encumbrance Type ID
45848  , p_source_56            IN NUMBER
45849 --Project Encumbrance Type ID
45850  , p_source_57            IN NUMBER
45851 --Document Type
45852  , p_source_69            IN VARCHAR2
45853  , p_source_69_meaning    IN VARCHAR2
45854 --Release ID
45855  , p_source_71            IN NUMBER
45856 --Contingent Worker Timecard Flag
45857  , p_source_72            IN VARCHAR2
45858 )
45859 IS
45860 
45861 l_component_type              VARCHAR2(80);
45862 l_component_code              VARCHAR2(30);
45863 l_component_type_code         VARCHAR2(1);
45864 l_component_appl_id           INTEGER;
45865 l_amb_context_code            VARCHAR2(30);
45866 l_entity_code                 VARCHAR2(30);
45867 l_event_class_code            VARCHAR2(30);
45868 l_ae_header_id                NUMBER;
45869 l_event_type_code             VARCHAR2(30);
45870 l_line_definition_code        VARCHAR2(30);
45871 l_line_definition_owner_code  VARCHAR2(1);
45872 --
45873 -- adr variables
45874 l_segment                     VARCHAR2(30);
45875 l_ccid                        NUMBER;
45876 l_adr_transaction_coa_id      NUMBER;
45877 l_adr_accounting_coa_id       NUMBER;
45878 l_adr_flexfield_segment_code  VARCHAR2(30);
45879 l_adr_flex_value_set_id       NUMBER;
45880 l_adr_value_type_code         VARCHAR2(30);
45881 l_adr_value_combination_id    NUMBER;
45882 l_adr_value_segment_code      VARCHAR2(30);
45883 
45884 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45885 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45886 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45887 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45888 
45889 -- 4262811 Variables ------------------------------------------------------------------------------------------
45890 l_entered_amt_idx             NUMBER;
45891 l_accted_amt_idx              NUMBER;
45892 l_acc_rev_flag                VARCHAR2(1);
45893 l_accrual_line_num            NUMBER;
45894 l_tmp_amt                     NUMBER;
45895 l_acc_rev_natural_side_code   VARCHAR2(1);
45896 
45897 l_num_entries                 NUMBER;
45898 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45899 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45900 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45901 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45902 l_recog_line_1                NUMBER;
45903 l_recog_line_2                NUMBER;
45904 
45905 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45906 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45907 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45908 
45909 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45910 
45911 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45912 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45913 
45914 ---------------------------------------------------------------------------------------------------------------
45915 
45916 
45917 --
45918 -- bulk performance
45919 --
45920 l_balance_type_code           VARCHAR2(1);
45921 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45922 l_log_module                  VARCHAR2(240);
45923 
45924 --
45925 -- Upgrade strategy
45926 --
45927 l_actual_upg_option           VARCHAR2(1);
45928 l_enc_upg_option           VARCHAR2(1);
45929 
45930 --
45931 BEGIN
45932 --
45933 IF g_log_enabled THEN
45934       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
45935 END IF;
45936 --
45937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45938 
45939       trace
45940          (p_msg      => 'BEGIN of AcctLineType_95'
45941          ,p_level    => C_LEVEL_PROCEDURE
45942          ,p_module   => l_log_module);
45943 
45944 END IF;
45945 --
45946 l_component_type             := 'AMB_JLT';
45947 l_component_code             := 'REL_CWK_PO_BURDENED_ENC';
45948 l_component_type_code        := 'S';
45949 l_component_appl_id          :=  275;
45950 l_amb_context_code           := 'DEFAULT';
45951 l_entity_code                := 'EXPENDITURES';
45952 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
45953 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
45954 l_line_definition_owner_code := 'S';
45955 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
45956 --
45957 l_balance_type_code          := 'E';
45958 l_segment                     := NULL;
45959 l_ccid                        := NULL;
45960 l_adr_transaction_coa_id      := NULL;
45961 l_adr_accounting_coa_id       := NULL;
45962 l_adr_flexfield_segment_code  := NULL;
45963 l_adr_flex_value_set_id       := NULL;
45964 l_adr_value_type_code         := NULL;
45965 l_adr_value_combination_id    := NULL;
45966 l_adr_value_segment_code      := NULL;
45967 
45968 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45972 
45969 l_bflow_class_code           := '';    -- 4219869 Business Flow
45970 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45971 l_budgetary_control_flag     := 'N';
45973 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45974 l_bflow_applied_to_amt       := NULL; -- 5132302
45975 l_entered_amt_idx            := NULL;          -- 4262811
45976 l_accted_amt_idx             := NULL;          -- 4262811
45977 l_acc_rev_flag               := NULL;          -- 4262811
45978 l_accrual_line_num           := NULL;          -- 4262811
45979 l_tmp_amt                    := NULL;          -- 4262811
45980 --
45981  
45982 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45983     l_balance_type_code <> 'B' THEN
45984 IF NVL(p_source_34,'
45985 ') =  'E' AND 
45986 NVL(p_source_69,'
45987 ') =  'PO' AND 
45988 p_source_71 IS NULL AND 
45989 NVL(p_source_72,'
45990 ') =  'Y'
45991  THEN 
45992 
45993    --
45994    XLA_AE_LINES_PKG.SetNewLine;
45995 
45996    p_balance_type_code          := l_balance_type_code;
45997    -- set the flag so later we will know whether the gain loss line needs to be created
45998    
45999    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46000      p_actual_flag :='A';
46001    END IF;
46002 
46003    --
46004    -- bulk performance
46005    --
46006    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46007                                       p_header_num   => 0); -- 4262811
46008    --
46009    -- set accounting line options
46010    --
46011    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46012            p_natural_side_code          => 'C'
46013          , p_gain_or_loss_flag          => 'N'
46014          , p_gl_transfer_mode_code      => 'S'
46015          , p_acct_entry_type_code       => 'E'
46016          , p_switch_side_flag           => 'N'
46017          , p_merge_duplicate_code       => 'N'
46018          );
46019    --
46020    l_acc_rev_natural_side_code := 'D';  -- 4262811
46021    -- 
46022    --
46023    -- set accounting line type info
46024    --
46025    xla_ae_lines_pkg.SetAcctLineType
46026       (p_component_type             => l_component_type
46027       ,p_event_type_code            => l_event_type_code
46028       ,p_line_definition_owner_code => l_line_definition_owner_code
46029       ,p_line_definition_code       => l_line_definition_code
46030       ,p_accounting_line_code       => l_component_code
46031       ,p_accounting_line_type_code  => l_component_type_code
46032       ,p_accounting_line_appl_id    => l_component_appl_id
46033       ,p_amb_context_code           => l_amb_context_code
46034       ,p_entity_code                => l_entity_code
46035       ,p_event_class_code           => l_event_class_code);
46036    --
46037    -- set accounting class
46038    --
46039    xla_ae_lines_pkg.SetAcctClass(
46040            p_accounting_class_code  => 'PO_PA_BURDENED'
46041          , p_ae_header_id           => l_ae_header_id
46042          );
46043 
46044    --
46045    -- set rounding class
46046    --
46047    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46048                       'PO_PA_BURDENED';
46049 
46050    --
46051    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46052    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46053    --
46054    -- bulk performance
46055    --
46056    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46057 
46058    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46059       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46060 
46061    -- 4955764
46062    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46063       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46064 
46065    -- 4458381 Public Sector Enh
46066       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
46067    --
46068    -- set accounting attributes for the line type
46069    --
46070    l_entered_amt_idx := 35;
46071    l_accted_amt_idx  := 40;
46072    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
46073    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46074    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
46075    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
46076    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
46077    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
46078    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
46079    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
46080    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
46081    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
46082    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
46083    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
46084    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
46085    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
46086    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
46087    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
46088    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
46092    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
46089    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
46090    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
46091    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
46093    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
46094    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
46095    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
46096    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
46097    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
46098    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
46099    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
46100    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
46101    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
46102    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
46103    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
46104    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
46105    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
46106    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
46107    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
46108    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
46109    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
46110    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
46111    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
46112    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
46113    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46114    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
46115    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
46116    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
46117    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
46118    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
46119    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46120    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
46121    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
46122    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
46123    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
46124    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
46125    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
46126    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
46127    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
46128    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
46129    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
46130    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
46131    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
46132    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
46133    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
46134    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
46135    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
46136    l_rec_acct_attrs.array_char_value(32)  := 
46137 xla_ae_sources_pkg.GetSystemSourceChar(
46138    p_source_code           => 'XLA_CURRENCY_CODE'
46139  , p_source_type_code      => 'Y'
46140  , p_source_application_id =>  602
46141 );
46142    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
46143    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
46144    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
46145    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
46146    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
46147    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
46148    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
46149    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
46150    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
46151    l_rec_acct_attrs.array_date_value(37)  := p_source_27;
46152    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
46153    l_rec_acct_attrs.array_num_value(38)  := p_source_28;
46154    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
46155    l_rec_acct_attrs.array_char_value(39)  := p_source_29;
46156    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
46157    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
46158    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
46159    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_32);
46160    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
46161    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_35);
46162    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
46163    l_rec_acct_attrs.array_char_value(43)  := p_source_34;
46164    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
46165    l_rec_acct_attrs.array_num_value(44)  := p_source_56;
46166    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
46167    l_rec_acct_attrs.array_num_value(45)  := p_source_57;
46168 
46169    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46170    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46171 
46172    ---------------------------------------------------------------------------------------------------------------
46173    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46177    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46174    ---------------------------------------------------------------------------------------------------------------
46175    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46176 
46178    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46179 
46180    IF xla_accounting_cache_pkg.GetValueChar
46181          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46182          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46183    AND l_bflow_method_code = 'PRIOR_ENTRY'
46184 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46185    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46186          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46187        )
46188    THEN
46189          xla_ae_lines_pkg.BflowUpgEntry
46190            (p_business_method_code    => l_bflow_method_code
46191            ,p_business_class_code     => l_bflow_class_code
46192            ,p_balance_type            => l_balance_type_code);
46193    ELSE
46194       NULL;
46195 -- No business flow processing for business flow method of NONE.
46196    END IF;
46197 
46198    --
46199    -- call analytical criteria
46200    --
46201    
46202    --
46203    -- call description
46204    --
46205    -- No description or it is inherited.
46206    --
46207    -- call ADRs
46208    -- Bug 4922099
46209    --
46210    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46211         (NVL(l_actual_upg_option, 'N') = 'O') OR
46212         (NVL(l_enc_upg_option, 'N') = 'O')
46213       )
46214    THEN
46215    NULL;
46216    --
46217    --
46218    
46219   l_ccid := AcctDerRule_2(
46220            p_application_id           => p_application_id
46221          , p_ae_header_id             => l_ae_header_id 
46222 , p_source_2 => p_source_2
46223          , x_transaction_coa_id       => l_adr_transaction_coa_id
46224          , x_accounting_coa_id        => l_adr_accounting_coa_id
46225          , x_value_type_code          => l_adr_value_type_code
46226          , p_side                     => 'NA'
46227    );
46228 
46229    xla_ae_lines_pkg.set_ccid(
46230     p_code_combination_id          => l_ccid
46231   , p_value_type_code              => l_adr_value_type_code
46232   , p_transaction_coa_id           => l_adr_transaction_coa_id
46233   , p_accounting_coa_id            => l_adr_accounting_coa_id
46234   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
46235   , p_adr_type_code                => 'S'
46236   , p_component_type               => l_component_type
46237   , p_component_code               => l_component_code
46238   , p_component_type_code          => l_component_type_code
46239   , p_component_appl_id            => l_component_appl_id
46240   , p_amb_context_code             => l_amb_context_code
46241   , p_side                         => 'NA'
46242   );
46243 
46244 
46245    --
46246    --
46247    END IF;
46248    --
46249    -- Bug 4922099
46250    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46251           (NVL(l_enc_upg_option, 'N') = 'O')
46252         ) AND
46253         (l_bflow_method_code = 'PRIOR_ENTRY')
46254       )
46255    THEN
46256       IF
46257       --
46258       1 = 2
46259       --
46260       THEN
46261       xla_accounting_err_pkg.build_message
46262                                     (p_appli_s_name            => 'XLA'
46263                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46264                                     ,p_token_1                 => 'LINE_NUMBER'
46265                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46266                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46267                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46268                                                                              l_component_type
46269                                                                             ,l_component_code
46270                                                                             ,l_component_type_code
46271                                                                             ,l_component_appl_id
46272                                                                             ,l_amb_context_code
46273                                                                             ,l_entity_code
46274                                                                             ,l_event_class_code
46275                                                                            )
46276                                     ,p_token_3                 => 'OWNER'
46277                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46278                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46279                                                                           ,p_lookup_code    => l_component_type_code
46280                                                                          )
46281                                     ,p_token_4                 => 'PRODUCT_NAME'
46282                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46286                                     ,p_ae_header_id            =>  NULL
46283                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46284                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46285                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46287                                        );
46288 
46289         IF (C_LEVEL_ERROR>= g_log_level) THEN
46290                  trace
46291                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46292                       ,p_level    => C_LEVEL_ERROR
46293                       ,p_module   => l_log_module);
46294         END IF;
46295       END IF;
46296    END IF;
46297    --
46298    --
46299    ------------------------------------------------------------------------------------------------
46300    -- 4219869 Business Flow
46301    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46302    -- Prior Entry.  Currently, the following code is always generated.
46303    ------------------------------------------------------------------------------------------------
46304    XLA_AE_LINES_PKG.ValidateCurrentLine;
46305 
46306    ------------------------------------------------------------------------------------
46307    -- 4219869 Business Flow
46308    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46309    ------------------------------------------------------------------------------------
46310    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46311 
46312    ----------------------------------------------------------------------------------
46313    -- 4219869 Business Flow
46314    -- Update journal entry status -- Need to generate this within IF <condition>
46315    ----------------------------------------------------------------------------------
46316    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46317          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46318          ,p_balance_type_code => l_balance_type_code
46319          );
46320 
46321    -------------------------------------------------------------------------------------------
46322    -- 4262811 - Generate the Accrual Reversal lines
46323    -------------------------------------------------------------------------------------------
46324    BEGIN
46325       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46326                               (g_array_event(p_event_id).array_value_num('header_index'));
46327       IF l_acc_rev_flag IS NULL THEN
46328          l_acc_rev_flag := 'N';
46329       END IF;
46330    EXCEPTION
46331       WHEN OTHERS THEN
46332          l_acc_rev_flag := 'N';
46333    END;
46334    --
46335    IF (l_acc_rev_flag = 'Y') THEN
46336 
46337        -- 4645092  ------------------------------------------------------------------------------
46338        -- To allow MPA report to determine if it should generate report process
46339        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46340        ------------------------------------------------------------------------------------------
46341 
46342        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46343        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46344 
46345        --
46346        -- Update the line information that should be overwritten
46347        --
46348        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46349                                          p_header_num   => 1);
46350        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46351 
46352        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46353 
46354        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46355           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46356        END IF;
46357 
46358       --
46359       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46360       --
46361       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46362           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46363       ELSE
46364           ---------------------------------------------------------------------------------------------------
46365           -- 4262811a Switch Sign
46366           ---------------------------------------------------------------------------------------------------
46367           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46368           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46369                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46370           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46371                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46372           -- 5132302
46373           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46374                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46375 
46376       END IF;
46377 
46378       -- 4955764
46382 
46379       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46380       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46381 
46383       XLA_AE_LINES_PKG.ValidateCurrentLine;
46384       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46385 
46386       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46387                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46388                ,p_balance_type_code => l_balance_type_code);
46389 
46390    END IF;
46391 
46392    -----------------------------------------------------------------------------------------
46393    -- 4262811 Multiperiod Accounting
46394    -----------------------------------------------------------------------------------------
46395      -- No MPA option is assigned.
46396 
46397 
46398 END IF;
46399 END IF;
46400 --
46401 
46402 --
46403 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46404    trace
46405       (p_msg      => 'END of AcctLineType_95'
46406       ,p_level    => C_LEVEL_PROCEDURE
46407       ,p_module   => l_log_module);
46408 END IF;
46409 --
46410 EXCEPTION
46411   WHEN xla_exceptions_pkg.application_exception THEN
46412       RAISE;
46413   WHEN OTHERS THEN
46414        xla_exceptions_pkg.raise_message
46415            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_95');
46416 END AcctLineType_95;
46417 --
46418 
46419 ---------------------------------------
46420 --
46421 -- PRIVATE FUNCTION
46422 --         AcctLineType_96
46423 --
46424 ---------------------------------------
46425 PROCEDURE AcctLineType_96 (
46426   p_application_id        IN NUMBER
46427  ,p_event_id              IN NUMBER
46428  ,p_calculate_acctd_flag  IN VARCHAR2
46429  ,p_calculate_g_l_flag    IN VARCHAR2
46430  ,p_actual_flag           IN OUT VARCHAR2
46431  ,p_balance_type_code     OUT VARCHAR2
46432  ,p_gain_or_loss_ref      OUT VARCHAR2
46433  
46434 --Budget Code Combination ID
46435  , p_source_2            IN NUMBER
46436 --Cost CCID
46437  , p_source_3            IN NUMBER
46438 --Cost Clearing CCID
46439  , p_source_6            IN NUMBER
46440 --Reversing Line Flag
46441  , p_source_22            IN VARCHAR2
46442 --Actual Upgrade Credit Accounting Class
46443  , p_source_23            IN VARCHAR2
46444 --Entered Currency Code
46445  , p_source_25            IN VARCHAR2
46446 --Exchange Rate Date
46447  , p_source_27            IN DATE
46448 --Exchange Rate
46449  , p_source_28            IN NUMBER
46450 --Exchange Rate Type
46451  , p_source_29            IN VARCHAR2
46452 --Actual Upgrade Debit Accounting Class
46453  , p_source_30            IN VARCHAR2
46454 --Use Actuals Upgrade Attributes Flag
46455  , p_source_31            IN VARCHAR2
46456 --Expenditure Item ID
46457  , p_source_32            IN NUMBER
46458 --Cost Distribution Line Number
46459  , p_source_33            IN NUMBER
46460 --Line Type
46461  , p_source_34            IN VARCHAR2
46462  , p_source_34_meaning    IN VARCHAR2
46463 --Reversed Line Number
46464  , p_source_35            IN NUMBER
46465 --Entered Burdened Cost
46466  , p_source_44            IN NUMBER
46467 --Accounted Burdened Cost
46468  , p_source_45            IN NUMBER
46469 --Encumbrance Amount
46470  , p_source_46            IN NUMBER
46471 --Project Encumbrance Applied to Application Identifier
46472  , p_source_47            IN NUMBER
46473 --Project Encumbrance Applied to Distribution Type
46474  , p_source_48            IN VARCHAR2
46475 --Project Encumbrance Applied to Entity Code
46476  , p_source_49            IN VARCHAR2
46477 --Project Encumbrance Applied to First Distribution ID
46478  , p_source_50            IN NUMBER
46479 --Project Encumbrance Applied to First System Transaction ID
46480  , p_source_51            IN NUMBER
46481 --Project Encumbrance Applied to Second Distribution ID
46482  , p_source_52            IN VARCHAR2
46483 --Encumbrance Upgrade Credit Accounting Class
46484  , p_source_53            IN VARCHAR2
46485 --Encumbrance Upgrade Debit Accounting Class
46486  , p_source_54            IN VARCHAR2
46487 --Use Encumbrance Upgrade Attributes Flag
46488  , p_source_55            IN VARCHAR2
46489 --Encumbrance Type ID
46490  , p_source_56            IN NUMBER
46491 --Project Encumbrance Type ID
46492  , p_source_57            IN NUMBER
46493 --Document Type
46494  , p_source_69            IN VARCHAR2
46495  , p_source_69_meaning    IN VARCHAR2
46496 --Release ID
46497  , p_source_71            IN NUMBER
46498 --Contingent Worker Timecard Flag
46499  , p_source_72            IN VARCHAR2
46500 )
46501 IS
46502 
46503 l_component_type              VARCHAR2(80);
46504 l_component_code              VARCHAR2(30);
46505 l_component_type_code         VARCHAR2(1);
46506 l_component_appl_id           INTEGER;
46507 l_amb_context_code            VARCHAR2(30);
46508 l_entity_code                 VARCHAR2(30);
46509 l_event_class_code            VARCHAR2(30);
46510 l_ae_header_id                NUMBER;
46511 l_event_type_code             VARCHAR2(30);
46512 l_line_definition_code        VARCHAR2(30);
46513 l_line_definition_owner_code  VARCHAR2(1);
46514 --
46515 -- adr variables
46516 l_segment                     VARCHAR2(30);
46517 l_ccid                        NUMBER;
46518 l_adr_transaction_coa_id      NUMBER;
46519 l_adr_accounting_coa_id       NUMBER;
46523 l_adr_value_combination_id    NUMBER;
46520 l_adr_flexfield_segment_code  VARCHAR2(30);
46521 l_adr_flex_value_set_id       NUMBER;
46522 l_adr_value_type_code         VARCHAR2(30);
46524 l_adr_value_segment_code      VARCHAR2(30);
46525 
46526 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46527 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46528 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46529 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46530 
46531 -- 4262811 Variables ------------------------------------------------------------------------------------------
46532 l_entered_amt_idx             NUMBER;
46533 l_accted_amt_idx              NUMBER;
46534 l_acc_rev_flag                VARCHAR2(1);
46535 l_accrual_line_num            NUMBER;
46536 l_tmp_amt                     NUMBER;
46537 l_acc_rev_natural_side_code   VARCHAR2(1);
46538 
46539 l_num_entries                 NUMBER;
46540 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46541 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46542 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46543 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46544 l_recog_line_1                NUMBER;
46545 l_recog_line_2                NUMBER;
46546 
46547 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46548 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46549 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46550 
46551 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46552 
46553 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46554 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46555 
46556 ---------------------------------------------------------------------------------------------------------------
46557 
46558 
46559 --
46560 -- bulk performance
46561 --
46562 l_balance_type_code           VARCHAR2(1);
46563 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46564 l_log_module                  VARCHAR2(240);
46565 
46566 --
46567 -- Upgrade strategy
46568 --
46569 l_actual_upg_option           VARCHAR2(1);
46570 l_enc_upg_option           VARCHAR2(1);
46571 
46572 --
46573 BEGIN
46574 --
46575 IF g_log_enabled THEN
46576       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
46577 END IF;
46578 --
46579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46580 
46581       trace
46582          (p_msg      => 'BEGIN of AcctLineType_96'
46583          ,p_level    => C_LEVEL_PROCEDURE
46584          ,p_module   => l_log_module);
46585 
46586 END IF;
46587 --
46588 l_component_type             := 'AMB_JLT';
46589 l_component_code             := 'REL_CWK_PO_BURDENED_ENC';
46590 l_component_type_code        := 'S';
46591 l_component_appl_id          :=  275;
46592 l_amb_context_code           := 'DEFAULT';
46593 l_entity_code                := 'EXPENDITURES';
46594 l_event_class_code           := 'TOT_BURDENED_COST';
46595 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
46596 l_line_definition_owner_code := 'S';
46597 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
46598 --
46599 l_balance_type_code          := 'E';
46600 l_segment                     := NULL;
46601 l_ccid                        := NULL;
46602 l_adr_transaction_coa_id      := NULL;
46603 l_adr_accounting_coa_id       := NULL;
46604 l_adr_flexfield_segment_code  := NULL;
46605 l_adr_flex_value_set_id       := NULL;
46606 l_adr_value_type_code         := NULL;
46607 l_adr_value_combination_id    := NULL;
46608 l_adr_value_segment_code      := NULL;
46609 
46610 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46611 l_bflow_class_code           := '';    -- 4219869 Business Flow
46612 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46613 l_budgetary_control_flag     := 'N';
46614 
46615 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46616 l_bflow_applied_to_amt       := NULL; -- 5132302
46617 l_entered_amt_idx            := NULL;          -- 4262811
46618 l_accted_amt_idx             := NULL;          -- 4262811
46619 l_acc_rev_flag               := NULL;          -- 4262811
46620 l_accrual_line_num           := NULL;          -- 4262811
46621 l_tmp_amt                    := NULL;          -- 4262811
46622 --
46623  
46624 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46625     l_balance_type_code <> 'B' THEN
46626 IF NVL(p_source_34,'
46627 ') =  'E' AND 
46628 NVL(p_source_69,'
46629 ') =  'PO' AND 
46630 p_source_71 IS NULL AND 
46631 NVL(p_source_72,'
46632 ') =  'Y'
46633  THEN 
46634 
46635    --
46636    XLA_AE_LINES_PKG.SetNewLine;
46637 
46638    p_balance_type_code          := l_balance_type_code;
46639    -- set the flag so later we will know whether the gain loss line needs to be created
46640    
46641    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46642      p_actual_flag :='A';
46643    END IF;
46644 
46645    --
46646    -- bulk performance
46647    --
46648    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46649                                       p_header_num   => 0); -- 4262811
46650    --
46654            p_natural_side_code          => 'C'
46651    -- set accounting line options
46652    --
46653    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46655          , p_gain_or_loss_flag          => 'N'
46656          , p_gl_transfer_mode_code      => 'S'
46657          , p_acct_entry_type_code       => 'E'
46658          , p_switch_side_flag           => 'N'
46659          , p_merge_duplicate_code       => 'N'
46660          );
46661    --
46662    l_acc_rev_natural_side_code := 'D';  -- 4262811
46663    -- 
46664    --
46665    -- set accounting line type info
46666    --
46667    xla_ae_lines_pkg.SetAcctLineType
46668       (p_component_type             => l_component_type
46669       ,p_event_type_code            => l_event_type_code
46670       ,p_line_definition_owner_code => l_line_definition_owner_code
46671       ,p_line_definition_code       => l_line_definition_code
46672       ,p_accounting_line_code       => l_component_code
46673       ,p_accounting_line_type_code  => l_component_type_code
46674       ,p_accounting_line_appl_id    => l_component_appl_id
46675       ,p_amb_context_code           => l_amb_context_code
46676       ,p_entity_code                => l_entity_code
46677       ,p_event_class_code           => l_event_class_code);
46678    --
46679    -- set accounting class
46680    --
46681    xla_ae_lines_pkg.SetAcctClass(
46682            p_accounting_class_code  => 'PO_PA_BURDENED'
46683          , p_ae_header_id           => l_ae_header_id
46684          );
46685 
46686    --
46687    -- set rounding class
46688    --
46689    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46690                       'PO_PA_BURDENED';
46691 
46692    --
46693    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46694    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46695    --
46696    -- bulk performance
46697    --
46698    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46699 
46700    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46701       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46702 
46703    -- 4955764
46704    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46705       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46706 
46707    -- 4458381 Public Sector Enh
46708       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
46709    --
46710    -- set accounting attributes for the line type
46711    --
46712    l_entered_amt_idx := 40;
46713    l_accted_amt_idx  := 46;
46714    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
46715    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46716    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
46717    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
46718    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
46719    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
46720    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
46721    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
46722    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
46723    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
46724    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
46725    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
46726    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
46727    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
46728    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
46729    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
46730    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
46731    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
46732    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
46733    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
46734    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
46735    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
46736    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
46737    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
46738    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
46739    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
46740    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
46741    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
46742    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
46743    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
46744    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
46745    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
46746    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
46747    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
46748    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
46749    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
46750    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
46751    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
46752    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
46753    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
46757    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
46754    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
46755    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46756    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
46758    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
46759    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
46760    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
46761    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46762    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
46763    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
46764    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
46765    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
46766    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
46767    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
46768    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
46769    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
46770    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
46771    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
46772    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
46773    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
46774    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
46775    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
46776    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
46777    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
46778    l_rec_acct_attrs.array_char_value(32)  := 
46779 xla_ae_sources_pkg.GetSystemSourceChar(
46780    p_source_code           => 'XLA_CURRENCY_CODE'
46781  , p_source_type_code      => 'Y'
46782  , p_source_application_id =>  602
46783 );
46784    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
46785    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
46786    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
46787    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
46788    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
46789    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
46790    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
46791    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
46792    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
46793    l_rec_acct_attrs.array_char_value(37)  := 
46794 xla_ae_sources_pkg.GetSystemSourceChar(
46795    p_source_code           => 'XLA_CURRENCY_CODE'
46796  , p_source_type_code      => 'Y'
46797  , p_source_application_id =>  602
46798 );
46799    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
46800    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
46801    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
46802    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
46803    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
46804    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
46805    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
46806    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
46807    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
46808    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
46809    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
46810    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
46811    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
46812    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
46813    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
46814    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_32);
46815    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
46816    l_rec_acct_attrs.array_num_value(46)  := p_source_46;
46817    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
46818    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_32);
46819    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
46820    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_35);
46821    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
46822    l_rec_acct_attrs.array_char_value(49)  := p_source_34;
46823    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
46824    l_rec_acct_attrs.array_num_value(50)  := p_source_56;
46825    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
46826    l_rec_acct_attrs.array_num_value(51)  := p_source_57;
46827 
46828    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46829    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46830 
46831    ---------------------------------------------------------------------------------------------------------------
46832    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46833    ---------------------------------------------------------------------------------------------------------------
46834    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46835 
46836    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46837    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46838 
46839    IF xla_accounting_cache_pkg.GetValueChar
46843 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46840          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46841          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46842    AND l_bflow_method_code = 'PRIOR_ENTRY'
46844    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46845          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46846        )
46847    THEN
46848          xla_ae_lines_pkg.BflowUpgEntry
46849            (p_business_method_code    => l_bflow_method_code
46850            ,p_business_class_code     => l_bflow_class_code
46851            ,p_balance_type            => l_balance_type_code);
46852    ELSE
46853       NULL;
46854 -- No business flow processing for business flow method of NONE.
46855    END IF;
46856 
46857    --
46858    -- call analytical criteria
46859    --
46860    
46861    --
46862    -- call description
46863    --
46864    -- No description or it is inherited.
46865    --
46866    -- call ADRs
46867    -- Bug 4922099
46868    --
46869    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46870         (NVL(l_actual_upg_option, 'N') = 'O') OR
46871         (NVL(l_enc_upg_option, 'N') = 'O')
46872       )
46873    THEN
46874    NULL;
46875    --
46876    --
46877    
46878   l_ccid := AcctDerRule_2(
46879            p_application_id           => p_application_id
46880          , p_ae_header_id             => l_ae_header_id 
46881 , p_source_2 => p_source_2
46882          , x_transaction_coa_id       => l_adr_transaction_coa_id
46883          , x_accounting_coa_id        => l_adr_accounting_coa_id
46884          , x_value_type_code          => l_adr_value_type_code
46885          , p_side                     => 'NA'
46886    );
46887 
46888    xla_ae_lines_pkg.set_ccid(
46889     p_code_combination_id          => l_ccid
46890   , p_value_type_code              => l_adr_value_type_code
46891   , p_transaction_coa_id           => l_adr_transaction_coa_id
46892   , p_accounting_coa_id            => l_adr_accounting_coa_id
46893   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
46894   , p_adr_type_code                => 'S'
46895   , p_component_type               => l_component_type
46896   , p_component_code               => l_component_code
46897   , p_component_type_code          => l_component_type_code
46898   , p_component_appl_id            => l_component_appl_id
46899   , p_amb_context_code             => l_amb_context_code
46900   , p_side                         => 'NA'
46901   );
46902 
46903 
46904    --
46905    --
46906    END IF;
46907    --
46908    -- Bug 4922099
46909    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46910           (NVL(l_enc_upg_option, 'N') = 'O')
46911         ) AND
46912         (l_bflow_method_code = 'PRIOR_ENTRY')
46913       )
46914    THEN
46915       IF
46916       --
46917       1 = 2
46918       --
46919       THEN
46920       xla_accounting_err_pkg.build_message
46921                                     (p_appli_s_name            => 'XLA'
46922                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46923                                     ,p_token_1                 => 'LINE_NUMBER'
46924                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46925                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46926                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46927                                                                              l_component_type
46928                                                                             ,l_component_code
46929                                                                             ,l_component_type_code
46930                                                                             ,l_component_appl_id
46931                                                                             ,l_amb_context_code
46932                                                                             ,l_entity_code
46933                                                                             ,l_event_class_code
46934                                                                            )
46935                                     ,p_token_3                 => 'OWNER'
46936                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46937                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46938                                                                           ,p_lookup_code    => l_component_type_code
46939                                                                          )
46940                                     ,p_token_4                 => 'PRODUCT_NAME'
46941                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46942                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46943                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46944                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46945                                     ,p_ae_header_id            =>  NULL
46946                                        );
46947 
46948         IF (C_LEVEL_ERROR>= g_log_level) THEN
46949                  trace
46953         END IF;
46950                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46951                       ,p_level    => C_LEVEL_ERROR
46952                       ,p_module   => l_log_module);
46954       END IF;
46955    END IF;
46956    --
46957    --
46958    ------------------------------------------------------------------------------------------------
46959    -- 4219869 Business Flow
46960    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46961    -- Prior Entry.  Currently, the following code is always generated.
46962    ------------------------------------------------------------------------------------------------
46963    XLA_AE_LINES_PKG.ValidateCurrentLine;
46964 
46965    ------------------------------------------------------------------------------------
46966    -- 4219869 Business Flow
46967    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46968    ------------------------------------------------------------------------------------
46969    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46970 
46971    ----------------------------------------------------------------------------------
46972    -- 4219869 Business Flow
46973    -- Update journal entry status -- Need to generate this within IF <condition>
46974    ----------------------------------------------------------------------------------
46975    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46976          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46977          ,p_balance_type_code => l_balance_type_code
46978          );
46979 
46980    -------------------------------------------------------------------------------------------
46981    -- 4262811 - Generate the Accrual Reversal lines
46982    -------------------------------------------------------------------------------------------
46983    BEGIN
46984       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46985                               (g_array_event(p_event_id).array_value_num('header_index'));
46986       IF l_acc_rev_flag IS NULL THEN
46987          l_acc_rev_flag := 'N';
46988       END IF;
46989    EXCEPTION
46990       WHEN OTHERS THEN
46991          l_acc_rev_flag := 'N';
46992    END;
46993    --
46994    IF (l_acc_rev_flag = 'Y') THEN
46995 
46996        -- 4645092  ------------------------------------------------------------------------------
46997        -- To allow MPA report to determine if it should generate report process
46998        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46999        ------------------------------------------------------------------------------------------
47000 
47001        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47002        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47003 
47004        --
47005        -- Update the line information that should be overwritten
47006        --
47007        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47008                                          p_header_num   => 1);
47009        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47010 
47011        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47012 
47013        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47014           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47015        END IF;
47016 
47017       --
47018       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47019       --
47020       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47021           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47022       ELSE
47023           ---------------------------------------------------------------------------------------------------
47024           -- 4262811a Switch Sign
47025           ---------------------------------------------------------------------------------------------------
47026           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47027           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47028                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47029           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47030                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47031           -- 5132302
47032           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47033                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47034 
47035       END IF;
47036 
47037       -- 4955764
47038       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47039       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47040 
47041 
47042       XLA_AE_LINES_PKG.ValidateCurrentLine;
47043       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47044 
47045       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47046                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47047                ,p_balance_type_code => l_balance_type_code);
47048 
47049    END IF;
47050 
47051    -----------------------------------------------------------------------------------------
47055 
47052    -- 4262811 Multiperiod Accounting
47053    -----------------------------------------------------------------------------------------
47054      -- No MPA option is assigned.
47056 
47057 END IF;
47058 END IF;
47059 --
47060 
47061 --
47062 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47063    trace
47064       (p_msg      => 'END of AcctLineType_96'
47065       ,p_level    => C_LEVEL_PROCEDURE
47066       ,p_module   => l_log_module);
47067 END IF;
47068 --
47069 EXCEPTION
47070   WHEN xla_exceptions_pkg.application_exception THEN
47071       RAISE;
47072   WHEN OTHERS THEN
47073        xla_exceptions_pkg.raise_message
47074            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_96');
47075 END AcctLineType_96;
47076 --
47077 
47078 ---------------------------------------
47079 --
47080 -- PRIVATE FUNCTION
47081 --         AcctLineType_97
47082 --
47083 ---------------------------------------
47084 PROCEDURE AcctLineType_97 (
47085   p_application_id        IN NUMBER
47086  ,p_event_id              IN NUMBER
47087  ,p_calculate_acctd_flag  IN VARCHAR2
47088  ,p_calculate_g_l_flag    IN VARCHAR2
47089  ,p_actual_flag           IN OUT VARCHAR2
47090  ,p_balance_type_code     OUT VARCHAR2
47091  ,p_gain_or_loss_ref      OUT VARCHAR2
47092  
47093 --Budget Code Combination ID
47094  , p_source_2            IN NUMBER
47095 --Cost CCID
47096  , p_source_3            IN NUMBER
47097 --Cost Clearing CCID
47098  , p_source_6            IN NUMBER
47099 --Reversing Line Flag
47100  , p_source_22            IN VARCHAR2
47101 --Actual Upgrade Credit Accounting Class
47102  , p_source_23            IN VARCHAR2
47103 --Entered Currency Code
47104  , p_source_25            IN VARCHAR2
47105 --Exchange Rate Date
47106  , p_source_27            IN DATE
47107 --Exchange Rate
47108  , p_source_28            IN NUMBER
47109 --Exchange Rate Type
47110  , p_source_29            IN VARCHAR2
47111 --Actual Upgrade Debit Accounting Class
47112  , p_source_30            IN VARCHAR2
47113 --Use Actuals Upgrade Attributes Flag
47114  , p_source_31            IN VARCHAR2
47115 --Expenditure Item ID
47116  , p_source_32            IN NUMBER
47117 --Cost Distribution Line Number
47118  , p_source_33            IN NUMBER
47119 --Line Type
47120  , p_source_34            IN VARCHAR2
47121  , p_source_34_meaning    IN VARCHAR2
47122 --Reversed Line Number
47123  , p_source_35            IN NUMBER
47124 --Entered Burdened Cost
47125  , p_source_44            IN NUMBER
47126 --Accounted Burdened Cost
47127  , p_source_45            IN NUMBER
47128 --Encumbrance Amount
47129  , p_source_46            IN NUMBER
47130 --Project Encumbrance Applied to Application Identifier
47131  , p_source_47            IN NUMBER
47132 --Project Encumbrance Applied to Distribution Type
47133  , p_source_48            IN VARCHAR2
47134 --Project Encumbrance Applied to Entity Code
47135  , p_source_49            IN VARCHAR2
47136 --Project Encumbrance Applied to First Distribution ID
47137  , p_source_50            IN NUMBER
47138 --Project Encumbrance Applied to First System Transaction ID
47139  , p_source_51            IN NUMBER
47140 --Project Encumbrance Applied to Second Distribution ID
47141  , p_source_52            IN VARCHAR2
47142 --Encumbrance Upgrade Credit Accounting Class
47143  , p_source_53            IN VARCHAR2
47144 --Encumbrance Upgrade Debit Accounting Class
47145  , p_source_54            IN VARCHAR2
47146 --Use Encumbrance Upgrade Attributes Flag
47147  , p_source_55            IN VARCHAR2
47148 --Encumbrance Type ID
47149  , p_source_56            IN NUMBER
47150 --Project Encumbrance Type ID
47151  , p_source_57            IN NUMBER
47152 --Document Type
47153  , p_source_69            IN VARCHAR2
47154  , p_source_69_meaning    IN VARCHAR2
47155 --Release ID
47156  , p_source_71            IN NUMBER
47157 --Contingent Worker Timecard Flag
47158  , p_source_72            IN VARCHAR2
47159 )
47160 IS
47161 
47162 l_component_type              VARCHAR2(80);
47163 l_component_code              VARCHAR2(30);
47164 l_component_type_code         VARCHAR2(1);
47165 l_component_appl_id           INTEGER;
47166 l_amb_context_code            VARCHAR2(30);
47167 l_entity_code                 VARCHAR2(30);
47168 l_event_class_code            VARCHAR2(30);
47169 l_ae_header_id                NUMBER;
47170 l_event_type_code             VARCHAR2(30);
47171 l_line_definition_code        VARCHAR2(30);
47172 l_line_definition_owner_code  VARCHAR2(1);
47173 --
47174 -- adr variables
47175 l_segment                     VARCHAR2(30);
47176 l_ccid                        NUMBER;
47177 l_adr_transaction_coa_id      NUMBER;
47178 l_adr_accounting_coa_id       NUMBER;
47179 l_adr_flexfield_segment_code  VARCHAR2(30);
47180 l_adr_flex_value_set_id       NUMBER;
47181 l_adr_value_type_code         VARCHAR2(30);
47182 l_adr_value_combination_id    NUMBER;
47183 l_adr_value_segment_code      VARCHAR2(30);
47184 
47185 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47186 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47187 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47188 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47189 
47190 -- 4262811 Variables ------------------------------------------------------------------------------------------
47191 l_entered_amt_idx             NUMBER;
47192 l_accted_amt_idx              NUMBER;
47196 l_acc_rev_natural_side_code   VARCHAR2(1);
47193 l_acc_rev_flag                VARCHAR2(1);
47194 l_accrual_line_num            NUMBER;
47195 l_tmp_amt                     NUMBER;
47197 
47198 l_num_entries                 NUMBER;
47199 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47200 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47201 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47202 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47203 l_recog_line_1                NUMBER;
47204 l_recog_line_2                NUMBER;
47205 
47206 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47207 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47208 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47209 
47210 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47211 
47212 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47213 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47214 
47215 ---------------------------------------------------------------------------------------------------------------
47216 
47217 
47218 --
47219 -- bulk performance
47220 --
47221 l_balance_type_code           VARCHAR2(1);
47222 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47223 l_log_module                  VARCHAR2(240);
47224 
47225 --
47226 -- Upgrade strategy
47227 --
47228 l_actual_upg_option           VARCHAR2(1);
47229 l_enc_upg_option           VARCHAR2(1);
47230 
47231 --
47232 BEGIN
47233 --
47234 IF g_log_enabled THEN
47235       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
47236 END IF;
47237 --
47238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47239 
47240       trace
47241          (p_msg      => 'BEGIN of AcctLineType_97'
47242          ,p_level    => C_LEVEL_PROCEDURE
47243          ,p_module   => l_log_module);
47244 
47245 END IF;
47246 --
47247 l_component_type             := 'AMB_JLT';
47248 l_component_code             := 'REL_CWK_PO_BURDEN_ENC';
47249 l_component_type_code        := 'S';
47250 l_component_appl_id          :=  275;
47251 l_amb_context_code           := 'DEFAULT';
47252 l_entity_code                := 'EXPENDITURES';
47253 l_event_class_code           := 'BURDEN_COST';
47254 l_event_type_code            := 'BURDEN_COST_ALL';
47255 l_line_definition_owner_code := 'S';
47256 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
47257 --
47258 l_balance_type_code          := 'E';
47259 l_segment                     := NULL;
47260 l_ccid                        := NULL;
47261 l_adr_transaction_coa_id      := NULL;
47262 l_adr_accounting_coa_id       := NULL;
47263 l_adr_flexfield_segment_code  := NULL;
47264 l_adr_flex_value_set_id       := NULL;
47265 l_adr_value_type_code         := NULL;
47266 l_adr_value_combination_id    := NULL;
47267 l_adr_value_segment_code      := NULL;
47268 
47269 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47270 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
47271 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47272 l_budgetary_control_flag     := 'N';
47273 
47274 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47275 l_bflow_applied_to_amt       := NULL; -- 5132302
47276 l_entered_amt_idx            := NULL;          -- 4262811
47277 l_accted_amt_idx             := NULL;          -- 4262811
47278 l_acc_rev_flag               := NULL;          -- 4262811
47279 l_accrual_line_num           := NULL;          -- 4262811
47280 l_tmp_amt                    := NULL;          -- 4262811
47281 --
47282  
47283 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47284     l_balance_type_code <> 'B' THEN
47285 IF NVL(p_source_34,'
47286 ') =  'E' AND 
47287 NVL(p_source_69,'
47288 ') =  'PO' AND 
47289 p_source_71 IS NULL AND 
47290 NVL(p_source_72,'
47291 ') =  'Y'
47292  THEN 
47293 
47294    --
47295    XLA_AE_LINES_PKG.SetNewLine;
47296 
47297    p_balance_type_code          := l_balance_type_code;
47298    -- set the flag so later we will know whether the gain loss line needs to be created
47299    
47300    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47301      p_actual_flag :='A';
47302    END IF;
47303 
47304    --
47305    -- bulk performance
47306    --
47307    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47308                                       p_header_num   => 0); -- 4262811
47309    --
47310    -- set accounting line options
47311    --
47312    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47313            p_natural_side_code          => 'C'
47314          , p_gain_or_loss_flag          => 'N'
47315          , p_gl_transfer_mode_code      => 'S'
47316          , p_acct_entry_type_code       => 'E'
47317          , p_switch_side_flag           => 'N'
47318          , p_merge_duplicate_code       => 'N'
47319          );
47320    --
47321    l_acc_rev_natural_side_code := 'D';  -- 4262811
47322    -- 
47323    --
47324    -- set accounting line type info
47325    --
47326    xla_ae_lines_pkg.SetAcctLineType
47330       ,p_line_definition_code       => l_line_definition_code
47327       (p_component_type             => l_component_type
47328       ,p_event_type_code            => l_event_type_code
47329       ,p_line_definition_owner_code => l_line_definition_owner_code
47331       ,p_accounting_line_code       => l_component_code
47332       ,p_accounting_line_type_code  => l_component_type_code
47333       ,p_accounting_line_appl_id    => l_component_appl_id
47334       ,p_amb_context_code           => l_amb_context_code
47335       ,p_entity_code                => l_entity_code
47336       ,p_event_class_code           => l_event_class_code);
47337    --
47338    -- set accounting class
47339    --
47340    xla_ae_lines_pkg.SetAcctClass(
47341            p_accounting_class_code  => 'PO_PA_BURDEN'
47342          , p_ae_header_id           => l_ae_header_id
47343          );
47344 
47345    --
47346    -- set rounding class
47347    --
47348    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47349                       'PO_PA_BURDEN';
47350 
47351    --
47352    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47353    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47354    --
47355    -- bulk performance
47356    --
47357    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47358 
47359    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47360       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47361 
47362    -- 4955764
47363    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47364       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47365 
47366    -- 4458381 Public Sector Enh
47367       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
47368    --
47369    -- set accounting attributes for the line type
47370    --
47371    l_entered_amt_idx := 40;
47372    l_accted_amt_idx  := 45;
47373    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
47374    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
47375    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
47376    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
47377    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
47378    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
47379    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
47380    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
47381    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
47382    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
47383    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
47384    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
47385    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
47386    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
47387    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
47388    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
47389    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
47390    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
47391    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
47392    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
47393    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
47394    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
47395    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
47396    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
47397    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
47398    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
47399    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
47400    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
47401    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
47402    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
47403    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
47404    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
47405    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
47406    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
47407    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
47408    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
47409    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
47410    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
47411    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
47412    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
47413    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
47414    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
47415    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
47416    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
47417    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
47418    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
47419    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
47420    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
47421    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
47425    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
47422    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
47423    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
47424    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
47426    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
47427    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
47428    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
47429    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
47430    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
47431    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
47432    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
47433    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
47434    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
47435    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
47436    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
47437    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
47438    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
47439    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
47440    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
47441    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
47442    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
47443    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
47444    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
47445    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
47446    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
47447    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
47448    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
47449    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
47450    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
47451    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
47452    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
47453    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
47454    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
47455    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
47456    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
47457    l_rec_acct_attrs.array_date_value(42)  := p_source_27;
47458    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
47459    l_rec_acct_attrs.array_num_value(43)  := p_source_28;
47460    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
47461    l_rec_acct_attrs.array_char_value(44)  := p_source_29;
47462    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
47463    l_rec_acct_attrs.array_num_value(45)  := p_source_46;
47464    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
47465    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_32);
47466    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
47467    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_35);
47468    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
47469    l_rec_acct_attrs.array_char_value(48)  := p_source_34;
47470    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
47471    l_rec_acct_attrs.array_num_value(49)  := p_source_56;
47472    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
47473    l_rec_acct_attrs.array_num_value(50)  := p_source_57;
47474 
47475    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47476    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47477 
47478    ---------------------------------------------------------------------------------------------------------------
47479    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47480    ---------------------------------------------------------------------------------------------------------------
47481    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47482 
47483    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47484    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47485 
47486    IF xla_accounting_cache_pkg.GetValueChar
47487          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47488          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47489    AND l_bflow_method_code = 'PRIOR_ENTRY'
47490 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47491    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47492          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47493        )
47494    THEN
47495          xla_ae_lines_pkg.BflowUpgEntry
47496            (p_business_method_code    => l_bflow_method_code
47497            ,p_business_class_code     => l_bflow_class_code
47498            ,p_balance_type            => l_balance_type_code);
47499    ELSE
47500       NULL;
47501 -- No business flow processing for business flow method of NONE.
47502    END IF;
47503 
47504    --
47505    -- call analytical criteria
47506    --
47507    
47508    --
47509    -- call description
47510    --
47511    -- No description or it is inherited.
47512    --
47513    -- call ADRs
47514    -- Bug 4922099
47515    --
47516    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47517         (NVL(l_actual_upg_option, 'N') = 'O') OR
47521    NULL;
47518         (NVL(l_enc_upg_option, 'N') = 'O')
47519       )
47520    THEN
47522    --
47523    --
47524    
47525   l_ccid := AcctDerRule_2(
47526            p_application_id           => p_application_id
47527          , p_ae_header_id             => l_ae_header_id 
47528 , p_source_2 => p_source_2
47529          , x_transaction_coa_id       => l_adr_transaction_coa_id
47530          , x_accounting_coa_id        => l_adr_accounting_coa_id
47531          , x_value_type_code          => l_adr_value_type_code
47532          , p_side                     => 'NA'
47533    );
47534 
47535    xla_ae_lines_pkg.set_ccid(
47536     p_code_combination_id          => l_ccid
47537   , p_value_type_code              => l_adr_value_type_code
47538   , p_transaction_coa_id           => l_adr_transaction_coa_id
47539   , p_accounting_coa_id            => l_adr_accounting_coa_id
47540   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
47541   , p_adr_type_code                => 'S'
47542   , p_component_type               => l_component_type
47543   , p_component_code               => l_component_code
47544   , p_component_type_code          => l_component_type_code
47545   , p_component_appl_id            => l_component_appl_id
47546   , p_amb_context_code             => l_amb_context_code
47547   , p_side                         => 'NA'
47548   );
47549 
47550 
47551    --
47552    --
47553    END IF;
47554    --
47555    -- Bug 4922099
47556    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47557           (NVL(l_enc_upg_option, 'N') = 'O')
47558         ) AND
47559         (l_bflow_method_code = 'PRIOR_ENTRY')
47560       )
47561    THEN
47562       IF
47563       --
47564       1 = 2
47565       --
47566       THEN
47567       xla_accounting_err_pkg.build_message
47568                                     (p_appli_s_name            => 'XLA'
47569                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47570                                     ,p_token_1                 => 'LINE_NUMBER'
47571                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47572                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47573                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47574                                                                              l_component_type
47575                                                                             ,l_component_code
47576                                                                             ,l_component_type_code
47577                                                                             ,l_component_appl_id
47578                                                                             ,l_amb_context_code
47579                                                                             ,l_entity_code
47580                                                                             ,l_event_class_code
47581                                                                            )
47582                                     ,p_token_3                 => 'OWNER'
47583                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47584                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47585                                                                           ,p_lookup_code    => l_component_type_code
47586                                                                          )
47587                                     ,p_token_4                 => 'PRODUCT_NAME'
47588                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47589                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47590                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47591                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47592                                     ,p_ae_header_id            =>  NULL
47593                                        );
47594 
47595         IF (C_LEVEL_ERROR>= g_log_level) THEN
47596                  trace
47597                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47598                       ,p_level    => C_LEVEL_ERROR
47599                       ,p_module   => l_log_module);
47600         END IF;
47601       END IF;
47602    END IF;
47603    --
47604    --
47605    ------------------------------------------------------------------------------------------------
47606    -- 4219869 Business Flow
47607    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47608    -- Prior Entry.  Currently, the following code is always generated.
47609    ------------------------------------------------------------------------------------------------
47610    XLA_AE_LINES_PKG.ValidateCurrentLine;
47611 
47612    ------------------------------------------------------------------------------------
47613    -- 4219869 Business Flow
47614    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47615    ------------------------------------------------------------------------------------
47616    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47617 
47618    ----------------------------------------------------------------------------------
47619    -- 4219869 Business Flow
47623          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47620    -- Update journal entry status -- Need to generate this within IF <condition>
47621    ----------------------------------------------------------------------------------
47622    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47624          ,p_balance_type_code => l_balance_type_code
47625          );
47626 
47627    -------------------------------------------------------------------------------------------
47628    -- 4262811 - Generate the Accrual Reversal lines
47629    -------------------------------------------------------------------------------------------
47630    BEGIN
47631       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47632                               (g_array_event(p_event_id).array_value_num('header_index'));
47633       IF l_acc_rev_flag IS NULL THEN
47634          l_acc_rev_flag := 'N';
47635       END IF;
47636    EXCEPTION
47637       WHEN OTHERS THEN
47638          l_acc_rev_flag := 'N';
47639    END;
47640    --
47641    IF (l_acc_rev_flag = 'Y') THEN
47642 
47643        -- 4645092  ------------------------------------------------------------------------------
47644        -- To allow MPA report to determine if it should generate report process
47645        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47646        ------------------------------------------------------------------------------------------
47647 
47648        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47649        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47650 
47651        --
47652        -- Update the line information that should be overwritten
47653        --
47654        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47655                                          p_header_num   => 1);
47656        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47657 
47658        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47659 
47660        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47661           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47662        END IF;
47663 
47664       --
47665       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47666       --
47667       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47668           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47669       ELSE
47670           ---------------------------------------------------------------------------------------------------
47671           -- 4262811a Switch Sign
47672           ---------------------------------------------------------------------------------------------------
47673           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47674           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47675                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47676           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47677                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47678           -- 5132302
47679           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47680                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47681 
47682       END IF;
47683 
47684       -- 4955764
47685       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47686       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47687 
47688 
47689       XLA_AE_LINES_PKG.ValidateCurrentLine;
47690       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47691 
47692       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47693                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47694                ,p_balance_type_code => l_balance_type_code);
47695 
47696    END IF;
47697 
47698    -----------------------------------------------------------------------------------------
47699    -- 4262811 Multiperiod Accounting
47700    -----------------------------------------------------------------------------------------
47701      -- No MPA option is assigned.
47702 
47703 
47704 END IF;
47705 END IF;
47706 --
47707 
47708 --
47709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47710    trace
47711       (p_msg      => 'END of AcctLineType_97'
47712       ,p_level    => C_LEVEL_PROCEDURE
47713       ,p_module   => l_log_module);
47714 END IF;
47715 --
47716 EXCEPTION
47717   WHEN xla_exceptions_pkg.application_exception THEN
47718       RAISE;
47719   WHEN OTHERS THEN
47720        xla_exceptions_pkg.raise_message
47721            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_97');
47722 END AcctLineType_97;
47723 --
47724 
47725 ---------------------------------------
47726 --
47727 -- PRIVATE FUNCTION
47728 --         AcctLineType_98
47729 --
47730 ---------------------------------------
47731 PROCEDURE AcctLineType_98 (
47732   p_application_id        IN NUMBER
47733  ,p_event_id              IN NUMBER
47734  ,p_calculate_acctd_flag  IN VARCHAR2
47735  ,p_calculate_g_l_flag    IN VARCHAR2
47739  
47736  ,p_actual_flag           IN OUT VARCHAR2
47737  ,p_balance_type_code     OUT VARCHAR2
47738  ,p_gain_or_loss_ref      OUT VARCHAR2
47740 --Budget Code Combination ID
47741  , p_source_2            IN NUMBER
47742 --Cost CCID
47743  , p_source_3            IN NUMBER
47744 --Cost Clearing CCID
47745  , p_source_6            IN NUMBER
47746 --Reversing Line Flag
47747  , p_source_22            IN VARCHAR2
47748 --Actual Upgrade Credit Accounting Class
47749  , p_source_23            IN VARCHAR2
47750 --Entered Currency Code
47751  , p_source_25            IN VARCHAR2
47752 --Exchange Rate Date
47753  , p_source_27            IN DATE
47754 --Exchange Rate
47755  , p_source_28            IN NUMBER
47756 --Exchange Rate Type
47757  , p_source_29            IN VARCHAR2
47758 --Actual Upgrade Debit Accounting Class
47759  , p_source_30            IN VARCHAR2
47760 --Use Actuals Upgrade Attributes Flag
47761  , p_source_31            IN VARCHAR2
47762 --Expenditure Item ID
47763  , p_source_32            IN NUMBER
47764 --Cost Distribution Line Number
47765  , p_source_33            IN NUMBER
47766 --Line Type
47767  , p_source_34            IN VARCHAR2
47768  , p_source_34_meaning    IN VARCHAR2
47769 --Reversed Line Number
47770  , p_source_35            IN NUMBER
47771 --Entered Burdened Cost
47772  , p_source_44            IN NUMBER
47773 --Accounted Burdened Cost
47774  , p_source_45            IN NUMBER
47775 --Encumbrance Amount
47776  , p_source_46            IN NUMBER
47777 --Encumbrance Upgrade Credit Accounting Class
47778  , p_source_53            IN VARCHAR2
47779 --Encumbrance Upgrade Debit Accounting Class
47780  , p_source_54            IN VARCHAR2
47781 --Use Encumbrance Upgrade Attributes Flag
47782  , p_source_55            IN VARCHAR2
47783 --Encumbrance Type ID
47784  , p_source_56            IN NUMBER
47785 --Project Encumbrance Type ID
47786  , p_source_57            IN NUMBER
47787 --Document Type
47788  , p_source_69            IN VARCHAR2
47789  , p_source_69_meaning    IN VARCHAR2
47790 --Encumbrance Journal Lines Reversed Flag
47791  , p_source_70            IN VARCHAR2
47792 --Invoice Burden Applied to Application Identifier
47793  , p_source_73            IN NUMBER
47794 --Invoice Burden Applied to Distribution Type
47795  , p_source_74            IN VARCHAR2
47796 --Invoice Burden Applied to Entity Code
47797  , p_source_75            IN VARCHAR2
47798 --Invoice Burden Applied to First Distribution Identifier
47799  , p_source_76            IN NUMBER
47800 --Invoice Burden Applied to First System Transaction Identifier
47801  , p_source_77            IN NUMBER
47802 --Invoice Burden Applied to Second Distribution Identifier
47803  , p_source_78            IN VARCHAR2
47804 )
47805 IS
47806 
47807 l_component_type              VARCHAR2(80);
47808 l_component_code              VARCHAR2(30);
47809 l_component_type_code         VARCHAR2(1);
47810 l_component_appl_id           INTEGER;
47811 l_amb_context_code            VARCHAR2(30);
47812 l_entity_code                 VARCHAR2(30);
47813 l_event_class_code            VARCHAR2(30);
47814 l_ae_header_id                NUMBER;
47815 l_event_type_code             VARCHAR2(30);
47816 l_line_definition_code        VARCHAR2(30);
47817 l_line_definition_owner_code  VARCHAR2(1);
47818 --
47819 -- adr variables
47820 l_segment                     VARCHAR2(30);
47821 l_ccid                        NUMBER;
47822 l_adr_transaction_coa_id      NUMBER;
47823 l_adr_accounting_coa_id       NUMBER;
47824 l_adr_flexfield_segment_code  VARCHAR2(30);
47825 l_adr_flex_value_set_id       NUMBER;
47826 l_adr_value_type_code         VARCHAR2(30);
47827 l_adr_value_combination_id    NUMBER;
47828 l_adr_value_segment_code      VARCHAR2(30);
47829 
47830 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47831 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47832 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47833 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47834 
47835 -- 4262811 Variables ------------------------------------------------------------------------------------------
47836 l_entered_amt_idx             NUMBER;
47837 l_accted_amt_idx              NUMBER;
47838 l_acc_rev_flag                VARCHAR2(1);
47839 l_accrual_line_num            NUMBER;
47840 l_tmp_amt                     NUMBER;
47841 l_acc_rev_natural_side_code   VARCHAR2(1);
47842 
47843 l_num_entries                 NUMBER;
47844 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47845 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47846 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47847 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47848 l_recog_line_1                NUMBER;
47849 l_recog_line_2                NUMBER;
47850 
47851 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47852 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47853 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47854 
47855 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47856 
47857 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47858 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47859 
47863 --
47860 ---------------------------------------------------------------------------------------------------------------
47861 
47862 
47864 -- bulk performance
47865 --
47866 l_balance_type_code           VARCHAR2(1);
47867 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47868 l_log_module                  VARCHAR2(240);
47869 
47870 --
47871 -- Upgrade strategy
47872 --
47873 l_actual_upg_option           VARCHAR2(1);
47874 l_enc_upg_option           VARCHAR2(1);
47875 
47876 --
47877 BEGIN
47878 --
47879 IF g_log_enabled THEN
47880       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
47881 END IF;
47882 --
47883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47884 
47885       trace
47886          (p_msg      => 'BEGIN of AcctLineType_98'
47887          ,p_level    => C_LEVEL_PROCEDURE
47888          ,p_module   => l_log_module);
47889 
47890 END IF;
47891 --
47892 l_component_type             := 'AMB_JLT';
47893 l_component_code             := 'REL_INV_BURDENED_ENC';
47894 l_component_type_code        := 'S';
47895 l_component_appl_id          :=  275;
47896 l_amb_context_code           := 'DEFAULT';
47897 l_entity_code                := 'EXPENDITURES';
47898 l_event_class_code           := 'TOT_BURDENED_COST';
47899 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
47900 l_line_definition_owner_code := 'S';
47901 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
47902 --
47903 l_balance_type_code          := 'E';
47904 l_segment                     := NULL;
47905 l_ccid                        := NULL;
47906 l_adr_transaction_coa_id      := NULL;
47907 l_adr_accounting_coa_id       := NULL;
47908 l_adr_flexfield_segment_code  := NULL;
47909 l_adr_flex_value_set_id       := NULL;
47910 l_adr_value_type_code         := NULL;
47911 l_adr_value_combination_id    := NULL;
47912 l_adr_value_segment_code      := NULL;
47913 
47914 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
47915 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
47916 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47917 l_budgetary_control_flag     := 'N';
47918 
47919 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47920 l_bflow_applied_to_amt       := NULL; -- 5132302
47921 l_entered_amt_idx            := NULL;          -- 4262811
47922 l_accted_amt_idx             := NULL;          -- 4262811
47923 l_acc_rev_flag               := NULL;          -- 4262811
47924 l_accrual_line_num           := NULL;          -- 4262811
47925 l_tmp_amt                    := NULL;          -- 4262811
47926 --
47927  
47928 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47929     l_balance_type_code <> 'B' THEN
47930 IF NVL(p_source_34,'
47931 ') =  'E' AND 
47932 NVL(p_source_69,'
47933 ') =  'AP' AND 
47934 NVL(p_source_70,'
47935 ') <>  'Y'
47936  THEN 
47937 
47938    --
47939    XLA_AE_LINES_PKG.SetNewLine;
47940 
47941    p_balance_type_code          := l_balance_type_code;
47942    -- set the flag so later we will know whether the gain loss line needs to be created
47943    
47944    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47945      p_actual_flag :='A';
47946    END IF;
47947 
47948    --
47949    -- bulk performance
47950    --
47951    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47952                                       p_header_num   => 0); -- 4262811
47953    --
47954    -- set accounting line options
47955    --
47956    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47957            p_natural_side_code          => 'C'
47958          , p_gain_or_loss_flag          => 'N'
47959          , p_gl_transfer_mode_code      => 'S'
47960          , p_acct_entry_type_code       => 'E'
47961          , p_switch_side_flag           => 'N'
47962          , p_merge_duplicate_code       => 'N'
47963          );
47964    --
47965    l_acc_rev_natural_side_code := 'D';  -- 4262811
47966    -- 
47967    --
47968    -- set accounting line type info
47969    --
47970    xla_ae_lines_pkg.SetAcctLineType
47971       (p_component_type             => l_component_type
47972       ,p_event_type_code            => l_event_type_code
47973       ,p_line_definition_owner_code => l_line_definition_owner_code
47974       ,p_line_definition_code       => l_line_definition_code
47975       ,p_accounting_line_code       => l_component_code
47976       ,p_accounting_line_type_code  => l_component_type_code
47977       ,p_accounting_line_appl_id    => l_component_appl_id
47978       ,p_amb_context_code           => l_amb_context_code
47979       ,p_entity_code                => l_entity_code
47980       ,p_event_class_code           => l_event_class_code);
47981    --
47982    -- set accounting class
47983    --
47984    xla_ae_lines_pkg.SetAcctClass(
47985            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
47986          , p_ae_header_id           => l_ae_header_id
47987          );
47988 
47989    --
47990    -- set rounding class
47991    --
47992    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47993                       'AP_INV_PA_BURDENED';
47994 
47995    --
47999    -- bulk performance
47996    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47997    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47998    --
48000    --
48001    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48002 
48003    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48004       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48005 
48006    -- 4955764
48007    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48008       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48009 
48010    -- 4458381 Public Sector Enh
48011    
48012    --
48013    -- set accounting attributes for the line type
48014    --
48015    l_entered_amt_idx := 40;
48016    l_accted_amt_idx  := 43;
48017    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
48018    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
48019    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
48020    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
48021    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
48022    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
48023    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
48024    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
48025    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
48026    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
48027    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
48028    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
48029    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
48030    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
48031    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
48032    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
48033    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
48034    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
48035    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
48036    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
48037    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
48038    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
48039    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
48040    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
48041    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
48042    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
48043    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
48044    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
48045    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
48046    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
48047    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
48048    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
48049    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
48050    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
48051    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
48052    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
48053    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
48054    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
48055    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
48056    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
48057    l_rec_acct_attrs.array_num_value(20)  := p_source_73;
48058    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48059    l_rec_acct_attrs.array_char_value(21)  := p_source_74;
48060    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
48061    l_rec_acct_attrs.array_char_value(22)  := p_source_75;
48062    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
48063    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_76);
48064    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48065    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_77);
48066    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
48067    l_rec_acct_attrs.array_char_value(25)  := p_source_78;
48068    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
48069    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
48070    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
48071    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
48072    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
48073    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
48074    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
48075    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
48076    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
48077    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
48078    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
48079    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
48080    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
48081    l_rec_acct_attrs.array_char_value(32)  := 
48082 xla_ae_sources_pkg.GetSystemSourceChar(
48083    p_source_code           => 'XLA_CURRENCY_CODE'
48084  , p_source_type_code      => 'Y'
48085  , p_source_application_id =>  602
48086 );
48087    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
48091    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
48088    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
48089    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
48090    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
48092    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
48093    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
48094    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
48095    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
48096    l_rec_acct_attrs.array_char_value(37)  := 
48097 xla_ae_sources_pkg.GetSystemSourceChar(
48098    p_source_code           => 'XLA_CURRENCY_CODE'
48099  , p_source_type_code      => 'Y'
48100  , p_source_application_id =>  602
48101 );
48102    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
48103    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
48104    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
48105    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
48106    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
48107    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
48108    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
48109    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
48110    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
48111    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
48112    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
48113    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
48114    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
48115    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
48116    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
48117    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
48118    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
48119    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
48120    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
48121    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
48122    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
48123    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
48124 
48125    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48126    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48127 
48128    ---------------------------------------------------------------------------------------------------------------
48129    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48130    ---------------------------------------------------------------------------------------------------------------
48131    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48132 
48133    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48134    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48135 
48136    IF xla_accounting_cache_pkg.GetValueChar
48137          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48138          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48139    AND l_bflow_method_code = 'PRIOR_ENTRY'
48140 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48141    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48142          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48143        )
48144    THEN
48145          xla_ae_lines_pkg.BflowUpgEntry
48146            (p_business_method_code    => l_bflow_method_code
48147            ,p_business_class_code     => l_bflow_class_code
48148            ,p_balance_type            => l_balance_type_code);
48149    ELSE
48150       NULL;
48151 XLA_AE_LINES_PKG.business_flow_validation(
48152                                 p_business_method_code     => l_bflow_method_code
48153                                ,p_business_class_code      => l_bflow_class_code
48154                                ,p_inherit_description_flag => l_inherit_desc_flag);
48155    END IF;
48156 
48157    --
48158    -- call analytical criteria
48159    --
48160    -- Inherited Analytical Criteria for business flow method of Prior Entry.
48161    --
48162    -- call description
48163    --
48164    -- No description or it is inherited.
48165    --
48166    -- call ADRs
48167    -- Bug 4922099
48168    --
48169    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48170         (NVL(l_actual_upg_option, 'N') = 'O') OR
48171         (NVL(l_enc_upg_option, 'N') = 'O')
48172       )
48173    THEN
48174    NULL;
48175    --
48176    --
48177    
48178    --
48179    --
48180    END IF;
48181    --
48182    -- Bug 4922099
48183    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48184           (NVL(l_enc_upg_option, 'N') = 'O')
48185         ) AND
48186         (l_bflow_method_code = 'PRIOR_ENTRY')
48187       )
48188    THEN
48189       IF
48190       --
48191       1 = 1
48192       --
48193       THEN
48194       xla_accounting_err_pkg.build_message
48195                                     (p_appli_s_name            => 'XLA'
48196                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48197                                     ,p_token_1                 => 'LINE_NUMBER'
48201                                                                              l_component_type
48198                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48199                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48200                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48202                                                                             ,l_component_code
48203                                                                             ,l_component_type_code
48204                                                                             ,l_component_appl_id
48205                                                                             ,l_amb_context_code
48206                                                                             ,l_entity_code
48207                                                                             ,l_event_class_code
48208                                                                            )
48209                                     ,p_token_3                 => 'OWNER'
48210                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48211                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48212                                                                           ,p_lookup_code    => l_component_type_code
48213                                                                          )
48214                                     ,p_token_4                 => 'PRODUCT_NAME'
48215                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48216                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48217                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48218                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48219                                     ,p_ae_header_id            =>  NULL
48220                                        );
48221 
48222         IF (C_LEVEL_ERROR>= g_log_level) THEN
48223                  trace
48224                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48225                       ,p_level    => C_LEVEL_ERROR
48226                       ,p_module   => l_log_module);
48227         END IF;
48228       END IF;
48229    END IF;
48230    --
48231    --
48232    ------------------------------------------------------------------------------------------------
48233    -- 4219869 Business Flow
48234    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48235    -- Prior Entry.  Currently, the following code is always generated.
48236    ------------------------------------------------------------------------------------------------
48237    -- No ValidateCurrentLine for business flow method of Prior Entry
48238 
48239    ------------------------------------------------------------------------------------
48240    -- 4219869 Business Flow
48241    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48242    ------------------------------------------------------------------------------------
48243    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48244 
48245    ----------------------------------------------------------------------------------
48246    -- 4219869 Business Flow
48247    -- Update journal entry status -- Need to generate this within IF <condition>
48248    ----------------------------------------------------------------------------------
48249    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48250          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48251          ,p_balance_type_code => l_balance_type_code
48252          );
48253 
48254    -------------------------------------------------------------------------------------------
48255    -- 4262811 - Generate the Accrual Reversal lines
48256    -------------------------------------------------------------------------------------------
48257    BEGIN
48258       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48259                               (g_array_event(p_event_id).array_value_num('header_index'));
48260       IF l_acc_rev_flag IS NULL THEN
48261          l_acc_rev_flag := 'N';
48262       END IF;
48263    EXCEPTION
48264       WHEN OTHERS THEN
48265          l_acc_rev_flag := 'N';
48266    END;
48267    --
48268    IF (l_acc_rev_flag = 'Y') THEN
48269 
48270        -- 4645092  ------------------------------------------------------------------------------
48271        -- To allow MPA report to determine if it should generate report process
48272        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48273        ------------------------------------------------------------------------------------------
48274 
48275        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48276        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48277 
48278        --
48279        -- Update the line information that should be overwritten
48280        --
48281        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48282                                          p_header_num   => 1);
48283        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48284 
48285        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48286 
48287        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48291       --
48288           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48289        END IF;
48290 
48292       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48293       --
48294       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48295           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48296       ELSE
48297           ---------------------------------------------------------------------------------------------------
48298           -- 4262811a Switch Sign
48299           ---------------------------------------------------------------------------------------------------
48300           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48301           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48302                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48303           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48304                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48305           -- 5132302
48306           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48307                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48308 
48309       END IF;
48310 
48311       -- 4955764
48312       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48313       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48314 
48315 
48316       XLA_AE_LINES_PKG.ValidateCurrentLine;
48317       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48318 
48319       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48320                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48321                ,p_balance_type_code => l_balance_type_code);
48322 
48323    END IF;
48324 
48325    -----------------------------------------------------------------------------------------
48326    -- 4262811 Multiperiod Accounting
48327    -----------------------------------------------------------------------------------------
48328      -- No MPA option is assigned.
48329 
48330 
48331 END IF;
48332 END IF;
48333 --
48334 
48335 --
48336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48337    trace
48338       (p_msg      => 'END of AcctLineType_98'
48339       ,p_level    => C_LEVEL_PROCEDURE
48340       ,p_module   => l_log_module);
48341 END IF;
48342 --
48343 EXCEPTION
48344   WHEN xla_exceptions_pkg.application_exception THEN
48345       RAISE;
48346   WHEN OTHERS THEN
48347        xla_exceptions_pkg.raise_message
48348            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_98');
48349 END AcctLineType_98;
48350 --
48351 
48352 ---------------------------------------
48353 --
48354 -- PRIVATE FUNCTION
48355 --         AcctLineType_99
48356 --
48357 ---------------------------------------
48358 PROCEDURE AcctLineType_99 (
48359   p_application_id        IN NUMBER
48360  ,p_event_id              IN NUMBER
48361  ,p_calculate_acctd_flag  IN VARCHAR2
48362  ,p_calculate_g_l_flag    IN VARCHAR2
48363  ,p_actual_flag           IN OUT VARCHAR2
48364  ,p_balance_type_code     OUT VARCHAR2
48365  ,p_gain_or_loss_ref      OUT VARCHAR2
48366  
48367 --Budget Code Combination ID
48368  , p_source_2            IN NUMBER
48369 --Cost CCID
48370  , p_source_3            IN NUMBER
48371 --Cost Clearing CCID
48372  , p_source_6            IN NUMBER
48373 --Reversing Line Flag
48374  , p_source_22            IN VARCHAR2
48375 --Actual Upgrade Credit Accounting Class
48376  , p_source_23            IN VARCHAR2
48377 --Entered Currency Code
48378  , p_source_25            IN VARCHAR2
48379 --Exchange Rate Date
48380  , p_source_27            IN DATE
48381 --Exchange Rate
48382  , p_source_28            IN NUMBER
48383 --Exchange Rate Type
48384  , p_source_29            IN VARCHAR2
48385 --Actual Upgrade Debit Accounting Class
48386  , p_source_30            IN VARCHAR2
48387 --Use Actuals Upgrade Attributes Flag
48388  , p_source_31            IN VARCHAR2
48389 --Expenditure Item ID
48390  , p_source_32            IN NUMBER
48391 --Cost Distribution Line Number
48392  , p_source_33            IN NUMBER
48393 --Line Type
48394  , p_source_34            IN VARCHAR2
48395  , p_source_34_meaning    IN VARCHAR2
48396 --Reversed Line Number
48397  , p_source_35            IN NUMBER
48398 --Entered Burdened Cost
48399  , p_source_44            IN NUMBER
48400 --Accounted Burdened Cost
48401  , p_source_45            IN NUMBER
48402 --Encumbrance Amount
48403  , p_source_46            IN NUMBER
48404 --Encumbrance Upgrade Debit Accounting Class
48405  , p_source_54            IN VARCHAR2
48406 --Use Encumbrance Upgrade Attributes Flag
48407  , p_source_55            IN VARCHAR2
48408 --Encumbrance Type ID
48409  , p_source_56            IN NUMBER
48410 --Project Encumbrance Type ID
48411  , p_source_57            IN NUMBER
48412 --Document Type
48413  , p_source_69            IN VARCHAR2
48417 --Invoice Burden Applied to Application Identifier
48414  , p_source_69_meaning    IN VARCHAR2
48415 --Encumbrance Journal Lines Reversed Flag
48416  , p_source_70            IN VARCHAR2
48418  , p_source_73            IN NUMBER
48419 --Invoice Burden Applied to Distribution Type
48420  , p_source_74            IN VARCHAR2
48421 --Invoice Burden Applied to Entity Code
48422  , p_source_75            IN VARCHAR2
48423 --Invoice Burden Applied to First Distribution Identifier
48424  , p_source_76            IN NUMBER
48425 --Invoice Burden Applied to First System Transaction Identifier
48426  , p_source_77            IN NUMBER
48427 --Invoice Burden Applied to Second Distribution Identifier
48428  , p_source_78            IN VARCHAR2
48429 )
48430 IS
48431 
48432 l_component_type              VARCHAR2(80);
48433 l_component_code              VARCHAR2(30);
48434 l_component_type_code         VARCHAR2(1);
48435 l_component_appl_id           INTEGER;
48436 l_amb_context_code            VARCHAR2(30);
48437 l_entity_code                 VARCHAR2(30);
48438 l_event_class_code            VARCHAR2(30);
48439 l_ae_header_id                NUMBER;
48440 l_event_type_code             VARCHAR2(30);
48441 l_line_definition_code        VARCHAR2(30);
48442 l_line_definition_owner_code  VARCHAR2(1);
48443 --
48444 -- adr variables
48445 l_segment                     VARCHAR2(30);
48446 l_ccid                        NUMBER;
48447 l_adr_transaction_coa_id      NUMBER;
48448 l_adr_accounting_coa_id       NUMBER;
48449 l_adr_flexfield_segment_code  VARCHAR2(30);
48450 l_adr_flex_value_set_id       NUMBER;
48451 l_adr_value_type_code         VARCHAR2(30);
48452 l_adr_value_combination_id    NUMBER;
48453 l_adr_value_segment_code      VARCHAR2(30);
48454 
48455 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48456 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48457 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48458 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48459 
48460 -- 4262811 Variables ------------------------------------------------------------------------------------------
48461 l_entered_amt_idx             NUMBER;
48462 l_accted_amt_idx              NUMBER;
48463 l_acc_rev_flag                VARCHAR2(1);
48464 l_accrual_line_num            NUMBER;
48465 l_tmp_amt                     NUMBER;
48466 l_acc_rev_natural_side_code   VARCHAR2(1);
48467 
48468 l_num_entries                 NUMBER;
48469 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48470 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48471 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48472 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48473 l_recog_line_1                NUMBER;
48474 l_recog_line_2                NUMBER;
48475 
48476 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48477 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48478 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48479 
48480 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48481 
48482 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48483 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48484 
48485 ---------------------------------------------------------------------------------------------------------------
48486 
48487 
48488 --
48489 -- bulk performance
48490 --
48491 l_balance_type_code           VARCHAR2(1);
48492 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48493 l_log_module                  VARCHAR2(240);
48494 
48495 --
48496 -- Upgrade strategy
48497 --
48498 l_actual_upg_option           VARCHAR2(1);
48499 l_enc_upg_option           VARCHAR2(1);
48500 
48501 --
48502 BEGIN
48503 --
48504 IF g_log_enabled THEN
48505       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
48506 END IF;
48507 --
48508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48509 
48510       trace
48511          (p_msg      => 'BEGIN of AcctLineType_99'
48512          ,p_level    => C_LEVEL_PROCEDURE
48513          ,p_module   => l_log_module);
48514 
48515 END IF;
48516 --
48517 l_component_type             := 'AMB_JLT';
48518 l_component_code             := 'REL_INV_BURDENED_ENC';
48519 l_component_type_code        := 'S';
48520 l_component_appl_id          :=  275;
48521 l_amb_context_code           := 'DEFAULT';
48522 l_entity_code                := 'EXPENDITURES';
48523 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
48524 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
48525 l_line_definition_owner_code := 'S';
48526 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
48527 --
48528 l_balance_type_code          := 'E';
48529 l_segment                     := NULL;
48530 l_ccid                        := NULL;
48531 l_adr_transaction_coa_id      := NULL;
48532 l_adr_accounting_coa_id       := NULL;
48533 l_adr_flexfield_segment_code  := NULL;
48534 l_adr_flex_value_set_id       := NULL;
48535 l_adr_value_type_code         := NULL;
48536 l_adr_value_combination_id    := NULL;
48537 l_adr_value_segment_code      := NULL;
48538 
48539 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
48543 
48540 l_bflow_class_code           := 'AP_INV_PA_BURDENED_ENC';    -- 4219869 Business Flow
48541 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48542 l_budgetary_control_flag     := 'N';
48544 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48545 l_bflow_applied_to_amt       := NULL; -- 5132302
48546 l_entered_amt_idx            := NULL;          -- 4262811
48547 l_accted_amt_idx             := NULL;          -- 4262811
48548 l_acc_rev_flag               := NULL;          -- 4262811
48549 l_accrual_line_num           := NULL;          -- 4262811
48550 l_tmp_amt                    := NULL;          -- 4262811
48551 --
48552  
48553 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48554     l_balance_type_code <> 'B' THEN
48555 IF NVL(p_source_34,'
48556 ') =  'E' AND 
48557 NVL(p_source_69,'
48558 ') =  'AP' AND 
48559 NVL(p_source_70,'
48560 ') <>  'Y'
48561  THEN 
48562 
48563    --
48564    XLA_AE_LINES_PKG.SetNewLine;
48565 
48566    p_balance_type_code          := l_balance_type_code;
48567    -- set the flag so later we will know whether the gain loss line needs to be created
48568    
48569    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48570      p_actual_flag :='A';
48571    END IF;
48572 
48573    --
48574    -- bulk performance
48575    --
48576    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48577                                       p_header_num   => 0); -- 4262811
48578    --
48579    -- set accounting line options
48580    --
48581    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48582            p_natural_side_code          => 'C'
48583          , p_gain_or_loss_flag          => 'N'
48584          , p_gl_transfer_mode_code      => 'S'
48585          , p_acct_entry_type_code       => 'E'
48586          , p_switch_side_flag           => 'N'
48587          , p_merge_duplicate_code       => 'N'
48588          );
48589    --
48590    l_acc_rev_natural_side_code := 'D';  -- 4262811
48591    -- 
48592    --
48593    -- set accounting line type info
48594    --
48595    xla_ae_lines_pkg.SetAcctLineType
48596       (p_component_type             => l_component_type
48597       ,p_event_type_code            => l_event_type_code
48598       ,p_line_definition_owner_code => l_line_definition_owner_code
48599       ,p_line_definition_code       => l_line_definition_code
48600       ,p_accounting_line_code       => l_component_code
48601       ,p_accounting_line_type_code  => l_component_type_code
48602       ,p_accounting_line_appl_id    => l_component_appl_id
48603       ,p_amb_context_code           => l_amb_context_code
48604       ,p_entity_code                => l_entity_code
48605       ,p_event_class_code           => l_event_class_code);
48606    --
48607    -- set accounting class
48608    --
48609    xla_ae_lines_pkg.SetAcctClass(
48610            p_accounting_class_code  => 'AP_INV_PA_BURDENED'
48611          , p_ae_header_id           => l_ae_header_id
48612          );
48613 
48614    --
48615    -- set rounding class
48616    --
48617    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48618                       'AP_INV_PA_BURDENED';
48619 
48620    --
48621    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48622    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48623    --
48624    -- bulk performance
48625    --
48626    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48627 
48628    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48629       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48630 
48631    -- 4955764
48632    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48633       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48634 
48635    -- 4458381 Public Sector Enh
48636    
48637    --
48638    -- set accounting attributes for the line type
48639    --
48640    l_entered_amt_idx := 35;
48641    l_accted_amt_idx  := 37;
48642    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
48643    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
48644    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
48645    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
48646    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
48647    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
48648    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
48649    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
48650    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
48651    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
48652    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
48653    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
48654    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
48655    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
48656    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
48657    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
48658    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
48659    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
48663    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
48660    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
48661    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
48662    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
48664    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
48665    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
48666    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
48667    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
48668    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
48669    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
48670    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
48671    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
48672    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
48673    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
48674    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
48675    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
48676    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
48677    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
48678    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
48679    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
48680    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
48681    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
48682    l_rec_acct_attrs.array_num_value(20)  := p_source_73;
48683    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48684    l_rec_acct_attrs.array_char_value(21)  := p_source_74;
48685    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
48686    l_rec_acct_attrs.array_char_value(22)  := p_source_75;
48687    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
48688    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_76);
48689    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48690    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_77);
48691    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
48692    l_rec_acct_attrs.array_char_value(25)  := p_source_78;
48693    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
48694    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
48695    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
48696    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
48697    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
48698    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
48699    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
48700    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
48701    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
48702    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
48703    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
48704    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
48705    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
48706    l_rec_acct_attrs.array_char_value(32)  := 
48707 xla_ae_sources_pkg.GetSystemSourceChar(
48708    p_source_code           => 'XLA_CURRENCY_CODE'
48709  , p_source_type_code      => 'Y'
48710  , p_source_application_id =>  602
48711 );
48712    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
48713    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
48714    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
48715    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
48716    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
48717    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
48718    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
48719    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
48720    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
48721    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
48722    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
48723    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
48724    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
48725    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
48726    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
48727    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
48728    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
48729    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
48730    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
48731    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
48732 
48733    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48734    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48735 
48736    ---------------------------------------------------------------------------------------------------------------
48737    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48738    ---------------------------------------------------------------------------------------------------------------
48739    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48740 
48741    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48742    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48743 
48744    IF xla_accounting_cache_pkg.GetValueChar
48748 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48745          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48746          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48747    AND l_bflow_method_code = 'PRIOR_ENTRY'
48749    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48750          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48751        )
48752    THEN
48753          xla_ae_lines_pkg.BflowUpgEntry
48754            (p_business_method_code    => l_bflow_method_code
48755            ,p_business_class_code     => l_bflow_class_code
48756            ,p_balance_type            => l_balance_type_code);
48757    ELSE
48758       NULL;
48759 XLA_AE_LINES_PKG.business_flow_validation(
48760                                 p_business_method_code     => l_bflow_method_code
48761                                ,p_business_class_code      => l_bflow_class_code
48762                                ,p_inherit_description_flag => l_inherit_desc_flag);
48763    END IF;
48764 
48765    --
48766    -- call analytical criteria
48767    --
48768    -- Inherited Analytical Criteria for business flow method of Prior Entry.
48769    --
48770    -- call description
48771    --
48772    -- No description or it is inherited.
48773    --
48774    -- call ADRs
48775    -- Bug 4922099
48776    --
48777    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48778         (NVL(l_actual_upg_option, 'N') = 'O') OR
48779         (NVL(l_enc_upg_option, 'N') = 'O')
48780       )
48781    THEN
48782    NULL;
48783    --
48784    --
48785    
48786    --
48787    --
48788    END IF;
48789    --
48790    -- Bug 4922099
48791    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48792           (NVL(l_enc_upg_option, 'N') = 'O')
48793         ) AND
48794         (l_bflow_method_code = 'PRIOR_ENTRY')
48795       )
48796    THEN
48797       IF
48798       --
48799       1 = 1
48800       --
48801       THEN
48802       xla_accounting_err_pkg.build_message
48803                                     (p_appli_s_name            => 'XLA'
48804                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48805                                     ,p_token_1                 => 'LINE_NUMBER'
48806                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48807                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48808                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48809                                                                              l_component_type
48810                                                                             ,l_component_code
48811                                                                             ,l_component_type_code
48812                                                                             ,l_component_appl_id
48813                                                                             ,l_amb_context_code
48814                                                                             ,l_entity_code
48815                                                                             ,l_event_class_code
48816                                                                            )
48817                                     ,p_token_3                 => 'OWNER'
48818                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48819                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48820                                                                           ,p_lookup_code    => l_component_type_code
48821                                                                          )
48822                                     ,p_token_4                 => 'PRODUCT_NAME'
48823                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48824                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48825                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48826                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48827                                     ,p_ae_header_id            =>  NULL
48828                                        );
48829 
48830         IF (C_LEVEL_ERROR>= g_log_level) THEN
48831                  trace
48832                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48833                       ,p_level    => C_LEVEL_ERROR
48834                       ,p_module   => l_log_module);
48835         END IF;
48836       END IF;
48837    END IF;
48838    --
48839    --
48840    ------------------------------------------------------------------------------------------------
48841    -- 4219869 Business Flow
48842    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48843    -- Prior Entry.  Currently, the following code is always generated.
48844    ------------------------------------------------------------------------------------------------
48845    -- No ValidateCurrentLine for business flow method of Prior Entry
48846 
48847    ------------------------------------------------------------------------------------
48848    -- 4219869 Business Flow
48852 
48849    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48850    ------------------------------------------------------------------------------------
48851    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48853    ----------------------------------------------------------------------------------
48854    -- 4219869 Business Flow
48855    -- Update journal entry status -- Need to generate this within IF <condition>
48856    ----------------------------------------------------------------------------------
48857    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48858          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48859          ,p_balance_type_code => l_balance_type_code
48860          );
48861 
48862    -------------------------------------------------------------------------------------------
48863    -- 4262811 - Generate the Accrual Reversal lines
48864    -------------------------------------------------------------------------------------------
48865    BEGIN
48866       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48867                               (g_array_event(p_event_id).array_value_num('header_index'));
48868       IF l_acc_rev_flag IS NULL THEN
48869          l_acc_rev_flag := 'N';
48870       END IF;
48871    EXCEPTION
48872       WHEN OTHERS THEN
48873          l_acc_rev_flag := 'N';
48874    END;
48875    --
48876    IF (l_acc_rev_flag = 'Y') THEN
48877 
48878        -- 4645092  ------------------------------------------------------------------------------
48879        -- To allow MPA report to determine if it should generate report process
48880        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48881        ------------------------------------------------------------------------------------------
48882 
48883        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48884        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48885 
48886        --
48887        -- Update the line information that should be overwritten
48888        --
48889        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48890                                          p_header_num   => 1);
48891        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48892 
48893        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48894 
48895        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48896           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48897        END IF;
48898 
48899       --
48900       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48901       --
48902       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48903           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48904       ELSE
48905           ---------------------------------------------------------------------------------------------------
48906           -- 4262811a Switch Sign
48907           ---------------------------------------------------------------------------------------------------
48908           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48909           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48910                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48911           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48912                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48913           -- 5132302
48914           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48915                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48916 
48917       END IF;
48918 
48919       -- 4955764
48920       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48921       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48922 
48923 
48924       XLA_AE_LINES_PKG.ValidateCurrentLine;
48925       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48926 
48927       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48928                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48929                ,p_balance_type_code => l_balance_type_code);
48930 
48931    END IF;
48932 
48933    -----------------------------------------------------------------------------------------
48934    -- 4262811 Multiperiod Accounting
48935    -----------------------------------------------------------------------------------------
48936      -- No MPA option is assigned.
48937 
48938 
48939 END IF;
48940 END IF;
48941 --
48942 
48943 --
48944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48945    trace
48946       (p_msg      => 'END of AcctLineType_99'
48947       ,p_level    => C_LEVEL_PROCEDURE
48948       ,p_module   => l_log_module);
48949 END IF;
48950 --
48951 EXCEPTION
48952   WHEN xla_exceptions_pkg.application_exception THEN
48953       RAISE;
48954   WHEN OTHERS THEN
48955        xla_exceptions_pkg.raise_message
48959 
48956            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_99');
48957 END AcctLineType_99;
48958 --
48960 ---------------------------------------
48961 --
48962 -- PRIVATE FUNCTION
48963 --         AcctLineType_100
48964 --
48965 ---------------------------------------
48966 PROCEDURE AcctLineType_100 (
48967   p_application_id        IN NUMBER
48968  ,p_event_id              IN NUMBER
48969  ,p_calculate_acctd_flag  IN VARCHAR2
48970  ,p_calculate_g_l_flag    IN VARCHAR2
48971  ,p_actual_flag           IN OUT VARCHAR2
48972  ,p_balance_type_code     OUT VARCHAR2
48973  ,p_gain_or_loss_ref      OUT VARCHAR2
48974  
48975 --Budget Code Combination ID
48976  , p_source_2            IN NUMBER
48977 --Cost CCID
48978  , p_source_3            IN NUMBER
48979 --Cost Clearing CCID
48980  , p_source_6            IN NUMBER
48981 --Reversing Line Flag
48982  , p_source_22            IN VARCHAR2
48983 --Actual Upgrade Credit Accounting Class
48984  , p_source_23            IN VARCHAR2
48985 --Entered Currency Code
48986  , p_source_25            IN VARCHAR2
48987 --Exchange Rate Date
48988  , p_source_27            IN DATE
48989 --Exchange Rate
48990  , p_source_28            IN NUMBER
48991 --Exchange Rate Type
48992  , p_source_29            IN VARCHAR2
48993 --Actual Upgrade Debit Accounting Class
48994  , p_source_30            IN VARCHAR2
48995 --Use Actuals Upgrade Attributes Flag
48996  , p_source_31            IN VARCHAR2
48997 --Expenditure Item ID
48998  , p_source_32            IN NUMBER
48999 --Cost Distribution Line Number
49000  , p_source_33            IN NUMBER
49001 --Line Type
49002  , p_source_34            IN VARCHAR2
49003  , p_source_34_meaning    IN VARCHAR2
49004 --Reversed Line Number
49005  , p_source_35            IN NUMBER
49006 --Entered Burdened Cost
49007  , p_source_44            IN NUMBER
49008 --Accounted Burdened Cost
49009  , p_source_45            IN NUMBER
49010 --Encumbrance Amount
49011  , p_source_46            IN NUMBER
49012 --Encumbrance Upgrade Credit Accounting Class
49013  , p_source_53            IN VARCHAR2
49014 --Encumbrance Upgrade Debit Accounting Class
49015  , p_source_54            IN VARCHAR2
49016 --Use Encumbrance Upgrade Attributes Flag
49017  , p_source_55            IN VARCHAR2
49018 --Encumbrance Type ID
49019  , p_source_56            IN NUMBER
49020 --Project Encumbrance Type ID
49021  , p_source_57            IN NUMBER
49022 --Document Type
49023  , p_source_69            IN VARCHAR2
49024  , p_source_69_meaning    IN VARCHAR2
49025 --Encumbrance Journal Lines Reversed Flag
49026  , p_source_70            IN VARCHAR2
49027 --Invoice Burden Applied to Application Identifier
49028  , p_source_73            IN NUMBER
49029 --Invoice Burden Applied to Distribution Type
49030  , p_source_74            IN VARCHAR2
49031 --Invoice Burden Applied to Entity Code
49032  , p_source_75            IN VARCHAR2
49033 --Invoice Burden Applied to First Distribution Identifier
49034  , p_source_76            IN NUMBER
49035 --Invoice Burden Applied to First System Transaction Identifier
49036  , p_source_77            IN NUMBER
49037 --Invoice Burden Applied to Second Distribution Identifier
49038  , p_source_78            IN VARCHAR2
49039 )
49040 IS
49041 
49042 l_component_type              VARCHAR2(80);
49043 l_component_code              VARCHAR2(30);
49044 l_component_type_code         VARCHAR2(1);
49045 l_component_appl_id           INTEGER;
49046 l_amb_context_code            VARCHAR2(30);
49047 l_entity_code                 VARCHAR2(30);
49048 l_event_class_code            VARCHAR2(30);
49049 l_ae_header_id                NUMBER;
49050 l_event_type_code             VARCHAR2(30);
49051 l_line_definition_code        VARCHAR2(30);
49052 l_line_definition_owner_code  VARCHAR2(1);
49053 --
49054 -- adr variables
49055 l_segment                     VARCHAR2(30);
49056 l_ccid                        NUMBER;
49057 l_adr_transaction_coa_id      NUMBER;
49058 l_adr_accounting_coa_id       NUMBER;
49059 l_adr_flexfield_segment_code  VARCHAR2(30);
49060 l_adr_flex_value_set_id       NUMBER;
49061 l_adr_value_type_code         VARCHAR2(30);
49062 l_adr_value_combination_id    NUMBER;
49063 l_adr_value_segment_code      VARCHAR2(30);
49064 
49065 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49066 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49067 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49068 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49069 
49070 -- 4262811 Variables ------------------------------------------------------------------------------------------
49071 l_entered_amt_idx             NUMBER;
49072 l_accted_amt_idx              NUMBER;
49073 l_acc_rev_flag                VARCHAR2(1);
49074 l_accrual_line_num            NUMBER;
49075 l_tmp_amt                     NUMBER;
49076 l_acc_rev_natural_side_code   VARCHAR2(1);
49077 
49078 l_num_entries                 NUMBER;
49079 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49080 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49081 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49082 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49083 l_recog_line_1                NUMBER;
49084 l_recog_line_2                NUMBER;
49085 
49086 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49090 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49087 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49088 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49089 
49091 
49092 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49093 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49094 
49095 ---------------------------------------------------------------------------------------------------------------
49096 
49097 
49098 --
49099 -- bulk performance
49100 --
49101 l_balance_type_code           VARCHAR2(1);
49102 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49103 l_log_module                  VARCHAR2(240);
49104 
49105 --
49106 -- Upgrade strategy
49107 --
49108 l_actual_upg_option           VARCHAR2(1);
49109 l_enc_upg_option           VARCHAR2(1);
49110 
49111 --
49112 BEGIN
49113 --
49114 IF g_log_enabled THEN
49115       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
49116 END IF;
49117 --
49118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49119 
49120       trace
49121          (p_msg      => 'BEGIN of AcctLineType_100'
49122          ,p_level    => C_LEVEL_PROCEDURE
49123          ,p_module   => l_log_module);
49124 
49125 END IF;
49126 --
49127 l_component_type             := 'AMB_JLT';
49128 l_component_code             := 'REL_INV_BURDEN_ENC';
49129 l_component_type_code        := 'S';
49130 l_component_appl_id          :=  275;
49131 l_amb_context_code           := 'DEFAULT';
49132 l_entity_code                := 'EXPENDITURES';
49133 l_event_class_code           := 'BURDEN_COST';
49134 l_event_type_code            := 'BURDEN_COST_ALL';
49135 l_line_definition_owner_code := 'S';
49136 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
49137 --
49138 l_balance_type_code          := 'E';
49139 l_segment                     := NULL;
49140 l_ccid                        := NULL;
49141 l_adr_transaction_coa_id      := NULL;
49142 l_adr_accounting_coa_id       := NULL;
49143 l_adr_flexfield_segment_code  := NULL;
49144 l_adr_flex_value_set_id       := NULL;
49145 l_adr_value_type_code         := NULL;
49146 l_adr_value_combination_id    := NULL;
49147 l_adr_value_segment_code      := NULL;
49148 
49149 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
49150 l_bflow_class_code           := 'AP_INV_PA_BURDEN_ENC';    -- 4219869 Business Flow
49151 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49152 l_budgetary_control_flag     := 'N';
49153 
49154 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49155 l_bflow_applied_to_amt       := NULL; -- 5132302
49156 l_entered_amt_idx            := NULL;          -- 4262811
49157 l_accted_amt_idx             := NULL;          -- 4262811
49158 l_acc_rev_flag               := NULL;          -- 4262811
49159 l_accrual_line_num           := NULL;          -- 4262811
49160 l_tmp_amt                    := NULL;          -- 4262811
49161 --
49162  
49163 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49164     l_balance_type_code <> 'B' THEN
49165 IF NVL(p_source_34,'
49166 ') =  'E' AND 
49167 NVL(p_source_69,'
49168 ') =  'AP' AND 
49169 NVL(p_source_70,'
49170 ') <>  'Y'
49171  THEN 
49172 
49173    --
49174    XLA_AE_LINES_PKG.SetNewLine;
49175 
49176    p_balance_type_code          := l_balance_type_code;
49177    -- set the flag so later we will know whether the gain loss line needs to be created
49178    
49179    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49180      p_actual_flag :='A';
49181    END IF;
49182 
49183    --
49184    -- bulk performance
49185    --
49186    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49187                                       p_header_num   => 0); -- 4262811
49188    --
49189    -- set accounting line options
49190    --
49191    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49192            p_natural_side_code          => 'C'
49193          , p_gain_or_loss_flag          => 'N'
49194          , p_gl_transfer_mode_code      => 'S'
49195          , p_acct_entry_type_code       => 'E'
49196          , p_switch_side_flag           => 'N'
49197          , p_merge_duplicate_code       => 'N'
49198          );
49199    --
49200    l_acc_rev_natural_side_code := 'D';  -- 4262811
49201    -- 
49202    --
49203    -- set accounting line type info
49204    --
49205    xla_ae_lines_pkg.SetAcctLineType
49206       (p_component_type             => l_component_type
49207       ,p_event_type_code            => l_event_type_code
49208       ,p_line_definition_owner_code => l_line_definition_owner_code
49209       ,p_line_definition_code       => l_line_definition_code
49210       ,p_accounting_line_code       => l_component_code
49211       ,p_accounting_line_type_code  => l_component_type_code
49212       ,p_accounting_line_appl_id    => l_component_appl_id
49213       ,p_amb_context_code           => l_amb_context_code
49214       ,p_entity_code                => l_entity_code
49215       ,p_event_class_code           => l_event_class_code);
49216    --
49217    -- set accounting class
49218    --
49219    xla_ae_lines_pkg.SetAcctClass(
49220            p_accounting_class_code  => 'AP_INV_PA_BURDEN'
49224    --
49221          , p_ae_header_id           => l_ae_header_id
49222          );
49223 
49225    -- set rounding class
49226    --
49227    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49228                       'AP_INV_PA_BURDEN';
49229 
49230    --
49231    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49232    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49233    --
49234    -- bulk performance
49235    --
49236    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49237 
49238    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49239       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49240 
49241    -- 4955764
49242    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49243       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49244 
49245    -- 4458381 Public Sector Enh
49246    
49247    --
49248    -- set accounting attributes for the line type
49249    --
49250    l_entered_amt_idx := 40;
49251    l_accted_amt_idx  := 42;
49252    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
49253    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
49254    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
49255    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
49256    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
49257    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
49258    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
49259    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
49260    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
49261    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
49262    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
49263    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
49264    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
49265    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
49266    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
49267    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
49268    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
49269    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
49270    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
49271    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
49272    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
49273    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
49274    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
49275    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
49276    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
49277    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
49278    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
49279    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
49280    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
49281    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
49282    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
49283    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
49284    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
49285    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
49286    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
49287    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
49288    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
49289    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
49290    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
49291    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
49292    l_rec_acct_attrs.array_num_value(20)  := p_source_73;
49293    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
49294    l_rec_acct_attrs.array_char_value(21)  := p_source_74;
49295    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
49296    l_rec_acct_attrs.array_char_value(22)  := p_source_75;
49297    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
49298    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_76);
49299    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
49300    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_77);
49301    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
49302    l_rec_acct_attrs.array_char_value(25)  := p_source_78;
49303    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
49304    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
49305    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
49306    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
49307    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
49308    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
49309    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
49310    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
49311    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
49312    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
49313    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
49314    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
49318    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
49315    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
49316    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
49317    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
49319    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
49320    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
49321    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
49322    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
49323    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
49324    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
49325    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
49326    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
49327    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
49328    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
49329    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
49330    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
49331    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
49332    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
49333    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
49334    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
49335    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
49336    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
49337    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
49338    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
49339    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
49340    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
49341    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
49342    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
49343    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
49344    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
49345    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
49346    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
49347 
49348    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49349    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49350 
49351    ---------------------------------------------------------------------------------------------------------------
49352    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49353    ---------------------------------------------------------------------------------------------------------------
49354    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49355 
49356    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49357    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49358 
49359    IF xla_accounting_cache_pkg.GetValueChar
49360          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49361          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49362    AND l_bflow_method_code = 'PRIOR_ENTRY'
49363 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49364    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49365          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49366        )
49367    THEN
49368          xla_ae_lines_pkg.BflowUpgEntry
49369            (p_business_method_code    => l_bflow_method_code
49370            ,p_business_class_code     => l_bflow_class_code
49371            ,p_balance_type            => l_balance_type_code);
49372    ELSE
49373       NULL;
49374 XLA_AE_LINES_PKG.business_flow_validation(
49375                                 p_business_method_code     => l_bflow_method_code
49376                                ,p_business_class_code      => l_bflow_class_code
49377                                ,p_inherit_description_flag => l_inherit_desc_flag);
49378    END IF;
49379 
49380    --
49381    -- call analytical criteria
49382    --
49383    -- Inherited Analytical Criteria for business flow method of Prior Entry.
49384    --
49385    -- call description
49386    --
49387    -- No description or it is inherited.
49388    --
49389    -- call ADRs
49390    -- Bug 4922099
49391    --
49392    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49393         (NVL(l_actual_upg_option, 'N') = 'O') OR
49394         (NVL(l_enc_upg_option, 'N') = 'O')
49395       )
49396    THEN
49397    NULL;
49398    --
49399    --
49400    
49401    --
49402    --
49403    END IF;
49404    --
49405    -- Bug 4922099
49406    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49407           (NVL(l_enc_upg_option, 'N') = 'O')
49408         ) AND
49409         (l_bflow_method_code = 'PRIOR_ENTRY')
49410       )
49411    THEN
49412       IF
49413       --
49414       1 = 1
49415       --
49416       THEN
49417       xla_accounting_err_pkg.build_message
49418                                     (p_appli_s_name            => 'XLA'
49419                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49420                                     ,p_token_1                 => 'LINE_NUMBER'
49421                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49425                                                                             ,l_component_code
49422                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49423                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49424                                                                              l_component_type
49426                                                                             ,l_component_type_code
49427                                                                             ,l_component_appl_id
49428                                                                             ,l_amb_context_code
49429                                                                             ,l_entity_code
49430                                                                             ,l_event_class_code
49431                                                                            )
49432                                     ,p_token_3                 => 'OWNER'
49433                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49434                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49435                                                                           ,p_lookup_code    => l_component_type_code
49436                                                                          )
49437                                     ,p_token_4                 => 'PRODUCT_NAME'
49438                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49439                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49440                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49441                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49442                                     ,p_ae_header_id            =>  NULL
49443                                        );
49444 
49445         IF (C_LEVEL_ERROR>= g_log_level) THEN
49446                  trace
49447                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49448                       ,p_level    => C_LEVEL_ERROR
49449                       ,p_module   => l_log_module);
49450         END IF;
49451       END IF;
49452    END IF;
49453    --
49454    --
49455    ------------------------------------------------------------------------------------------------
49456    -- 4219869 Business Flow
49457    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49458    -- Prior Entry.  Currently, the following code is always generated.
49459    ------------------------------------------------------------------------------------------------
49460    -- No ValidateCurrentLine for business flow method of Prior Entry
49461 
49462    ------------------------------------------------------------------------------------
49463    -- 4219869 Business Flow
49464    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49465    ------------------------------------------------------------------------------------
49466    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49467 
49468    ----------------------------------------------------------------------------------
49469    -- 4219869 Business Flow
49470    -- Update journal entry status -- Need to generate this within IF <condition>
49471    ----------------------------------------------------------------------------------
49472    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49473          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49474          ,p_balance_type_code => l_balance_type_code
49475          );
49476 
49477    -------------------------------------------------------------------------------------------
49478    -- 4262811 - Generate the Accrual Reversal lines
49479    -------------------------------------------------------------------------------------------
49480    BEGIN
49481       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49482                               (g_array_event(p_event_id).array_value_num('header_index'));
49483       IF l_acc_rev_flag IS NULL THEN
49484          l_acc_rev_flag := 'N';
49485       END IF;
49486    EXCEPTION
49487       WHEN OTHERS THEN
49488          l_acc_rev_flag := 'N';
49489    END;
49490    --
49491    IF (l_acc_rev_flag = 'Y') THEN
49492 
49493        -- 4645092  ------------------------------------------------------------------------------
49494        -- To allow MPA report to determine if it should generate report process
49495        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49496        ------------------------------------------------------------------------------------------
49497 
49498        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49499        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49500 
49501        --
49502        -- Update the line information that should be overwritten
49503        --
49504        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49505                                          p_header_num   => 1);
49506        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49507 
49508        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49509 
49510        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49514       --
49511           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49512        END IF;
49513 
49515       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49516       --
49517       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49518           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49519       ELSE
49520           ---------------------------------------------------------------------------------------------------
49521           -- 4262811a Switch Sign
49522           ---------------------------------------------------------------------------------------------------
49523           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49524           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49525                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49526           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49527                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49528           -- 5132302
49529           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49530                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49531 
49532       END IF;
49533 
49534       -- 4955764
49535       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49536       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49537 
49538 
49539       XLA_AE_LINES_PKG.ValidateCurrentLine;
49540       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49541 
49542       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49543                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49544                ,p_balance_type_code => l_balance_type_code);
49545 
49546    END IF;
49547 
49548    -----------------------------------------------------------------------------------------
49549    -- 4262811 Multiperiod Accounting
49550    -----------------------------------------------------------------------------------------
49551      -- No MPA option is assigned.
49552 
49553 
49554 END IF;
49555 END IF;
49556 --
49557 
49558 --
49559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49560    trace
49561       (p_msg      => 'END of AcctLineType_100'
49562       ,p_level    => C_LEVEL_PROCEDURE
49563       ,p_module   => l_log_module);
49564 END IF;
49565 --
49566 EXCEPTION
49567   WHEN xla_exceptions_pkg.application_exception THEN
49568       RAISE;
49569   WHEN OTHERS THEN
49570        xla_exceptions_pkg.raise_message
49571            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_100');
49572 END AcctLineType_100;
49573 --
49574 
49575 ---------------------------------------
49576 --
49577 -- PRIVATE FUNCTION
49578 --         AcctLineType_101
49579 --
49580 ---------------------------------------
49581 PROCEDURE AcctLineType_101 (
49582   p_application_id        IN NUMBER
49583  ,p_event_id              IN NUMBER
49584  ,p_calculate_acctd_flag  IN VARCHAR2
49585  ,p_calculate_g_l_flag    IN VARCHAR2
49586  ,p_actual_flag           IN OUT VARCHAR2
49587  ,p_balance_type_code     OUT VARCHAR2
49588  ,p_gain_or_loss_ref      OUT VARCHAR2
49589  
49590 --Budget Code Combination ID
49591  , p_source_2            IN NUMBER
49592 --Cost CCID
49593  , p_source_3            IN NUMBER
49594 --Cost Clearing CCID
49595  , p_source_6            IN NUMBER
49596 --Reversing Line Flag
49597  , p_source_22            IN VARCHAR2
49598 --Actual Upgrade Credit Accounting Class
49599  , p_source_23            IN VARCHAR2
49600 --Entered Currency Code
49601  , p_source_25            IN VARCHAR2
49602 --Exchange Rate Date
49603  , p_source_27            IN DATE
49604 --Exchange Rate
49605  , p_source_28            IN NUMBER
49606 --Exchange Rate Type
49607  , p_source_29            IN VARCHAR2
49608 --Actual Upgrade Debit Accounting Class
49609  , p_source_30            IN VARCHAR2
49610 --Use Actuals Upgrade Attributes Flag
49611  , p_source_31            IN VARCHAR2
49612 --Expenditure Item ID
49613  , p_source_32            IN NUMBER
49614 --Cost Distribution Line Number
49615  , p_source_33            IN NUMBER
49616 --Line Type
49617  , p_source_34            IN VARCHAR2
49618  , p_source_34_meaning    IN VARCHAR2
49619 --Reversed Line Number
49620  , p_source_35            IN NUMBER
49621 --Entered Burdened Cost
49622  , p_source_44            IN NUMBER
49623 --Accounted Burdened Cost
49624  , p_source_45            IN NUMBER
49625 --Encumbrance Amount
49626  , p_source_46            IN NUMBER
49627 --Encumbrance Upgrade Debit Accounting Class
49628  , p_source_54            IN VARCHAR2
49629 --Use Encumbrance Upgrade Attributes Flag
49630  , p_source_55            IN VARCHAR2
49631 --Encumbrance Type ID
49632  , p_source_56            IN NUMBER
49633 --Project Encumbrance Type ID
49634  , p_source_57            IN NUMBER
49635 --Document Type
49636  , p_source_69            IN VARCHAR2
49637  , p_source_69_meaning    IN VARCHAR2
49638 --Release ID
49639  , p_source_71            IN NUMBER
49640 --Contingent Worker Timecard Flag
49644 --Purchase Order Burden Applied to Distribution Type
49641  , p_source_72            IN VARCHAR2
49642 --Purchase Order Burden Applied to Application Identifier
49643  , p_source_79            IN NUMBER
49645  , p_source_80            IN VARCHAR2
49646 --Purchase Order Burden Applied to Entity Code
49647  , p_source_81            IN VARCHAR2
49648 --Purchase Order Burden Applied to First Distribution Identifier
49649  , p_source_82            IN NUMBER
49650 --Purchase Order Burden Applied to First System Transaction Identifier
49651  , p_source_83            IN NUMBER
49652 --Purchase Order Burden Applied to Second Distribution Identifier
49653  , p_source_84            IN VARCHAR2
49654 )
49655 IS
49656 
49657 l_component_type              VARCHAR2(80);
49658 l_component_code              VARCHAR2(30);
49659 l_component_type_code         VARCHAR2(1);
49660 l_component_appl_id           INTEGER;
49661 l_amb_context_code            VARCHAR2(30);
49662 l_entity_code                 VARCHAR2(30);
49663 l_event_class_code            VARCHAR2(30);
49664 l_ae_header_id                NUMBER;
49665 l_event_type_code             VARCHAR2(30);
49666 l_line_definition_code        VARCHAR2(30);
49667 l_line_definition_owner_code  VARCHAR2(1);
49668 --
49669 -- adr variables
49670 l_segment                     VARCHAR2(30);
49671 l_ccid                        NUMBER;
49672 l_adr_transaction_coa_id      NUMBER;
49673 l_adr_accounting_coa_id       NUMBER;
49674 l_adr_flexfield_segment_code  VARCHAR2(30);
49675 l_adr_flex_value_set_id       NUMBER;
49676 l_adr_value_type_code         VARCHAR2(30);
49677 l_adr_value_combination_id    NUMBER;
49678 l_adr_value_segment_code      VARCHAR2(30);
49679 
49680 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49681 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49682 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49683 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49684 
49685 -- 4262811 Variables ------------------------------------------------------------------------------------------
49686 l_entered_amt_idx             NUMBER;
49687 l_accted_amt_idx              NUMBER;
49688 l_acc_rev_flag                VARCHAR2(1);
49689 l_accrual_line_num            NUMBER;
49690 l_tmp_amt                     NUMBER;
49691 l_acc_rev_natural_side_code   VARCHAR2(1);
49692 
49693 l_num_entries                 NUMBER;
49694 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49695 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49696 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49697 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49698 l_recog_line_1                NUMBER;
49699 l_recog_line_2                NUMBER;
49700 
49701 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49702 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49703 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49704 
49705 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49706 
49707 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49708 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49709 
49710 ---------------------------------------------------------------------------------------------------------------
49711 
49712 
49713 --
49714 -- bulk performance
49715 --
49716 l_balance_type_code           VARCHAR2(1);
49717 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49718 l_log_module                  VARCHAR2(240);
49719 
49720 --
49721 -- Upgrade strategy
49722 --
49723 l_actual_upg_option           VARCHAR2(1);
49724 l_enc_upg_option           VARCHAR2(1);
49725 
49726 --
49727 BEGIN
49728 --
49729 IF g_log_enabled THEN
49730       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
49731 END IF;
49732 --
49733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49734 
49735       trace
49736          (p_msg      => 'BEGIN of AcctLineType_101'
49737          ,p_level    => C_LEVEL_PROCEDURE
49738          ,p_module   => l_log_module);
49739 
49740 END IF;
49741 --
49742 l_component_type             := 'AMB_JLT';
49743 l_component_code             := 'REL_PO_BURDENED_ENC';
49744 l_component_type_code        := 'S';
49745 l_component_appl_id          :=  275;
49746 l_amb_context_code           := 'DEFAULT';
49747 l_entity_code                := 'EXPENDITURES';
49748 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
49749 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
49750 l_line_definition_owner_code := 'S';
49751 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
49752 --
49753 l_balance_type_code          := 'E';
49754 l_segment                     := NULL;
49755 l_ccid                        := NULL;
49756 l_adr_transaction_coa_id      := NULL;
49757 l_adr_accounting_coa_id       := NULL;
49758 l_adr_flexfield_segment_code  := NULL;
49759 l_adr_flex_value_set_id       := NULL;
49760 l_adr_value_type_code         := NULL;
49761 l_adr_value_combination_id    := NULL;
49762 l_adr_value_segment_code      := NULL;
49763 
49764 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
49765 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
49769 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49766 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49767 l_budgetary_control_flag     := 'N';
49768 
49770 l_bflow_applied_to_amt       := NULL; -- 5132302
49771 l_entered_amt_idx            := NULL;          -- 4262811
49772 l_accted_amt_idx             := NULL;          -- 4262811
49773 l_acc_rev_flag               := NULL;          -- 4262811
49774 l_accrual_line_num           := NULL;          -- 4262811
49775 l_tmp_amt                    := NULL;          -- 4262811
49776 --
49777  
49778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49779     l_balance_type_code <> 'B' THEN
49780 IF NVL(p_source_34,'
49781 ') =  'E' AND 
49782 NVL(p_source_69,'
49783 ') =  'PO' AND 
49784 p_source_71 IS NULL AND 
49785 NVL(p_source_72,'
49786 ') =  'N'
49787  THEN 
49788 
49789    --
49790    XLA_AE_LINES_PKG.SetNewLine;
49791 
49792    p_balance_type_code          := l_balance_type_code;
49793    -- set the flag so later we will know whether the gain loss line needs to be created
49794    
49795    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49796      p_actual_flag :='A';
49797    END IF;
49798 
49799    --
49800    -- bulk performance
49801    --
49802    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49803                                       p_header_num   => 0); -- 4262811
49804    --
49805    -- set accounting line options
49806    --
49807    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49808            p_natural_side_code          => 'C'
49809          , p_gain_or_loss_flag          => 'N'
49810          , p_gl_transfer_mode_code      => 'S'
49811          , p_acct_entry_type_code       => 'E'
49812          , p_switch_side_flag           => 'N'
49813          , p_merge_duplicate_code       => 'N'
49814          );
49815    --
49816    l_acc_rev_natural_side_code := 'D';  -- 4262811
49817    -- 
49818    --
49819    -- set accounting line type info
49820    --
49821    xla_ae_lines_pkg.SetAcctLineType
49822       (p_component_type             => l_component_type
49823       ,p_event_type_code            => l_event_type_code
49824       ,p_line_definition_owner_code => l_line_definition_owner_code
49825       ,p_line_definition_code       => l_line_definition_code
49826       ,p_accounting_line_code       => l_component_code
49827       ,p_accounting_line_type_code  => l_component_type_code
49828       ,p_accounting_line_appl_id    => l_component_appl_id
49829       ,p_amb_context_code           => l_amb_context_code
49830       ,p_entity_code                => l_entity_code
49831       ,p_event_class_code           => l_event_class_code);
49832    --
49833    -- set accounting class
49834    --
49835    xla_ae_lines_pkg.SetAcctClass(
49836            p_accounting_class_code  => 'PO_PA_BURDENED'
49837          , p_ae_header_id           => l_ae_header_id
49838          );
49839 
49840    --
49841    -- set rounding class
49842    --
49843    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49844                       'PO_PA_BURDENED';
49845 
49846    --
49847    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49848    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49849    --
49850    -- bulk performance
49851    --
49852    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49853 
49854    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49855       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49856 
49857    -- 4955764
49858    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49859       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49860 
49861    -- 4458381 Public Sector Enh
49862    
49863    --
49864    -- set accounting attributes for the line type
49865    --
49866    l_entered_amt_idx := 35;
49867    l_accted_amt_idx  := 37;
49868    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
49869    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
49870    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
49871    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
49872    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
49873    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
49874    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
49875    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
49876    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
49877    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
49878    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
49879    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
49880    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
49881    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
49882    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
49883    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
49884    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
49885    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
49886    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
49890    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
49887    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
49888    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
49889    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
49891    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
49892    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
49893    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
49894    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
49895    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
49896    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
49897    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
49898    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
49899    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
49900    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
49901    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
49902    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
49903    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
49904    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
49905    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
49906    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
49907    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
49908    l_rec_acct_attrs.array_num_value(20)  := p_source_79;
49909    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
49910    l_rec_acct_attrs.array_char_value(21)  := p_source_80;
49911    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
49912    l_rec_acct_attrs.array_char_value(22)  := p_source_81;
49913    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
49914    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_82);
49915    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
49916    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_83);
49917    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
49918    l_rec_acct_attrs.array_char_value(25)  := p_source_84;
49919    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
49920    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
49921    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
49922    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
49923    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
49924    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
49925    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
49926    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
49927    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
49928    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
49929    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
49930    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
49931    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
49932    l_rec_acct_attrs.array_char_value(32)  := 
49933 xla_ae_sources_pkg.GetSystemSourceChar(
49934    p_source_code           => 'XLA_CURRENCY_CODE'
49935  , p_source_type_code      => 'Y'
49936  , p_source_application_id =>  602
49937 );
49938    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
49939    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
49940    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
49941    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
49942    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
49943    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
49944    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
49945    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
49946    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
49947    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
49948    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
49949    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
49950    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
49951    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
49952    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
49953    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
49954    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
49955    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
49956    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
49957    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
49958 
49959    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49960    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49961 
49962    ---------------------------------------------------------------------------------------------------------------
49963    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49964    ---------------------------------------------------------------------------------------------------------------
49965    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49966 
49967    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49968    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49969 
49973    AND l_bflow_method_code = 'PRIOR_ENTRY'
49970    IF xla_accounting_cache_pkg.GetValueChar
49971          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49972          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49974 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49975    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49976          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49977        )
49978    THEN
49979          xla_ae_lines_pkg.BflowUpgEntry
49980            (p_business_method_code    => l_bflow_method_code
49981            ,p_business_class_code     => l_bflow_class_code
49982            ,p_balance_type            => l_balance_type_code);
49983    ELSE
49984       NULL;
49985 XLA_AE_LINES_PKG.business_flow_validation(
49986                                 p_business_method_code     => l_bflow_method_code
49987                                ,p_business_class_code      => l_bflow_class_code
49988                                ,p_inherit_description_flag => l_inherit_desc_flag);
49989    END IF;
49990 
49991    --
49992    -- call analytical criteria
49993    --
49994    -- Inherited Analytical Criteria for business flow method of Prior Entry.
49995    --
49996    -- call description
49997    --
49998    -- No description or it is inherited.
49999    --
50000    -- call ADRs
50001    -- Bug 4922099
50002    --
50003    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50004         (NVL(l_actual_upg_option, 'N') = 'O') OR
50005         (NVL(l_enc_upg_option, 'N') = 'O')
50006       )
50007    THEN
50008    NULL;
50009    --
50010    --
50011    
50012    --
50013    --
50014    END IF;
50015    --
50016    -- Bug 4922099
50017    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50018           (NVL(l_enc_upg_option, 'N') = 'O')
50019         ) AND
50020         (l_bflow_method_code = 'PRIOR_ENTRY')
50021       )
50022    THEN
50023       IF
50024       --
50025       1 = 1
50026       --
50027       THEN
50028       xla_accounting_err_pkg.build_message
50029                                     (p_appli_s_name            => 'XLA'
50030                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50031                                     ,p_token_1                 => 'LINE_NUMBER'
50032                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50033                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50034                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50035                                                                              l_component_type
50036                                                                             ,l_component_code
50037                                                                             ,l_component_type_code
50038                                                                             ,l_component_appl_id
50039                                                                             ,l_amb_context_code
50040                                                                             ,l_entity_code
50041                                                                             ,l_event_class_code
50042                                                                            )
50043                                     ,p_token_3                 => 'OWNER'
50044                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50045                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50046                                                                           ,p_lookup_code    => l_component_type_code
50047                                                                          )
50048                                     ,p_token_4                 => 'PRODUCT_NAME'
50049                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50050                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50051                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50052                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50053                                     ,p_ae_header_id            =>  NULL
50054                                        );
50055 
50056         IF (C_LEVEL_ERROR>= g_log_level) THEN
50057                  trace
50058                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50059                       ,p_level    => C_LEVEL_ERROR
50060                       ,p_module   => l_log_module);
50061         END IF;
50062       END IF;
50063    END IF;
50064    --
50065    --
50066    ------------------------------------------------------------------------------------------------
50067    -- 4219869 Business Flow
50068    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50069    -- Prior Entry.  Currently, the following code is always generated.
50070    ------------------------------------------------------------------------------------------------
50071    -- No ValidateCurrentLine for business flow method of Prior Entry
50072 
50073    ------------------------------------------------------------------------------------
50074    -- 4219869 Business Flow
50078 
50075    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50076    ------------------------------------------------------------------------------------
50077    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50079    ----------------------------------------------------------------------------------
50080    -- 4219869 Business Flow
50081    -- Update journal entry status -- Need to generate this within IF <condition>
50082    ----------------------------------------------------------------------------------
50083    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50084          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50085          ,p_balance_type_code => l_balance_type_code
50086          );
50087 
50088    -------------------------------------------------------------------------------------------
50089    -- 4262811 - Generate the Accrual Reversal lines
50090    -------------------------------------------------------------------------------------------
50091    BEGIN
50092       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50093                               (g_array_event(p_event_id).array_value_num('header_index'));
50094       IF l_acc_rev_flag IS NULL THEN
50095          l_acc_rev_flag := 'N';
50096       END IF;
50097    EXCEPTION
50098       WHEN OTHERS THEN
50099          l_acc_rev_flag := 'N';
50100    END;
50101    --
50102    IF (l_acc_rev_flag = 'Y') THEN
50103 
50104        -- 4645092  ------------------------------------------------------------------------------
50105        -- To allow MPA report to determine if it should generate report process
50106        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50107        ------------------------------------------------------------------------------------------
50108 
50109        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50110        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50111 
50112        --
50113        -- Update the line information that should be overwritten
50114        --
50115        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50116                                          p_header_num   => 1);
50117        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50118 
50119        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50120 
50121        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50122           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50123        END IF;
50124 
50125       --
50126       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50127       --
50128       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50129           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50130       ELSE
50131           ---------------------------------------------------------------------------------------------------
50132           -- 4262811a Switch Sign
50133           ---------------------------------------------------------------------------------------------------
50134           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50135           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50136                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50137           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50138                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50139           -- 5132302
50140           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50141                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50142 
50143       END IF;
50144 
50145       -- 4955764
50146       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50147       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50148 
50149 
50150       XLA_AE_LINES_PKG.ValidateCurrentLine;
50151       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50152 
50153       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50154                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50155                ,p_balance_type_code => l_balance_type_code);
50156 
50157    END IF;
50158 
50159    -----------------------------------------------------------------------------------------
50160    -- 4262811 Multiperiod Accounting
50161    -----------------------------------------------------------------------------------------
50162      -- No MPA option is assigned.
50163 
50164 
50165 END IF;
50166 END IF;
50167 --
50168 
50169 --
50170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50171    trace
50172       (p_msg      => 'END of AcctLineType_101'
50173       ,p_level    => C_LEVEL_PROCEDURE
50174       ,p_module   => l_log_module);
50175 END IF;
50176 --
50177 EXCEPTION
50178   WHEN xla_exceptions_pkg.application_exception THEN
50179       RAISE;
50180   WHEN OTHERS THEN
50181        xla_exceptions_pkg.raise_message
50182            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_101');
50183 END AcctLineType_101;
50184 --
50185 
50189 --         AcctLineType_102
50186 ---------------------------------------
50187 --
50188 -- PRIVATE FUNCTION
50190 --
50191 ---------------------------------------
50192 PROCEDURE AcctLineType_102 (
50193   p_application_id        IN NUMBER
50194  ,p_event_id              IN NUMBER
50195  ,p_calculate_acctd_flag  IN VARCHAR2
50196  ,p_calculate_g_l_flag    IN VARCHAR2
50197  ,p_actual_flag           IN OUT VARCHAR2
50198  ,p_balance_type_code     OUT VARCHAR2
50199  ,p_gain_or_loss_ref      OUT VARCHAR2
50200  
50201 --Budget Code Combination ID
50202  , p_source_2            IN NUMBER
50203 --Cost CCID
50204  , p_source_3            IN NUMBER
50205 --Cost Clearing CCID
50206  , p_source_6            IN NUMBER
50207 --Reversing Line Flag
50208  , p_source_22            IN VARCHAR2
50209 --Actual Upgrade Credit Accounting Class
50210  , p_source_23            IN VARCHAR2
50211 --Entered Currency Code
50212  , p_source_25            IN VARCHAR2
50213 --Exchange Rate Date
50214  , p_source_27            IN DATE
50215 --Exchange Rate
50216  , p_source_28            IN NUMBER
50217 --Exchange Rate Type
50218  , p_source_29            IN VARCHAR2
50219 --Actual Upgrade Debit Accounting Class
50220  , p_source_30            IN VARCHAR2
50221 --Use Actuals Upgrade Attributes Flag
50222  , p_source_31            IN VARCHAR2
50223 --Expenditure Item ID
50224  , p_source_32            IN NUMBER
50225 --Cost Distribution Line Number
50226  , p_source_33            IN NUMBER
50227 --Line Type
50228  , p_source_34            IN VARCHAR2
50229  , p_source_34_meaning    IN VARCHAR2
50230 --Reversed Line Number
50231  , p_source_35            IN NUMBER
50232 --Entered Burdened Cost
50233  , p_source_44            IN NUMBER
50234 --Accounted Burdened Cost
50235  , p_source_45            IN NUMBER
50236 --Encumbrance Amount
50237  , p_source_46            IN NUMBER
50238 --Encumbrance Upgrade Credit Accounting Class
50239  , p_source_53            IN VARCHAR2
50240 --Encumbrance Upgrade Debit Accounting Class
50241  , p_source_54            IN VARCHAR2
50242 --Use Encumbrance Upgrade Attributes Flag
50243  , p_source_55            IN VARCHAR2
50244 --Encumbrance Type ID
50245  , p_source_56            IN NUMBER
50246 --Project Encumbrance Type ID
50247  , p_source_57            IN NUMBER
50248 --Document Type
50249  , p_source_69            IN VARCHAR2
50250  , p_source_69_meaning    IN VARCHAR2
50251 --Release ID
50252  , p_source_71            IN NUMBER
50253 --Contingent Worker Timecard Flag
50254  , p_source_72            IN VARCHAR2
50255 --Purchase Order Burden Applied to Application Identifier
50256  , p_source_79            IN NUMBER
50257 --Purchase Order Burden Applied to Distribution Type
50258  , p_source_80            IN VARCHAR2
50259 --Purchase Order Burden Applied to Entity Code
50260  , p_source_81            IN VARCHAR2
50261 --Purchase Order Burden Applied to First Distribution Identifier
50262  , p_source_82            IN NUMBER
50263 --Purchase Order Burden Applied to First System Transaction Identifier
50264  , p_source_83            IN NUMBER
50265 --Purchase Order Burden Applied to Second Distribution Identifier
50266  , p_source_84            IN VARCHAR2
50267 )
50268 IS
50269 
50270 l_component_type              VARCHAR2(80);
50271 l_component_code              VARCHAR2(30);
50272 l_component_type_code         VARCHAR2(1);
50273 l_component_appl_id           INTEGER;
50274 l_amb_context_code            VARCHAR2(30);
50275 l_entity_code                 VARCHAR2(30);
50276 l_event_class_code            VARCHAR2(30);
50277 l_ae_header_id                NUMBER;
50278 l_event_type_code             VARCHAR2(30);
50279 l_line_definition_code        VARCHAR2(30);
50280 l_line_definition_owner_code  VARCHAR2(1);
50281 --
50282 -- adr variables
50283 l_segment                     VARCHAR2(30);
50284 l_ccid                        NUMBER;
50285 l_adr_transaction_coa_id      NUMBER;
50286 l_adr_accounting_coa_id       NUMBER;
50287 l_adr_flexfield_segment_code  VARCHAR2(30);
50288 l_adr_flex_value_set_id       NUMBER;
50289 l_adr_value_type_code         VARCHAR2(30);
50290 l_adr_value_combination_id    NUMBER;
50291 l_adr_value_segment_code      VARCHAR2(30);
50292 
50293 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50294 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50295 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50296 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50297 
50298 -- 4262811 Variables ------------------------------------------------------------------------------------------
50299 l_entered_amt_idx             NUMBER;
50300 l_accted_amt_idx              NUMBER;
50301 l_acc_rev_flag                VARCHAR2(1);
50302 l_accrual_line_num            NUMBER;
50303 l_tmp_amt                     NUMBER;
50304 l_acc_rev_natural_side_code   VARCHAR2(1);
50305 
50306 l_num_entries                 NUMBER;
50307 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50308 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50309 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50310 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50311 l_recog_line_1                NUMBER;
50312 l_recog_line_2                NUMBER;
50313 
50314 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50318 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50315 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50316 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50317 
50319 
50320 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50321 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50322 
50323 ---------------------------------------------------------------------------------------------------------------
50324 
50325 
50326 --
50327 -- bulk performance
50328 --
50329 l_balance_type_code           VARCHAR2(1);
50330 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50331 l_log_module                  VARCHAR2(240);
50332 
50333 --
50334 -- Upgrade strategy
50335 --
50336 l_actual_upg_option           VARCHAR2(1);
50337 l_enc_upg_option           VARCHAR2(1);
50338 
50339 --
50340 BEGIN
50341 --
50342 IF g_log_enabled THEN
50343       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
50344 END IF;
50345 --
50346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50347 
50348       trace
50349          (p_msg      => 'BEGIN of AcctLineType_102'
50350          ,p_level    => C_LEVEL_PROCEDURE
50351          ,p_module   => l_log_module);
50352 
50353 END IF;
50354 --
50355 l_component_type             := 'AMB_JLT';
50356 l_component_code             := 'REL_PO_BURDENED_ENC';
50357 l_component_type_code        := 'S';
50358 l_component_appl_id          :=  275;
50359 l_amb_context_code           := 'DEFAULT';
50360 l_entity_code                := 'EXPENDITURES';
50361 l_event_class_code           := 'TOT_BURDENED_COST';
50362 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
50363 l_line_definition_owner_code := 'S';
50364 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
50365 --
50366 l_balance_type_code          := 'E';
50367 l_segment                     := NULL;
50368 l_ccid                        := NULL;
50369 l_adr_transaction_coa_id      := NULL;
50370 l_adr_accounting_coa_id       := NULL;
50371 l_adr_flexfield_segment_code  := NULL;
50372 l_adr_flex_value_set_id       := NULL;
50373 l_adr_value_type_code         := NULL;
50374 l_adr_value_combination_id    := NULL;
50375 l_adr_value_segment_code      := NULL;
50376 
50377 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
50378 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
50379 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50380 l_budgetary_control_flag     := 'N';
50381 
50382 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50383 l_bflow_applied_to_amt       := NULL; -- 5132302
50384 l_entered_amt_idx            := NULL;          -- 4262811
50385 l_accted_amt_idx             := NULL;          -- 4262811
50386 l_acc_rev_flag               := NULL;          -- 4262811
50387 l_accrual_line_num           := NULL;          -- 4262811
50388 l_tmp_amt                    := NULL;          -- 4262811
50389 --
50390  
50391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50392     l_balance_type_code <> 'B' THEN
50393 IF NVL(p_source_34,'
50394 ') =  'E' AND 
50395 NVL(p_source_69,'
50396 ') =  'PO' AND 
50397 p_source_71 IS NULL AND 
50398 NVL(p_source_72,'
50399 ') =  'N'
50400  THEN 
50401 
50402    --
50403    XLA_AE_LINES_PKG.SetNewLine;
50404 
50405    p_balance_type_code          := l_balance_type_code;
50406    -- set the flag so later we will know whether the gain loss line needs to be created
50407    
50408    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50409      p_actual_flag :='A';
50410    END IF;
50411 
50412    --
50413    -- bulk performance
50414    --
50415    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50416                                       p_header_num   => 0); -- 4262811
50417    --
50418    -- set accounting line options
50419    --
50420    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50421            p_natural_side_code          => 'C'
50422          , p_gain_or_loss_flag          => 'N'
50423          , p_gl_transfer_mode_code      => 'S'
50424          , p_acct_entry_type_code       => 'E'
50425          , p_switch_side_flag           => 'N'
50426          , p_merge_duplicate_code       => 'N'
50427          );
50428    --
50429    l_acc_rev_natural_side_code := 'D';  -- 4262811
50430    -- 
50431    --
50432    -- set accounting line type info
50433    --
50434    xla_ae_lines_pkg.SetAcctLineType
50435       (p_component_type             => l_component_type
50436       ,p_event_type_code            => l_event_type_code
50437       ,p_line_definition_owner_code => l_line_definition_owner_code
50438       ,p_line_definition_code       => l_line_definition_code
50439       ,p_accounting_line_code       => l_component_code
50440       ,p_accounting_line_type_code  => l_component_type_code
50441       ,p_accounting_line_appl_id    => l_component_appl_id
50442       ,p_amb_context_code           => l_amb_context_code
50443       ,p_entity_code                => l_entity_code
50444       ,p_event_class_code           => l_event_class_code);
50445    --
50446    -- set accounting class
50447    --
50448    xla_ae_lines_pkg.SetAcctClass(
50452 
50449            p_accounting_class_code  => 'PO_PA_BURDENED'
50450          , p_ae_header_id           => l_ae_header_id
50451          );
50453    --
50454    -- set rounding class
50455    --
50456    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50457                       'PO_PA_BURDENED';
50458 
50459    --
50460    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50461    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50462    --
50463    -- bulk performance
50464    --
50465    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50466 
50467    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50468       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50469 
50470    -- 4955764
50471    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50473 
50474    -- 4458381 Public Sector Enh
50475    
50476    --
50477    -- set accounting attributes for the line type
50478    --
50479    l_entered_amt_idx := 40;
50480    l_accted_amt_idx  := 43;
50481    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
50482    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
50483    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
50484    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
50485    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
50486    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
50487    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
50488    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
50489    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
50490    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
50491    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
50492    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
50493    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
50494    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
50495    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
50496    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
50497    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
50498    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
50499    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
50500    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
50501    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
50502    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
50503    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
50504    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
50505    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
50506    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
50507    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
50508    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
50509    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
50510    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
50511    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
50512    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
50513    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
50514    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
50515    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
50516    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
50517    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
50518    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
50519    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
50520    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
50521    l_rec_acct_attrs.array_num_value(20)  := p_source_79;
50522    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
50523    l_rec_acct_attrs.array_char_value(21)  := p_source_80;
50524    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
50525    l_rec_acct_attrs.array_char_value(22)  := p_source_81;
50526    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
50527    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_82);
50528    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
50529    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_83);
50530    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
50531    l_rec_acct_attrs.array_char_value(25)  := p_source_84;
50532    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
50533    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
50534    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
50535    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
50536    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
50537    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
50538    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
50539    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
50540    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
50541    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
50545    l_rec_acct_attrs.array_char_value(32)  := 
50542    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
50543    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
50544    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
50546 xla_ae_sources_pkg.GetSystemSourceChar(
50547    p_source_code           => 'XLA_CURRENCY_CODE'
50548  , p_source_type_code      => 'Y'
50549  , p_source_application_id =>  602
50550 );
50551    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
50552    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
50553    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
50554    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
50555    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
50556    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
50557    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
50558    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
50559    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
50560    l_rec_acct_attrs.array_char_value(37)  := 
50561 xla_ae_sources_pkg.GetSystemSourceChar(
50562    p_source_code           => 'XLA_CURRENCY_CODE'
50563  , p_source_type_code      => 'Y'
50564  , p_source_application_id =>  602
50565 );
50566    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
50567    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
50568    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
50569    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
50570    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
50571    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
50572    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
50573    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
50574    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
50575    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
50576    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
50577    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
50578    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
50579    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
50580    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
50581    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
50582    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
50583    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
50584    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
50585    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
50586    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
50587    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
50588 
50589    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50590    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50591 
50592    ---------------------------------------------------------------------------------------------------------------
50593    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50594    ---------------------------------------------------------------------------------------------------------------
50595    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50596 
50597    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50598    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50599 
50600    IF xla_accounting_cache_pkg.GetValueChar
50601          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50602          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50603    AND l_bflow_method_code = 'PRIOR_ENTRY'
50604 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50605    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50606          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50607        )
50608    THEN
50609          xla_ae_lines_pkg.BflowUpgEntry
50610            (p_business_method_code    => l_bflow_method_code
50611            ,p_business_class_code     => l_bflow_class_code
50612            ,p_balance_type            => l_balance_type_code);
50613    ELSE
50614       NULL;
50615 XLA_AE_LINES_PKG.business_flow_validation(
50616                                 p_business_method_code     => l_bflow_method_code
50617                                ,p_business_class_code      => l_bflow_class_code
50618                                ,p_inherit_description_flag => l_inherit_desc_flag);
50619    END IF;
50620 
50621    --
50622    -- call analytical criteria
50623    --
50624    -- Inherited Analytical Criteria for business flow method of Prior Entry.
50625    --
50626    -- call description
50627    --
50628    -- No description or it is inherited.
50629    --
50630    -- call ADRs
50631    -- Bug 4922099
50632    --
50633    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50634         (NVL(l_actual_upg_option, 'N') = 'O') OR
50635         (NVL(l_enc_upg_option, 'N') = 'O')
50636       )
50637    THEN
50638    NULL;
50639    --
50640    --
50641    
50642    --
50643    --
50644    END IF;
50645    --
50646    -- Bug 4922099
50647    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50648           (NVL(l_enc_upg_option, 'N') = 'O')
50652    THEN
50649         ) AND
50650         (l_bflow_method_code = 'PRIOR_ENTRY')
50651       )
50653       IF
50654       --
50655       1 = 1
50656       --
50657       THEN
50658       xla_accounting_err_pkg.build_message
50659                                     (p_appli_s_name            => 'XLA'
50660                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50661                                     ,p_token_1                 => 'LINE_NUMBER'
50662                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50663                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50664                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50665                                                                              l_component_type
50666                                                                             ,l_component_code
50667                                                                             ,l_component_type_code
50668                                                                             ,l_component_appl_id
50669                                                                             ,l_amb_context_code
50670                                                                             ,l_entity_code
50671                                                                             ,l_event_class_code
50672                                                                            )
50673                                     ,p_token_3                 => 'OWNER'
50674                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50675                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50676                                                                           ,p_lookup_code    => l_component_type_code
50677                                                                          )
50678                                     ,p_token_4                 => 'PRODUCT_NAME'
50679                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50680                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50681                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50682                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50683                                     ,p_ae_header_id            =>  NULL
50684                                        );
50685 
50686         IF (C_LEVEL_ERROR>= g_log_level) THEN
50687                  trace
50688                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50689                       ,p_level    => C_LEVEL_ERROR
50690                       ,p_module   => l_log_module);
50691         END IF;
50692       END IF;
50693    END IF;
50694    --
50695    --
50696    ------------------------------------------------------------------------------------------------
50697    -- 4219869 Business Flow
50698    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50699    -- Prior Entry.  Currently, the following code is always generated.
50700    ------------------------------------------------------------------------------------------------
50701    -- No ValidateCurrentLine for business flow method of Prior Entry
50702 
50703    ------------------------------------------------------------------------------------
50704    -- 4219869 Business Flow
50705    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50706    ------------------------------------------------------------------------------------
50707    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50708 
50709    ----------------------------------------------------------------------------------
50710    -- 4219869 Business Flow
50711    -- Update journal entry status -- Need to generate this within IF <condition>
50712    ----------------------------------------------------------------------------------
50713    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50714          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50715          ,p_balance_type_code => l_balance_type_code
50716          );
50717 
50718    -------------------------------------------------------------------------------------------
50719    -- 4262811 - Generate the Accrual Reversal lines
50720    -------------------------------------------------------------------------------------------
50721    BEGIN
50722       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50723                               (g_array_event(p_event_id).array_value_num('header_index'));
50724       IF l_acc_rev_flag IS NULL THEN
50725          l_acc_rev_flag := 'N';
50726       END IF;
50727    EXCEPTION
50728       WHEN OTHERS THEN
50729          l_acc_rev_flag := 'N';
50730    END;
50731    --
50732    IF (l_acc_rev_flag = 'Y') THEN
50733 
50734        -- 4645092  ------------------------------------------------------------------------------
50735        -- To allow MPA report to determine if it should generate report process
50736        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50737        ------------------------------------------------------------------------------------------
50738 
50739        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50740        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50741 
50742        --
50743        -- Update the line information that should be overwritten
50747        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50744        --
50745        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50746                                          p_header_num   => 1);
50748 
50749        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50750 
50751        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50752           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50753        END IF;
50754 
50755       --
50756       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50757       --
50758       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50759           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50760       ELSE
50761           ---------------------------------------------------------------------------------------------------
50762           -- 4262811a Switch Sign
50763           ---------------------------------------------------------------------------------------------------
50764           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50765           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50766                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50767           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50768                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50769           -- 5132302
50770           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50771                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50772 
50773       END IF;
50774 
50775       -- 4955764
50776       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50777       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50778 
50779 
50780       XLA_AE_LINES_PKG.ValidateCurrentLine;
50781       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50782 
50783       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50784                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50785                ,p_balance_type_code => l_balance_type_code);
50786 
50787    END IF;
50788 
50789    -----------------------------------------------------------------------------------------
50790    -- 4262811 Multiperiod Accounting
50791    -----------------------------------------------------------------------------------------
50792      -- No MPA option is assigned.
50793 
50794 
50795 END IF;
50796 END IF;
50797 --
50798 
50799 --
50800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50801    trace
50802       (p_msg      => 'END of AcctLineType_102'
50803       ,p_level    => C_LEVEL_PROCEDURE
50804       ,p_module   => l_log_module);
50805 END IF;
50806 --
50807 EXCEPTION
50808   WHEN xla_exceptions_pkg.application_exception THEN
50809       RAISE;
50810   WHEN OTHERS THEN
50811        xla_exceptions_pkg.raise_message
50812            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_102');
50813 END AcctLineType_102;
50814 --
50815 
50816 ---------------------------------------
50817 --
50818 -- PRIVATE FUNCTION
50819 --         AcctLineType_103
50820 --
50821 ---------------------------------------
50822 PROCEDURE AcctLineType_103 (
50823   p_application_id        IN NUMBER
50824  ,p_event_id              IN NUMBER
50825  ,p_calculate_acctd_flag  IN VARCHAR2
50826  ,p_calculate_g_l_flag    IN VARCHAR2
50827  ,p_actual_flag           IN OUT VARCHAR2
50828  ,p_balance_type_code     OUT VARCHAR2
50829  ,p_gain_or_loss_ref      OUT VARCHAR2
50830  
50831 --Budget Code Combination ID
50832  , p_source_2            IN NUMBER
50833 --Cost CCID
50834  , p_source_3            IN NUMBER
50835 --Cost Clearing CCID
50836  , p_source_6            IN NUMBER
50837 --Reversing Line Flag
50838  , p_source_22            IN VARCHAR2
50839 --Actual Upgrade Credit Accounting Class
50840  , p_source_23            IN VARCHAR2
50841 --Entered Currency Code
50842  , p_source_25            IN VARCHAR2
50843 --Exchange Rate Date
50844  , p_source_27            IN DATE
50845 --Exchange Rate
50846  , p_source_28            IN NUMBER
50847 --Exchange Rate Type
50848  , p_source_29            IN VARCHAR2
50849 --Actual Upgrade Debit Accounting Class
50850  , p_source_30            IN VARCHAR2
50851 --Use Actuals Upgrade Attributes Flag
50852  , p_source_31            IN VARCHAR2
50853 --Expenditure Item ID
50854  , p_source_32            IN NUMBER
50855 --Cost Distribution Line Number
50856  , p_source_33            IN NUMBER
50857 --Line Type
50858  , p_source_34            IN VARCHAR2
50859  , p_source_34_meaning    IN VARCHAR2
50860 --Reversed Line Number
50861  , p_source_35            IN NUMBER
50862 --Entered Burdened Cost
50863  , p_source_44            IN NUMBER
50864 --Accounted Burdened Cost
50865  , p_source_45            IN NUMBER
50866 --Encumbrance Amount
50867  , p_source_46            IN NUMBER
50868 --Encumbrance Upgrade Credit Accounting Class
50869  , p_source_53            IN VARCHAR2
50870 --Encumbrance Upgrade Debit Accounting Class
50874 --Encumbrance Type ID
50871  , p_source_54            IN VARCHAR2
50872 --Use Encumbrance Upgrade Attributes Flag
50873  , p_source_55            IN VARCHAR2
50875  , p_source_56            IN NUMBER
50876 --Project Encumbrance Type ID
50877  , p_source_57            IN NUMBER
50878 --Document Type
50879  , p_source_69            IN VARCHAR2
50880  , p_source_69_meaning    IN VARCHAR2
50881 --Release ID
50882  , p_source_71            IN NUMBER
50883 --Contingent Worker Timecard Flag
50884  , p_source_72            IN VARCHAR2
50885 --Purchase Order Burden Applied to Application Identifier
50886  , p_source_79            IN NUMBER
50887 --Purchase Order Burden Applied to Distribution Type
50888  , p_source_80            IN VARCHAR2
50889 --Purchase Order Burden Applied to Entity Code
50890  , p_source_81            IN VARCHAR2
50891 --Purchase Order Burden Applied to First Distribution Identifier
50892  , p_source_82            IN NUMBER
50893 --Purchase Order Burden Applied to First System Transaction Identifier
50894  , p_source_83            IN NUMBER
50895 --Purchase Order Burden Applied to Second Distribution Identifier
50896  , p_source_84            IN VARCHAR2
50897 )
50898 IS
50899 
50900 l_component_type              VARCHAR2(80);
50901 l_component_code              VARCHAR2(30);
50902 l_component_type_code         VARCHAR2(1);
50903 l_component_appl_id           INTEGER;
50904 l_amb_context_code            VARCHAR2(30);
50905 l_entity_code                 VARCHAR2(30);
50906 l_event_class_code            VARCHAR2(30);
50907 l_ae_header_id                NUMBER;
50908 l_event_type_code             VARCHAR2(30);
50909 l_line_definition_code        VARCHAR2(30);
50910 l_line_definition_owner_code  VARCHAR2(1);
50911 --
50912 -- adr variables
50913 l_segment                     VARCHAR2(30);
50914 l_ccid                        NUMBER;
50915 l_adr_transaction_coa_id      NUMBER;
50916 l_adr_accounting_coa_id       NUMBER;
50917 l_adr_flexfield_segment_code  VARCHAR2(30);
50918 l_adr_flex_value_set_id       NUMBER;
50919 l_adr_value_type_code         VARCHAR2(30);
50920 l_adr_value_combination_id    NUMBER;
50921 l_adr_value_segment_code      VARCHAR2(30);
50922 
50923 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50924 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50925 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50926 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50927 
50928 -- 4262811 Variables ------------------------------------------------------------------------------------------
50929 l_entered_amt_idx             NUMBER;
50930 l_accted_amt_idx              NUMBER;
50931 l_acc_rev_flag                VARCHAR2(1);
50932 l_accrual_line_num            NUMBER;
50933 l_tmp_amt                     NUMBER;
50934 l_acc_rev_natural_side_code   VARCHAR2(1);
50935 
50936 l_num_entries                 NUMBER;
50937 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50938 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50939 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50940 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50941 l_recog_line_1                NUMBER;
50942 l_recog_line_2                NUMBER;
50943 
50944 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50945 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50946 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50947 
50948 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50949 
50950 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50951 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50952 
50953 ---------------------------------------------------------------------------------------------------------------
50954 
50955 
50956 --
50957 -- bulk performance
50958 --
50959 l_balance_type_code           VARCHAR2(1);
50960 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50961 l_log_module                  VARCHAR2(240);
50962 
50963 --
50964 -- Upgrade strategy
50965 --
50966 l_actual_upg_option           VARCHAR2(1);
50967 l_enc_upg_option           VARCHAR2(1);
50968 
50969 --
50970 BEGIN
50971 --
50972 IF g_log_enabled THEN
50973       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
50974 END IF;
50975 --
50976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50977 
50978       trace
50979          (p_msg      => 'BEGIN of AcctLineType_103'
50980          ,p_level    => C_LEVEL_PROCEDURE
50981          ,p_module   => l_log_module);
50982 
50983 END IF;
50984 --
50985 l_component_type             := 'AMB_JLT';
50986 l_component_code             := 'REL_PO_BURDEN_ENC';
50987 l_component_type_code        := 'S';
50988 l_component_appl_id          :=  275;
50989 l_amb_context_code           := 'DEFAULT';
50990 l_entity_code                := 'EXPENDITURES';
50991 l_event_class_code           := 'BURDEN_COST';
50992 l_event_type_code            := 'BURDEN_COST_ALL';
50993 l_line_definition_owner_code := 'S';
50994 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
50995 --
50996 l_balance_type_code          := 'E';
51000 l_adr_accounting_coa_id       := NULL;
50997 l_segment                     := NULL;
50998 l_ccid                        := NULL;
50999 l_adr_transaction_coa_id      := NULL;
51001 l_adr_flexfield_segment_code  := NULL;
51002 l_adr_flex_value_set_id       := NULL;
51003 l_adr_value_type_code         := NULL;
51004 l_adr_value_combination_id    := NULL;
51005 l_adr_value_segment_code      := NULL;
51006 
51007 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
51008 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
51009 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51010 l_budgetary_control_flag     := 'N';
51011 
51012 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51013 l_bflow_applied_to_amt       := NULL; -- 5132302
51014 l_entered_amt_idx            := NULL;          -- 4262811
51015 l_accted_amt_idx             := NULL;          -- 4262811
51016 l_acc_rev_flag               := NULL;          -- 4262811
51017 l_accrual_line_num           := NULL;          -- 4262811
51018 l_tmp_amt                    := NULL;          -- 4262811
51019 --
51020  
51021 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51022     l_balance_type_code <> 'B' THEN
51023 IF NVL(p_source_34,'
51024 ') =  'E' AND 
51025 NVL(p_source_69,'
51026 ') =  'PO' AND 
51027 p_source_71 IS NULL AND 
51028 NVL(p_source_72,'
51029 ') =  'N'
51030  THEN 
51031 
51032    --
51033    XLA_AE_LINES_PKG.SetNewLine;
51034 
51035    p_balance_type_code          := l_balance_type_code;
51036    -- set the flag so later we will know whether the gain loss line needs to be created
51037    
51038    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51039      p_actual_flag :='A';
51040    END IF;
51041 
51042    --
51043    -- bulk performance
51044    --
51045    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51046                                       p_header_num   => 0); -- 4262811
51047    --
51048    -- set accounting line options
51049    --
51050    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51051            p_natural_side_code          => 'C'
51052          , p_gain_or_loss_flag          => 'N'
51053          , p_gl_transfer_mode_code      => 'S'
51054          , p_acct_entry_type_code       => 'E'
51055          , p_switch_side_flag           => 'N'
51056          , p_merge_duplicate_code       => 'N'
51057          );
51058    --
51059    l_acc_rev_natural_side_code := 'D';  -- 4262811
51060    -- 
51061    --
51062    -- set accounting line type info
51063    --
51064    xla_ae_lines_pkg.SetAcctLineType
51065       (p_component_type             => l_component_type
51066       ,p_event_type_code            => l_event_type_code
51067       ,p_line_definition_owner_code => l_line_definition_owner_code
51068       ,p_line_definition_code       => l_line_definition_code
51069       ,p_accounting_line_code       => l_component_code
51070       ,p_accounting_line_type_code  => l_component_type_code
51071       ,p_accounting_line_appl_id    => l_component_appl_id
51072       ,p_amb_context_code           => l_amb_context_code
51073       ,p_entity_code                => l_entity_code
51074       ,p_event_class_code           => l_event_class_code);
51075    --
51076    -- set accounting class
51077    --
51078    xla_ae_lines_pkg.SetAcctClass(
51079            p_accounting_class_code  => 'PO_PA_BURDEN'
51080          , p_ae_header_id           => l_ae_header_id
51081          );
51082 
51083    --
51084    -- set rounding class
51085    --
51086    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51087                       'PO_PA_BURDEN';
51088 
51089    --
51090    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51091    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51092    --
51093    -- bulk performance
51094    --
51095    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51096 
51097    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51098       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51099 
51100    -- 4955764
51101    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51102       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51103 
51104    -- 4458381 Public Sector Enh
51105    
51106    --
51107    -- set accounting attributes for the line type
51108    --
51109    l_entered_amt_idx := 40;
51110    l_accted_amt_idx  := 42;
51111    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
51112    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
51113    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
51114    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
51115    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
51116    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
51117    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
51118    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
51119    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
51123    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
51120    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
51121    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
51122    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
51124    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
51125    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
51126    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
51127    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
51128    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
51129    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
51130    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
51131    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
51132    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
51133    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
51134    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
51135    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
51136    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
51137    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
51138    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
51139    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
51140    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
51141    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
51142    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
51143    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
51144    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
51145    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
51146    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
51147    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
51148    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
51149    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
51150    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
51151    l_rec_acct_attrs.array_num_value(20)  := p_source_79;
51152    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51153    l_rec_acct_attrs.array_char_value(21)  := p_source_80;
51154    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
51155    l_rec_acct_attrs.array_char_value(22)  := p_source_81;
51156    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
51157    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_82);
51158    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51159    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_83);
51160    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
51161    l_rec_acct_attrs.array_char_value(25)  := p_source_84;
51162    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
51163    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
51164    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
51165    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
51166    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
51167    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
51168    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
51169    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
51170    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
51171    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
51172    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
51173    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
51174    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
51175    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
51176    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
51177    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
51178    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
51179    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
51180    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
51181    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
51182    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
51183    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
51184    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
51185    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
51186    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
51187    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
51188    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
51189    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
51190    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
51191    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
51192    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
51193    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
51194    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
51195    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
51196    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
51197    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
51198    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
51199    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
51200    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
51201    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
51202    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
51206 
51203    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
51204    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
51205    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
51207    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51208    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51209 
51210    ---------------------------------------------------------------------------------------------------------------
51211    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51212    ---------------------------------------------------------------------------------------------------------------
51213    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51214 
51215    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51216    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51217 
51218    IF xla_accounting_cache_pkg.GetValueChar
51219          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51220          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51221    AND l_bflow_method_code = 'PRIOR_ENTRY'
51222 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51223    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51224          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51225        )
51226    THEN
51227          xla_ae_lines_pkg.BflowUpgEntry
51228            (p_business_method_code    => l_bflow_method_code
51229            ,p_business_class_code     => l_bflow_class_code
51230            ,p_balance_type            => l_balance_type_code);
51231    ELSE
51232       NULL;
51233 XLA_AE_LINES_PKG.business_flow_validation(
51234                                 p_business_method_code     => l_bflow_method_code
51235                                ,p_business_class_code      => l_bflow_class_code
51236                                ,p_inherit_description_flag => l_inherit_desc_flag);
51237    END IF;
51238 
51239    --
51240    -- call analytical criteria
51241    --
51242    -- Inherited Analytical Criteria for business flow method of Prior Entry.
51243    --
51244    -- call description
51245    --
51246    -- No description or it is inherited.
51247    --
51248    -- call ADRs
51249    -- Bug 4922099
51250    --
51251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51252         (NVL(l_actual_upg_option, 'N') = 'O') OR
51253         (NVL(l_enc_upg_option, 'N') = 'O')
51254       )
51255    THEN
51256    NULL;
51257    --
51258    --
51259    
51260    --
51261    --
51262    END IF;
51263    --
51264    -- Bug 4922099
51265    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51266           (NVL(l_enc_upg_option, 'N') = 'O')
51267         ) AND
51268         (l_bflow_method_code = 'PRIOR_ENTRY')
51269       )
51270    THEN
51271       IF
51272       --
51273       1 = 1
51274       --
51275       THEN
51276       xla_accounting_err_pkg.build_message
51277                                     (p_appli_s_name            => 'XLA'
51278                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51279                                     ,p_token_1                 => 'LINE_NUMBER'
51280                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51281                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51282                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51283                                                                              l_component_type
51284                                                                             ,l_component_code
51285                                                                             ,l_component_type_code
51286                                                                             ,l_component_appl_id
51287                                                                             ,l_amb_context_code
51288                                                                             ,l_entity_code
51289                                                                             ,l_event_class_code
51290                                                                            )
51291                                     ,p_token_3                 => 'OWNER'
51292                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51293                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51294                                                                           ,p_lookup_code    => l_component_type_code
51295                                                                          )
51296                                     ,p_token_4                 => 'PRODUCT_NAME'
51297                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51298                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51299                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51300                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51301                                     ,p_ae_header_id            =>  NULL
51302                                        );
51303 
51307                       ,p_level    => C_LEVEL_ERROR
51304         IF (C_LEVEL_ERROR>= g_log_level) THEN
51305                  trace
51306                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51308                       ,p_module   => l_log_module);
51309         END IF;
51310       END IF;
51311    END IF;
51312    --
51313    --
51314    ------------------------------------------------------------------------------------------------
51315    -- 4219869 Business Flow
51316    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51317    -- Prior Entry.  Currently, the following code is always generated.
51318    ------------------------------------------------------------------------------------------------
51319    -- No ValidateCurrentLine for business flow method of Prior Entry
51320 
51321    ------------------------------------------------------------------------------------
51322    -- 4219869 Business Flow
51323    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51324    ------------------------------------------------------------------------------------
51325    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51326 
51327    ----------------------------------------------------------------------------------
51328    -- 4219869 Business Flow
51329    -- Update journal entry status -- Need to generate this within IF <condition>
51330    ----------------------------------------------------------------------------------
51331    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51332          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51333          ,p_balance_type_code => l_balance_type_code
51334          );
51335 
51336    -------------------------------------------------------------------------------------------
51337    -- 4262811 - Generate the Accrual Reversal lines
51338    -------------------------------------------------------------------------------------------
51339    BEGIN
51340       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51341                               (g_array_event(p_event_id).array_value_num('header_index'));
51342       IF l_acc_rev_flag IS NULL THEN
51343          l_acc_rev_flag := 'N';
51344       END IF;
51345    EXCEPTION
51346       WHEN OTHERS THEN
51347          l_acc_rev_flag := 'N';
51348    END;
51349    --
51350    IF (l_acc_rev_flag = 'Y') THEN
51351 
51352        -- 4645092  ------------------------------------------------------------------------------
51353        -- To allow MPA report to determine if it should generate report process
51354        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51355        ------------------------------------------------------------------------------------------
51356 
51357        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51358        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51359 
51360        --
51361        -- Update the line information that should be overwritten
51362        --
51363        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51364                                          p_header_num   => 1);
51365        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51366 
51367        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51368 
51369        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51370           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51371        END IF;
51372 
51373       --
51374       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51375       --
51376       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51377           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51378       ELSE
51379           ---------------------------------------------------------------------------------------------------
51380           -- 4262811a Switch Sign
51381           ---------------------------------------------------------------------------------------------------
51382           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51383           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51384                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51385           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51386                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51387           -- 5132302
51388           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51389                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51390 
51391       END IF;
51392 
51393       -- 4955764
51394       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51395       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51396 
51397 
51398       XLA_AE_LINES_PKG.ValidateCurrentLine;
51399       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51400 
51401       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51402                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51406 
51403                ,p_balance_type_code => l_balance_type_code);
51404 
51405    END IF;
51407    -----------------------------------------------------------------------------------------
51408    -- 4262811 Multiperiod Accounting
51409    -----------------------------------------------------------------------------------------
51410      -- No MPA option is assigned.
51411 
51412 
51413 END IF;
51414 END IF;
51415 --
51416 
51417 --
51418 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51419    trace
51420       (p_msg      => 'END of AcctLineType_103'
51421       ,p_level    => C_LEVEL_PROCEDURE
51422       ,p_module   => l_log_module);
51423 END IF;
51424 --
51425 EXCEPTION
51426   WHEN xla_exceptions_pkg.application_exception THEN
51427       RAISE;
51428   WHEN OTHERS THEN
51429        xla_exceptions_pkg.raise_message
51430            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_103');
51431 END AcctLineType_103;
51432 --
51433 
51434 ---------------------------------------
51435 --
51436 -- PRIVATE FUNCTION
51437 --         AcctLineType_104
51438 --
51439 ---------------------------------------
51440 PROCEDURE AcctLineType_104 (
51441   p_application_id        IN NUMBER
51442  ,p_event_id              IN NUMBER
51443  ,p_calculate_acctd_flag  IN VARCHAR2
51444  ,p_calculate_g_l_flag    IN VARCHAR2
51445  ,p_actual_flag           IN OUT VARCHAR2
51446  ,p_balance_type_code     OUT VARCHAR2
51447  ,p_gain_or_loss_ref      OUT VARCHAR2
51448  
51449 --Budget Code Combination ID
51450  , p_source_2            IN NUMBER
51451 --Cost CCID
51452  , p_source_3            IN NUMBER
51453 --Cost Clearing CCID
51454  , p_source_6            IN NUMBER
51455 --Reversing Line Flag
51456  , p_source_22            IN VARCHAR2
51457 --Actual Upgrade Credit Accounting Class
51458  , p_source_23            IN VARCHAR2
51459 --Entered Currency Code
51460  , p_source_25            IN VARCHAR2
51461 --Exchange Rate Date
51462  , p_source_27            IN DATE
51463 --Exchange Rate
51464  , p_source_28            IN NUMBER
51465 --Exchange Rate Type
51466  , p_source_29            IN VARCHAR2
51467 --Actual Upgrade Debit Accounting Class
51468  , p_source_30            IN VARCHAR2
51469 --Use Actuals Upgrade Attributes Flag
51470  , p_source_31            IN VARCHAR2
51471 --Expenditure Item ID
51472  , p_source_32            IN NUMBER
51473 --Cost Distribution Line Number
51474  , p_source_33            IN NUMBER
51475 --Line Type
51476  , p_source_34            IN VARCHAR2
51477  , p_source_34_meaning    IN VARCHAR2
51478 --Reversed Line Number
51479  , p_source_35            IN NUMBER
51480 --System Linkage Function
51481  , p_source_37            IN VARCHAR2
51482 --Entered Burdened Cost
51483  , p_source_44            IN NUMBER
51484 --Accounted Burdened Cost
51485  , p_source_45            IN NUMBER
51486 --Encumbrance Amount
51487  , p_source_46            IN NUMBER
51488 --Project Encumbrance Applied to Application Identifier
51489  , p_source_47            IN NUMBER
51490 --Project Encumbrance Applied to Distribution Type
51491  , p_source_48            IN VARCHAR2
51492 --Project Encumbrance Applied to Entity Code
51493  , p_source_49            IN VARCHAR2
51494 --Project Encumbrance Applied to First Distribution ID
51495  , p_source_50            IN NUMBER
51496 --Project Encumbrance Applied to First System Transaction ID
51497  , p_source_51            IN NUMBER
51498 --Project Encumbrance Applied to Second Distribution ID
51499  , p_source_52            IN VARCHAR2
51500 --Encumbrance Upgrade Debit Accounting Class
51501  , p_source_54            IN VARCHAR2
51502 --Use Encumbrance Upgrade Attributes Flag
51503  , p_source_55            IN VARCHAR2
51504 --Encumbrance Type ID
51505  , p_source_56            IN NUMBER
51506 --Project Encumbrance Type ID
51507  , p_source_57            IN NUMBER
51508 --Contingent Worker Timecard Flag
51509  , p_source_72            IN VARCHAR2
51510 --Encumbrance Accounting Enabled Flag
51511  , p_source_85            IN VARCHAR2
51512 --Liquidate Encumbrance Flag
51513  , p_source_86            IN VARCHAR2
51514 )
51515 IS
51516 
51517 l_component_type              VARCHAR2(80);
51518 l_component_code              VARCHAR2(30);
51519 l_component_type_code         VARCHAR2(1);
51520 l_component_appl_id           INTEGER;
51521 l_amb_context_code            VARCHAR2(30);
51522 l_entity_code                 VARCHAR2(30);
51523 l_event_class_code            VARCHAR2(30);
51524 l_ae_header_id                NUMBER;
51525 l_event_type_code             VARCHAR2(30);
51526 l_line_definition_code        VARCHAR2(30);
51527 l_line_definition_owner_code  VARCHAR2(1);
51528 --
51529 -- adr variables
51530 l_segment                     VARCHAR2(30);
51531 l_ccid                        NUMBER;
51532 l_adr_transaction_coa_id      NUMBER;
51533 l_adr_accounting_coa_id       NUMBER;
51534 l_adr_flexfield_segment_code  VARCHAR2(30);
51535 l_adr_flex_value_set_id       NUMBER;
51536 l_adr_value_type_code         VARCHAR2(30);
51537 l_adr_value_combination_id    NUMBER;
51538 l_adr_value_segment_code      VARCHAR2(30);
51539 
51540 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51541 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51545 -- 4262811 Variables ------------------------------------------------------------------------------------------
51542 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51543 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51544 
51546 l_entered_amt_idx             NUMBER;
51547 l_accted_amt_idx              NUMBER;
51548 l_acc_rev_flag                VARCHAR2(1);
51549 l_accrual_line_num            NUMBER;
51550 l_tmp_amt                     NUMBER;
51551 l_acc_rev_natural_side_code   VARCHAR2(1);
51552 
51553 l_num_entries                 NUMBER;
51554 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51555 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51556 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51557 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51558 l_recog_line_1                NUMBER;
51559 l_recog_line_2                NUMBER;
51560 
51561 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51562 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51563 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51564 
51565 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51566 
51567 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51568 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51569 
51570 ---------------------------------------------------------------------------------------------------------------
51571 
51572 
51573 --
51574 -- bulk performance
51575 --
51576 l_balance_type_code           VARCHAR2(1);
51577 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51578 l_log_module                  VARCHAR2(240);
51579 
51580 --
51581 -- Upgrade strategy
51582 --
51583 l_actual_upg_option           VARCHAR2(1);
51584 l_enc_upg_option           VARCHAR2(1);
51585 
51586 --
51587 BEGIN
51588 --
51589 IF g_log_enabled THEN
51590       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
51591 END IF;
51592 --
51593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51594 
51595       trace
51596          (p_msg      => 'BEGIN of AcctLineType_104'
51597          ,p_level    => C_LEVEL_PROCEDURE
51598          ,p_module   => l_log_module);
51599 
51600 END IF;
51601 --
51602 l_component_type             := 'AMB_JLT';
51603 l_component_code             := 'REL_PROJ_ENC';
51604 l_component_type_code        := 'S';
51605 l_component_appl_id          :=  275;
51606 l_amb_context_code           := 'DEFAULT';
51607 l_entity_code                := 'EXPENDITURES';
51608 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
51609 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
51610 l_line_definition_owner_code := 'S';
51611 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
51612 --
51613 l_balance_type_code          := 'E';
51614 l_segment                     := NULL;
51615 l_ccid                        := NULL;
51616 l_adr_transaction_coa_id      := NULL;
51617 l_adr_accounting_coa_id       := NULL;
51618 l_adr_flexfield_segment_code  := NULL;
51619 l_adr_flex_value_set_id       := NULL;
51620 l_adr_value_type_code         := NULL;
51621 l_adr_value_combination_id    := NULL;
51622 l_adr_value_segment_code      := NULL;
51623 
51624 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
51625 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
51626 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51627 l_budgetary_control_flag     := 'N';
51628 
51629 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51630 l_bflow_applied_to_amt       := NULL; -- 5132302
51631 l_entered_amt_idx            := NULL;          -- 4262811
51632 l_accted_amt_idx             := NULL;          -- 4262811
51633 l_acc_rev_flag               := NULL;          -- 4262811
51634 l_accrual_line_num           := NULL;          -- 4262811
51635 l_tmp_amt                    := NULL;          -- 4262811
51636 --
51637  
51638 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51639     l_balance_type_code <> 'B' THEN
51640 IF NVL(p_source_34,'
51641 ') =  'D' AND 
51642 NVL(p_source_85,'
51643 ') =  'Y' AND 
51644 ((NVL(p_source_37,'
51645 ') =  'ST' OR 
51646 NVL(p_source_37,'
51647 ') =  'OT' AND 
51648 NVL(p_source_72,'
51649 ') =  'Y') OR 
51650 NVL(p_source_37,'
51651 ') =  'VI') AND 
51652 NVL(p_source_86,'
51653 ') =  'Y'
51654  THEN 
51655 
51656    --
51657    XLA_AE_LINES_PKG.SetNewLine;
51658 
51659    p_balance_type_code          := l_balance_type_code;
51660    -- set the flag so later we will know whether the gain loss line needs to be created
51661    
51662    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51663      p_actual_flag :='A';
51664    END IF;
51665 
51666    --
51667    -- bulk performance
51668    --
51669    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51670                                       p_header_num   => 0); -- 4262811
51671    --
51672    -- set accounting line options
51673    --
51674    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51675            p_natural_side_code          => 'C'
51676          , p_gain_or_loss_flag          => 'N'
51680          , p_merge_duplicate_code       => 'N'
51677          , p_gl_transfer_mode_code      => 'S'
51678          , p_acct_entry_type_code       => 'E'
51679          , p_switch_side_flag           => 'N'
51681          );
51682    --
51683    l_acc_rev_natural_side_code := 'D';  -- 4262811
51684    -- 
51685    --
51686    -- set accounting line type info
51687    --
51688    xla_ae_lines_pkg.SetAcctLineType
51689       (p_component_type             => l_component_type
51690       ,p_event_type_code            => l_event_type_code
51691       ,p_line_definition_owner_code => l_line_definition_owner_code
51692       ,p_line_definition_code       => l_line_definition_code
51693       ,p_accounting_line_code       => l_component_code
51694       ,p_accounting_line_type_code  => l_component_type_code
51695       ,p_accounting_line_appl_id    => l_component_appl_id
51696       ,p_amb_context_code           => l_amb_context_code
51697       ,p_entity_code                => l_entity_code
51698       ,p_event_class_code           => l_event_class_code);
51699    --
51700    -- set accounting class
51701    --
51702    xla_ae_lines_pkg.SetAcctClass(
51703            p_accounting_class_code  => 'PA_BUDGET_ENC'
51704          , p_ae_header_id           => l_ae_header_id
51705          );
51706 
51707    --
51708    -- set rounding class
51709    --
51710    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51711                       'PA_BUDGET_ENC';
51712 
51713    --
51714    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51715    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51716    --
51717    -- bulk performance
51718    --
51719    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51720 
51721    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51722       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51723 
51724    -- 4955764
51725    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51726       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51727 
51728    -- 4458381 Public Sector Enh
51729    
51730    --
51731    -- set accounting attributes for the line type
51732    --
51733    l_entered_amt_idx := 35;
51734    l_accted_amt_idx  := 37;
51735    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
51736    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
51737    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
51738    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
51739    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
51740    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
51741    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
51742    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
51743    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
51744    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
51745    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
51746    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
51747    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
51748    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
51749    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
51750    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
51751    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
51752    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
51753    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
51754    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
51755    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
51756    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
51757    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
51758    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
51759    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
51760    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
51761    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
51762    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
51763    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
51764    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
51765    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
51766    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
51767    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
51768    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
51769    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
51770    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
51771    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
51772    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
51773    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
51774    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
51775    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
51776    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51777    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
51778    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
51779    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
51783    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
51780    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
51781    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
51782    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51784    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
51785    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
51786    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
51787    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
51788    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
51789    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
51790    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
51791    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
51792    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
51793    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
51794    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
51795    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
51796    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
51797    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
51798    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
51799    l_rec_acct_attrs.array_char_value(32)  := 
51800 xla_ae_sources_pkg.GetSystemSourceChar(
51801    p_source_code           => 'XLA_CURRENCY_CODE'
51802  , p_source_type_code      => 'Y'
51803  , p_source_application_id =>  602
51804 );
51805    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
51806    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
51807    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
51808    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
51809    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
51810    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
51811    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
51812    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
51813    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
51814    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
51815    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
51816    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
51817    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
51818    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
51819    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
51820    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
51821    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
51822    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
51823    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
51824    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
51825 
51826    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51827    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51828 
51829    ---------------------------------------------------------------------------------------------------------------
51830    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51831    ---------------------------------------------------------------------------------------------------------------
51832    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51833 
51834    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51835    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51836 
51837    IF xla_accounting_cache_pkg.GetValueChar
51838          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51839          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51840    AND l_bflow_method_code = 'PRIOR_ENTRY'
51841 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51842    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51843          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51844        )
51845    THEN
51846          xla_ae_lines_pkg.BflowUpgEntry
51847            (p_business_method_code    => l_bflow_method_code
51848            ,p_business_class_code     => l_bflow_class_code
51849            ,p_balance_type            => l_balance_type_code);
51850    ELSE
51851       NULL;
51852 XLA_AE_LINES_PKG.business_flow_validation(
51853                                 p_business_method_code     => l_bflow_method_code
51854                                ,p_business_class_code      => l_bflow_class_code
51855                                ,p_inherit_description_flag => l_inherit_desc_flag);
51856    END IF;
51857 
51858    --
51859    -- call analytical criteria
51860    --
51861    -- Inherited Analytical Criteria for business flow method of Prior Entry.
51862    --
51863    -- call description
51864    --
51865    -- No description or it is inherited.
51866    --
51867    -- call ADRs
51868    -- Bug 4922099
51869    --
51870    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51871         (NVL(l_actual_upg_option, 'N') = 'O') OR
51872         (NVL(l_enc_upg_option, 'N') = 'O')
51873       )
51874    THEN
51875    NULL;
51876    --
51877    --
51878    
51879    --
51880    --
51881    END IF;
51882    --
51883    -- Bug 4922099
51884    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51888       )
51885           (NVL(l_enc_upg_option, 'N') = 'O')
51886         ) AND
51887         (l_bflow_method_code = 'PRIOR_ENTRY')
51889    THEN
51890       IF
51891       --
51892       1 = 1
51893       --
51894       THEN
51895       xla_accounting_err_pkg.build_message
51896                                     (p_appli_s_name            => 'XLA'
51897                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51898                                     ,p_token_1                 => 'LINE_NUMBER'
51899                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51900                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51901                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51902                                                                              l_component_type
51903                                                                             ,l_component_code
51904                                                                             ,l_component_type_code
51905                                                                             ,l_component_appl_id
51906                                                                             ,l_amb_context_code
51907                                                                             ,l_entity_code
51908                                                                             ,l_event_class_code
51909                                                                            )
51910                                     ,p_token_3                 => 'OWNER'
51911                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51912                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51913                                                                           ,p_lookup_code    => l_component_type_code
51914                                                                          )
51915                                     ,p_token_4                 => 'PRODUCT_NAME'
51916                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51917                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51918                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51919                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51920                                     ,p_ae_header_id            =>  NULL
51921                                        );
51922 
51923         IF (C_LEVEL_ERROR>= g_log_level) THEN
51924                  trace
51925                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51926                       ,p_level    => C_LEVEL_ERROR
51927                       ,p_module   => l_log_module);
51928         END IF;
51929       END IF;
51930    END IF;
51931    --
51932    --
51933    ------------------------------------------------------------------------------------------------
51934    -- 4219869 Business Flow
51935    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51936    -- Prior Entry.  Currently, the following code is always generated.
51937    ------------------------------------------------------------------------------------------------
51938    -- No ValidateCurrentLine for business flow method of Prior Entry
51939 
51940    ------------------------------------------------------------------------------------
51941    -- 4219869 Business Flow
51942    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51943    ------------------------------------------------------------------------------------
51944    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51945 
51946    ----------------------------------------------------------------------------------
51947    -- 4219869 Business Flow
51948    -- Update journal entry status -- Need to generate this within IF <condition>
51949    ----------------------------------------------------------------------------------
51950    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51951          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51952          ,p_balance_type_code => l_balance_type_code
51953          );
51954 
51955    -------------------------------------------------------------------------------------------
51956    -- 4262811 - Generate the Accrual Reversal lines
51957    -------------------------------------------------------------------------------------------
51958    BEGIN
51959       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51960                               (g_array_event(p_event_id).array_value_num('header_index'));
51961       IF l_acc_rev_flag IS NULL THEN
51962          l_acc_rev_flag := 'N';
51963       END IF;
51964    EXCEPTION
51965       WHEN OTHERS THEN
51966          l_acc_rev_flag := 'N';
51967    END;
51968    --
51969    IF (l_acc_rev_flag = 'Y') THEN
51970 
51971        -- 4645092  ------------------------------------------------------------------------------
51972        -- To allow MPA report to determine if it should generate report process
51973        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51974        ------------------------------------------------------------------------------------------
51975 
51976        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51980        -- Update the line information that should be overwritten
51977        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51978 
51979        --
51981        --
51982        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51983                                          p_header_num   => 1);
51984        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51985 
51986        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51987 
51988        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51989           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51990        END IF;
51991 
51992       --
51993       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51994       --
51995       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51996           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51997       ELSE
51998           ---------------------------------------------------------------------------------------------------
51999           -- 4262811a Switch Sign
52000           ---------------------------------------------------------------------------------------------------
52001           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52002           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52003                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52004           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52005                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52006           -- 5132302
52007           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52008                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52009 
52010       END IF;
52011 
52012       -- 4955764
52013       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52015 
52016 
52017       XLA_AE_LINES_PKG.ValidateCurrentLine;
52018       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52019 
52020       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52021                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52022                ,p_balance_type_code => l_balance_type_code);
52023 
52024    END IF;
52025 
52026    -----------------------------------------------------------------------------------------
52027    -- 4262811 Multiperiod Accounting
52028    -----------------------------------------------------------------------------------------
52029      -- No MPA option is assigned.
52030 
52031 
52032 END IF;
52033 END IF;
52034 --
52035 
52036 --
52037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52038    trace
52039       (p_msg      => 'END of AcctLineType_104'
52040       ,p_level    => C_LEVEL_PROCEDURE
52041       ,p_module   => l_log_module);
52042 END IF;
52043 --
52044 EXCEPTION
52045   WHEN xla_exceptions_pkg.application_exception THEN
52046       RAISE;
52047   WHEN OTHERS THEN
52048        xla_exceptions_pkg.raise_message
52049            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_104');
52050 END AcctLineType_104;
52051 --
52052 
52053 ---------------------------------------
52054 --
52055 -- PRIVATE FUNCTION
52056 --         AcctLineType_105
52057 --
52058 ---------------------------------------
52059 PROCEDURE AcctLineType_105 (
52060   p_application_id        IN NUMBER
52061  ,p_event_id              IN NUMBER
52062  ,p_calculate_acctd_flag  IN VARCHAR2
52063  ,p_calculate_g_l_flag    IN VARCHAR2
52064  ,p_actual_flag           IN OUT VARCHAR2
52065  ,p_balance_type_code     OUT VARCHAR2
52066  ,p_gain_or_loss_ref      OUT VARCHAR2
52067  
52068 --Budget Code Combination ID
52069  , p_source_2            IN NUMBER
52070 --Cost CCID
52071  , p_source_3            IN NUMBER
52072 --Cost Clearing CCID
52073  , p_source_6            IN NUMBER
52074 --Reversing Line Flag
52075  , p_source_22            IN VARCHAR2
52076 --Actual Upgrade Credit Accounting Class
52077  , p_source_23            IN VARCHAR2
52078 --Entered Currency Code
52079  , p_source_25            IN VARCHAR2
52080 --Exchange Rate Date
52081  , p_source_27            IN DATE
52082 --Exchange Rate
52083  , p_source_28            IN NUMBER
52084 --Exchange Rate Type
52085  , p_source_29            IN VARCHAR2
52086 --Actual Upgrade Debit Accounting Class
52087  , p_source_30            IN VARCHAR2
52088 --Use Actuals Upgrade Attributes Flag
52089  , p_source_31            IN VARCHAR2
52090 --Expenditure Item ID
52091  , p_source_32            IN NUMBER
52092 --Cost Distribution Line Number
52093  , p_source_33            IN NUMBER
52094 --Line Type
52095  , p_source_34            IN VARCHAR2
52096  , p_source_34_meaning    IN VARCHAR2
52097 --Reversed Line Number
52098  , p_source_35            IN NUMBER
52099 --System Linkage Function
52103 --Accounted Burdened Cost
52100  , p_source_37            IN VARCHAR2
52101 --Entered Burdened Cost
52102  , p_source_44            IN NUMBER
52104  , p_source_45            IN NUMBER
52105 --Encumbrance Amount
52106  , p_source_46            IN NUMBER
52107 --Project Encumbrance Applied to Application Identifier
52108  , p_source_47            IN NUMBER
52109 --Project Encumbrance Applied to Distribution Type
52110  , p_source_48            IN VARCHAR2
52111 --Project Encumbrance Applied to Entity Code
52112  , p_source_49            IN VARCHAR2
52113 --Project Encumbrance Applied to First Distribution ID
52114  , p_source_50            IN NUMBER
52115 --Project Encumbrance Applied to First System Transaction ID
52116  , p_source_51            IN NUMBER
52117 --Project Encumbrance Applied to Second Distribution ID
52118  , p_source_52            IN VARCHAR2
52119 --Encumbrance Upgrade Credit Accounting Class
52120  , p_source_53            IN VARCHAR2
52121 --Encumbrance Upgrade Debit Accounting Class
52122  , p_source_54            IN VARCHAR2
52123 --Use Encumbrance Upgrade Attributes Flag
52124  , p_source_55            IN VARCHAR2
52125 --Encumbrance Type ID
52126  , p_source_56            IN NUMBER
52127 --Project Encumbrance Type ID
52128  , p_source_57            IN NUMBER
52129 --Encumbrance Accounting Enabled Flag
52130  , p_source_85            IN VARCHAR2
52131 --Liquidate Encumbrance Flag
52132  , p_source_86            IN VARCHAR2
52133 )
52134 IS
52135 
52136 l_component_type              VARCHAR2(80);
52137 l_component_code              VARCHAR2(30);
52138 l_component_type_code         VARCHAR2(1);
52139 l_component_appl_id           INTEGER;
52140 l_amb_context_code            VARCHAR2(30);
52141 l_entity_code                 VARCHAR2(30);
52142 l_event_class_code            VARCHAR2(30);
52143 l_ae_header_id                NUMBER;
52144 l_event_type_code             VARCHAR2(30);
52145 l_line_definition_code        VARCHAR2(30);
52146 l_line_definition_owner_code  VARCHAR2(1);
52147 --
52148 -- adr variables
52149 l_segment                     VARCHAR2(30);
52150 l_ccid                        NUMBER;
52151 l_adr_transaction_coa_id      NUMBER;
52152 l_adr_accounting_coa_id       NUMBER;
52153 l_adr_flexfield_segment_code  VARCHAR2(30);
52154 l_adr_flex_value_set_id       NUMBER;
52155 l_adr_value_type_code         VARCHAR2(30);
52156 l_adr_value_combination_id    NUMBER;
52157 l_adr_value_segment_code      VARCHAR2(30);
52158 
52159 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52160 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52161 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52162 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52163 
52164 -- 4262811 Variables ------------------------------------------------------------------------------------------
52165 l_entered_amt_idx             NUMBER;
52166 l_accted_amt_idx              NUMBER;
52167 l_acc_rev_flag                VARCHAR2(1);
52168 l_accrual_line_num            NUMBER;
52169 l_tmp_amt                     NUMBER;
52170 l_acc_rev_natural_side_code   VARCHAR2(1);
52171 
52172 l_num_entries                 NUMBER;
52173 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52174 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52175 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52176 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52177 l_recog_line_1                NUMBER;
52178 l_recog_line_2                NUMBER;
52179 
52180 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52181 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52182 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52183 
52184 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52185 
52186 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52187 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52188 
52189 ---------------------------------------------------------------------------------------------------------------
52190 
52191 
52192 --
52193 -- bulk performance
52194 --
52195 l_balance_type_code           VARCHAR2(1);
52196 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52197 l_log_module                  VARCHAR2(240);
52198 
52199 --
52200 -- Upgrade strategy
52201 --
52202 l_actual_upg_option           VARCHAR2(1);
52203 l_enc_upg_option           VARCHAR2(1);
52204 
52205 --
52206 BEGIN
52207 --
52208 IF g_log_enabled THEN
52209       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
52210 END IF;
52211 --
52212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52213 
52214       trace
52215          (p_msg      => 'BEGIN of AcctLineType_105'
52216          ,p_level    => C_LEVEL_PROCEDURE
52217          ,p_module   => l_log_module);
52218 
52219 END IF;
52220 --
52221 l_component_type             := 'AMB_JLT';
52222 l_component_code             := 'REL_PROJ_ENC';
52223 l_component_type_code        := 'S';
52224 l_component_appl_id          :=  275;
52225 l_amb_context_code           := 'DEFAULT';
52226 l_entity_code                := 'EXPENDITURES';
52227 l_event_class_code           := 'BURDEN_COST';
52228 l_event_type_code            := 'BURDEN_COST_ALL';
52229 l_line_definition_owner_code := 'S';
52233 l_segment                     := NULL;
52230 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
52231 --
52232 l_balance_type_code          := 'E';
52234 l_ccid                        := NULL;
52235 l_adr_transaction_coa_id      := NULL;
52236 l_adr_accounting_coa_id       := NULL;
52237 l_adr_flexfield_segment_code  := NULL;
52238 l_adr_flex_value_set_id       := NULL;
52239 l_adr_value_type_code         := NULL;
52240 l_adr_value_combination_id    := NULL;
52241 l_adr_value_segment_code      := NULL;
52242 
52243 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
52244 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
52245 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52246 l_budgetary_control_flag     := 'N';
52247 
52248 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52249 l_bflow_applied_to_amt       := NULL; -- 5132302
52250 l_entered_amt_idx            := NULL;          -- 4262811
52251 l_accted_amt_idx             := NULL;          -- 4262811
52252 l_acc_rev_flag               := NULL;          -- 4262811
52253 l_accrual_line_num           := NULL;          -- 4262811
52254 l_tmp_amt                    := NULL;          -- 4262811
52255 --
52256  
52257 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52258     l_balance_type_code <> 'B' THEN
52259 IF NVL(p_source_34,'
52260 ') =  'R' AND 
52261 NVL(p_source_85,'
52262 ') =  'Y' AND 
52263 NVL(p_source_37,'
52264 ') =  'BTC' AND 
52265 NVL(p_source_86,'
52266 ') =  'Y'
52267  THEN 
52268 
52269    --
52270    XLA_AE_LINES_PKG.SetNewLine;
52271 
52272    p_balance_type_code          := l_balance_type_code;
52273    -- set the flag so later we will know whether the gain loss line needs to be created
52274    
52275    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52276      p_actual_flag :='A';
52277    END IF;
52278 
52279    --
52280    -- bulk performance
52281    --
52282    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52283                                       p_header_num   => 0); -- 4262811
52284    --
52285    -- set accounting line options
52286    --
52287    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52288            p_natural_side_code          => 'C'
52289          , p_gain_or_loss_flag          => 'N'
52290          , p_gl_transfer_mode_code      => 'S'
52291          , p_acct_entry_type_code       => 'E'
52292          , p_switch_side_flag           => 'N'
52293          , p_merge_duplicate_code       => 'N'
52294          );
52295    --
52296    l_acc_rev_natural_side_code := 'D';  -- 4262811
52297    -- 
52298    --
52299    -- set accounting line type info
52300    --
52301    xla_ae_lines_pkg.SetAcctLineType
52302       (p_component_type             => l_component_type
52303       ,p_event_type_code            => l_event_type_code
52304       ,p_line_definition_owner_code => l_line_definition_owner_code
52305       ,p_line_definition_code       => l_line_definition_code
52306       ,p_accounting_line_code       => l_component_code
52307       ,p_accounting_line_type_code  => l_component_type_code
52308       ,p_accounting_line_appl_id    => l_component_appl_id
52309       ,p_amb_context_code           => l_amb_context_code
52310       ,p_entity_code                => l_entity_code
52311       ,p_event_class_code           => l_event_class_code);
52312    --
52313    -- set accounting class
52314    --
52315    xla_ae_lines_pkg.SetAcctClass(
52316            p_accounting_class_code  => 'PA_BUDGET_ENC'
52317          , p_ae_header_id           => l_ae_header_id
52318          );
52319 
52320    --
52321    -- set rounding class
52322    --
52323    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52324                       'PA_BUDGET_ENC';
52325 
52326    --
52327    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52328    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52329    --
52330    -- bulk performance
52331    --
52332    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52333 
52334    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52335       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52336 
52337    -- 4955764
52338    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52339       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52340 
52341    -- 4458381 Public Sector Enh
52342    
52343    --
52344    -- set accounting attributes for the line type
52345    --
52346    l_entered_amt_idx := 40;
52347    l_accted_amt_idx  := 42;
52348    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
52349    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
52350    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
52351    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
52352    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
52353    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
52354    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
52355    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
52359    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
52356    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
52357    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
52358    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
52360    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
52361    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
52362    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
52363    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
52364    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
52365    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
52366    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
52367    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
52368    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
52369    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
52370    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
52371    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
52372    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
52373    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
52374    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
52375    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
52376    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
52377    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
52378    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
52379    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
52380    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
52381    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
52382    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
52383    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
52384    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
52385    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
52386    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
52387    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
52388    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
52389    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
52390    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
52391    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
52392    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
52393    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
52394    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
52395    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
52396    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
52397    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
52398    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
52399    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
52400    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
52401    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
52402    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
52403    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
52404    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
52405    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
52406    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
52407    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
52408    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
52409    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
52410    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
52411    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
52412    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
52413    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
52414    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
52415    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
52416    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
52417    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
52418    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
52419    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
52420    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
52421    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
52422    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
52423    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
52424    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
52425    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
52426    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
52427    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
52428    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
52429    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
52430    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
52431    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
52432    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
52433    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
52434    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
52435    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
52436    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
52440    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
52437    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
52438    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
52439    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
52441    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
52442    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
52443 
52444    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52445    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52446 
52447    ---------------------------------------------------------------------------------------------------------------
52448    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52449    ---------------------------------------------------------------------------------------------------------------
52450    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52451 
52452    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52453    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52454 
52455    IF xla_accounting_cache_pkg.GetValueChar
52456          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52457          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52458    AND l_bflow_method_code = 'PRIOR_ENTRY'
52459 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52460    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52461          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52462        )
52463    THEN
52464          xla_ae_lines_pkg.BflowUpgEntry
52465            (p_business_method_code    => l_bflow_method_code
52466            ,p_business_class_code     => l_bflow_class_code
52467            ,p_balance_type            => l_balance_type_code);
52468    ELSE
52469       NULL;
52470 XLA_AE_LINES_PKG.business_flow_validation(
52471                                 p_business_method_code     => l_bflow_method_code
52472                                ,p_business_class_code      => l_bflow_class_code
52473                                ,p_inherit_description_flag => l_inherit_desc_flag);
52474    END IF;
52475 
52476    --
52477    -- call analytical criteria
52478    --
52479    -- Inherited Analytical Criteria for business flow method of Prior Entry.
52480    --
52481    -- call description
52482    --
52483    -- No description or it is inherited.
52484    --
52485    -- call ADRs
52486    -- Bug 4922099
52487    --
52488    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52489         (NVL(l_actual_upg_option, 'N') = 'O') OR
52490         (NVL(l_enc_upg_option, 'N') = 'O')
52491       )
52492    THEN
52493    NULL;
52494    --
52495    --
52496    
52497    --
52498    --
52499    END IF;
52500    --
52501    -- Bug 4922099
52502    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52503           (NVL(l_enc_upg_option, 'N') = 'O')
52504         ) AND
52505         (l_bflow_method_code = 'PRIOR_ENTRY')
52506       )
52507    THEN
52508       IF
52509       --
52510       1 = 1
52511       --
52512       THEN
52513       xla_accounting_err_pkg.build_message
52514                                     (p_appli_s_name            => 'XLA'
52515                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52516                                     ,p_token_1                 => 'LINE_NUMBER'
52517                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52518                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52519                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52520                                                                              l_component_type
52521                                                                             ,l_component_code
52522                                                                             ,l_component_type_code
52523                                                                             ,l_component_appl_id
52524                                                                             ,l_amb_context_code
52525                                                                             ,l_entity_code
52526                                                                             ,l_event_class_code
52527                                                                            )
52528                                     ,p_token_3                 => 'OWNER'
52529                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52530                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52531                                                                           ,p_lookup_code    => l_component_type_code
52532                                                                          )
52533                                     ,p_token_4                 => 'PRODUCT_NAME'
52534                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52535                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52539                                        );
52536                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52537                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52538                                     ,p_ae_header_id            =>  NULL
52540 
52541         IF (C_LEVEL_ERROR>= g_log_level) THEN
52542                  trace
52543                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52544                       ,p_level    => C_LEVEL_ERROR
52545                       ,p_module   => l_log_module);
52546         END IF;
52547       END IF;
52548    END IF;
52549    --
52550    --
52551    ------------------------------------------------------------------------------------------------
52552    -- 4219869 Business Flow
52553    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52554    -- Prior Entry.  Currently, the following code is always generated.
52555    ------------------------------------------------------------------------------------------------
52556    -- No ValidateCurrentLine for business flow method of Prior Entry
52557 
52558    ------------------------------------------------------------------------------------
52559    -- 4219869 Business Flow
52560    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52561    ------------------------------------------------------------------------------------
52562    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52563 
52564    ----------------------------------------------------------------------------------
52565    -- 4219869 Business Flow
52566    -- Update journal entry status -- Need to generate this within IF <condition>
52567    ----------------------------------------------------------------------------------
52568    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52569          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52570          ,p_balance_type_code => l_balance_type_code
52571          );
52572 
52573    -------------------------------------------------------------------------------------------
52574    -- 4262811 - Generate the Accrual Reversal lines
52575    -------------------------------------------------------------------------------------------
52576    BEGIN
52577       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52578                               (g_array_event(p_event_id).array_value_num('header_index'));
52579       IF l_acc_rev_flag IS NULL THEN
52580          l_acc_rev_flag := 'N';
52581       END IF;
52582    EXCEPTION
52583       WHEN OTHERS THEN
52584          l_acc_rev_flag := 'N';
52585    END;
52586    --
52587    IF (l_acc_rev_flag = 'Y') THEN
52588 
52589        -- 4645092  ------------------------------------------------------------------------------
52590        -- To allow MPA report to determine if it should generate report process
52591        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52592        ------------------------------------------------------------------------------------------
52593 
52594        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52595        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52596 
52597        --
52598        -- Update the line information that should be overwritten
52599        --
52600        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52601                                          p_header_num   => 1);
52602        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52603 
52604        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52605 
52606        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52607           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52608        END IF;
52609 
52610       --
52611       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52612       --
52613       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52614           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52615       ELSE
52616           ---------------------------------------------------------------------------------------------------
52617           -- 4262811a Switch Sign
52618           ---------------------------------------------------------------------------------------------------
52619           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52620           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52621                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52622           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52623                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52624           -- 5132302
52625           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52626                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52627 
52628       END IF;
52629 
52630       -- 4955764
52631       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52632       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52633 
52634 
52635       XLA_AE_LINES_PKG.ValidateCurrentLine;
52639                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52636       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52637 
52638       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52640                ,p_balance_type_code => l_balance_type_code);
52641 
52642    END IF;
52643 
52644    -----------------------------------------------------------------------------------------
52645    -- 4262811 Multiperiod Accounting
52646    -----------------------------------------------------------------------------------------
52647      -- No MPA option is assigned.
52648 
52649 
52650 END IF;
52651 END IF;
52652 --
52653 
52654 --
52655 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52656    trace
52657       (p_msg      => 'END of AcctLineType_105'
52658       ,p_level    => C_LEVEL_PROCEDURE
52659       ,p_module   => l_log_module);
52660 END IF;
52661 --
52662 EXCEPTION
52663   WHEN xla_exceptions_pkg.application_exception THEN
52664       RAISE;
52665   WHEN OTHERS THEN
52666        xla_exceptions_pkg.raise_message
52667            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_105');
52668 END AcctLineType_105;
52669 --
52670 
52671 ---------------------------------------
52672 --
52673 -- PRIVATE FUNCTION
52674 --         AcctLineType_106
52675 --
52676 ---------------------------------------
52677 PROCEDURE AcctLineType_106 (
52678   p_application_id        IN NUMBER
52679  ,p_event_id              IN NUMBER
52680  ,p_calculate_acctd_flag  IN VARCHAR2
52681  ,p_calculate_g_l_flag    IN VARCHAR2
52682  ,p_actual_flag           IN OUT VARCHAR2
52683  ,p_balance_type_code     OUT VARCHAR2
52684  ,p_gain_or_loss_ref      OUT VARCHAR2
52685  
52686 --Budget Code Combination ID
52687  , p_source_2            IN NUMBER
52688 --Cost CCID
52689  , p_source_3            IN NUMBER
52690 --Cost Clearing CCID
52691  , p_source_6            IN NUMBER
52692 --Reversing Line Flag
52693  , p_source_22            IN VARCHAR2
52694 --Actual Upgrade Credit Accounting Class
52695  , p_source_23            IN VARCHAR2
52696 --Entered Currency Code
52697  , p_source_25            IN VARCHAR2
52698 --Exchange Rate Date
52699  , p_source_27            IN DATE
52700 --Exchange Rate
52701  , p_source_28            IN NUMBER
52702 --Exchange Rate Type
52703  , p_source_29            IN VARCHAR2
52704 --Actual Upgrade Debit Accounting Class
52705  , p_source_30            IN VARCHAR2
52706 --Use Actuals Upgrade Attributes Flag
52707  , p_source_31            IN VARCHAR2
52708 --Expenditure Item ID
52709  , p_source_32            IN NUMBER
52710 --Cost Distribution Line Number
52711  , p_source_33            IN NUMBER
52712 --Line Type
52713  , p_source_34            IN VARCHAR2
52714  , p_source_34_meaning    IN VARCHAR2
52715 --Reversed Line Number
52716  , p_source_35            IN NUMBER
52717 --System Linkage Function
52718  , p_source_37            IN VARCHAR2
52719 --Entered Burdened Cost
52720  , p_source_44            IN NUMBER
52721 --Accounted Burdened Cost
52722  , p_source_45            IN NUMBER
52723 --Encumbrance Amount
52724  , p_source_46            IN NUMBER
52725 --Project Encumbrance Applied to Application Identifier
52726  , p_source_47            IN NUMBER
52727 --Project Encumbrance Applied to Distribution Type
52728  , p_source_48            IN VARCHAR2
52729 --Project Encumbrance Applied to Entity Code
52730  , p_source_49            IN VARCHAR2
52731 --Project Encumbrance Applied to First Distribution ID
52732  , p_source_50            IN NUMBER
52733 --Project Encumbrance Applied to First System Transaction ID
52734  , p_source_51            IN NUMBER
52735 --Project Encumbrance Applied to Second Distribution ID
52736  , p_source_52            IN VARCHAR2
52737 --Encumbrance Upgrade Credit Accounting Class
52738  , p_source_53            IN VARCHAR2
52739 --Encumbrance Upgrade Debit Accounting Class
52740  , p_source_54            IN VARCHAR2
52741 --Use Encumbrance Upgrade Attributes Flag
52742  , p_source_55            IN VARCHAR2
52743 --Encumbrance Type ID
52744  , p_source_56            IN NUMBER
52745 --Project Encumbrance Type ID
52746  , p_source_57            IN NUMBER
52747 --Contingent Worker Timecard Flag
52748  , p_source_72            IN VARCHAR2
52749 --Encumbrance Accounting Enabled Flag
52750  , p_source_85            IN VARCHAR2
52751 --Liquidate Encumbrance Flag
52752  , p_source_86            IN VARCHAR2
52753 )
52754 IS
52755 
52756 l_component_type              VARCHAR2(80);
52757 l_component_code              VARCHAR2(30);
52758 l_component_type_code         VARCHAR2(1);
52759 l_component_appl_id           INTEGER;
52760 l_amb_context_code            VARCHAR2(30);
52761 l_entity_code                 VARCHAR2(30);
52762 l_event_class_code            VARCHAR2(30);
52763 l_ae_header_id                NUMBER;
52764 l_event_type_code             VARCHAR2(30);
52765 l_line_definition_code        VARCHAR2(30);
52766 l_line_definition_owner_code  VARCHAR2(1);
52767 --
52768 -- adr variables
52769 l_segment                     VARCHAR2(30);
52770 l_ccid                        NUMBER;
52771 l_adr_transaction_coa_id      NUMBER;
52772 l_adr_accounting_coa_id       NUMBER;
52773 l_adr_flexfield_segment_code  VARCHAR2(30);
52774 l_adr_flex_value_set_id       NUMBER;
52775 l_adr_value_type_code         VARCHAR2(30);
52779 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52776 l_adr_value_combination_id    NUMBER;
52777 l_adr_value_segment_code      VARCHAR2(30);
52778 
52780 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52781 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52782 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52783 
52784 -- 4262811 Variables ------------------------------------------------------------------------------------------
52785 l_entered_amt_idx             NUMBER;
52786 l_accted_amt_idx              NUMBER;
52787 l_acc_rev_flag                VARCHAR2(1);
52788 l_accrual_line_num            NUMBER;
52789 l_tmp_amt                     NUMBER;
52790 l_acc_rev_natural_side_code   VARCHAR2(1);
52791 
52792 l_num_entries                 NUMBER;
52793 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52794 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52795 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52796 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52797 l_recog_line_1                NUMBER;
52798 l_recog_line_2                NUMBER;
52799 
52800 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52801 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52802 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52803 
52804 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52805 
52806 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52807 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52808 
52809 ---------------------------------------------------------------------------------------------------------------
52810 
52811 
52812 --
52813 -- bulk performance
52814 --
52815 l_balance_type_code           VARCHAR2(1);
52816 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52817 l_log_module                  VARCHAR2(240);
52818 
52819 --
52820 -- Upgrade strategy
52821 --
52822 l_actual_upg_option           VARCHAR2(1);
52823 l_enc_upg_option           VARCHAR2(1);
52824 
52825 --
52826 BEGIN
52827 --
52828 IF g_log_enabled THEN
52829       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
52830 END IF;
52831 --
52832 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52833 
52834       trace
52835          (p_msg      => 'BEGIN of AcctLineType_106'
52836          ,p_level    => C_LEVEL_PROCEDURE
52837          ,p_module   => l_log_module);
52838 
52839 END IF;
52840 --
52841 l_component_type             := 'AMB_JLT';
52842 l_component_code             := 'REL_PROJ_ENC';
52843 l_component_type_code        := 'S';
52844 l_component_appl_id          :=  275;
52845 l_amb_context_code           := 'DEFAULT';
52846 l_entity_code                := 'EXPENDITURES';
52847 l_event_class_code           := 'TOT_BURDENED_COST';
52848 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
52849 l_line_definition_owner_code := 'S';
52850 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
52851 --
52852 l_balance_type_code          := 'E';
52853 l_segment                     := NULL;
52854 l_ccid                        := NULL;
52855 l_adr_transaction_coa_id      := NULL;
52856 l_adr_accounting_coa_id       := NULL;
52857 l_adr_flexfield_segment_code  := NULL;
52858 l_adr_flex_value_set_id       := NULL;
52859 l_adr_value_type_code         := NULL;
52860 l_adr_value_combination_id    := NULL;
52861 l_adr_value_segment_code      := NULL;
52862 
52863 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
52864 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
52865 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52866 l_budgetary_control_flag     := 'N';
52867 
52868 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52869 l_bflow_applied_to_amt       := NULL; -- 5132302
52870 l_entered_amt_idx            := NULL;          -- 4262811
52871 l_accted_amt_idx             := NULL;          -- 4262811
52872 l_acc_rev_flag               := NULL;          -- 4262811
52873 l_accrual_line_num           := NULL;          -- 4262811
52874 l_tmp_amt                    := NULL;          -- 4262811
52875 --
52876  
52877 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52878     l_balance_type_code <> 'B' THEN
52879 IF NVL(p_source_34,'
52880 ') =  'D' AND 
52881 NVL(p_source_85,'
52882 ') =  'Y' AND 
52883 ((NVL(p_source_37,'
52884 ') =  'ST' OR 
52885 NVL(p_source_37,'
52886 ') =  'OT' AND 
52887 NVL(p_source_72,'
52888 ') =  'Y') OR 
52889 NVL(p_source_37,'
52890 ') =  'VI') AND 
52891 NVL(p_source_86,'
52892 ') =  'Y'
52893  THEN 
52894 
52895    --
52896    XLA_AE_LINES_PKG.SetNewLine;
52897 
52898    p_balance_type_code          := l_balance_type_code;
52899    -- set the flag so later we will know whether the gain loss line needs to be created
52900    
52901    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52902      p_actual_flag :='A';
52903    END IF;
52904 
52905    --
52906    -- bulk performance
52907    --
52908    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52909                                       p_header_num   => 0); -- 4262811
52913    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52910    --
52911    -- set accounting line options
52912    --
52914            p_natural_side_code          => 'C'
52915          , p_gain_or_loss_flag          => 'N'
52916          , p_gl_transfer_mode_code      => 'S'
52917          , p_acct_entry_type_code       => 'E'
52918          , p_switch_side_flag           => 'N'
52919          , p_merge_duplicate_code       => 'N'
52920          );
52921    --
52922    l_acc_rev_natural_side_code := 'D';  -- 4262811
52923    -- 
52924    --
52925    -- set accounting line type info
52926    --
52927    xla_ae_lines_pkg.SetAcctLineType
52928       (p_component_type             => l_component_type
52929       ,p_event_type_code            => l_event_type_code
52930       ,p_line_definition_owner_code => l_line_definition_owner_code
52931       ,p_line_definition_code       => l_line_definition_code
52932       ,p_accounting_line_code       => l_component_code
52933       ,p_accounting_line_type_code  => l_component_type_code
52934       ,p_accounting_line_appl_id    => l_component_appl_id
52935       ,p_amb_context_code           => l_amb_context_code
52936       ,p_entity_code                => l_entity_code
52937       ,p_event_class_code           => l_event_class_code);
52938    --
52939    -- set accounting class
52940    --
52941    xla_ae_lines_pkg.SetAcctClass(
52942            p_accounting_class_code  => 'PA_BUDGET_ENC'
52943          , p_ae_header_id           => l_ae_header_id
52944          );
52945 
52946    --
52947    -- set rounding class
52948    --
52949    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52950                       'PA_BUDGET_ENC';
52951 
52952    --
52953    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52954    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52955    --
52956    -- bulk performance
52957    --
52958    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52959 
52960    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52961       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52962 
52963    -- 4955764
52964    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52965       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52966 
52967    -- 4458381 Public Sector Enh
52968    
52969    --
52970    -- set accounting attributes for the line type
52971    --
52972    l_entered_amt_idx := 40;
52973    l_accted_amt_idx  := 43;
52974    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
52975    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
52976    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
52977    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
52978    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
52979    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
52980    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
52981    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
52982    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
52983    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
52984    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
52985    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
52986    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
52987    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
52988    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
52989    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
52990    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
52991    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
52992    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
52993    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
52994    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
52995    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
52996    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
52997    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
52998    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
52999    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
53000    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
53001    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
53002    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
53003    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
53004    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
53005    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
53006    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
53007    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
53008    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
53009    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
53010    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
53011    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
53012    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
53013    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
53017    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
53014    l_rec_acct_attrs.array_num_value(20)  := p_source_47;
53015    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
53016    l_rec_acct_attrs.array_char_value(21)  := p_source_48;
53018    l_rec_acct_attrs.array_char_value(22)  := p_source_49;
53019    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
53020    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_50);
53021    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
53022    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_51);
53023    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
53024    l_rec_acct_attrs.array_char_value(25)  := p_source_52;
53025    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
53026    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
53027    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
53028    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
53029    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
53030    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
53031    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
53032    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
53033    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
53034    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
53035    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
53036    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
53037    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
53038    l_rec_acct_attrs.array_char_value(32)  := 
53039 xla_ae_sources_pkg.GetSystemSourceChar(
53040    p_source_code           => 'XLA_CURRENCY_CODE'
53041  , p_source_type_code      => 'Y'
53042  , p_source_application_id =>  602
53043 );
53044    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
53045    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
53046    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
53047    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
53048    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
53049    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
53050    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
53051    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
53052    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
53053    l_rec_acct_attrs.array_char_value(37)  := 
53054 xla_ae_sources_pkg.GetSystemSourceChar(
53055    p_source_code           => 'XLA_CURRENCY_CODE'
53056  , p_source_type_code      => 'Y'
53057  , p_source_application_id =>  602
53058 );
53059    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
53060    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
53061    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
53062    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
53063    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
53064    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
53065    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
53066    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
53067    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
53068    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
53069    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
53070    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
53071    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
53072    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
53073    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
53074    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
53075    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
53076    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
53077    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
53078    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
53079    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
53080    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
53081 
53082    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53083    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53084 
53085    ---------------------------------------------------------------------------------------------------------------
53086    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53087    ---------------------------------------------------------------------------------------------------------------
53088    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53089 
53090    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53091    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53092 
53093    IF xla_accounting_cache_pkg.GetValueChar
53094          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53095          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53096    AND l_bflow_method_code = 'PRIOR_ENTRY'
53097 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53098    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53099          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53103            (p_business_method_code    => l_bflow_method_code
53100        )
53101    THEN
53102          xla_ae_lines_pkg.BflowUpgEntry
53104            ,p_business_class_code     => l_bflow_class_code
53105            ,p_balance_type            => l_balance_type_code);
53106    ELSE
53107       NULL;
53108 XLA_AE_LINES_PKG.business_flow_validation(
53109                                 p_business_method_code     => l_bflow_method_code
53110                                ,p_business_class_code      => l_bflow_class_code
53111                                ,p_inherit_description_flag => l_inherit_desc_flag);
53112    END IF;
53113 
53114    --
53115    -- call analytical criteria
53116    --
53117    -- Inherited Analytical Criteria for business flow method of Prior Entry.
53118    --
53119    -- call description
53120    --
53121    -- No description or it is inherited.
53122    --
53123    -- call ADRs
53124    -- Bug 4922099
53125    --
53126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53127         (NVL(l_actual_upg_option, 'N') = 'O') OR
53128         (NVL(l_enc_upg_option, 'N') = 'O')
53129       )
53130    THEN
53131    NULL;
53132    --
53133    --
53134    
53135    --
53136    --
53137    END IF;
53138    --
53139    -- Bug 4922099
53140    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53141           (NVL(l_enc_upg_option, 'N') = 'O')
53142         ) AND
53143         (l_bflow_method_code = 'PRIOR_ENTRY')
53144       )
53145    THEN
53146       IF
53147       --
53148       1 = 1
53149       --
53150       THEN
53151       xla_accounting_err_pkg.build_message
53152                                     (p_appli_s_name            => 'XLA'
53153                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53154                                     ,p_token_1                 => 'LINE_NUMBER'
53155                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53156                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53157                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53158                                                                              l_component_type
53159                                                                             ,l_component_code
53160                                                                             ,l_component_type_code
53161                                                                             ,l_component_appl_id
53162                                                                             ,l_amb_context_code
53163                                                                             ,l_entity_code
53164                                                                             ,l_event_class_code
53165                                                                            )
53166                                     ,p_token_3                 => 'OWNER'
53167                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53168                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53169                                                                           ,p_lookup_code    => l_component_type_code
53170                                                                          )
53171                                     ,p_token_4                 => 'PRODUCT_NAME'
53172                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53173                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53174                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53175                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53176                                     ,p_ae_header_id            =>  NULL
53177                                        );
53178 
53179         IF (C_LEVEL_ERROR>= g_log_level) THEN
53180                  trace
53181                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53182                       ,p_level    => C_LEVEL_ERROR
53183                       ,p_module   => l_log_module);
53184         END IF;
53185       END IF;
53186    END IF;
53187    --
53188    --
53189    ------------------------------------------------------------------------------------------------
53190    -- 4219869 Business Flow
53191    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53192    -- Prior Entry.  Currently, the following code is always generated.
53193    ------------------------------------------------------------------------------------------------
53194    -- No ValidateCurrentLine for business flow method of Prior Entry
53195 
53196    ------------------------------------------------------------------------------------
53197    -- 4219869 Business Flow
53198    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53199    ------------------------------------------------------------------------------------
53200    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53201 
53202    ----------------------------------------------------------------------------------
53203    -- 4219869 Business Flow
53204    -- Update journal entry status -- Need to generate this within IF <condition>
53205    ----------------------------------------------------------------------------------
53209          );
53206    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53207          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53208          ,p_balance_type_code => l_balance_type_code
53210 
53211    -------------------------------------------------------------------------------------------
53212    -- 4262811 - Generate the Accrual Reversal lines
53213    -------------------------------------------------------------------------------------------
53214    BEGIN
53215       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53216                               (g_array_event(p_event_id).array_value_num('header_index'));
53217       IF l_acc_rev_flag IS NULL THEN
53218          l_acc_rev_flag := 'N';
53219       END IF;
53220    EXCEPTION
53221       WHEN OTHERS THEN
53222          l_acc_rev_flag := 'N';
53223    END;
53224    --
53225    IF (l_acc_rev_flag = 'Y') THEN
53226 
53227        -- 4645092  ------------------------------------------------------------------------------
53228        -- To allow MPA report to determine if it should generate report process
53229        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53230        ------------------------------------------------------------------------------------------
53231 
53232        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53233        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53234 
53235        --
53236        -- Update the line information that should be overwritten
53237        --
53238        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53239                                          p_header_num   => 1);
53240        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53241 
53242        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53243 
53244        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53245           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53246        END IF;
53247 
53248       --
53249       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53250       --
53251       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53252           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53253       ELSE
53254           ---------------------------------------------------------------------------------------------------
53255           -- 4262811a Switch Sign
53256           ---------------------------------------------------------------------------------------------------
53257           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53258           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53259                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53260           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53261                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53262           -- 5132302
53263           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53264                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53265 
53266       END IF;
53267 
53268       -- 4955764
53269       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53270       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53271 
53272 
53273       XLA_AE_LINES_PKG.ValidateCurrentLine;
53274       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53275 
53276       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53277                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53278                ,p_balance_type_code => l_balance_type_code);
53279 
53280    END IF;
53281 
53282    -----------------------------------------------------------------------------------------
53283    -- 4262811 Multiperiod Accounting
53284    -----------------------------------------------------------------------------------------
53285      -- No MPA option is assigned.
53286 
53287 
53288 END IF;
53289 END IF;
53290 --
53291 
53292 --
53293 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53294    trace
53295       (p_msg      => 'END of AcctLineType_106'
53296       ,p_level    => C_LEVEL_PROCEDURE
53297       ,p_module   => l_log_module);
53298 END IF;
53299 --
53300 EXCEPTION
53301   WHEN xla_exceptions_pkg.application_exception THEN
53302       RAISE;
53303   WHEN OTHERS THEN
53304        xla_exceptions_pkg.raise_message
53305            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_106');
53306 END AcctLineType_106;
53307 --
53308 
53309 ---------------------------------------
53310 --
53311 -- PRIVATE FUNCTION
53312 --         AcctLineType_107
53313 --
53314 ---------------------------------------
53315 PROCEDURE AcctLineType_107 (
53316   p_application_id        IN NUMBER
53317  ,p_event_id              IN NUMBER
53318  ,p_calculate_acctd_flag  IN VARCHAR2
53319  ,p_calculate_g_l_flag    IN VARCHAR2
53320  ,p_actual_flag           IN OUT VARCHAR2
53321  ,p_balance_type_code     OUT VARCHAR2
53322  ,p_gain_or_loss_ref      OUT VARCHAR2
53323  
53327  , p_source_3            IN NUMBER
53324 --Budget Code Combination ID
53325  , p_source_2            IN NUMBER
53326 --Cost CCID
53328 --Cost Clearing CCID
53329  , p_source_6            IN NUMBER
53330 --Reversing Line Flag
53331  , p_source_22            IN VARCHAR2
53332 --Actual Upgrade Credit Accounting Class
53333  , p_source_23            IN VARCHAR2
53334 --Entered Currency Code
53335  , p_source_25            IN VARCHAR2
53336 --Exchange Rate Date
53337  , p_source_27            IN DATE
53338 --Exchange Rate
53339  , p_source_28            IN NUMBER
53340 --Exchange Rate Type
53341  , p_source_29            IN VARCHAR2
53342 --Actual Upgrade Debit Accounting Class
53343  , p_source_30            IN VARCHAR2
53344 --Use Actuals Upgrade Attributes Flag
53345  , p_source_31            IN VARCHAR2
53346 --Expenditure Item ID
53347  , p_source_32            IN NUMBER
53348 --Cost Distribution Line Number
53349  , p_source_33            IN NUMBER
53350 --Line Type
53351  , p_source_34            IN VARCHAR2
53352  , p_source_34_meaning    IN VARCHAR2
53353 --Reversed Line Number
53354  , p_source_35            IN NUMBER
53355 --Entered Burdened Cost
53356  , p_source_44            IN NUMBER
53357 --Accounted Burdened Cost
53358  , p_source_45            IN NUMBER
53359 --Encumbrance Amount
53360  , p_source_46            IN NUMBER
53361 --Encumbrance Upgrade Credit Accounting Class
53362  , p_source_53            IN VARCHAR2
53363 --Encumbrance Upgrade Debit Accounting Class
53364  , p_source_54            IN VARCHAR2
53365 --Use Encumbrance Upgrade Attributes Flag
53366  , p_source_55            IN VARCHAR2
53367 --Encumbrance Type ID
53368  , p_source_56            IN NUMBER
53369 --Project Encumbrance Type ID
53370  , p_source_57            IN NUMBER
53371 --Document Type
53372  , p_source_69            IN VARCHAR2
53373  , p_source_69_meaning    IN VARCHAR2
53374 --Release ID
53375  , p_source_71            IN NUMBER
53376 --Contingent Worker Timecard Flag
53377  , p_source_72            IN VARCHAR2
53378 --Purchase Order Burden Applied to Application Identifier
53379  , p_source_79            IN NUMBER
53380 --Purchase Order Burden Applied to Distribution Type
53381  , p_source_80            IN VARCHAR2
53382 --Purchase Order Burden Applied to Entity Code
53383  , p_source_81            IN VARCHAR2
53384 --Purchase Order Burden Applied to First Distribution Identifier
53385  , p_source_82            IN NUMBER
53386 --Purchase Order Burden Applied to First System Transaction Identifier
53387  , p_source_83            IN NUMBER
53388 --Purchase Order Burden Applied to Second Distribution Identifier
53389  , p_source_84            IN VARCHAR2
53390 )
53391 IS
53392 
53393 l_component_type              VARCHAR2(80);
53394 l_component_code              VARCHAR2(30);
53395 l_component_type_code         VARCHAR2(1);
53396 l_component_appl_id           INTEGER;
53397 l_amb_context_code            VARCHAR2(30);
53398 l_entity_code                 VARCHAR2(30);
53399 l_event_class_code            VARCHAR2(30);
53400 l_ae_header_id                NUMBER;
53401 l_event_type_code             VARCHAR2(30);
53402 l_line_definition_code        VARCHAR2(30);
53403 l_line_definition_owner_code  VARCHAR2(1);
53404 --
53405 -- adr variables
53406 l_segment                     VARCHAR2(30);
53407 l_ccid                        NUMBER;
53408 l_adr_transaction_coa_id      NUMBER;
53409 l_adr_accounting_coa_id       NUMBER;
53410 l_adr_flexfield_segment_code  VARCHAR2(30);
53411 l_adr_flex_value_set_id       NUMBER;
53412 l_adr_value_type_code         VARCHAR2(30);
53413 l_adr_value_combination_id    NUMBER;
53414 l_adr_value_segment_code      VARCHAR2(30);
53415 
53416 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53417 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53418 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53419 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53420 
53421 -- 4262811 Variables ------------------------------------------------------------------------------------------
53422 l_entered_amt_idx             NUMBER;
53423 l_accted_amt_idx              NUMBER;
53424 l_acc_rev_flag                VARCHAR2(1);
53425 l_accrual_line_num            NUMBER;
53426 l_tmp_amt                     NUMBER;
53427 l_acc_rev_natural_side_code   VARCHAR2(1);
53428 
53429 l_num_entries                 NUMBER;
53430 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53431 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53432 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53433 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53434 l_recog_line_1                NUMBER;
53435 l_recog_line_2                NUMBER;
53436 
53437 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53438 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53439 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53440 
53441 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53442 
53443 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53444 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53445 
53449 --
53446 ---------------------------------------------------------------------------------------------------------------
53447 
53448 
53450 -- bulk performance
53451 --
53452 l_balance_type_code           VARCHAR2(1);
53453 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53454 l_log_module                  VARCHAR2(240);
53455 
53456 --
53457 -- Upgrade strategy
53458 --
53459 l_actual_upg_option           VARCHAR2(1);
53460 l_enc_upg_option           VARCHAR2(1);
53461 
53462 --
53463 BEGIN
53464 --
53465 IF g_log_enabled THEN
53466       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
53467 END IF;
53468 --
53469 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53470 
53471       trace
53472          (p_msg      => 'BEGIN of AcctLineType_107'
53473          ,p_level    => C_LEVEL_PROCEDURE
53474          ,p_module   => l_log_module);
53475 
53476 END IF;
53477 --
53478 l_component_type             := 'AMB_JLT';
53479 l_component_code             := 'REL_RELEASE_BURDENED_ENC';
53480 l_component_type_code        := 'S';
53481 l_component_appl_id          :=  275;
53482 l_amb_context_code           := 'DEFAULT';
53483 l_entity_code                := 'EXPENDITURES';
53484 l_event_class_code           := 'TOT_BURDENED_COST';
53485 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
53486 l_line_definition_owner_code := 'S';
53487 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
53488 --
53489 l_balance_type_code          := 'E';
53490 l_segment                     := NULL;
53491 l_ccid                        := NULL;
53492 l_adr_transaction_coa_id      := NULL;
53493 l_adr_accounting_coa_id       := NULL;
53494 l_adr_flexfield_segment_code  := NULL;
53495 l_adr_flex_value_set_id       := NULL;
53496 l_adr_value_type_code         := NULL;
53497 l_adr_value_combination_id    := NULL;
53498 l_adr_value_segment_code      := NULL;
53499 
53500 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
53501 l_bflow_class_code           := 'REL_PA_BURDENED_ENC';    -- 4219869 Business Flow
53502 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53503 l_budgetary_control_flag     := 'N';
53504 
53505 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53506 l_bflow_applied_to_amt       := NULL; -- 5132302
53507 l_entered_amt_idx            := NULL;          -- 4262811
53508 l_accted_amt_idx             := NULL;          -- 4262811
53509 l_acc_rev_flag               := NULL;          -- 4262811
53510 l_accrual_line_num           := NULL;          -- 4262811
53511 l_tmp_amt                    := NULL;          -- 4262811
53512 --
53513  
53514 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53515     l_balance_type_code <> 'B' THEN
53516 IF NVL(p_source_34,'
53517 ') =  'E' AND 
53518 NVL(p_source_69,'
53519 ') =  'PO' AND 
53520 p_source_71 IS NOT NULL AND 
53521 NVL(p_source_72,'
53522 ') =  'N'
53523  THEN 
53524 
53525    --
53526    XLA_AE_LINES_PKG.SetNewLine;
53527 
53528    p_balance_type_code          := l_balance_type_code;
53529    -- set the flag so later we will know whether the gain loss line needs to be created
53530    
53531    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53532      p_actual_flag :='A';
53533    END IF;
53534 
53535    --
53536    -- bulk performance
53537    --
53538    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53539                                       p_header_num   => 0); -- 4262811
53540    --
53541    -- set accounting line options
53542    --
53543    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53544            p_natural_side_code          => 'C'
53545          , p_gain_or_loss_flag          => 'N'
53546          , p_gl_transfer_mode_code      => 'S'
53547          , p_acct_entry_type_code       => 'E'
53548          , p_switch_side_flag           => 'N'
53549          , p_merge_duplicate_code       => 'N'
53550          );
53551    --
53552    l_acc_rev_natural_side_code := 'D';  -- 4262811
53553    -- 
53554    --
53555    -- set accounting line type info
53556    --
53557    xla_ae_lines_pkg.SetAcctLineType
53558       (p_component_type             => l_component_type
53559       ,p_event_type_code            => l_event_type_code
53560       ,p_line_definition_owner_code => l_line_definition_owner_code
53561       ,p_line_definition_code       => l_line_definition_code
53562       ,p_accounting_line_code       => l_component_code
53563       ,p_accounting_line_type_code  => l_component_type_code
53564       ,p_accounting_line_appl_id    => l_component_appl_id
53565       ,p_amb_context_code           => l_amb_context_code
53566       ,p_entity_code                => l_entity_code
53567       ,p_event_class_code           => l_event_class_code);
53568    --
53569    -- set accounting class
53570    --
53571    xla_ae_lines_pkg.SetAcctClass(
53572            p_accounting_class_code  => 'PO_PA_BURDENED'
53573          , p_ae_header_id           => l_ae_header_id
53574          );
53575 
53576    --
53577    -- set rounding class
53578    --
53579    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53580                       'PO_PA_BURDENED';
53581 
53582    --
53586    -- bulk performance
53583    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53584    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53585    --
53587    --
53588    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53589 
53590    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53591       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53592 
53593    -- 4955764
53594    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53595       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53596 
53597    -- 4458381 Public Sector Enh
53598    
53599    --
53600    -- set accounting attributes for the line type
53601    --
53602    l_entered_amt_idx := 40;
53603    l_accted_amt_idx  := 43;
53604    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
53605    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
53606    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
53607    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
53608    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
53609    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
53610    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
53611    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
53612    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
53613    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
53614    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
53615    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
53616    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
53617    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
53618    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
53619    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
53620    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
53621    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
53622    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
53623    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
53624    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
53625    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
53626    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
53627    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
53628    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
53629    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
53630    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
53631    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
53632    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
53633    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
53634    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
53635    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
53636    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
53637    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
53638    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
53639    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
53640    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
53641    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
53642    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
53643    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
53644    l_rec_acct_attrs.array_num_value(20)  := p_source_79;
53645    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
53646    l_rec_acct_attrs.array_char_value(21)  := p_source_80;
53647    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
53648    l_rec_acct_attrs.array_char_value(22)  := p_source_81;
53649    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
53650    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_82);
53651    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
53652    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_83);
53653    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
53654    l_rec_acct_attrs.array_char_value(25)  := p_source_84;
53655    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
53656    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
53657    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
53658    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
53659    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
53660    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
53661    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
53662    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
53663    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
53664    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
53665    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
53666    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
53667    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
53668    l_rec_acct_attrs.array_char_value(32)  := 
53669 xla_ae_sources_pkg.GetSystemSourceChar(
53670    p_source_code           => 'XLA_CURRENCY_CODE'
53671  , p_source_type_code      => 'Y'
53672  , p_source_application_id =>  602
53673 );
53677    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
53674    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
53675    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
53676    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
53678    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
53679    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
53680    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
53681    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
53682    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
53683    l_rec_acct_attrs.array_char_value(37)  := 
53684 xla_ae_sources_pkg.GetSystemSourceChar(
53685    p_source_code           => 'XLA_CURRENCY_CODE'
53686  , p_source_type_code      => 'Y'
53687  , p_source_application_id =>  602
53688 );
53689    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
53690    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
53691    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
53692    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
53693    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
53694    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
53695    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
53696    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
53697    l_rec_acct_attrs.array_acct_attr_code(42) := 'GAIN_LOSS_REFERENCE';
53698    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_32);
53699    l_rec_acct_attrs.array_acct_attr_code(43) := 'LEDGER_AMOUNT';
53700    l_rec_acct_attrs.array_num_value(43)  := p_source_46;
53701    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID1';
53702    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_32);
53703    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID2';
53704    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_35);
53705    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_TYPE';
53706    l_rec_acct_attrs.array_char_value(46)  := p_source_34;
53707    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_CR_ENC_TYPE_ID';
53708    l_rec_acct_attrs.array_num_value(47)  := p_source_56;
53709    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_DR_ENC_TYPE_ID';
53710    l_rec_acct_attrs.array_num_value(48)  := p_source_57;
53711 
53712    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53713    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53714 
53715    ---------------------------------------------------------------------------------------------------------------
53716    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53717    ---------------------------------------------------------------------------------------------------------------
53718    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53719 
53720    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53721    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53722 
53723    IF xla_accounting_cache_pkg.GetValueChar
53724          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53725          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53726    AND l_bflow_method_code = 'PRIOR_ENTRY'
53727 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53728    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53729          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53730        )
53731    THEN
53732          xla_ae_lines_pkg.BflowUpgEntry
53733            (p_business_method_code    => l_bflow_method_code
53734            ,p_business_class_code     => l_bflow_class_code
53735            ,p_balance_type            => l_balance_type_code);
53736    ELSE
53737       NULL;
53738 XLA_AE_LINES_PKG.business_flow_validation(
53739                                 p_business_method_code     => l_bflow_method_code
53740                                ,p_business_class_code      => l_bflow_class_code
53741                                ,p_inherit_description_flag => l_inherit_desc_flag);
53742    END IF;
53743 
53744    --
53745    -- call analytical criteria
53746    --
53747    -- Inherited Analytical Criteria for business flow method of Prior Entry.
53748    --
53749    -- call description
53750    --
53751    -- No description or it is inherited.
53752    --
53753    -- call ADRs
53754    -- Bug 4922099
53755    --
53756    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53757         (NVL(l_actual_upg_option, 'N') = 'O') OR
53758         (NVL(l_enc_upg_option, 'N') = 'O')
53759       )
53760    THEN
53761    NULL;
53762    --
53763    --
53764    
53765    --
53766    --
53767    END IF;
53768    --
53769    -- Bug 4922099
53770    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53771           (NVL(l_enc_upg_option, 'N') = 'O')
53772         ) AND
53773         (l_bflow_method_code = 'PRIOR_ENTRY')
53774       )
53775    THEN
53776       IF
53777       --
53778       1 = 1
53779       --
53780       THEN
53781       xla_accounting_err_pkg.build_message
53782                                     (p_appli_s_name            => 'XLA'
53783                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53787                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53784                                     ,p_token_1                 => 'LINE_NUMBER'
53785                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53786                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53788                                                                              l_component_type
53789                                                                             ,l_component_code
53790                                                                             ,l_component_type_code
53791                                                                             ,l_component_appl_id
53792                                                                             ,l_amb_context_code
53793                                                                             ,l_entity_code
53794                                                                             ,l_event_class_code
53795                                                                            )
53796                                     ,p_token_3                 => 'OWNER'
53797                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53798                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53799                                                                           ,p_lookup_code    => l_component_type_code
53800                                                                          )
53801                                     ,p_token_4                 => 'PRODUCT_NAME'
53802                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53803                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53804                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53805                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53806                                     ,p_ae_header_id            =>  NULL
53807                                        );
53808 
53809         IF (C_LEVEL_ERROR>= g_log_level) THEN
53810                  trace
53811                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53812                       ,p_level    => C_LEVEL_ERROR
53813                       ,p_module   => l_log_module);
53814         END IF;
53815       END IF;
53816    END IF;
53817    --
53818    --
53819    ------------------------------------------------------------------------------------------------
53820    -- 4219869 Business Flow
53821    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53822    -- Prior Entry.  Currently, the following code is always generated.
53823    ------------------------------------------------------------------------------------------------
53824    -- No ValidateCurrentLine for business flow method of Prior Entry
53825 
53826    ------------------------------------------------------------------------------------
53827    -- 4219869 Business Flow
53828    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53829    ------------------------------------------------------------------------------------
53830    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53831 
53832    ----------------------------------------------------------------------------------
53833    -- 4219869 Business Flow
53834    -- Update journal entry status -- Need to generate this within IF <condition>
53835    ----------------------------------------------------------------------------------
53836    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53837          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53838          ,p_balance_type_code => l_balance_type_code
53839          );
53840 
53841    -------------------------------------------------------------------------------------------
53842    -- 4262811 - Generate the Accrual Reversal lines
53843    -------------------------------------------------------------------------------------------
53844    BEGIN
53845       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53846                               (g_array_event(p_event_id).array_value_num('header_index'));
53847       IF l_acc_rev_flag IS NULL THEN
53848          l_acc_rev_flag := 'N';
53849       END IF;
53850    EXCEPTION
53851       WHEN OTHERS THEN
53852          l_acc_rev_flag := 'N';
53853    END;
53854    --
53855    IF (l_acc_rev_flag = 'Y') THEN
53856 
53857        -- 4645092  ------------------------------------------------------------------------------
53858        -- To allow MPA report to determine if it should generate report process
53859        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53860        ------------------------------------------------------------------------------------------
53861 
53862        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53863        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53864 
53865        --
53866        -- Update the line information that should be overwritten
53867        --
53868        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53869                                          p_header_num   => 1);
53870        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53871 
53872        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53873 
53874        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53878       --
53875           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53876        END IF;
53877 
53879       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53880       --
53881       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53882           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53883       ELSE
53884           ---------------------------------------------------------------------------------------------------
53885           -- 4262811a Switch Sign
53886           ---------------------------------------------------------------------------------------------------
53887           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53888           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53889                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53890           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53891                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53892           -- 5132302
53893           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53894                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53895 
53896       END IF;
53897 
53898       -- 4955764
53899       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53900       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53901 
53902 
53903       XLA_AE_LINES_PKG.ValidateCurrentLine;
53904       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53905 
53906       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53907                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53908                ,p_balance_type_code => l_balance_type_code);
53909 
53910    END IF;
53911 
53912    -----------------------------------------------------------------------------------------
53913    -- 4262811 Multiperiod Accounting
53914    -----------------------------------------------------------------------------------------
53915      -- No MPA option is assigned.
53916 
53917 
53918 END IF;
53919 END IF;
53920 --
53921 
53922 --
53923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53924    trace
53925       (p_msg      => 'END of AcctLineType_107'
53926       ,p_level    => C_LEVEL_PROCEDURE
53927       ,p_module   => l_log_module);
53928 END IF;
53929 --
53930 EXCEPTION
53931   WHEN xla_exceptions_pkg.application_exception THEN
53932       RAISE;
53933   WHEN OTHERS THEN
53934        xla_exceptions_pkg.raise_message
53935            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_107');
53936 END AcctLineType_107;
53937 --
53938 
53939 ---------------------------------------
53940 --
53941 -- PRIVATE FUNCTION
53942 --         AcctLineType_108
53943 --
53944 ---------------------------------------
53945 PROCEDURE AcctLineType_108 (
53946   p_application_id        IN NUMBER
53947  ,p_event_id              IN NUMBER
53948  ,p_calculate_acctd_flag  IN VARCHAR2
53949  ,p_calculate_g_l_flag    IN VARCHAR2
53950  ,p_actual_flag           IN OUT VARCHAR2
53951  ,p_balance_type_code     OUT VARCHAR2
53952  ,p_gain_or_loss_ref      OUT VARCHAR2
53953  
53954 --Budget Code Combination ID
53955  , p_source_2            IN NUMBER
53956 --Cost CCID
53957  , p_source_3            IN NUMBER
53958 --Cost Clearing CCID
53959  , p_source_6            IN NUMBER
53960 --Reversing Line Flag
53961  , p_source_22            IN VARCHAR2
53962 --Actual Upgrade Credit Accounting Class
53963  , p_source_23            IN VARCHAR2
53964 --Entered Currency Code
53965  , p_source_25            IN VARCHAR2
53966 --Exchange Rate Date
53967  , p_source_27            IN DATE
53968 --Exchange Rate
53969  , p_source_28            IN NUMBER
53970 --Exchange Rate Type
53971  , p_source_29            IN VARCHAR2
53972 --Actual Upgrade Debit Accounting Class
53973  , p_source_30            IN VARCHAR2
53974 --Use Actuals Upgrade Attributes Flag
53975  , p_source_31            IN VARCHAR2
53976 --Expenditure Item ID
53977  , p_source_32            IN NUMBER
53978 --Cost Distribution Line Number
53979  , p_source_33            IN NUMBER
53980 --Line Type
53981  , p_source_34            IN VARCHAR2
53982  , p_source_34_meaning    IN VARCHAR2
53983 --Reversed Line Number
53984  , p_source_35            IN NUMBER
53985 --Entered Burdened Cost
53986  , p_source_44            IN NUMBER
53987 --Accounted Burdened Cost
53988  , p_source_45            IN NUMBER
53989 --Encumbrance Amount
53990  , p_source_46            IN NUMBER
53991 --Encumbrance Upgrade Debit Accounting Class
53992  , p_source_54            IN VARCHAR2
53993 --Use Encumbrance Upgrade Attributes Flag
53994  , p_source_55            IN VARCHAR2
53995 --Encumbrance Type ID
53996  , p_source_56            IN NUMBER
53997 --Project Encumbrance Type ID
53998  , p_source_57            IN NUMBER
53999 --Document Type
54000  , p_source_69            IN VARCHAR2
54004 --Contingent Worker Timecard Flag
54001  , p_source_69_meaning    IN VARCHAR2
54002 --Release ID
54003  , p_source_71            IN NUMBER
54005  , p_source_72            IN VARCHAR2
54006 --Purchase Order Burden Applied to Application Identifier
54007  , p_source_79            IN NUMBER
54008 --Purchase Order Burden Applied to Distribution Type
54009  , p_source_80            IN VARCHAR2
54010 --Purchase Order Burden Applied to Entity Code
54011  , p_source_81            IN VARCHAR2
54012 --Purchase Order Burden Applied to First Distribution Identifier
54013  , p_source_82            IN NUMBER
54014 --Purchase Order Burden Applied to First System Transaction Identifier
54015  , p_source_83            IN NUMBER
54016 --Purchase Order Burden Applied to Second Distribution Identifier
54017  , p_source_84            IN VARCHAR2
54018 )
54019 IS
54020 
54021 l_component_type              VARCHAR2(80);
54022 l_component_code              VARCHAR2(30);
54023 l_component_type_code         VARCHAR2(1);
54024 l_component_appl_id           INTEGER;
54025 l_amb_context_code            VARCHAR2(30);
54026 l_entity_code                 VARCHAR2(30);
54027 l_event_class_code            VARCHAR2(30);
54028 l_ae_header_id                NUMBER;
54029 l_event_type_code             VARCHAR2(30);
54030 l_line_definition_code        VARCHAR2(30);
54031 l_line_definition_owner_code  VARCHAR2(1);
54032 --
54033 -- adr variables
54034 l_segment                     VARCHAR2(30);
54035 l_ccid                        NUMBER;
54036 l_adr_transaction_coa_id      NUMBER;
54037 l_adr_accounting_coa_id       NUMBER;
54038 l_adr_flexfield_segment_code  VARCHAR2(30);
54039 l_adr_flex_value_set_id       NUMBER;
54040 l_adr_value_type_code         VARCHAR2(30);
54041 l_adr_value_combination_id    NUMBER;
54042 l_adr_value_segment_code      VARCHAR2(30);
54043 
54044 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54045 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54046 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54047 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54048 
54049 -- 4262811 Variables ------------------------------------------------------------------------------------------
54050 l_entered_amt_idx             NUMBER;
54051 l_accted_amt_idx              NUMBER;
54052 l_acc_rev_flag                VARCHAR2(1);
54053 l_accrual_line_num            NUMBER;
54054 l_tmp_amt                     NUMBER;
54055 l_acc_rev_natural_side_code   VARCHAR2(1);
54056 
54057 l_num_entries                 NUMBER;
54058 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54059 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54060 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54061 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54062 l_recog_line_1                NUMBER;
54063 l_recog_line_2                NUMBER;
54064 
54065 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54066 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54067 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54068 
54069 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54070 
54071 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54072 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54073 
54074 ---------------------------------------------------------------------------------------------------------------
54075 
54076 
54077 --
54078 -- bulk performance
54079 --
54080 l_balance_type_code           VARCHAR2(1);
54081 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54082 l_log_module                  VARCHAR2(240);
54083 
54084 --
54085 -- Upgrade strategy
54086 --
54087 l_actual_upg_option           VARCHAR2(1);
54088 l_enc_upg_option           VARCHAR2(1);
54089 
54090 --
54091 BEGIN
54092 --
54093 IF g_log_enabled THEN
54094       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
54095 END IF;
54096 --
54097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54098 
54099       trace
54100          (p_msg      => 'BEGIN of AcctLineType_108'
54101          ,p_level    => C_LEVEL_PROCEDURE
54102          ,p_module   => l_log_module);
54103 
54104 END IF;
54105 --
54106 l_component_type             := 'AMB_JLT';
54107 l_component_code             := 'REL_RELEASE_BURDENED_ENC';
54108 l_component_type_code        := 'S';
54109 l_component_appl_id          :=  275;
54110 l_amb_context_code           := 'DEFAULT';
54111 l_entity_code                := 'EXPENDITURES';
54112 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
54113 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
54114 l_line_definition_owner_code := 'S';
54115 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
54116 --
54117 l_balance_type_code          := 'E';
54118 l_segment                     := NULL;
54119 l_ccid                        := NULL;
54120 l_adr_transaction_coa_id      := NULL;
54121 l_adr_accounting_coa_id       := NULL;
54122 l_adr_flexfield_segment_code  := NULL;
54123 l_adr_flex_value_set_id       := NULL;
54124 l_adr_value_type_code         := NULL;
54125 l_adr_value_combination_id    := NULL;
54129 l_bflow_class_code           := 'REL_PA_BURDENED_ENC';    -- 4219869 Business Flow
54126 l_adr_value_segment_code      := NULL;
54127 
54128 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
54130 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54131 l_budgetary_control_flag     := 'N';
54132 
54133 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54134 l_bflow_applied_to_amt       := NULL; -- 5132302
54135 l_entered_amt_idx            := NULL;          -- 4262811
54136 l_accted_amt_idx             := NULL;          -- 4262811
54137 l_acc_rev_flag               := NULL;          -- 4262811
54138 l_accrual_line_num           := NULL;          -- 4262811
54139 l_tmp_amt                    := NULL;          -- 4262811
54140 --
54141  
54142 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54143     l_balance_type_code <> 'B' THEN
54144 IF NVL(p_source_34,'
54145 ') =  'E' AND 
54146 NVL(p_source_69,'
54147 ') =  'PO' AND 
54148 p_source_71 IS NOT NULL AND 
54149 NVL(p_source_72,'
54150 ') =  'N'
54151  THEN 
54152 
54153    --
54154    XLA_AE_LINES_PKG.SetNewLine;
54155 
54156    p_balance_type_code          := l_balance_type_code;
54157    -- set the flag so later we will know whether the gain loss line needs to be created
54158    
54159    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54160      p_actual_flag :='A';
54161    END IF;
54162 
54163    --
54164    -- bulk performance
54165    --
54166    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54167                                       p_header_num   => 0); -- 4262811
54168    --
54169    -- set accounting line options
54170    --
54171    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54172            p_natural_side_code          => 'C'
54173          , p_gain_or_loss_flag          => 'N'
54174          , p_gl_transfer_mode_code      => 'S'
54175          , p_acct_entry_type_code       => 'E'
54176          , p_switch_side_flag           => 'N'
54177          , p_merge_duplicate_code       => 'N'
54178          );
54179    --
54180    l_acc_rev_natural_side_code := 'D';  -- 4262811
54181    -- 
54182    --
54183    -- set accounting line type info
54184    --
54185    xla_ae_lines_pkg.SetAcctLineType
54186       (p_component_type             => l_component_type
54187       ,p_event_type_code            => l_event_type_code
54188       ,p_line_definition_owner_code => l_line_definition_owner_code
54189       ,p_line_definition_code       => l_line_definition_code
54190       ,p_accounting_line_code       => l_component_code
54191       ,p_accounting_line_type_code  => l_component_type_code
54192       ,p_accounting_line_appl_id    => l_component_appl_id
54193       ,p_amb_context_code           => l_amb_context_code
54194       ,p_entity_code                => l_entity_code
54195       ,p_event_class_code           => l_event_class_code);
54196    --
54197    -- set accounting class
54198    --
54199    xla_ae_lines_pkg.SetAcctClass(
54200            p_accounting_class_code  => 'PO_PA_BURDENED'
54201          , p_ae_header_id           => l_ae_header_id
54202          );
54203 
54204    --
54205    -- set rounding class
54206    --
54207    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54208                       'PO_PA_BURDENED';
54209 
54210    --
54211    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54212    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54213    --
54214    -- bulk performance
54215    --
54216    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54217 
54218    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54219       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54220 
54221    -- 4955764
54222    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54223       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54224 
54225    -- 4458381 Public Sector Enh
54226    
54227    --
54228    -- set accounting attributes for the line type
54229    --
54230    l_entered_amt_idx := 35;
54231    l_accted_amt_idx  := 37;
54232    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
54233    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
54234    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
54235    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
54236    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
54237    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
54238    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
54239    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
54240    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
54241    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
54242    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
54243    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
54244    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
54245    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
54246    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
54247    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
54248    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
54252    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
54249    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
54250    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
54251    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
54253    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
54254    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
54255    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
54256    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
54257    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
54258    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
54259    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
54260    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
54261    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
54262    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
54263    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
54264    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
54265    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
54266    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
54267    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
54268    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
54269    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
54270    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
54271    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
54272    l_rec_acct_attrs.array_num_value(20)  := p_source_79;
54273    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54274    l_rec_acct_attrs.array_char_value(21)  := p_source_80;
54275    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
54276    l_rec_acct_attrs.array_char_value(22)  := p_source_81;
54277    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
54278    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_82);
54279    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54280    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_83);
54281    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
54282    l_rec_acct_attrs.array_char_value(25)  := p_source_84;
54283    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
54284    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
54285    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
54286    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
54287    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
54288    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
54289    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
54290    l_rec_acct_attrs.array_char_value(29)  := p_source_54;
54291    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
54292    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
54293    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
54294    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
54295    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
54296    l_rec_acct_attrs.array_char_value(32)  := 
54297 xla_ae_sources_pkg.GetSystemSourceChar(
54298    p_source_code           => 'XLA_CURRENCY_CODE'
54299  , p_source_type_code      => 'Y'
54300  , p_source_application_id =>  602
54301 );
54302    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
54303    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
54304    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
54305    l_rec_acct_attrs.array_char_value(34)  := p_source_55;
54306    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
54307    l_rec_acct_attrs.array_num_value(35)  := p_source_46;
54308    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
54309    l_rec_acct_attrs.array_char_value(36)  := p_source_25;
54310    l_rec_acct_attrs.array_acct_attr_code(37) := 'LEDGER_AMOUNT';
54311    l_rec_acct_attrs.array_num_value(37)  := p_source_46;
54312    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_ID1';
54313    l_rec_acct_attrs.array_num_value(38)  :=  to_char(p_source_32);
54314    l_rec_acct_attrs.array_acct_attr_code(39) := 'REVERSED_DISTRIBUTION_ID2';
54315    l_rec_acct_attrs.array_num_value(39)  :=  to_char(p_source_35);
54316    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_TYPE';
54317    l_rec_acct_attrs.array_char_value(40)  := p_source_34;
54318    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
54319    l_rec_acct_attrs.array_num_value(41)  := p_source_56;
54320    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
54321    l_rec_acct_attrs.array_num_value(42)  := p_source_57;
54322 
54323    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54324    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54325 
54326    ---------------------------------------------------------------------------------------------------------------
54327    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54328    ---------------------------------------------------------------------------------------------------------------
54329    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54330 
54331    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54335          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54332    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54333 
54334    IF xla_accounting_cache_pkg.GetValueChar
54336          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54337    AND l_bflow_method_code = 'PRIOR_ENTRY'
54338 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54339    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54340          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54341        )
54342    THEN
54343          xla_ae_lines_pkg.BflowUpgEntry
54344            (p_business_method_code    => l_bflow_method_code
54345            ,p_business_class_code     => l_bflow_class_code
54346            ,p_balance_type            => l_balance_type_code);
54347    ELSE
54348       NULL;
54349 XLA_AE_LINES_PKG.business_flow_validation(
54350                                 p_business_method_code     => l_bflow_method_code
54351                                ,p_business_class_code      => l_bflow_class_code
54352                                ,p_inherit_description_flag => l_inherit_desc_flag);
54353    END IF;
54354 
54355    --
54356    -- call analytical criteria
54357    --
54358    -- Inherited Analytical Criteria for business flow method of Prior Entry.
54359    --
54360    -- call description
54361    --
54362    -- No description or it is inherited.
54363    --
54364    -- call ADRs
54365    -- Bug 4922099
54366    --
54367    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54368         (NVL(l_actual_upg_option, 'N') = 'O') OR
54369         (NVL(l_enc_upg_option, 'N') = 'O')
54370       )
54371    THEN
54372    NULL;
54373    --
54374    --
54375    
54376    --
54377    --
54378    END IF;
54379    --
54380    -- Bug 4922099
54381    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54382           (NVL(l_enc_upg_option, 'N') = 'O')
54383         ) AND
54384         (l_bflow_method_code = 'PRIOR_ENTRY')
54385       )
54386    THEN
54387       IF
54388       --
54389       1 = 1
54390       --
54391       THEN
54392       xla_accounting_err_pkg.build_message
54393                                     (p_appli_s_name            => 'XLA'
54394                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54395                                     ,p_token_1                 => 'LINE_NUMBER'
54396                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54397                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54398                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54399                                                                              l_component_type
54400                                                                             ,l_component_code
54401                                                                             ,l_component_type_code
54402                                                                             ,l_component_appl_id
54403                                                                             ,l_amb_context_code
54404                                                                             ,l_entity_code
54405                                                                             ,l_event_class_code
54406                                                                            )
54407                                     ,p_token_3                 => 'OWNER'
54408                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54409                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54410                                                                           ,p_lookup_code    => l_component_type_code
54411                                                                          )
54412                                     ,p_token_4                 => 'PRODUCT_NAME'
54413                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54414                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54415                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54416                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54417                                     ,p_ae_header_id            =>  NULL
54418                                        );
54419 
54420         IF (C_LEVEL_ERROR>= g_log_level) THEN
54421                  trace
54422                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54423                       ,p_level    => C_LEVEL_ERROR
54424                       ,p_module   => l_log_module);
54425         END IF;
54426       END IF;
54427    END IF;
54428    --
54429    --
54430    ------------------------------------------------------------------------------------------------
54431    -- 4219869 Business Flow
54432    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54433    -- Prior Entry.  Currently, the following code is always generated.
54434    ------------------------------------------------------------------------------------------------
54435    -- No ValidateCurrentLine for business flow method of Prior Entry
54436 
54437    ------------------------------------------------------------------------------------
54441    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54438    -- 4219869 Business Flow
54439    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54440    ------------------------------------------------------------------------------------
54442 
54443    ----------------------------------------------------------------------------------
54444    -- 4219869 Business Flow
54445    -- Update journal entry status -- Need to generate this within IF <condition>
54446    ----------------------------------------------------------------------------------
54447    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54448          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54449          ,p_balance_type_code => l_balance_type_code
54450          );
54451 
54452    -------------------------------------------------------------------------------------------
54453    -- 4262811 - Generate the Accrual Reversal lines
54454    -------------------------------------------------------------------------------------------
54455    BEGIN
54456       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54457                               (g_array_event(p_event_id).array_value_num('header_index'));
54458       IF l_acc_rev_flag IS NULL THEN
54459          l_acc_rev_flag := 'N';
54460       END IF;
54461    EXCEPTION
54462       WHEN OTHERS THEN
54463          l_acc_rev_flag := 'N';
54464    END;
54465    --
54466    IF (l_acc_rev_flag = 'Y') THEN
54467 
54468        -- 4645092  ------------------------------------------------------------------------------
54469        -- To allow MPA report to determine if it should generate report process
54470        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54471        ------------------------------------------------------------------------------------------
54472 
54473        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54474        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54475 
54476        --
54477        -- Update the line information that should be overwritten
54478        --
54479        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54480                                          p_header_num   => 1);
54481        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54482 
54483        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54484 
54485        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54486           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54487        END IF;
54488 
54489       --
54490       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54491       --
54492       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54493           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54494       ELSE
54495           ---------------------------------------------------------------------------------------------------
54496           -- 4262811a Switch Sign
54497           ---------------------------------------------------------------------------------------------------
54498           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54499           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54500                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54501           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54502                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54503           -- 5132302
54504           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54505                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54506 
54507       END IF;
54508 
54509       -- 4955764
54510       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54511       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54512 
54513 
54514       XLA_AE_LINES_PKG.ValidateCurrentLine;
54515       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54516 
54517       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54518                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54519                ,p_balance_type_code => l_balance_type_code);
54520 
54521    END IF;
54522 
54523    -----------------------------------------------------------------------------------------
54524    -- 4262811 Multiperiod Accounting
54525    -----------------------------------------------------------------------------------------
54526      -- No MPA option is assigned.
54527 
54528 
54529 END IF;
54530 END IF;
54531 --
54532 
54533 --
54534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54535    trace
54536       (p_msg      => 'END of AcctLineType_108'
54537       ,p_level    => C_LEVEL_PROCEDURE
54538       ,p_module   => l_log_module);
54539 END IF;
54540 --
54541 EXCEPTION
54542   WHEN xla_exceptions_pkg.application_exception THEN
54543       RAISE;
54544   WHEN OTHERS THEN
54545        xla_exceptions_pkg.raise_message
54549 
54546            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_108');
54547 END AcctLineType_108;
54548 --
54550 ---------------------------------------
54551 --
54552 -- PRIVATE FUNCTION
54553 --         AcctLineType_109
54554 --
54555 ---------------------------------------
54556 PROCEDURE AcctLineType_109 (
54557   p_application_id        IN NUMBER
54558  ,p_event_id              IN NUMBER
54559  ,p_calculate_acctd_flag  IN VARCHAR2
54560  ,p_calculate_g_l_flag    IN VARCHAR2
54561  ,p_actual_flag           IN OUT VARCHAR2
54562  ,p_balance_type_code     OUT VARCHAR2
54563  ,p_gain_or_loss_ref      OUT VARCHAR2
54564  
54565 --Budget Code Combination ID
54566  , p_source_2            IN NUMBER
54567 --Cost CCID
54568  , p_source_3            IN NUMBER
54569 --Cost Clearing CCID
54570  , p_source_6            IN NUMBER
54571 --Reversing Line Flag
54572  , p_source_22            IN VARCHAR2
54573 --Actual Upgrade Credit Accounting Class
54574  , p_source_23            IN VARCHAR2
54575 --Entered Currency Code
54576  , p_source_25            IN VARCHAR2
54577 --Exchange Rate Date
54578  , p_source_27            IN DATE
54579 --Exchange Rate
54580  , p_source_28            IN NUMBER
54581 --Exchange Rate Type
54582  , p_source_29            IN VARCHAR2
54583 --Actual Upgrade Debit Accounting Class
54584  , p_source_30            IN VARCHAR2
54585 --Use Actuals Upgrade Attributes Flag
54586  , p_source_31            IN VARCHAR2
54587 --Expenditure Item ID
54588  , p_source_32            IN NUMBER
54589 --Cost Distribution Line Number
54590  , p_source_33            IN NUMBER
54591 --Line Type
54592  , p_source_34            IN VARCHAR2
54593  , p_source_34_meaning    IN VARCHAR2
54594 --Reversed Line Number
54595  , p_source_35            IN NUMBER
54596 --Entered Burdened Cost
54597  , p_source_44            IN NUMBER
54598 --Accounted Burdened Cost
54599  , p_source_45            IN NUMBER
54600 --Encumbrance Amount
54601  , p_source_46            IN NUMBER
54602 --Encumbrance Upgrade Credit Accounting Class
54603  , p_source_53            IN VARCHAR2
54604 --Encumbrance Upgrade Debit Accounting Class
54605  , p_source_54            IN VARCHAR2
54606 --Use Encumbrance Upgrade Attributes Flag
54607  , p_source_55            IN VARCHAR2
54608 --Encumbrance Type ID
54609  , p_source_56            IN NUMBER
54610 --Project Encumbrance Type ID
54611  , p_source_57            IN NUMBER
54612 --Document Type
54613  , p_source_69            IN VARCHAR2
54614  , p_source_69_meaning    IN VARCHAR2
54615 --Release ID
54616  , p_source_71            IN NUMBER
54617 --Contingent Worker Timecard Flag
54618  , p_source_72            IN VARCHAR2
54619 --Purchase Order Burden Applied to Application Identifier
54620  , p_source_79            IN NUMBER
54621 --Purchase Order Burden Applied to Distribution Type
54622  , p_source_80            IN VARCHAR2
54623 --Purchase Order Burden Applied to Entity Code
54624  , p_source_81            IN VARCHAR2
54625 --Purchase Order Burden Applied to First Distribution Identifier
54626  , p_source_82            IN NUMBER
54627 --Purchase Order Burden Applied to First System Transaction Identifier
54628  , p_source_83            IN NUMBER
54629 --Purchase Order Burden Applied to Second Distribution Identifier
54630  , p_source_84            IN VARCHAR2
54631 )
54632 IS
54633 
54634 l_component_type              VARCHAR2(80);
54635 l_component_code              VARCHAR2(30);
54636 l_component_type_code         VARCHAR2(1);
54637 l_component_appl_id           INTEGER;
54638 l_amb_context_code            VARCHAR2(30);
54639 l_entity_code                 VARCHAR2(30);
54640 l_event_class_code            VARCHAR2(30);
54641 l_ae_header_id                NUMBER;
54642 l_event_type_code             VARCHAR2(30);
54643 l_line_definition_code        VARCHAR2(30);
54644 l_line_definition_owner_code  VARCHAR2(1);
54645 --
54646 -- adr variables
54647 l_segment                     VARCHAR2(30);
54648 l_ccid                        NUMBER;
54649 l_adr_transaction_coa_id      NUMBER;
54650 l_adr_accounting_coa_id       NUMBER;
54651 l_adr_flexfield_segment_code  VARCHAR2(30);
54652 l_adr_flex_value_set_id       NUMBER;
54653 l_adr_value_type_code         VARCHAR2(30);
54654 l_adr_value_combination_id    NUMBER;
54655 l_adr_value_segment_code      VARCHAR2(30);
54656 
54657 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54658 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54659 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54660 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54661 
54662 -- 4262811 Variables ------------------------------------------------------------------------------------------
54663 l_entered_amt_idx             NUMBER;
54664 l_accted_amt_idx              NUMBER;
54665 l_acc_rev_flag                VARCHAR2(1);
54666 l_accrual_line_num            NUMBER;
54667 l_tmp_amt                     NUMBER;
54668 l_acc_rev_natural_side_code   VARCHAR2(1);
54669 
54670 l_num_entries                 NUMBER;
54671 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54672 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54673 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54674 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54678 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54675 l_recog_line_1                NUMBER;
54676 l_recog_line_2                NUMBER;
54677 
54679 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54680 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54681 
54682 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54683 
54684 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54685 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54686 
54687 ---------------------------------------------------------------------------------------------------------------
54688 
54689 
54690 --
54691 -- bulk performance
54692 --
54693 l_balance_type_code           VARCHAR2(1);
54694 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54695 l_log_module                  VARCHAR2(240);
54696 
54697 --
54698 -- Upgrade strategy
54699 --
54700 l_actual_upg_option           VARCHAR2(1);
54701 l_enc_upg_option           VARCHAR2(1);
54702 
54703 --
54704 BEGIN
54705 --
54706 IF g_log_enabled THEN
54707       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
54708 END IF;
54709 --
54710 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54711 
54712       trace
54713          (p_msg      => 'BEGIN of AcctLineType_109'
54714          ,p_level    => C_LEVEL_PROCEDURE
54715          ,p_module   => l_log_module);
54716 
54717 END IF;
54718 --
54719 l_component_type             := 'AMB_JLT';
54720 l_component_code             := 'REL_RELEASE_BURDEN_ENC';
54721 l_component_type_code        := 'S';
54722 l_component_appl_id          :=  275;
54723 l_amb_context_code           := 'DEFAULT';
54724 l_entity_code                := 'EXPENDITURES';
54725 l_event_class_code           := 'BURDEN_COST';
54726 l_event_type_code            := 'BURDEN_COST_ALL';
54727 l_line_definition_owner_code := 'S';
54728 l_line_definition_code       := 'PA_PROJ_ENC_REV_ACCTING';
54729 --
54730 l_balance_type_code          := 'E';
54731 l_segment                     := NULL;
54732 l_ccid                        := NULL;
54733 l_adr_transaction_coa_id      := NULL;
54734 l_adr_accounting_coa_id       := NULL;
54735 l_adr_flexfield_segment_code  := NULL;
54736 l_adr_flex_value_set_id       := NULL;
54737 l_adr_value_type_code         := NULL;
54738 l_adr_value_combination_id    := NULL;
54739 l_adr_value_segment_code      := NULL;
54740 
54741 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
54742 l_bflow_class_code           := 'REL_PA_BURDEN_ENC';    -- 4219869 Business Flow
54743 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54744 l_budgetary_control_flag     := 'N';
54745 
54746 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54747 l_bflow_applied_to_amt       := NULL; -- 5132302
54748 l_entered_amt_idx            := NULL;          -- 4262811
54749 l_accted_amt_idx             := NULL;          -- 4262811
54750 l_acc_rev_flag               := NULL;          -- 4262811
54751 l_accrual_line_num           := NULL;          -- 4262811
54752 l_tmp_amt                    := NULL;          -- 4262811
54753 --
54754  
54755 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54756     l_balance_type_code <> 'B' THEN
54757 IF NVL(p_source_34,'
54758 ') =  'E' AND 
54759 NVL(p_source_69,'
54760 ') =  'PO' AND 
54761 p_source_71 IS NOT NULL AND 
54762 NVL(p_source_72,'
54763 ') =  'N'
54764  THEN 
54765 
54766    --
54767    XLA_AE_LINES_PKG.SetNewLine;
54768 
54769    p_balance_type_code          := l_balance_type_code;
54770    -- set the flag so later we will know whether the gain loss line needs to be created
54771    
54772    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54773      p_actual_flag :='A';
54774    END IF;
54775 
54776    --
54777    -- bulk performance
54778    --
54779    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54780                                       p_header_num   => 0); -- 4262811
54781    --
54782    -- set accounting line options
54783    --
54784    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54785            p_natural_side_code          => 'C'
54786          , p_gain_or_loss_flag          => 'N'
54787          , p_gl_transfer_mode_code      => 'S'
54788          , p_acct_entry_type_code       => 'E'
54789          , p_switch_side_flag           => 'N'
54790          , p_merge_duplicate_code       => 'N'
54791          );
54792    --
54793    l_acc_rev_natural_side_code := 'D';  -- 4262811
54794    -- 
54795    --
54796    -- set accounting line type info
54797    --
54798    xla_ae_lines_pkg.SetAcctLineType
54799       (p_component_type             => l_component_type
54800       ,p_event_type_code            => l_event_type_code
54801       ,p_line_definition_owner_code => l_line_definition_owner_code
54802       ,p_line_definition_code       => l_line_definition_code
54803       ,p_accounting_line_code       => l_component_code
54804       ,p_accounting_line_type_code  => l_component_type_code
54805       ,p_accounting_line_appl_id    => l_component_appl_id
54806       ,p_amb_context_code           => l_amb_context_code
54807       ,p_entity_code                => l_entity_code
54808       ,p_event_class_code           => l_event_class_code);
54809    --
54813            p_accounting_class_code  => 'PO_PA_BURDEN'
54810    -- set accounting class
54811    --
54812    xla_ae_lines_pkg.SetAcctClass(
54814          , p_ae_header_id           => l_ae_header_id
54815          );
54816 
54817    --
54818    -- set rounding class
54819    --
54820    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54821                       'PO_PA_BURDEN';
54822 
54823    --
54824    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54825    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54826    --
54827    -- bulk performance
54828    --
54829    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54830 
54831    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54832       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54833 
54834    -- 4955764
54835    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54836       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54837 
54838    -- 4458381 Public Sector Enh
54839    
54840    --
54841    -- set accounting attributes for the line type
54842    --
54843    l_entered_amt_idx := 40;
54844    l_accted_amt_idx  := 42;
54845    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
54846    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
54847    l_rec_acct_attrs.array_char_value(1)  := p_source_22;
54848    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
54849    l_rec_acct_attrs.array_char_value(2)  := p_source_23;
54850    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
54851    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_6);
54852    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
54853    l_rec_acct_attrs.array_num_value(4)  := p_source_44;
54854    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
54855    l_rec_acct_attrs.array_char_value(5)  := p_source_25;
54856    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
54857    l_rec_acct_attrs.array_num_value(6)  := p_source_45;
54858    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
54859    l_rec_acct_attrs.array_date_value(7)  := p_source_27;
54860    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
54861    l_rec_acct_attrs.array_num_value(8)  := p_source_28;
54862    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
54863    l_rec_acct_attrs.array_char_value(9)  := p_source_29;
54864    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
54865    l_rec_acct_attrs.array_char_value(10)  := p_source_30;
54866    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
54867    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_3);
54868    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
54869    l_rec_acct_attrs.array_num_value(12)  := p_source_44;
54870    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
54871    l_rec_acct_attrs.array_char_value(13)  := p_source_25;
54872    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
54873    l_rec_acct_attrs.array_num_value(14)  := p_source_45;
54874    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
54875    l_rec_acct_attrs.array_date_value(15)  := p_source_27;
54876    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
54877    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
54878    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
54879    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
54880    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
54881    l_rec_acct_attrs.array_char_value(18)  := p_source_31;
54882    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
54883    l_rec_acct_attrs.array_num_value(19)  := p_source_46;
54884    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
54885    l_rec_acct_attrs.array_num_value(20)  := p_source_79;
54886    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54887    l_rec_acct_attrs.array_char_value(21)  := p_source_80;
54888    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
54889    l_rec_acct_attrs.array_char_value(22)  := p_source_81;
54890    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
54891    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_82);
54892    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54893    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_83);
54894    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
54895    l_rec_acct_attrs.array_char_value(25)  := p_source_84;
54896    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
54897    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_32);
54898    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
54899    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_33);
54900    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
54901    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
54902    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
54903    l_rec_acct_attrs.array_char_value(29)  := p_source_53;
54904    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
54905    l_rec_acct_attrs.array_num_value(30)  := p_source_2;
54909    l_rec_acct_attrs.array_char_value(32)  := p_source_25;
54906    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
54907    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
54908    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
54910    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
54911    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
54912    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
54913    l_rec_acct_attrs.array_char_value(34)  := p_source_54;
54914    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
54915    l_rec_acct_attrs.array_num_value(35)  := p_source_2;
54916    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
54917    l_rec_acct_attrs.array_num_value(36)  := p_source_46;
54918    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
54919    l_rec_acct_attrs.array_char_value(37)  := p_source_25;
54920    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
54921    l_rec_acct_attrs.array_num_value(38)  := p_source_46;
54922    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
54923    l_rec_acct_attrs.array_char_value(39)  := p_source_55;
54924    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
54925    l_rec_acct_attrs.array_num_value(40)  := p_source_46;
54926    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
54927    l_rec_acct_attrs.array_char_value(41)  := p_source_25;
54928    l_rec_acct_attrs.array_acct_attr_code(42) := 'LEDGER_AMOUNT';
54929    l_rec_acct_attrs.array_num_value(42)  := p_source_46;
54930    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_ID1';
54931    l_rec_acct_attrs.array_num_value(43)  :=  to_char(p_source_32);
54932    l_rec_acct_attrs.array_acct_attr_code(44) := 'REVERSED_DISTRIBUTION_ID2';
54933    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_35);
54934    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_TYPE';
54935    l_rec_acct_attrs.array_char_value(45)  := p_source_34;
54936    l_rec_acct_attrs.array_acct_attr_code(46) := 'UPG_CR_ENC_TYPE_ID';
54937    l_rec_acct_attrs.array_num_value(46)  := p_source_56;
54938    l_rec_acct_attrs.array_acct_attr_code(47) := 'UPG_DR_ENC_TYPE_ID';
54939    l_rec_acct_attrs.array_num_value(47)  := p_source_57;
54940 
54941    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54942    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54943 
54944    ---------------------------------------------------------------------------------------------------------------
54945    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54946    ---------------------------------------------------------------------------------------------------------------
54947    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54948 
54949    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54950    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54951 
54952    IF xla_accounting_cache_pkg.GetValueChar
54953          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54954          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54955    AND l_bflow_method_code = 'PRIOR_ENTRY'
54956 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54957    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54958          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54959        )
54960    THEN
54961          xla_ae_lines_pkg.BflowUpgEntry
54962            (p_business_method_code    => l_bflow_method_code
54963            ,p_business_class_code     => l_bflow_class_code
54964            ,p_balance_type            => l_balance_type_code);
54965    ELSE
54966       NULL;
54967 XLA_AE_LINES_PKG.business_flow_validation(
54968                                 p_business_method_code     => l_bflow_method_code
54969                                ,p_business_class_code      => l_bflow_class_code
54970                                ,p_inherit_description_flag => l_inherit_desc_flag);
54971    END IF;
54972 
54973    --
54974    -- call analytical criteria
54975    --
54976    -- Inherited Analytical Criteria for business flow method of Prior Entry.
54977    --
54978    -- call description
54979    --
54980    -- No description or it is inherited.
54981    --
54982    -- call ADRs
54983    -- Bug 4922099
54984    --
54985    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54986         (NVL(l_actual_upg_option, 'N') = 'O') OR
54987         (NVL(l_enc_upg_option, 'N') = 'O')
54988       )
54989    THEN
54990    NULL;
54991    --
54992    --
54993    
54994    --
54995    --
54996    END IF;
54997    --
54998    -- Bug 4922099
54999    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55000           (NVL(l_enc_upg_option, 'N') = 'O')
55001         ) AND
55002         (l_bflow_method_code = 'PRIOR_ENTRY')
55003       )
55004    THEN
55005       IF
55006       --
55007       1 = 1
55008       --
55009       THEN
55010       xla_accounting_err_pkg.build_message
55011                                     (p_appli_s_name            => 'XLA'
55012                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55013                                     ,p_token_1                 => 'LINE_NUMBER'
55017                                                                              l_component_type
55014                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55015                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55016                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55018                                                                             ,l_component_code
55019                                                                             ,l_component_type_code
55020                                                                             ,l_component_appl_id
55021                                                                             ,l_amb_context_code
55022                                                                             ,l_entity_code
55023                                                                             ,l_event_class_code
55024                                                                            )
55025                                     ,p_token_3                 => 'OWNER'
55026                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55027                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55028                                                                           ,p_lookup_code    => l_component_type_code
55029                                                                          )
55030                                     ,p_token_4                 => 'PRODUCT_NAME'
55031                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55032                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55033                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55034                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55035                                     ,p_ae_header_id            =>  NULL
55036                                        );
55037 
55038         IF (C_LEVEL_ERROR>= g_log_level) THEN
55039                  trace
55040                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55041                       ,p_level    => C_LEVEL_ERROR
55042                       ,p_module   => l_log_module);
55043         END IF;
55044       END IF;
55045    END IF;
55046    --
55047    --
55048    ------------------------------------------------------------------------------------------------
55049    -- 4219869 Business Flow
55050    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55051    -- Prior Entry.  Currently, the following code is always generated.
55052    ------------------------------------------------------------------------------------------------
55053    -- No ValidateCurrentLine for business flow method of Prior Entry
55054 
55055    ------------------------------------------------------------------------------------
55056    -- 4219869 Business Flow
55057    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55058    ------------------------------------------------------------------------------------
55059    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55060 
55061    ----------------------------------------------------------------------------------
55062    -- 4219869 Business Flow
55063    -- Update journal entry status -- Need to generate this within IF <condition>
55064    ----------------------------------------------------------------------------------
55065    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55066          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55067          ,p_balance_type_code => l_balance_type_code
55068          );
55069 
55070    -------------------------------------------------------------------------------------------
55071    -- 4262811 - Generate the Accrual Reversal lines
55072    -------------------------------------------------------------------------------------------
55073    BEGIN
55074       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55075                               (g_array_event(p_event_id).array_value_num('header_index'));
55076       IF l_acc_rev_flag IS NULL THEN
55077          l_acc_rev_flag := 'N';
55078       END IF;
55079    EXCEPTION
55080       WHEN OTHERS THEN
55081          l_acc_rev_flag := 'N';
55082    END;
55083    --
55084    IF (l_acc_rev_flag = 'Y') THEN
55085 
55086        -- 4645092  ------------------------------------------------------------------------------
55087        -- To allow MPA report to determine if it should generate report process
55088        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55089        ------------------------------------------------------------------------------------------
55090 
55091        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55092        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55093 
55094        --
55095        -- Update the line information that should be overwritten
55096        --
55097        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55098                                          p_header_num   => 1);
55099        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55100 
55101        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55102 
55106 
55103        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55104           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55105        END IF;
55107       --
55108       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55109       --
55110       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55111           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55112       ELSE
55113           ---------------------------------------------------------------------------------------------------
55114           -- 4262811a Switch Sign
55115           ---------------------------------------------------------------------------------------------------
55116           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55117           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55118                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55119           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55120                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55121           -- 5132302
55122           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55123                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55124 
55125       END IF;
55126 
55127       -- 4955764
55128       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55129       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55130 
55131 
55132       XLA_AE_LINES_PKG.ValidateCurrentLine;
55133       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55134 
55135       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55136                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55137                ,p_balance_type_code => l_balance_type_code);
55138 
55139    END IF;
55140 
55141    -----------------------------------------------------------------------------------------
55142    -- 4262811 Multiperiod Accounting
55143    -----------------------------------------------------------------------------------------
55144      -- No MPA option is assigned.
55145 
55146 
55147 END IF;
55148 END IF;
55149 --
55150 
55151 --
55152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55153    trace
55154       (p_msg      => 'END of AcctLineType_109'
55155       ,p_level    => C_LEVEL_PROCEDURE
55156       ,p_module   => l_log_module);
55157 END IF;
55158 --
55159 EXCEPTION
55160   WHEN xla_exceptions_pkg.application_exception THEN
55161       RAISE;
55162   WHEN OTHERS THEN
55163        xla_exceptions_pkg.raise_message
55164            (p_location => 'XLA_00275_AAD_S_000004_PKG.AcctLineType_109');
55165 END AcctLineType_109;
55166 --
55167 
55168 ---------------------------------------
55169 --
55170 -- PRIVATE PROCEDURE
55171 --         insert_sources_110
55172 --
55173 ----------------------------------------
55174 --
55175 PROCEDURE insert_sources_110(
55176                                 p_target_ledger_id       IN NUMBER
55177                               , p_language               IN VARCHAR2
55178                               , p_sla_ledger_id          IN NUMBER
55179                               , p_pad_start_date         IN DATE
55180                               , p_pad_end_date           IN DATE
55181                          )
55182 IS
55183 
55184 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ADJ_ALL';
55185 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT_ADJ';
55186 p_apps_owner                   VARCHAR2(30);
55187 l_log_module                   VARCHAR2(240);
55188 BEGIN
55189 IF g_log_enabled THEN
55190       l_log_module := C_DEFAULT_MODULE||'.insert_sources_110';
55191 END IF;
55192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55193 
55194       trace
55195          (p_msg      => 'BEGIN of insert_sources_110'
55196          ,p_level    => C_LEVEL_PROCEDURE
55197          ,p_module   => l_log_module);
55198 
55199 END IF;
55200 
55201 -- select APPS owner
55202 SELECT oracle_username
55203   INTO p_apps_owner
55204   FROM fnd_oracle_userid
55205  WHERE read_only_flag = 'U'
55206 ;
55207 
55208 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55209       trace
55210          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
55211                         ' - p_language = '||p_language||
55212                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
55213                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
55214                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
55215                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
55216          ,p_level    => C_LEVEL_STATEMENT
55217          ,p_module   => l_log_module);
55218 END IF;
55219 
55220 
55221 --
55222 INSERT INTO xla_diag_sources --hdr2
55223 (
55224         event_id
55225       , ledger_id
55226       , sla_ledger_id
55227       , description_language
55228       , object_name
55229       , object_type_code
55233       , source_code
55230       , line_number
55231       , source_application_id
55232       , source_type_code
55234       , source_value
55235       , source_meaning
55236       , created_by
55237       , creation_date
55238       , last_update_date
55239       , last_updated_by
55240       , last_update_login
55241       , program_update_date
55242       , program_application_id
55243       , program_id
55244       , request_id
55245 )
55246 SELECT
55247         event_id
55248       , p_target_ledger_id
55249       , p_sla_ledger_id
55250       , p_language
55251       , object_name
55252       , object_type_code
55253       , line_number
55254       , source_application_id
55255       , source_type_code
55256       , source_code
55257       , SUBSTR(source_value ,1,1996)
55258       , SUBSTR(source_meaning ,1,200)
55259       , xla_environment_pkg.g_Usr_Id
55260       , TRUNC(SYSDATE)
55261       , TRUNC(SYSDATE)
55262       , xla_environment_pkg.g_Usr_Id
55263       , xla_environment_pkg.g_Login_Id
55264       , TRUNC(SYSDATE)
55265       , xla_environment_pkg.g_Prog_Appl_Id
55266       , xla_environment_pkg.g_Prog_Id
55267       , xla_environment_pkg.g_Req_Id
55268   FROM (
55269        SELECT xet.event_id                  event_id
55270             , 0                          line_number
55271             , CASE r
55272                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
55273                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
55274                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
55275                 
55276                ELSE null
55277               END                           object_name
55278             , CASE r
55279                 WHEN 1 THEN 'HEADER' 
55280                 WHEN 2 THEN 'HEADER' 
55281                 WHEN 3 THEN 'HEADER' 
55282                 
55283                 ELSE null
55284               END                           object_type_code
55285             , CASE r
55286                 WHEN 1 THEN '275' 
55287                 WHEN 2 THEN '275' 
55288                 WHEN 3 THEN '275' 
55289                 
55290                 ELSE null
55291               END                           source_application_id
55292             , 'S'             source_type_code
55293             , CASE r
55294                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
55295                 WHEN 2 THEN 'TP_AMT_TYPE_CODE' 
55296                 WHEN 3 THEN 'GL_DATE' 
55297                 
55298                 ELSE null
55299               END                           source_code
55300             , CASE r
55301                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
55302                 WHEN 2 THEN TO_CHAR(h2.TP_AMT_TYPE_CODE)
55303                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
55304                 
55305                 ELSE null
55306               END                           source_value
55307             , CASE r
55308                 WHEN 2 THEN fvl67.meaning
55309                 
55310                 ELSE null
55311               END               source_meaning
55312          FROM xla_events_gt     xet  
55313       , PA_XLA_EXP_HEADER_V  h2
55314   , fnd_lookup_values    fvl67
55315              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
55316          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
55317            AND xet.event_class_code = C_EVENT_CLASS_CODE
55318               AND h2.event_id = xet.event_id
55319    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
55320   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
55321   AND fvl67.view_application_id(+) = 275
55322   AND fvl67.language(+)            = USERENV('LANG')
55323   
55324 )
55325 ;
55326 --
55327 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55328 
55329       trace
55330          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
55331          ,p_level    => C_LEVEL_STATEMENT
55332          ,p_module   => l_log_module);
55333 
55334 END IF;
55335 --
55336 
55337 
55338 
55339 --
55340 INSERT INTO xla_diag_sources  --line2
55341 (
55342         event_id
55343       , ledger_id
55344       , sla_ledger_id
55345       , description_language
55346       , object_name
55347       , object_type_code
55348       , line_number
55349       , source_application_id
55350       , source_type_code
55351       , source_code
55352       , source_value
55353       , source_meaning
55354       , created_by
55355       , creation_date
55356       , last_update_date
55357       , last_updated_by
55358       , last_update_login
55359       , program_update_date
55360       , program_application_id
55361       , program_id
55362       , request_id
55363 )
55364 SELECT  event_id
55365       , p_target_ledger_id
55366       , p_sla_ledger_id
55367       , p_language
55368       , object_name
55369       , object_type_code
55370       , line_number
55371       , source_application_id
55372       , source_type_code
55373       , source_code
55374       , SUBSTR(source_value,1,1996)
55375       , SUBSTR(source_meaning ,1,200)
55376       , xla_environment_pkg.g_Usr_Id
55377       , TRUNC(SYSDATE)
55378       , TRUNC(SYSDATE)
55379       , xla_environment_pkg.g_Usr_Id
55380       , xla_environment_pkg.g_Login_Id
55381       , TRUNC(SYSDATE)
55385   FROM (
55382       , xla_environment_pkg.g_Prog_Appl_Id
55383       , xla_environment_pkg.g_Prog_Id
55384       , xla_environment_pkg.g_Req_Id
55386        SELECT xet.event_id                  event_id
55387             , l1.line_number                 line_number
55388             , CASE r
55389                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
55390                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
55391                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
55392                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
55393                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
55394                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
55395                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
55396                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
55397                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
55398                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
55399                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
55400                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
55401                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
55402                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
55403                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
55404                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
55405                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
55406                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
55407                 
55408                ELSE null
55409               END                           object_name
55410             , CASE r
55411                 WHEN 1 THEN 'LINE' 
55412                 WHEN 2 THEN 'LINE' 
55413                 WHEN 3 THEN 'LINE' 
55414                 WHEN 4 THEN 'LINE' 
55415                 WHEN 5 THEN 'LINE' 
55416                 WHEN 6 THEN 'LINE' 
55417                 WHEN 7 THEN 'LINE' 
55418                 WHEN 8 THEN 'LINE' 
55419                 WHEN 9 THEN 'LINE' 
55420                 WHEN 10 THEN 'LINE' 
55421                 WHEN 11 THEN 'LINE' 
55422                 WHEN 12 THEN 'LINE' 
55423                 WHEN 13 THEN 'LINE' 
55424                 WHEN 14 THEN 'LINE' 
55425                 WHEN 15 THEN 'LINE' 
55426                 WHEN 16 THEN 'LINE' 
55427                 WHEN 17 THEN 'LINE' 
55428                 WHEN 18 THEN 'LINE' 
55429                 
55430                 ELSE null
55431               END                           object_type_code
55432             , CASE r
55433                 WHEN 1 THEN '275' 
55434                 WHEN 2 THEN '275' 
55435                 WHEN 3 THEN '275' 
55436                 WHEN 4 THEN '275' 
55437                 WHEN 5 THEN '275' 
55438                 WHEN 6 THEN '275' 
55439                 WHEN 7 THEN '275' 
55440                 WHEN 8 THEN '275' 
55441                 WHEN 9 THEN '275' 
55442                 WHEN 10 THEN '275' 
55443                 WHEN 11 THEN '275' 
55444                 WHEN 12 THEN '275' 
55445                 WHEN 13 THEN '275' 
55446                 WHEN 14 THEN '275' 
55447                 WHEN 15 THEN '275' 
55448                 WHEN 16 THEN '275' 
55449                 WHEN 17 THEN '275' 
55450                 WHEN 18 THEN '275' 
55451                 
55452                 ELSE null
55453               END                           source_application_id
55454             , 'S'             source_type_code
55455             , CASE r
55456                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
55457                 WHEN 2 THEN 'PROVIDER_CCID' 
55458                 WHEN 3 THEN 'ADJ_PROVIDER_CCID' 
55459                 WHEN 4 THEN 'ADJ_RECEIVER_CCID' 
55460                 WHEN 5 THEN 'RECEIVER_CCID' 
55461                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
55462                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
55463                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
55464                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
55465                 WHEN 10 THEN 'EXCHANGE_RATE' 
55466                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
55467                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
55468                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
55469                 WHEN 14 THEN 'LINE_NUMBER' 
55470                 WHEN 15 THEN 'LINE_TYPE' 
55471                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
55472                 WHEN 17 THEN 'ENTERED_AMOUNT' 
55473                 WHEN 18 THEN 'ACCT_AMOUNT' 
55474                 
55475                 ELSE null
55476               END                           source_code
55477             , CASE r
55478                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
55479                 WHEN 2 THEN TO_CHAR(l1.PROVIDER_CCID)
55480                 WHEN 3 THEN TO_CHAR(l1.ADJ_PROVIDER_CCID)
55481                 WHEN 4 THEN TO_CHAR(l1.ADJ_RECEIVER_CCID)
55482                 WHEN 5 THEN TO_CHAR(l1.RECEIVER_CCID)
55483                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
55484                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
55485                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
55486                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
55487                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
55488                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
55489                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
55490                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
55491                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
55492                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
55493                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
55494                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
55495                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
55496                 
55497                 ELSE null
55501                           103371
55498               END                           source_value
55499             , CASE r
55500                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
55502                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
55503                          ,'ALLOW_OVERRIDE_CCID_FLAG'
55504                          ,'S'
55505                          ,275)
55506                 WHEN 15 THEN fvl34.meaning
55507                 
55508                 ELSE null
55509               END               source_meaning
55510          FROM  xla_events_gt     xet  
55511         , PA_XLA_CCDL_LINES_V  l1
55512   , fnd_lookup_values    fvl34
55513             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
55514         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
55515           AND xet.event_class_code = C_EVENT_CLASS_CODE
55516             AND l1.event_id          = xet.event_id
55517    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
55518   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
55519   AND fvl34.view_application_id(+) = 275
55520   AND fvl34.language(+)            = USERENV('LANG')
55521   
55522 )
55523 ;
55524 --
55525 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55526 
55527       trace
55528          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
55529          ,p_level    => C_LEVEL_STATEMENT
55530          ,p_module   => l_log_module);
55531 
55532 END IF;
55533 
55534 
55535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55536       trace
55537          (p_msg      => 'END of insert_sources_110'
55538          ,p_level    => C_LEVEL_PROCEDURE
55539          ,p_module   => l_log_module);
55540 END IF;
55541 EXCEPTION
55542   WHEN xla_exceptions_pkg.application_exception THEN
55543       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
55544             trace
55545                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
55546                ,p_level    => C_LEVEL_EXCEPTION
55547                ,p_module   => l_log_module);
55548       END IF;
55549       RAISE;
55550   WHEN OTHERS THEN
55551       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
55552             trace
55553                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
55554                ,p_level    => C_LEVEL_EXCEPTION
55555                ,p_module   => l_log_module);
55556        END IF;
55557        xla_exceptions_pkg.raise_message
55558            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_110');
55559 END insert_sources_110;
55560 --
55561 
55562 ---------------------------------------
55563 --
55564 -- PRIVATE FUNCTION
55565 --         EventClass_110
55566 --
55567 ----------------------------------------
55568 --
55569 FUNCTION EventClass_110
55570        (p_application_id         IN NUMBER
55571        ,p_base_ledger_id         IN NUMBER
55572        ,p_target_ledger_id       IN NUMBER
55573        ,p_language               IN VARCHAR2
55574        ,p_currency_code          IN VARCHAR2
55575        ,p_sla_ledger_id          IN NUMBER
55576        ,p_pad_start_date         IN DATE
55577        ,p_pad_end_date           IN DATE
55578        ,p_primary_ledger_id      IN NUMBER)
55579 RETURN BOOLEAN IS
55580 --
55581 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ADJ_ALL';
55582 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT_ADJ';
55583 
55584 l_calculate_acctd_flag   VARCHAR2(1) :='N';
55585 l_calculate_g_l_flag     VARCHAR2(1) :='N';
55586 --
55587 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55588 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55589 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55590 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55591 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55592 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55593 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55594 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55595 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55596 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55597 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55598 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55599 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55600 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
55601 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55602 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55603 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55604 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
55605 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55606 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55607 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55608 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
55609 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
55613 l_previous_event_id                    NUMBER;
55610 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
55611 
55612 l_event_id                             NUMBER;
55614 l_first_event_id                       NUMBER;
55615 l_last_event_id                        NUMBER;
55616 
55617 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
55618 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
55619 --
55620 --
55621 l_result                    BOOLEAN := TRUE;
55622 l_rows                      NUMBER  := 1000;
55623 l_event_type_name           VARCHAR2(80) := 'All';
55624 l_event_class_name          VARCHAR2(80) := 'Borrowed and Lent Adjustment';
55625 l_description               VARCHAR2(4000);
55626 l_transaction_reversal      NUMBER;
55627 l_ae_header_id              NUMBER;
55628 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
55629 l_log_module                VARCHAR2(240);
55630 --
55631 l_acct_reversal_source      VARCHAR2(30);
55632 l_trx_reversal_source       VARCHAR2(30);
55633 
55634 l_continue_with_lines       BOOLEAN := TRUE;
55635 --
55636 l_acc_rev_gl_date_source    DATE;                      -- 4262811
55637 --
55638 type t_array_event_id is table of number index by binary_integer;
55639 
55640 l_rec_array_event                    t_rec_array_event;
55641 l_null_rec_array_event               t_rec_array_event;
55642 l_array_ae_header_id                 xla_number_array_type;
55643 l_actual_flag                        VARCHAR2(1) := NULL;
55644 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
55645 l_balance_type_code                  VARCHAR2(1) :=NULL;
55646 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
55647 
55648 --
55649 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
55650 --
55651 
55652 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
55653 TYPE t_array_source_67 IS TABLE OF PA_XLA_EXP_HEADER_V.TP_AMT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
55654 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
55655 
55656 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
55657 TYPE t_array_source_8 IS TABLE OF PA_XLA_CCDL_LINES_V.PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
55658 TYPE t_array_source_9 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
55659 TYPE t_array_source_10 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
55660 TYPE t_array_source_15 IS TABLE OF PA_XLA_CCDL_LINES_V.RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
55661 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
55662 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
55663 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
55664 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
55665 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
55666 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
55667 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
55668 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
55669 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
55670 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
55671 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
55672 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
55673 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
55674 
55675 l_array_source_32              t_array_source_32;
55676 l_array_source_67              t_array_source_67;
55677 l_array_source_67_meaning      t_array_lookup_meaning;
55678 l_array_source_87              t_array_source_87;
55679 
55680 l_array_source_4      t_array_source_4;
55681 l_array_source_8      t_array_source_8;
55682 l_array_source_9      t_array_source_9;
55683 l_array_source_10      t_array_source_10;
55684 l_array_source_15      t_array_source_15;
55685 l_array_source_22      t_array_source_22;
55686 l_array_source_23      t_array_source_23;
55687 l_array_source_25      t_array_source_25;
55688 l_array_source_27      t_array_source_27;
55689 l_array_source_28      t_array_source_28;
55690 l_array_source_29      t_array_source_29;
55691 l_array_source_30      t_array_source_30;
55692 l_array_source_31      t_array_source_31;
55693 l_array_source_33      t_array_source_33;
55694 l_array_source_34      t_array_source_34;
55695 l_array_source_34_meaning      t_array_lookup_meaning;
55696 l_array_source_35      t_array_source_35;
55697 l_array_source_41      t_array_source_41;
55698 l_array_source_43      t_array_source_43;
55699 
55700 --
55701 CURSOR header_cur
55702 IS
55703 SELECT /*+ leading(xet) cardinality(xet,1) */
55704 -- Event Class Code: BORROWED_AND_LENT_ADJ
55705     xet.entity_id
55706    ,xet.legal_entity_id
55707    ,xet.entity_code
55708    ,xet.transaction_number
55709    ,xet.event_id
55710    ,xet.event_class_code
55711    ,xet.event_type_code
55715    ,xet.reference_num_1
55712    ,xet.event_number
55713    ,xet.event_date
55714    ,xet.transaction_date
55716    ,xet.reference_num_2
55717    ,xet.reference_num_3
55718    ,xet.reference_num_4
55719    ,xet.reference_char_1
55720    ,xet.reference_char_2
55721    ,xet.reference_char_3
55722    ,xet.reference_char_4
55723    ,xet.reference_date_1
55724    ,xet.reference_date_2
55725    ,xet.reference_date_3
55726    ,xet.reference_date_4
55727    ,xet.event_created_by
55728    ,xet.budgetary_control_flag 
55729   , h2.EXPENDITURE_ITEM_ID    source_32
55730   , h2.TP_AMT_TYPE_CODE    source_67
55731   , fvl67.meaning   source_67_meaning
55732   , h2.GL_DATE    source_87
55733   FROM xla_events_gt     xet 
55734   , PA_XLA_EXP_HEADER_V  h2
55735   , fnd_lookup_values    fvl67
55736  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
55737    and xet.event_class_code = C_EVENT_CLASS_CODE
55738    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
55739    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
55740   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
55741   AND fvl67.view_application_id(+) = 275
55742   AND fvl67.language(+)            = USERENV('LANG')
55743   
55744  ORDER BY event_id
55745 ;
55746 
55747 
55748 --
55749 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
55750 IS
55751 SELECT  /*+ leading(xet) cardinality(xet,1) */
55752 -- Event Class Code: BORROWED_AND_LENT_ADJ
55753     xet.entity_id
55754    ,xet.legal_entity_id
55755    ,xet.entity_code
55756    ,xet.transaction_number
55757    ,xet.event_id
55758    ,xet.event_class_code
55759    ,xet.event_type_code
55760    ,xet.event_number
55761    ,xet.event_date
55762    ,xet.transaction_date
55763    ,xet.reference_num_1
55764    ,xet.reference_num_2
55765    ,xet.reference_num_3
55766    ,xet.reference_num_4
55767    ,xet.reference_char_1
55768    ,xet.reference_char_2
55769    ,xet.reference_char_3
55770    ,xet.reference_char_4
55771    ,xet.reference_date_1
55772    ,xet.reference_date_2
55773    ,xet.reference_date_3
55774    ,xet.reference_date_4
55775    ,xet.event_created_by
55776    ,xet.budgetary_control_flag
55777  , l1.LINE_NUMBER  
55778   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
55779   , l1.PROVIDER_CCID    source_8
55780   , l1.ADJ_PROVIDER_CCID    source_9
55781   , l1.ADJ_RECEIVER_CCID    source_10
55782   , l1.RECEIVER_CCID    source_15
55783   , l1.REVERSING_LINE_FLAG    source_22
55784   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
55785   , l1.ENTERED_CURRENCY_CODE    source_25
55786   , l1.EXCHANGE_RATE_DATE    source_27
55787   , l1.EXCHANGE_RATE    source_28
55788   , l1.EXCHANGE_RATE_TYPE    source_29
55789   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
55790   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
55791   , l1.LINE_NUMBER    source_33
55792   , l1.LINE_TYPE    source_34
55793   , fvl34.meaning   source_34_meaning
55794   , l1.LINE_NUM_REVERSED    source_35
55795   , l1.ENTERED_AMOUNT    source_41
55796   , l1.ACCT_AMOUNT    source_43
55797   FROM xla_events_gt     xet 
55798   , PA_XLA_CCDL_LINES_V  l1
55799   , fnd_lookup_values    fvl34
55800  WHERE xet.event_id between x_first_event_id and x_last_event_id
55801    and xet.event_date between p_pad_start_date and p_pad_end_date
55802    and xet.event_class_code = C_EVENT_CLASS_CODE
55803    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
55804    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
55805   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
55806   AND fvl34.view_application_id(+) = 275
55807   AND fvl34.language(+)            = USERENV('LANG')
55808   ;
55809 
55810 --
55811 BEGIN
55812 IF g_log_enabled THEN
55813    l_log_module := C_DEFAULT_MODULE||'.EventClass_110';
55814 END IF;
55815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55816    trace
55817       (p_msg      => 'BEGIN of EventClass_110'
55818       ,p_level    => C_LEVEL_PROCEDURE
55819       ,p_module   => l_log_module);
55820 END IF;
55821 
55822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55823    trace
55824       (p_msg      => 'p_application_id = '||p_application_id||
55825                      ' - p_base_ledger_id = '||p_base_ledger_id||
55826                      ' - p_target_ledger_id  = '||p_target_ledger_id||
55827                      ' - p_language = '||p_language||
55828                      ' - p_currency_code = '||p_currency_code||
55829                      ' - p_sla_ledger_id = '||p_sla_ledger_id
55830       ,p_level    => C_LEVEL_STATEMENT
55831       ,p_module   => l_log_module);
55832 END IF;
55833 --
55834 -- initialze arrays
55835 --
55836 g_array_event.DELETE;
55837 l_rec_array_event := l_null_rec_array_event;
55838 --
55839 --------------------------------------
55840 -- 4262811 Initialze MPA Line Number
55841 --------------------------------------
55842 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
55843 
55844 --
55845 
55846 --
55847 OPEN header_cur;
55848 --
55849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55850    trace
55851    (p_msg      => 'SQL - FETCH header_cur'
55852    ,p_level    => C_LEVEL_STATEMENT
55853    ,p_module   => l_log_module);
55854 END IF;
55855 --
55856 LOOP
55857 FETCH header_cur BULK COLLECT INTO
55858         l_array_entity_id
55859       , l_array_legal_entity_id
55860       , l_array_entity_code
55864       , l_array_event_type
55861       , l_array_transaction_num
55862       , l_array_event_id
55863       , l_array_class_code
55865       , l_array_event_number
55866       , l_array_event_date
55867       , l_array_transaction_date
55868       , l_array_reference_num_1
55869       , l_array_reference_num_2
55870       , l_array_reference_num_3
55871       , l_array_reference_num_4
55872       , l_array_reference_char_1
55873       , l_array_reference_char_2
55874       , l_array_reference_char_3
55875       , l_array_reference_char_4
55876       , l_array_reference_date_1
55877       , l_array_reference_date_2
55878       , l_array_reference_date_3
55879       , l_array_reference_date_4
55880       , l_array_event_created_by
55881       , l_array_budgetary_control_flag 
55882       , l_array_source_32
55883       , l_array_source_67
55884       , l_array_source_67_meaning
55885       , l_array_source_87
55886       LIMIT l_rows;
55887 --
55888 IF (C_LEVEL_EVENT >= g_log_level) THEN
55889    trace
55890    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
55891    ,p_level    => C_LEVEL_EVENT
55892    ,p_module   => l_log_module);
55893 END IF;
55894 --
55895 EXIT WHEN l_array_entity_id.COUNT = 0;
55896 
55897 -- initialize arrays
55898 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
55899 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
55900 
55901 --
55902 -- Bug 4458708
55903 --
55904 XLA_AE_LINES_PKG.g_LineNumber := 0;
55905 
55906 
55907 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
55908 g_last_hdr_idx := l_array_event_id.LAST;
55909 --
55910 -- loop for the headers. Each iteration is for each header extract row
55911 -- fetched in header cursor
55912 --
55913 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
55914 
55915 --
55916 -- set event info as cache for other routines to refer event attributes
55917 --
55918 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
55919    (p_application_id           => p_application_id
55920    ,p_primary_ledger_id        => p_primary_ledger_id
55921    ,p_base_ledger_id           => p_base_ledger_id
55922    ,p_target_ledger_id         => p_target_ledger_id
55923    ,p_entity_id                => l_array_entity_id(hdr_idx)
55924    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
55925    ,p_entity_code              => l_array_entity_code(hdr_idx)
55926    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
55927    ,p_event_id                 => l_array_event_id(hdr_idx)
55928    ,p_event_class_code         => l_array_class_code(hdr_idx)
55929    ,p_event_type_code          => l_array_event_type(hdr_idx)
55930    ,p_event_number             => l_array_event_number(hdr_idx)
55931    ,p_event_date               => l_array_event_date(hdr_idx)
55932    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
55933    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
55934    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
55935    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
55936    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
55937    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
55938    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
55939    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
55940    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
55941    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
55942    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
55943    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
55944    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
55945    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
55946    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
55947 
55948 --
55949 -- set the status of entry to C_VALID (0)
55950 --
55951 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
55952 
55953 --
55954 -- initialize a row for ae header
55955 --
55956 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
55957 
55958 l_event_id := l_array_event_id(hdr_idx);
55959 
55960 --
55961 -- storing the hdr_idx for event. May be used by line cursor.
55962 --
55963 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
55964 
55965 --
55966 -- store sources from header extract. This can be improved to
55967 -- store only those sources from header extract that may be used in lines
55968 --
55969 
55970 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
55971 g_array_event(l_event_id).array_value_char('source_67') := l_array_source_67(hdr_idx);
55972 g_array_event(l_event_id).array_value_char('source_67_meaning') := l_array_source_67_meaning(hdr_idx);
55973 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
55974 
55975 --
55976 -- initilaize the status of ae headers for diffrent balance types
55977 -- the status is initialised to C_NOT_CREATED (2)
55978 --
55979 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
55980 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
55981 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
55982 
55983 --
55987 ------------------------------------------------------------
55984 -- call api to validate and store accounting attributes for header
55985 --
55986 
55988 -- Accrual Reversal : to get date for Standard Source (NONE)
55989 ------------------------------------------------------------
55990 l_acc_rev_gl_date_source := NULL;
55991 
55992      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
55993       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
55994 
55995 
55996 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
55997 
55998 XLA_AE_HEADER_PKG.SetJeCategoryName;
55999 
56000 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
56001 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
56002 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
56003 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
56004 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
56005 
56006 
56007 -- No header level analytical criteria
56008 
56009 --
56010 --accounting attribute enhancement, bug 3612931
56011 --
56012 l_trx_reversal_source := SUBSTR(NULL, 1,30);
56013 
56014 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
56015    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
56016 
56017    xla_accounting_err_pkg.build_message
56018       (p_appli_s_name            => 'XLA'
56019       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
56020       ,p_token_1                 => 'ACCT_ATTR_NAME'
56021       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
56022       ,p_token_2                 => 'PRODUCT_NAME'
56023       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
56024       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
56025       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
56026       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
56027 
56028 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
56029    --
56030    -- following sets the accounting attributes needed to reverse
56031    -- accounting for a distributeion
56032    --
56033    xla_ae_lines_pkg.SetTrxReversalAttrs
56034       (p_event_id              => l_event_id
56035       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
56036       ,p_trx_reversal_source   => l_trx_reversal_source);
56037 
56038 END IF;
56039 
56040 
56041 ----------------------------------------------------------------
56042 -- 4262811 -  update the header statuses to invalid in need be
56043 ----------------------------------------------------------------
56044 --
56045 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
56046 
56047 
56048   -----------------------------------------------
56049   -- No accrual reversal for the event class/type
56050   -----------------------------------------------
56051 ----------------------------------------------------------------
56052 
56053 --
56054 -- this ends the header loop iteration for one bulk fetch
56055 --
56056 END LOOP;
56057 
56058 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
56059 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
56060 
56061 --
56062 -- insert dummy rows into lines gt table that were created due to
56063 -- transaction reversals
56064 --
56065 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
56066    l_result := XLA_AE_LINES_PKG.InsertLines;
56067 END IF;
56068 
56069 --
56070 -- reset the temp_line_num for each set of events fetched from header
56071 -- cursor rather than doing it for each new event in line cursor
56072 -- Bug 3939231
56073 --
56074 xla_ae_lines_pkg.g_temp_line_num := 0;
56075 
56076 
56077 
56078 --
56079 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
56080 --
56081 --
56082 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56083 
56084       trace
56085          (p_msg      => 'SQL - FETCH line_cur'
56086          ,p_level    => C_LEVEL_STATEMENT
56087          ,p_module   => l_log_module);
56088 
56089 END IF;
56090 --
56091 --
56092 LOOP
56093   --
56094   FETCH line_cur BULK COLLECT INTO
56095         l_array_entity_id
56096       , l_array_legal_entity_id
56097       , l_array_entity_code
56098       , l_array_transaction_num
56099       , l_array_event_id
56100       , l_array_class_code
56101       , l_array_event_type
56102       , l_array_event_number
56103       , l_array_event_date
56104       , l_array_transaction_date
56105       , l_array_reference_num_1
56106       , l_array_reference_num_2
56107       , l_array_reference_num_3
56108       , l_array_reference_num_4
56109       , l_array_reference_char_1
56110       , l_array_reference_char_2
56111       , l_array_reference_char_3
56112       , l_array_reference_char_4
56113       , l_array_reference_date_1
56114       , l_array_reference_date_2
56115       , l_array_reference_date_3
56116       , l_array_reference_date_4
56117       , l_array_event_created_by
56118       , l_array_budgetary_control_flag
56119       , l_array_extract_line_num 
56123       , l_array_source_10
56120       , l_array_source_4
56121       , l_array_source_8
56122       , l_array_source_9
56124       , l_array_source_15
56125       , l_array_source_22
56126       , l_array_source_23
56127       , l_array_source_25
56128       , l_array_source_27
56129       , l_array_source_28
56130       , l_array_source_29
56131       , l_array_source_30
56132       , l_array_source_31
56133       , l_array_source_33
56134       , l_array_source_34
56135       , l_array_source_34_meaning
56136       , l_array_source_35
56137       , l_array_source_41
56138       , l_array_source_43
56139       LIMIT l_rows;
56140 
56141   --
56142   IF (C_LEVEL_EVENT >= g_log_level) THEN
56143             trace
56144                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
56145                ,p_level    => C_LEVEL_EVENT
56146                ,p_module   => l_log_module);
56147   END IF;
56148   --
56149   EXIT WHEN l_array_entity_id.count = 0;
56150 
56151   XLA_AE_LINES_PKG.g_rec_lines := null;
56152 
56153 --
56154 -- Bug 4458708
56155 --
56156 XLA_AE_LINES_PKG.g_LineNumber := 0;
56157 --
56158 --
56159 
56160 FOR Idx IN 1..l_array_event_id.count LOOP
56161    --
56162    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
56163    --
56164    l_event_id := l_array_event_id(idx);  -- 5648433
56165 
56166    --
56167    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
56168    --
56169 
56170    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
56171              (g_array_event(l_event_id).array_value_num('header_index'))
56172          ,'N'
56173          ) <> 'Y'
56174    THEN
56175       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56176          trace
56177             (p_msg      => 'Trancaction revesal option is not Y '
56178             ,p_level    => C_LEVEL_STATEMENT
56179             ,p_module   => l_log_module);
56180       END IF;
56181 
56182 --
56183 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
56184 --
56185 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
56186 --
56187 -- set event info as cache for other routines to refer event attributes
56188 --
56189 
56190 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
56191    l_previous_event_id := l_event_id;
56192 
56193    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
56194       (p_application_id           => p_application_id
56195       ,p_primary_ledger_id        => p_primary_ledger_id
56196       ,p_base_ledger_id           => p_base_ledger_id
56197       ,p_target_ledger_id         => p_target_ledger_id
56198       ,p_entity_id                => l_array_entity_id(Idx)
56199       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
56200       ,p_entity_code              => l_array_entity_code(Idx)
56201       ,p_transaction_num          => l_array_transaction_num(Idx)
56202       ,p_event_id                 => l_array_event_id(Idx)
56203       ,p_event_class_code         => l_array_class_code(Idx)
56204       ,p_event_type_code          => l_array_event_type(Idx)
56205       ,p_event_number             => l_array_event_number(Idx)
56206       ,p_event_date               => l_array_event_date(Idx)
56207       ,p_transaction_date         => l_array_transaction_date(Idx)
56208       ,p_reference_num_1          => l_array_reference_num_1(Idx)
56209       ,p_reference_num_2          => l_array_reference_num_2(Idx)
56210       ,p_reference_num_3          => l_array_reference_num_3(Idx)
56211       ,p_reference_num_4          => l_array_reference_num_4(Idx)
56212       ,p_reference_char_1         => l_array_reference_char_1(Idx)
56213       ,p_reference_char_2         => l_array_reference_char_2(Idx)
56214       ,p_reference_char_3         => l_array_reference_char_3(Idx)
56215       ,p_reference_char_4         => l_array_reference_char_4(Idx)
56216       ,p_reference_date_1         => l_array_reference_date_1(Idx)
56217       ,p_reference_date_2         => l_array_reference_date_2(Idx)
56218       ,p_reference_date_3         => l_array_reference_date_3(Idx)
56219       ,p_reference_date_4         => l_array_reference_date_4(Idx)
56220       ,p_event_created_by         => l_array_event_created_by(Idx)
56221       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
56222        --
56223 END IF;
56224 
56225 
56226 
56227 --
56228 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
56229 
56230 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
56231 
56232 IF l_continue_with_lines THEN
56233    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
56234       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
56235 
56236       xla_accounting_err_pkg.build_message
56237          (p_appli_s_name            => 'XLA'
56238          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
56239          ,p_token_1                 => 'LINE_NUMBER'
56240          ,p_value_1                 => l_array_extract_line_num(Idx)
56241          ,p_token_2                 => 'PRODUCT_NAME'
56242          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
56243          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
56247    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
56244          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
56245          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
56246 
56248       --
56249       -- following sets the accounting attributes needed to reverse
56250       -- accounting for a distributeion
56251       --
56252 
56253       --
56254       -- 5217187
56255       --
56256       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
56257       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
56258                                        g_array_event(l_event_id).array_value_num('header_index'));
56259       --
56260       --
56261 
56262       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
56263       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
56264       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
56265       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
56266       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
56267       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_8(Idx));
56268       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
56269       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
56270       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
56271       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
56272       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
56273       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
56274       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
56275       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
56276       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
56277       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
56278       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
56279       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
56280       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
56281       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
56282       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
56283       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_15(Idx));
56284       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
56285       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
56286       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
56287       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
56288       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
56289       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
56290       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
56291       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
56292       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
56293       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
56294       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
56295       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
56296       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
56297       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
56298       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
56299       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
56300       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
56301       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
56302       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
56303       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
56304       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
56305       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
56306       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
56307       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
56308       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
56309       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
56310 
56311 
56312       xla_ae_lines_pkg.SetAcctReversalAttrs
56313          (p_event_id             => l_event_id
56314          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
56315          ,p_calculate_acctd_flag => l_calculate_acctd_flag
56316          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
56317    END IF;
56318 
56319    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
56320        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
56321 
56322 --
56323 AcctLineType_38 (
56324  p_application_id  => p_application_id
56325  ,p_event_id     => l_event_id
56326  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56327  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56328  ,p_actual_flag => l_actual_flag
56329  ,p_balance_type_code => l_balance_type_code
56330  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56331  
56332  , p_source_4 => l_array_source_4(Idx)
56336  , p_source_22 => l_array_source_22(Idx)
56333  , p_source_8 => l_array_source_8(Idx)
56334  , p_source_9 => l_array_source_9(Idx)
56335  , p_source_15 => l_array_source_15(Idx)
56337  , p_source_23 => l_array_source_23(Idx)
56338  , p_source_25 => l_array_source_25(Idx)
56339  , p_source_27 => l_array_source_27(Idx)
56340  , p_source_28 => l_array_source_28(Idx)
56341  , p_source_29 => l_array_source_29(Idx)
56342  , p_source_30 => l_array_source_30(Idx)
56343  , p_source_31 => l_array_source_31(Idx)
56344  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56345  , p_source_33 => l_array_source_33(Idx)
56346  , p_source_34 => l_array_source_34(Idx)
56347  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56348  , p_source_35 => l_array_source_35(Idx)
56349  , p_source_41 => l_array_source_41(Idx)
56350  , p_source_43 => l_array_source_43(Idx)
56351  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56352  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56353  );
56354 If(l_balance_type_code = 'A') THEN
56355   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56356 END IF;
56357 
56358 --
56359 
56360 
56361 --
56362 AcctLineType_40 (
56363  p_application_id  => p_application_id
56364  ,p_event_id     => l_event_id
56365  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56366  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56367  ,p_actual_flag => l_actual_flag
56368  ,p_balance_type_code => l_balance_type_code
56369  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56370  
56371  , p_source_4 => l_array_source_4(Idx)
56372  , p_source_8 => l_array_source_8(Idx)
56373  , p_source_9 => l_array_source_9(Idx)
56374  , p_source_15 => l_array_source_15(Idx)
56375  , p_source_22 => l_array_source_22(Idx)
56376  , p_source_23 => l_array_source_23(Idx)
56377  , p_source_25 => l_array_source_25(Idx)
56378  , p_source_27 => l_array_source_27(Idx)
56379  , p_source_28 => l_array_source_28(Idx)
56380  , p_source_29 => l_array_source_29(Idx)
56381  , p_source_30 => l_array_source_30(Idx)
56382  , p_source_31 => l_array_source_31(Idx)
56383  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56384  , p_source_33 => l_array_source_33(Idx)
56385  , p_source_34 => l_array_source_34(Idx)
56386  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56387  , p_source_35 => l_array_source_35(Idx)
56388  , p_source_41 => l_array_source_41(Idx)
56389  , p_source_43 => l_array_source_43(Idx)
56390  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56391  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56392  );
56393 If(l_balance_type_code = 'A') THEN
56394   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56395 END IF;
56396 
56397 --
56398 
56399 
56400 --
56401 AcctLineType_70 (
56402  p_application_id  => p_application_id
56403  ,p_event_id     => l_event_id
56404  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56405  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56406  ,p_actual_flag => l_actual_flag
56407  ,p_balance_type_code => l_balance_type_code
56408  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56409  
56410  , p_source_4 => l_array_source_4(Idx)
56411  , p_source_8 => l_array_source_8(Idx)
56412  , p_source_10 => l_array_source_10(Idx)
56413  , p_source_15 => l_array_source_15(Idx)
56414  , p_source_22 => l_array_source_22(Idx)
56415  , p_source_23 => l_array_source_23(Idx)
56416  , p_source_25 => l_array_source_25(Idx)
56417  , p_source_27 => l_array_source_27(Idx)
56418  , p_source_28 => l_array_source_28(Idx)
56419  , p_source_29 => l_array_source_29(Idx)
56420  , p_source_30 => l_array_source_30(Idx)
56421  , p_source_31 => l_array_source_31(Idx)
56422  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56423  , p_source_33 => l_array_source_33(Idx)
56424  , p_source_34 => l_array_source_34(Idx)
56425  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56426  , p_source_35 => l_array_source_35(Idx)
56427  , p_source_41 => l_array_source_41(Idx)
56428  , p_source_43 => l_array_source_43(Idx)
56429  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56430  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56431  );
56432 If(l_balance_type_code = 'A') THEN
56433   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56434 END IF;
56435 
56436 --
56437 
56438 
56439 --
56440 AcctLineType_72 (
56441  p_application_id  => p_application_id
56442  ,p_event_id     => l_event_id
56443  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56444  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56445  ,p_actual_flag => l_actual_flag
56446  ,p_balance_type_code => l_balance_type_code
56447  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56448  
56449  , p_source_4 => l_array_source_4(Idx)
56450  , p_source_8 => l_array_source_8(Idx)
56451  , p_source_10 => l_array_source_10(Idx)
56452  , p_source_15 => l_array_source_15(Idx)
56453  , p_source_22 => l_array_source_22(Idx)
56454  , p_source_23 => l_array_source_23(Idx)
56455  , p_source_25 => l_array_source_25(Idx)
56456  , p_source_27 => l_array_source_27(Idx)
56457  , p_source_28 => l_array_source_28(Idx)
56458  , p_source_29 => l_array_source_29(Idx)
56459  , p_source_30 => l_array_source_30(Idx)
56460  , p_source_31 => l_array_source_31(Idx)
56461  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
56462  , p_source_33 => l_array_source_33(Idx)
56466  , p_source_41 => l_array_source_41(Idx)
56463  , p_source_34 => l_array_source_34(Idx)
56464  , p_source_34_meaning => l_array_source_34_meaning(Idx)
56465  , p_source_35 => l_array_source_35(Idx)
56467  , p_source_43 => l_array_source_43(Idx)
56468  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
56469  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
56470  );
56471 If(l_balance_type_code = 'A') THEN
56472   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56473 END IF;
56474 
56475 --
56476 
56477       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
56478       -- or secondary ledger that has different currency with primary
56479       -- or alc that is calculated by sla
56480       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
56481             (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'))
56482 
56483 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
56484 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
56485           AND (l_actual_flag = 'A')) THEN
56486         XLA_AE_LINES_PKG.CreateGainOrLossLines(
56487           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
56488          ,p_application_id   => p_application_id
56489          ,p_amb_context_code => 'DEFAULT'
56490          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
56491          ,p_event_class_code => C_EVENT_CLASS_CODE
56492          ,p_event_type_code  => C_EVENT_TYPE_CODE
56493          
56494          ,p_gain_ccid        => -1
56495          ,p_loss_ccid        => -1
56496 
56497          ,p_actual_flag      => l_actual_flag
56498          ,p_enc_flag         => null
56499          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
56500          ,p_enc_g_l_ref      => null
56501          );
56502       END IF;
56503    END IF;
56504 END IF;
56505 
56506    ELSE
56507       --
56508       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
56509       --
56510       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56511          trace
56512             (p_msg      => 'Trancaction revesal option is Y'
56513             ,p_level    => C_LEVEL_STATEMENT
56514             ,p_module   => l_log_module);
56515       END IF;
56516    END IF;
56517 
56518 END LOOP;
56519 l_result := XLA_AE_LINES_PKG.InsertLines ;
56520 end loop;
56521 close line_cur;
56522 
56523 
56524 --
56525 -- insert headers into xla_ae_headers_gt table
56526 --
56527 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
56528 
56529 -- insert into errors table here.
56530 
56531 END LOOP;
56532 
56533 --
56534 -- 4865292
56535 --
56536 -- Compare g_hdr_extract_count with event count in
56537 -- CreateHeadersAndLines.
56538 --
56539 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
56540 
56541 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56542    trace (p_msg     => '# rows extracted from header extract objects '
56543                     || ' (running total): '
56544                     || g_hdr_extract_count
56545          ,p_level   => C_LEVEL_STATEMENT
56546          ,p_module  => l_log_module);
56547 END IF;
56548 
56549 CLOSE header_cur;
56550 --
56551 
56552 --
56553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56554    trace
56555       (p_msg      => 'END of EventClass_110'
56556       ,p_level    => C_LEVEL_PROCEDURE
56557       ,p_module   => l_log_module);
56558 END IF;
56559 --
56560 RETURN l_result;
56561 EXCEPTION
56562 WHEN xla_exceptions_pkg.application_exception THEN
56563    
56564 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
56565 
56566    
56567 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
56568 
56569    RAISE;
56570 WHEN OTHERS THEN
56571    xla_exceptions_pkg.raise_message
56572       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_110');
56573 END EventClass_110;
56574 --
56575 
56576 ---------------------------------------
56577 --
56578 -- PRIVATE PROCEDURE
56579 --         insert_sources_111
56580 --
56581 ----------------------------------------
56582 --
56583 PROCEDURE insert_sources_111(
56584                                 p_target_ledger_id       IN NUMBER
56585                               , p_language               IN VARCHAR2
56586                               , p_sla_ledger_id          IN NUMBER
56587                               , p_pad_start_date         IN DATE
56588                               , p_pad_end_date           IN DATE
56589                          )
56590 IS
56591 
56592 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ALL';
56593 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT';
56594 p_apps_owner                   VARCHAR2(30);
56595 l_log_module                   VARCHAR2(240);
56596 BEGIN
56597 IF g_log_enabled THEN
56598       l_log_module := C_DEFAULT_MODULE||'.insert_sources_111';
56599 END IF;
56600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56601 
56602       trace
56603          (p_msg      => 'BEGIN of insert_sources_111'
56604          ,p_level    => C_LEVEL_PROCEDURE
56605          ,p_module   => l_log_module);
56609 -- select APPS owner
56606 
56607 END IF;
56608 
56610 SELECT oracle_username
56611   INTO p_apps_owner
56612   FROM fnd_oracle_userid
56613  WHERE read_only_flag = 'U'
56614 ;
56615 
56616 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56617       trace
56618          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
56619                         ' - p_language = '||p_language||
56620                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
56621                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
56622                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
56623                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
56624          ,p_level    => C_LEVEL_STATEMENT
56625          ,p_module   => l_log_module);
56626 END IF;
56627 
56628 
56629 --
56630 INSERT INTO xla_diag_sources --hdr2
56631 (
56632         event_id
56633       , ledger_id
56634       , sla_ledger_id
56635       , description_language
56636       , object_name
56637       , object_type_code
56638       , line_number
56639       , source_application_id
56640       , source_type_code
56641       , source_code
56642       , source_value
56643       , source_meaning
56644       , created_by
56645       , creation_date
56646       , last_update_date
56647       , last_updated_by
56648       , last_update_login
56649       , program_update_date
56650       , program_application_id
56651       , program_id
56652       , request_id
56653 )
56654 SELECT
56655         event_id
56656       , p_target_ledger_id
56657       , p_sla_ledger_id
56658       , p_language
56659       , object_name
56660       , object_type_code
56661       , line_number
56662       , source_application_id
56663       , source_type_code
56664       , source_code
56665       , SUBSTR(source_value ,1,1996)
56666       , SUBSTR(source_meaning ,1,200)
56667       , xla_environment_pkg.g_Usr_Id
56668       , TRUNC(SYSDATE)
56669       , TRUNC(SYSDATE)
56670       , xla_environment_pkg.g_Usr_Id
56671       , xla_environment_pkg.g_Login_Id
56672       , TRUNC(SYSDATE)
56673       , xla_environment_pkg.g_Prog_Appl_Id
56674       , xla_environment_pkg.g_Prog_Id
56675       , xla_environment_pkg.g_Req_Id
56676   FROM (
56677        SELECT xet.event_id                  event_id
56678             , 0                          line_number
56679             , CASE r
56680                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
56681                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
56682                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
56683                 
56684                ELSE null
56685               END                           object_name
56686             , CASE r
56687                 WHEN 1 THEN 'HEADER' 
56688                 WHEN 2 THEN 'HEADER' 
56689                 WHEN 3 THEN 'HEADER' 
56690                 
56691                 ELSE null
56692               END                           object_type_code
56693             , CASE r
56694                 WHEN 1 THEN '275' 
56695                 WHEN 2 THEN '275' 
56696                 WHEN 3 THEN '275' 
56697                 
56698                 ELSE null
56699               END                           source_application_id
56700             , 'S'             source_type_code
56701             , CASE r
56702                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
56703                 WHEN 2 THEN 'TP_AMT_TYPE_CODE' 
56704                 WHEN 3 THEN 'GL_DATE' 
56705                 
56706                 ELSE null
56707               END                           source_code
56708             , CASE r
56709                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
56710                 WHEN 2 THEN TO_CHAR(h2.TP_AMT_TYPE_CODE)
56711                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
56712                 
56713                 ELSE null
56714               END                           source_value
56715             , CASE r
56716                 WHEN 2 THEN fvl67.meaning
56717                 
56718                 ELSE null
56719               END               source_meaning
56720          FROM xla_events_gt     xet  
56721       , PA_XLA_EXP_HEADER_V  h2
56722   , fnd_lookup_values    fvl67
56723              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
56724          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
56725            AND xet.event_class_code = C_EVENT_CLASS_CODE
56726               AND h2.event_id = xet.event_id
56727    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
56728   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
56729   AND fvl67.view_application_id(+) = 275
56730   AND fvl67.language(+)            = USERENV('LANG')
56731   
56732 )
56733 ;
56734 --
56735 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56736 
56737       trace
56738          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
56739          ,p_level    => C_LEVEL_STATEMENT
56740          ,p_module   => l_log_module);
56741 
56742 END IF;
56743 --
56744 
56745 
56746 
56747 --
56748 INSERT INTO xla_diag_sources  --line2
56749 (
56750         event_id
56751       , ledger_id
56752       , sla_ledger_id
56753       , description_language
56754       , object_name
56758       , source_type_code
56755       , object_type_code
56756       , line_number
56757       , source_application_id
56759       , source_code
56760       , source_value
56761       , source_meaning
56762       , created_by
56763       , creation_date
56764       , last_update_date
56765       , last_updated_by
56766       , last_update_login
56767       , program_update_date
56768       , program_application_id
56769       , program_id
56770       , request_id
56771 )
56772 SELECT  event_id
56773       , p_target_ledger_id
56774       , p_sla_ledger_id
56775       , p_language
56776       , object_name
56777       , object_type_code
56778       , line_number
56779       , source_application_id
56780       , source_type_code
56781       , source_code
56782       , SUBSTR(source_value,1,1996)
56783       , SUBSTR(source_meaning ,1,200)
56784       , xla_environment_pkg.g_Usr_Id
56785       , TRUNC(SYSDATE)
56786       , TRUNC(SYSDATE)
56787       , xla_environment_pkg.g_Usr_Id
56788       , xla_environment_pkg.g_Login_Id
56789       , TRUNC(SYSDATE)
56790       , xla_environment_pkg.g_Prog_Appl_Id
56791       , xla_environment_pkg.g_Prog_Id
56792       , xla_environment_pkg.g_Req_Id
56793   FROM (
56794        SELECT xet.event_id                  event_id
56795             , l1.line_number                 line_number
56796             , CASE r
56797                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
56798                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
56799                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
56800                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
56801                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
56802                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
56803                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
56804                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
56805                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
56806                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
56807                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
56808                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
56809                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
56810                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
56811                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
56812                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
56813                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
56814                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
56815                 
56816                ELSE null
56817               END                           object_name
56818             , CASE r
56819                 WHEN 1 THEN 'LINE' 
56820                 WHEN 2 THEN 'LINE' 
56821                 WHEN 3 THEN 'LINE' 
56822                 WHEN 4 THEN 'LINE' 
56823                 WHEN 5 THEN 'LINE' 
56824                 WHEN 6 THEN 'LINE' 
56825                 WHEN 7 THEN 'LINE' 
56826                 WHEN 8 THEN 'LINE' 
56827                 WHEN 9 THEN 'LINE' 
56828                 WHEN 10 THEN 'LINE' 
56829                 WHEN 11 THEN 'LINE' 
56830                 WHEN 12 THEN 'LINE' 
56831                 WHEN 13 THEN 'LINE' 
56832                 WHEN 14 THEN 'LINE' 
56833                 WHEN 15 THEN 'LINE' 
56834                 WHEN 16 THEN 'LINE' 
56835                 WHEN 17 THEN 'LINE' 
56836                 WHEN 18 THEN 'LINE' 
56837                 
56838                 ELSE null
56839               END                           object_type_code
56840             , CASE r
56841                 WHEN 1 THEN '275' 
56842                 WHEN 2 THEN '275' 
56843                 WHEN 3 THEN '275' 
56844                 WHEN 4 THEN '275' 
56845                 WHEN 5 THEN '275' 
56846                 WHEN 6 THEN '275' 
56847                 WHEN 7 THEN '275' 
56848                 WHEN 8 THEN '275' 
56849                 WHEN 9 THEN '275' 
56850                 WHEN 10 THEN '275' 
56851                 WHEN 11 THEN '275' 
56852                 WHEN 12 THEN '275' 
56853                 WHEN 13 THEN '275' 
56854                 WHEN 14 THEN '275' 
56855                 WHEN 15 THEN '275' 
56856                 WHEN 16 THEN '275' 
56857                 WHEN 17 THEN '275' 
56858                 WHEN 18 THEN '275' 
56859                 
56860                 ELSE null
56861               END                           source_application_id
56862             , 'S'             source_type_code
56863             , CASE r
56864                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
56865                 WHEN 2 THEN 'PROVIDER_CCID' 
56866                 WHEN 3 THEN 'ADJ_PROVIDER_CCID' 
56867                 WHEN 4 THEN 'ADJ_RECEIVER_CCID' 
56868                 WHEN 5 THEN 'RECEIVER_CCID' 
56869                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
56870                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
56871                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
56872                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
56873                 WHEN 10 THEN 'EXCHANGE_RATE' 
56874                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
56875                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
56876                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
56877                 WHEN 14 THEN 'LINE_NUMBER' 
56878                 WHEN 15 THEN 'LINE_TYPE' 
56879                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
56880                 WHEN 17 THEN 'ENTERED_AMOUNT' 
56881                 WHEN 18 THEN 'ACCT_AMOUNT' 
56882                 
56886                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
56883                 ELSE null
56884               END                           source_code
56885             , CASE r
56887                 WHEN 2 THEN TO_CHAR(l1.PROVIDER_CCID)
56888                 WHEN 3 THEN TO_CHAR(l1.ADJ_PROVIDER_CCID)
56889                 WHEN 4 THEN TO_CHAR(l1.ADJ_RECEIVER_CCID)
56890                 WHEN 5 THEN TO_CHAR(l1.RECEIVER_CCID)
56891                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
56892                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
56893                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
56894                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
56895                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
56896                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
56897                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
56898                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
56899                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
56900                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
56901                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
56902                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
56903                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
56904                 
56905                 ELSE null
56906               END                           source_value
56907             , CASE r
56908                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
56909                           103371
56910                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
56911                          ,'ALLOW_OVERRIDE_CCID_FLAG'
56912                          ,'S'
56913                          ,275)
56914                 WHEN 15 THEN fvl34.meaning
56915                 
56916                 ELSE null
56917               END               source_meaning
56918          FROM  xla_events_gt     xet  
56919         , PA_XLA_CCDL_LINES_V  l1
56920   , fnd_lookup_values    fvl34
56921             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
56922         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
56923           AND xet.event_class_code = C_EVENT_CLASS_CODE
56924             AND l1.event_id          = xet.event_id
56925    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
56926   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
56927   AND fvl34.view_application_id(+) = 275
56928   AND fvl34.language(+)            = USERENV('LANG')
56929   
56930 )
56931 ;
56932 --
56933 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56934 
56935       trace
56936          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
56937          ,p_level    => C_LEVEL_STATEMENT
56938          ,p_module   => l_log_module);
56939 
56940 END IF;
56941 
56942 
56943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56944       trace
56945          (p_msg      => 'END of insert_sources_111'
56946          ,p_level    => C_LEVEL_PROCEDURE
56947          ,p_module   => l_log_module);
56948 END IF;
56949 EXCEPTION
56950   WHEN xla_exceptions_pkg.application_exception THEN
56951       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
56952             trace
56953                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
56954                ,p_level    => C_LEVEL_EXCEPTION
56955                ,p_module   => l_log_module);
56956       END IF;
56957       RAISE;
56958   WHEN OTHERS THEN
56959       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
56960             trace
56961                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
56962                ,p_level    => C_LEVEL_EXCEPTION
56963                ,p_module   => l_log_module);
56964        END IF;
56965        xla_exceptions_pkg.raise_message
56966            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_111');
56967 END insert_sources_111;
56968 --
56969 
56970 ---------------------------------------
56971 --
56972 -- PRIVATE FUNCTION
56973 --         EventClass_111
56974 --
56975 ----------------------------------------
56976 --
56977 FUNCTION EventClass_111
56978        (p_application_id         IN NUMBER
56979        ,p_base_ledger_id         IN NUMBER
56980        ,p_target_ledger_id       IN NUMBER
56981        ,p_language               IN VARCHAR2
56982        ,p_currency_code          IN VARCHAR2
56983        ,p_sla_ledger_id          IN NUMBER
56984        ,p_pad_start_date         IN DATE
56985        ,p_pad_end_date           IN DATE
56986        ,p_primary_ledger_id      IN NUMBER)
56987 RETURN BOOLEAN IS
56988 --
56989 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ALL';
56990 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT';
56991 
56992 l_calculate_acctd_flag   VARCHAR2(1) :='N';
56993 l_calculate_g_l_flag     VARCHAR2(1) :='N';
56994 --
56995 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
56996 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
56997 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
56998 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
56999 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57000 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57001 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57002 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57006 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57003 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57004 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57005 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57007 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57008 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57009 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57010 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57011 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57012 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57013 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57014 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57015 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57016 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57017 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
57018 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57019 
57020 l_event_id                             NUMBER;
57021 l_previous_event_id                    NUMBER;
57022 l_first_event_id                       NUMBER;
57023 l_last_event_id                        NUMBER;
57024 
57025 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
57026 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
57027 --
57028 --
57029 l_result                    BOOLEAN := TRUE;
57030 l_rows                      NUMBER  := 1000;
57031 l_event_type_name           VARCHAR2(80) := 'All';
57032 l_event_class_name          VARCHAR2(80) := 'Borrowed and Lent';
57033 l_description               VARCHAR2(4000);
57034 l_transaction_reversal      NUMBER;
57035 l_ae_header_id              NUMBER;
57036 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
57037 l_log_module                VARCHAR2(240);
57038 --
57039 l_acct_reversal_source      VARCHAR2(30);
57040 l_trx_reversal_source       VARCHAR2(30);
57041 
57042 l_continue_with_lines       BOOLEAN := TRUE;
57043 --
57044 l_acc_rev_gl_date_source    DATE;                      -- 4262811
57045 --
57046 type t_array_event_id is table of number index by binary_integer;
57047 
57048 l_rec_array_event                    t_rec_array_event;
57049 l_null_rec_array_event               t_rec_array_event;
57050 l_array_ae_header_id                 xla_number_array_type;
57051 l_actual_flag                        VARCHAR2(1) := NULL;
57052 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
57053 l_balance_type_code                  VARCHAR2(1) :=NULL;
57054 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
57055 
57056 --
57057 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
57058 --
57059 
57060 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
57061 TYPE t_array_source_67 IS TABLE OF PA_XLA_EXP_HEADER_V.TP_AMT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
57062 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
57063 
57064 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
57065 TYPE t_array_source_8 IS TABLE OF PA_XLA_CCDL_LINES_V.PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
57066 TYPE t_array_source_9 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
57067 TYPE t_array_source_10 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
57068 TYPE t_array_source_15 IS TABLE OF PA_XLA_CCDL_LINES_V.RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
57069 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
57070 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
57071 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
57072 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
57073 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
57074 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
57075 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
57076 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
57077 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
57078 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
57079 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
57080 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
57081 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
57082 
57083 l_array_source_32              t_array_source_32;
57084 l_array_source_67              t_array_source_67;
57085 l_array_source_67_meaning      t_array_lookup_meaning;
57086 l_array_source_87              t_array_source_87;
57087 
57088 l_array_source_4      t_array_source_4;
57089 l_array_source_8      t_array_source_8;
57090 l_array_source_9      t_array_source_9;
57091 l_array_source_10      t_array_source_10;
57092 l_array_source_15      t_array_source_15;
57096 l_array_source_27      t_array_source_27;
57093 l_array_source_22      t_array_source_22;
57094 l_array_source_23      t_array_source_23;
57095 l_array_source_25      t_array_source_25;
57097 l_array_source_28      t_array_source_28;
57098 l_array_source_29      t_array_source_29;
57099 l_array_source_30      t_array_source_30;
57100 l_array_source_31      t_array_source_31;
57101 l_array_source_33      t_array_source_33;
57102 l_array_source_34      t_array_source_34;
57103 l_array_source_34_meaning      t_array_lookup_meaning;
57104 l_array_source_35      t_array_source_35;
57105 l_array_source_41      t_array_source_41;
57106 l_array_source_43      t_array_source_43;
57107 
57108 --
57109 CURSOR header_cur
57110 IS
57111 SELECT /*+ leading(xet) cardinality(xet,1) */
57112 -- Event Class Code: BORROWED_AND_LENT
57113     xet.entity_id
57114    ,xet.legal_entity_id
57115    ,xet.entity_code
57116    ,xet.transaction_number
57117    ,xet.event_id
57118    ,xet.event_class_code
57119    ,xet.event_type_code
57120    ,xet.event_number
57121    ,xet.event_date
57122    ,xet.transaction_date
57123    ,xet.reference_num_1
57124    ,xet.reference_num_2
57125    ,xet.reference_num_3
57126    ,xet.reference_num_4
57127    ,xet.reference_char_1
57128    ,xet.reference_char_2
57129    ,xet.reference_char_3
57130    ,xet.reference_char_4
57131    ,xet.reference_date_1
57132    ,xet.reference_date_2
57133    ,xet.reference_date_3
57134    ,xet.reference_date_4
57135    ,xet.event_created_by
57136    ,xet.budgetary_control_flag 
57137   , h2.EXPENDITURE_ITEM_ID    source_32
57138   , h2.TP_AMT_TYPE_CODE    source_67
57139   , fvl67.meaning   source_67_meaning
57140   , h2.GL_DATE    source_87
57141   FROM xla_events_gt     xet 
57142   , PA_XLA_EXP_HEADER_V  h2
57143   , fnd_lookup_values    fvl67
57144  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
57145    and xet.event_class_code = C_EVENT_CLASS_CODE
57146    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
57147    AND fvl67.lookup_type(+)         = 'TP_AMOUNT_TYPE'
57148   AND fvl67.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
57149   AND fvl67.view_application_id(+) = 275
57150   AND fvl67.language(+)            = USERENV('LANG')
57151   
57152  ORDER BY event_id
57153 ;
57154 
57155 
57156 --
57157 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
57158 IS
57159 SELECT  /*+ leading(xet) cardinality(xet,1) */
57160 -- Event Class Code: BORROWED_AND_LENT
57161     xet.entity_id
57162    ,xet.legal_entity_id
57163    ,xet.entity_code
57164    ,xet.transaction_number
57165    ,xet.event_id
57166    ,xet.event_class_code
57167    ,xet.event_type_code
57168    ,xet.event_number
57169    ,xet.event_date
57170    ,xet.transaction_date
57171    ,xet.reference_num_1
57172    ,xet.reference_num_2
57173    ,xet.reference_num_3
57174    ,xet.reference_num_4
57175    ,xet.reference_char_1
57176    ,xet.reference_char_2
57177    ,xet.reference_char_3
57178    ,xet.reference_char_4
57179    ,xet.reference_date_1
57180    ,xet.reference_date_2
57181    ,xet.reference_date_3
57182    ,xet.reference_date_4
57183    ,xet.event_created_by
57184    ,xet.budgetary_control_flag
57185  , l1.LINE_NUMBER  
57186   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
57187   , l1.PROVIDER_CCID    source_8
57188   , l1.ADJ_PROVIDER_CCID    source_9
57189   , l1.ADJ_RECEIVER_CCID    source_10
57190   , l1.RECEIVER_CCID    source_15
57191   , l1.REVERSING_LINE_FLAG    source_22
57192   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
57193   , l1.ENTERED_CURRENCY_CODE    source_25
57194   , l1.EXCHANGE_RATE_DATE    source_27
57195   , l1.EXCHANGE_RATE    source_28
57196   , l1.EXCHANGE_RATE_TYPE    source_29
57197   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
57198   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
57199   , l1.LINE_NUMBER    source_33
57200   , l1.LINE_TYPE    source_34
57201   , fvl34.meaning   source_34_meaning
57202   , l1.LINE_NUM_REVERSED    source_35
57203   , l1.ENTERED_AMOUNT    source_41
57204   , l1.ACCT_AMOUNT    source_43
57205   FROM xla_events_gt     xet 
57206   , PA_XLA_CCDL_LINES_V  l1
57207   , fnd_lookup_values    fvl34
57208  WHERE xet.event_id between x_first_event_id and x_last_event_id
57209    and xet.event_date between p_pad_start_date and p_pad_end_date
57210    and xet.event_class_code = C_EVENT_CLASS_CODE
57211    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
57212    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
57213   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
57214   AND fvl34.view_application_id(+) = 275
57215   AND fvl34.language(+)            = USERENV('LANG')
57216   ;
57217 
57218 --
57219 BEGIN
57220 IF g_log_enabled THEN
57221    l_log_module := C_DEFAULT_MODULE||'.EventClass_111';
57222 END IF;
57223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57224    trace
57225       (p_msg      => 'BEGIN of EventClass_111'
57226       ,p_level    => C_LEVEL_PROCEDURE
57227       ,p_module   => l_log_module);
57228 END IF;
57229 
57230 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57231    trace
57232       (p_msg      => 'p_application_id = '||p_application_id||
57233                      ' - p_base_ledger_id = '||p_base_ledger_id||
57234                      ' - p_target_ledger_id  = '||p_target_ledger_id||
57235                      ' - p_language = '||p_language||
57239       ,p_module   => l_log_module);
57236                      ' - p_currency_code = '||p_currency_code||
57237                      ' - p_sla_ledger_id = '||p_sla_ledger_id
57238       ,p_level    => C_LEVEL_STATEMENT
57240 END IF;
57241 --
57242 -- initialze arrays
57243 --
57244 g_array_event.DELETE;
57245 l_rec_array_event := l_null_rec_array_event;
57246 --
57247 --------------------------------------
57248 -- 4262811 Initialze MPA Line Number
57249 --------------------------------------
57250 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
57251 
57252 --
57253 
57254 --
57255 OPEN header_cur;
57256 --
57257 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57258    trace
57259    (p_msg      => 'SQL - FETCH header_cur'
57260    ,p_level    => C_LEVEL_STATEMENT
57261    ,p_module   => l_log_module);
57262 END IF;
57263 --
57264 LOOP
57265 FETCH header_cur BULK COLLECT INTO
57266         l_array_entity_id
57267       , l_array_legal_entity_id
57268       , l_array_entity_code
57269       , l_array_transaction_num
57270       , l_array_event_id
57271       , l_array_class_code
57272       , l_array_event_type
57273       , l_array_event_number
57274       , l_array_event_date
57275       , l_array_transaction_date
57276       , l_array_reference_num_1
57277       , l_array_reference_num_2
57278       , l_array_reference_num_3
57279       , l_array_reference_num_4
57280       , l_array_reference_char_1
57281       , l_array_reference_char_2
57282       , l_array_reference_char_3
57283       , l_array_reference_char_4
57284       , l_array_reference_date_1
57285       , l_array_reference_date_2
57286       , l_array_reference_date_3
57287       , l_array_reference_date_4
57288       , l_array_event_created_by
57289       , l_array_budgetary_control_flag 
57290       , l_array_source_32
57291       , l_array_source_67
57292       , l_array_source_67_meaning
57293       , l_array_source_87
57294       LIMIT l_rows;
57295 --
57296 IF (C_LEVEL_EVENT >= g_log_level) THEN
57297    trace
57298    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
57299    ,p_level    => C_LEVEL_EVENT
57300    ,p_module   => l_log_module);
57301 END IF;
57302 --
57303 EXIT WHEN l_array_entity_id.COUNT = 0;
57304 
57305 -- initialize arrays
57306 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
57307 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
57308 
57309 --
57310 -- Bug 4458708
57311 --
57312 XLA_AE_LINES_PKG.g_LineNumber := 0;
57313 
57314 
57315 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
57316 g_last_hdr_idx := l_array_event_id.LAST;
57317 --
57318 -- loop for the headers. Each iteration is for each header extract row
57319 -- fetched in header cursor
57320 --
57321 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
57322 
57323 --
57324 -- set event info as cache for other routines to refer event attributes
57325 --
57326 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
57327    (p_application_id           => p_application_id
57328    ,p_primary_ledger_id        => p_primary_ledger_id
57329    ,p_base_ledger_id           => p_base_ledger_id
57330    ,p_target_ledger_id         => p_target_ledger_id
57331    ,p_entity_id                => l_array_entity_id(hdr_idx)
57332    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
57333    ,p_entity_code              => l_array_entity_code(hdr_idx)
57334    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
57335    ,p_event_id                 => l_array_event_id(hdr_idx)
57336    ,p_event_class_code         => l_array_class_code(hdr_idx)
57337    ,p_event_type_code          => l_array_event_type(hdr_idx)
57338    ,p_event_number             => l_array_event_number(hdr_idx)
57339    ,p_event_date               => l_array_event_date(hdr_idx)
57340    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
57341    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
57342    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
57343    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
57344    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
57345    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
57346    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
57347    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
57348    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
57349    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
57350    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
57351    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
57352    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
57353    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
57354    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
57355 
57356 --
57357 -- set the status of entry to C_VALID (0)
57358 --
57359 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
57360 
57361 --
57362 -- initialize a row for ae header
57363 --
57364 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
57365 
57366 l_event_id := l_array_event_id(hdr_idx);
57367 
57368 --
57372 
57369 -- storing the hdr_idx for event. May be used by line cursor.
57370 --
57371 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
57373 --
57374 -- store sources from header extract. This can be improved to
57375 -- store only those sources from header extract that may be used in lines
57376 --
57377 
57378 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
57379 g_array_event(l_event_id).array_value_char('source_67') := l_array_source_67(hdr_idx);
57380 g_array_event(l_event_id).array_value_char('source_67_meaning') := l_array_source_67_meaning(hdr_idx);
57381 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
57382 
57383 --
57384 -- initilaize the status of ae headers for diffrent balance types
57385 -- the status is initialised to C_NOT_CREATED (2)
57386 --
57387 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57388 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57389 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57390 
57391 --
57392 -- call api to validate and store accounting attributes for header
57393 --
57394 
57395 ------------------------------------------------------------
57396 -- Accrual Reversal : to get date for Standard Source (NONE)
57397 ------------------------------------------------------------
57398 l_acc_rev_gl_date_source := NULL;
57399 
57400      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
57401       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
57402 
57403 
57404 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
57405 
57406 XLA_AE_HEADER_PKG.SetJeCategoryName;
57407 
57408 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
57409 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
57410 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
57411 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
57412 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
57413 
57414 
57415 -- No header level analytical criteria
57416 
57417 --
57418 --accounting attribute enhancement, bug 3612931
57419 --
57420 l_trx_reversal_source := SUBSTR(NULL, 1,30);
57421 
57422 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
57423    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
57424 
57425    xla_accounting_err_pkg.build_message
57426       (p_appli_s_name            => 'XLA'
57427       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
57428       ,p_token_1                 => 'ACCT_ATTR_NAME'
57429       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
57430       ,p_token_2                 => 'PRODUCT_NAME'
57431       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
57432       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
57433       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
57434       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
57435 
57436 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
57437    --
57438    -- following sets the accounting attributes needed to reverse
57439    -- accounting for a distributeion
57440    --
57441    xla_ae_lines_pkg.SetTrxReversalAttrs
57442       (p_event_id              => l_event_id
57443       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
57444       ,p_trx_reversal_source   => l_trx_reversal_source);
57445 
57446 END IF;
57447 
57448 
57449 ----------------------------------------------------------------
57450 -- 4262811 -  update the header statuses to invalid in need be
57451 ----------------------------------------------------------------
57452 --
57453 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
57454 
57455 
57456   -----------------------------------------------
57457   -- No accrual reversal for the event class/type
57458   -----------------------------------------------
57459 ----------------------------------------------------------------
57460 
57461 --
57462 -- this ends the header loop iteration for one bulk fetch
57463 --
57464 END LOOP;
57465 
57466 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
57467 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
57468 
57469 --
57470 -- insert dummy rows into lines gt table that were created due to
57471 -- transaction reversals
57472 --
57473 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
57474    l_result := XLA_AE_LINES_PKG.InsertLines;
57475 END IF;
57476 
57477 --
57478 -- reset the temp_line_num for each set of events fetched from header
57479 -- cursor rather than doing it for each new event in line cursor
57480 -- Bug 3939231
57481 --
57482 xla_ae_lines_pkg.g_temp_line_num := 0;
57483 
57484 
57485 
57486 --
57487 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
57488 --
57489 --
57493          (p_msg      => 'SQL - FETCH line_cur'
57490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57491 
57492       trace
57494          ,p_level    => C_LEVEL_STATEMENT
57495          ,p_module   => l_log_module);
57496 
57497 END IF;
57498 --
57499 --
57500 LOOP
57501   --
57502   FETCH line_cur BULK COLLECT INTO
57503         l_array_entity_id
57504       , l_array_legal_entity_id
57505       , l_array_entity_code
57506       , l_array_transaction_num
57507       , l_array_event_id
57508       , l_array_class_code
57509       , l_array_event_type
57510       , l_array_event_number
57511       , l_array_event_date
57512       , l_array_transaction_date
57513       , l_array_reference_num_1
57514       , l_array_reference_num_2
57515       , l_array_reference_num_3
57516       , l_array_reference_num_4
57517       , l_array_reference_char_1
57518       , l_array_reference_char_2
57519       , l_array_reference_char_3
57520       , l_array_reference_char_4
57521       , l_array_reference_date_1
57522       , l_array_reference_date_2
57523       , l_array_reference_date_3
57524       , l_array_reference_date_4
57525       , l_array_event_created_by
57526       , l_array_budgetary_control_flag
57527       , l_array_extract_line_num 
57528       , l_array_source_4
57529       , l_array_source_8
57530       , l_array_source_9
57531       , l_array_source_10
57532       , l_array_source_15
57533       , l_array_source_22
57534       , l_array_source_23
57535       , l_array_source_25
57536       , l_array_source_27
57537       , l_array_source_28
57538       , l_array_source_29
57539       , l_array_source_30
57540       , l_array_source_31
57541       , l_array_source_33
57542       , l_array_source_34
57543       , l_array_source_34_meaning
57544       , l_array_source_35
57545       , l_array_source_41
57546       , l_array_source_43
57547       LIMIT l_rows;
57548 
57549   --
57550   IF (C_LEVEL_EVENT >= g_log_level) THEN
57551             trace
57552                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
57553                ,p_level    => C_LEVEL_EVENT
57554                ,p_module   => l_log_module);
57555   END IF;
57556   --
57557   EXIT WHEN l_array_entity_id.count = 0;
57558 
57559   XLA_AE_LINES_PKG.g_rec_lines := null;
57560 
57561 --
57562 -- Bug 4458708
57563 --
57564 XLA_AE_LINES_PKG.g_LineNumber := 0;
57565 --
57566 --
57567 
57568 FOR Idx IN 1..l_array_event_id.count LOOP
57569    --
57570    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
57571    --
57572    l_event_id := l_array_event_id(idx);  -- 5648433
57573 
57574    --
57575    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
57576    --
57577 
57578    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
57579              (g_array_event(l_event_id).array_value_num('header_index'))
57580          ,'N'
57581          ) <> 'Y'
57582    THEN
57583       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57584          trace
57585             (p_msg      => 'Trancaction revesal option is not Y '
57586             ,p_level    => C_LEVEL_STATEMENT
57587             ,p_module   => l_log_module);
57588       END IF;
57589 
57590 --
57591 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
57592 --
57593 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
57594 --
57595 -- set event info as cache for other routines to refer event attributes
57596 --
57597 
57598 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
57599    l_previous_event_id := l_event_id;
57600 
57601    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
57602       (p_application_id           => p_application_id
57603       ,p_primary_ledger_id        => p_primary_ledger_id
57604       ,p_base_ledger_id           => p_base_ledger_id
57605       ,p_target_ledger_id         => p_target_ledger_id
57606       ,p_entity_id                => l_array_entity_id(Idx)
57607       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
57608       ,p_entity_code              => l_array_entity_code(Idx)
57609       ,p_transaction_num          => l_array_transaction_num(Idx)
57610       ,p_event_id                 => l_array_event_id(Idx)
57611       ,p_event_class_code         => l_array_class_code(Idx)
57612       ,p_event_type_code          => l_array_event_type(Idx)
57613       ,p_event_number             => l_array_event_number(Idx)
57614       ,p_event_date               => l_array_event_date(Idx)
57615       ,p_transaction_date         => l_array_transaction_date(Idx)
57616       ,p_reference_num_1          => l_array_reference_num_1(Idx)
57617       ,p_reference_num_2          => l_array_reference_num_2(Idx)
57618       ,p_reference_num_3          => l_array_reference_num_3(Idx)
57619       ,p_reference_num_4          => l_array_reference_num_4(Idx)
57620       ,p_reference_char_1         => l_array_reference_char_1(Idx)
57621       ,p_reference_char_2         => l_array_reference_char_2(Idx)
57622       ,p_reference_char_3         => l_array_reference_char_3(Idx)
57623       ,p_reference_char_4         => l_array_reference_char_4(Idx)
57624       ,p_reference_date_1         => l_array_reference_date_1(Idx)
57625       ,p_reference_date_2         => l_array_reference_date_2(Idx)
57626       ,p_reference_date_3         => l_array_reference_date_3(Idx)
57630        --
57627       ,p_reference_date_4         => l_array_reference_date_4(Idx)
57628       ,p_event_created_by         => l_array_event_created_by(Idx)
57629       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
57631 END IF;
57632 
57633 
57634 
57635 --
57636 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
57637 
57638 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
57639 
57640 IF l_continue_with_lines THEN
57641    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
57642       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
57643 
57644       xla_accounting_err_pkg.build_message
57645          (p_appli_s_name            => 'XLA'
57646          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
57647          ,p_token_1                 => 'LINE_NUMBER'
57648          ,p_value_1                 => l_array_extract_line_num(Idx)
57649          ,p_token_2                 => 'PRODUCT_NAME'
57650          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
57651          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
57652          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
57653          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
57654 
57655    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
57656       --
57657       -- following sets the accounting attributes needed to reverse
57658       -- accounting for a distributeion
57659       --
57660 
57661       --
57662       -- 5217187
57663       --
57664       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
57665       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
57666                                        g_array_event(l_event_id).array_value_num('header_index'));
57667       --
57668       --
57669 
57670       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
57671       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
57672       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
57673       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
57674       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
57675       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_8(Idx));
57676       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
57677       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
57678       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
57679       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
57680       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
57681       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
57682       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
57683       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
57684       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
57685       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
57686       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
57687       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
57688       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
57689       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
57690       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
57691       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_15(Idx));
57692       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
57693       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
57694       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
57695       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
57696       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
57697       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
57698       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
57699       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
57700       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
57701       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
57702       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
57703       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
57704       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
57705       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
57706       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
57707       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
57708       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
57709       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
57710       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
57711       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
57712       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
57713       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
57714       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
57718 
57715       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
57716       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
57717       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
57719 
57720       xla_ae_lines_pkg.SetAcctReversalAttrs
57721          (p_event_id             => l_event_id
57722          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
57723          ,p_calculate_acctd_flag => l_calculate_acctd_flag
57724          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
57725    END IF;
57726 
57727    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
57728        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
57729 
57730 --
57731 AcctLineType_37 (
57732  p_application_id  => p_application_id
57733  ,p_event_id     => l_event_id
57734  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57735  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57736  ,p_actual_flag => l_actual_flag
57737  ,p_balance_type_code => l_balance_type_code
57738  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57739  
57740  , p_source_4 => l_array_source_4(Idx)
57741  , p_source_8 => l_array_source_8(Idx)
57742  , p_source_9 => l_array_source_9(Idx)
57743  , p_source_15 => l_array_source_15(Idx)
57744  , p_source_22 => l_array_source_22(Idx)
57745  , p_source_23 => l_array_source_23(Idx)
57746  , p_source_25 => l_array_source_25(Idx)
57747  , p_source_27 => l_array_source_27(Idx)
57748  , p_source_28 => l_array_source_28(Idx)
57749  , p_source_29 => l_array_source_29(Idx)
57750  , p_source_30 => l_array_source_30(Idx)
57751  , p_source_31 => l_array_source_31(Idx)
57752  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57753  , p_source_33 => l_array_source_33(Idx)
57754  , p_source_34 => l_array_source_34(Idx)
57755  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57756  , p_source_35 => l_array_source_35(Idx)
57757  , p_source_41 => l_array_source_41(Idx)
57758  , p_source_43 => l_array_source_43(Idx)
57759  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57760  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57761  );
57762 If(l_balance_type_code = 'A') THEN
57763   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57764 END IF;
57765 
57766 --
57767 
57768 
57769 --
57770 AcctLineType_39 (
57771  p_application_id  => p_application_id
57772  ,p_event_id     => l_event_id
57773  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57774  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57775  ,p_actual_flag => l_actual_flag
57776  ,p_balance_type_code => l_balance_type_code
57777  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57778  
57779  , p_source_4 => l_array_source_4(Idx)
57780  , p_source_8 => l_array_source_8(Idx)
57781  , p_source_9 => l_array_source_9(Idx)
57782  , p_source_15 => l_array_source_15(Idx)
57783  , p_source_22 => l_array_source_22(Idx)
57784  , p_source_23 => l_array_source_23(Idx)
57785  , p_source_25 => l_array_source_25(Idx)
57786  , p_source_27 => l_array_source_27(Idx)
57787  , p_source_28 => l_array_source_28(Idx)
57788  , p_source_29 => l_array_source_29(Idx)
57789  , p_source_30 => l_array_source_30(Idx)
57790  , p_source_31 => l_array_source_31(Idx)
57791  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57792  , p_source_33 => l_array_source_33(Idx)
57793  , p_source_34 => l_array_source_34(Idx)
57794  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57795  , p_source_35 => l_array_source_35(Idx)
57796  , p_source_41 => l_array_source_41(Idx)
57797  , p_source_43 => l_array_source_43(Idx)
57798  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57799  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57800  );
57801 If(l_balance_type_code = 'A') THEN
57802   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57803 END IF;
57804 
57805 --
57806 
57807 
57808 --
57809 AcctLineType_69 (
57810  p_application_id  => p_application_id
57811  ,p_event_id     => l_event_id
57812  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57813  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57814  ,p_actual_flag => l_actual_flag
57815  ,p_balance_type_code => l_balance_type_code
57816  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57817  
57818  , p_source_4 => l_array_source_4(Idx)
57819  , p_source_8 => l_array_source_8(Idx)
57820  , p_source_10 => l_array_source_10(Idx)
57821  , p_source_15 => l_array_source_15(Idx)
57822  , p_source_22 => l_array_source_22(Idx)
57823  , p_source_23 => l_array_source_23(Idx)
57824  , p_source_25 => l_array_source_25(Idx)
57825  , p_source_27 => l_array_source_27(Idx)
57826  , p_source_28 => l_array_source_28(Idx)
57827  , p_source_29 => l_array_source_29(Idx)
57828  , p_source_30 => l_array_source_30(Idx)
57829  , p_source_31 => l_array_source_31(Idx)
57830  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57831  , p_source_33 => l_array_source_33(Idx)
57832  , p_source_34 => l_array_source_34(Idx)
57833  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57834  , p_source_35 => l_array_source_35(Idx)
57835  , p_source_41 => l_array_source_41(Idx)
57836  , p_source_43 => l_array_source_43(Idx)
57837  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57838  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57839  );
57840 If(l_balance_type_code = 'A') THEN
57841   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57842 END IF;
57846 
57843 
57844 --
57845 
57847 --
57848 AcctLineType_71 (
57849  p_application_id  => p_application_id
57850  ,p_event_id     => l_event_id
57851  ,p_calculate_acctd_flag => l_calculate_acctd_flag
57852  ,p_calculate_g_l_flag => l_calculate_g_l_flag
57853  ,p_actual_flag => l_actual_flag
57854  ,p_balance_type_code => l_balance_type_code
57855  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
57856  
57857  , p_source_4 => l_array_source_4(Idx)
57858  , p_source_8 => l_array_source_8(Idx)
57859  , p_source_10 => l_array_source_10(Idx)
57860  , p_source_15 => l_array_source_15(Idx)
57861  , p_source_22 => l_array_source_22(Idx)
57862  , p_source_23 => l_array_source_23(Idx)
57863  , p_source_25 => l_array_source_25(Idx)
57864  , p_source_27 => l_array_source_27(Idx)
57865  , p_source_28 => l_array_source_28(Idx)
57866  , p_source_29 => l_array_source_29(Idx)
57867  , p_source_30 => l_array_source_30(Idx)
57868  , p_source_31 => l_array_source_31(Idx)
57869  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
57870  , p_source_33 => l_array_source_33(Idx)
57871  , p_source_34 => l_array_source_34(Idx)
57872  , p_source_34_meaning => l_array_source_34_meaning(Idx)
57873  , p_source_35 => l_array_source_35(Idx)
57874  , p_source_41 => l_array_source_41(Idx)
57875  , p_source_43 => l_array_source_43(Idx)
57876  , p_source_67 => g_array_event(l_event_id).array_value_char('source_67')
57877  , p_source_67_meaning => g_array_event(l_event_id).array_value_char('source_67_meaning')
57878  );
57879 If(l_balance_type_code = 'A') THEN
57880   l_actual_gain_loss_ref := l_gain_or_loss_ref;
57881 END IF;
57882 
57883 --
57884 
57885       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
57886       -- or secondary ledger that has different currency with primary
57887       -- or alc that is calculated by sla
57888       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
57889             (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'))
57890 
57891 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
57892 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
57893           AND (l_actual_flag = 'A')) THEN
57894         XLA_AE_LINES_PKG.CreateGainOrLossLines(
57895           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
57896          ,p_application_id   => p_application_id
57897          ,p_amb_context_code => 'DEFAULT'
57898          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
57899          ,p_event_class_code => C_EVENT_CLASS_CODE
57900          ,p_event_type_code  => C_EVENT_TYPE_CODE
57901          
57902          ,p_gain_ccid        => -1
57903          ,p_loss_ccid        => -1
57904 
57905          ,p_actual_flag      => l_actual_flag
57906          ,p_enc_flag         => null
57907          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
57908          ,p_enc_g_l_ref      => null
57909          );
57910       END IF;
57911    END IF;
57912 END IF;
57913 
57914    ELSE
57915       --
57916       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
57917       --
57918       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57919          trace
57920             (p_msg      => 'Trancaction revesal option is Y'
57921             ,p_level    => C_LEVEL_STATEMENT
57922             ,p_module   => l_log_module);
57923       END IF;
57924    END IF;
57925 
57926 END LOOP;
57927 l_result := XLA_AE_LINES_PKG.InsertLines ;
57928 end loop;
57929 close line_cur;
57930 
57931 
57932 --
57933 -- insert headers into xla_ae_headers_gt table
57934 --
57935 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
57936 
57937 -- insert into errors table here.
57938 
57939 END LOOP;
57940 
57941 --
57942 -- 4865292
57943 --
57944 -- Compare g_hdr_extract_count with event count in
57945 -- CreateHeadersAndLines.
57946 --
57947 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
57948 
57949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57950    trace (p_msg     => '# rows extracted from header extract objects '
57951                     || ' (running total): '
57952                     || g_hdr_extract_count
57953          ,p_level   => C_LEVEL_STATEMENT
57954          ,p_module  => l_log_module);
57955 END IF;
57956 
57957 CLOSE header_cur;
57958 --
57959 
57960 --
57961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57962    trace
57963       (p_msg      => 'END of EventClass_111'
57964       ,p_level    => C_LEVEL_PROCEDURE
57965       ,p_module   => l_log_module);
57966 END IF;
57967 --
57968 RETURN l_result;
57969 EXCEPTION
57970 WHEN xla_exceptions_pkg.application_exception THEN
57971    
57972 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
57973 
57974    
57975 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
57976 
57977    RAISE;
57978 WHEN OTHERS THEN
57979    xla_exceptions_pkg.raise_message
57980       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_111');
57981 END EventClass_111;
57982 --
57983 
57984 ---------------------------------------
57985 --
57989 ----------------------------------------
57986 -- PRIVATE PROCEDURE
57987 --         insert_sources_112
57988 --
57990 --
57991 PROCEDURE insert_sources_112(
57992                                 p_target_ledger_id       IN NUMBER
57993                               , p_language               IN VARCHAR2
57994                               , p_sla_ledger_id          IN NUMBER
57995                               , p_pad_start_date         IN DATE
57996                               , p_pad_end_date           IN DATE
57997                          )
57998 IS
57999 
58000 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
58001 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BUDGET';
58002 p_apps_owner                   VARCHAR2(30);
58003 l_log_module                   VARCHAR2(240);
58004 BEGIN
58005 IF g_log_enabled THEN
58006       l_log_module := C_DEFAULT_MODULE||'.insert_sources_112';
58007 END IF;
58008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58009 
58010       trace
58011          (p_msg      => 'BEGIN of insert_sources_112'
58012          ,p_level    => C_LEVEL_PROCEDURE
58013          ,p_module   => l_log_module);
58014 
58015 END IF;
58016 
58017 -- select APPS owner
58018 SELECT oracle_username
58019   INTO p_apps_owner
58020   FROM fnd_oracle_userid
58021  WHERE read_only_flag = 'U'
58022 ;
58023 
58024 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58025       trace
58026          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
58027                         ' - p_language = '||p_language||
58028                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
58029                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
58030                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
58031                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
58032          ,p_level    => C_LEVEL_STATEMENT
58033          ,p_module   => l_log_module);
58034 END IF;
58035 
58036 
58037 --
58038 INSERT INTO xla_diag_sources --hdr2
58039 (
58040         event_id
58041       , ledger_id
58042       , sla_ledger_id
58043       , description_language
58044       , object_name
58045       , object_type_code
58046       , line_number
58047       , source_application_id
58048       , source_type_code
58049       , source_code
58050       , source_value
58051       , source_meaning
58052       , created_by
58053       , creation_date
58054       , last_update_date
58055       , last_updated_by
58056       , last_update_login
58057       , program_update_date
58058       , program_application_id
58059       , program_id
58060       , request_id
58061 )
58062 SELECT
58063         event_id
58064       , p_target_ledger_id
58065       , p_sla_ledger_id
58066       , p_language
58067       , object_name
58068       , object_type_code
58069       , line_number
58070       , source_application_id
58071       , source_type_code
58072       , source_code
58073       , SUBSTR(source_value ,1,1996)
58074       , SUBSTR(source_meaning ,1,200)
58075       , xla_environment_pkg.g_Usr_Id
58076       , TRUNC(SYSDATE)
58077       , TRUNC(SYSDATE)
58078       , xla_environment_pkg.g_Usr_Id
58079       , xla_environment_pkg.g_Login_Id
58080       , TRUNC(SYSDATE)
58081       , xla_environment_pkg.g_Prog_Appl_Id
58082       , xla_environment_pkg.g_Prog_Id
58083       , xla_environment_pkg.g_Req_Id
58084   FROM (
58085        SELECT xet.event_id                  event_id
58086             , 0                          line_number
58087             , CASE r
58088                WHEN 1 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
58089                 WHEN 2 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
58090                 
58091                ELSE null
58092               END                           object_name
58093             , CASE r
58094                 WHEN 1 THEN 'HEADER' 
58095                 WHEN 2 THEN 'HEADER' 
58096                 
58097                 ELSE null
58098               END                           object_type_code
58099             , CASE r
58100                 WHEN 1 THEN '275' 
58101                 WHEN 2 THEN '275' 
58102                 
58103                 ELSE null
58104               END                           source_application_id
58105             , 'S'             source_type_code
58106             , CASE r
58107                 WHEN 1 THEN 'GL_DATE' 
58108                 WHEN 2 THEN 'GL_BUDGET_VERSION_ID' 
58109                 
58110                 ELSE null
58111               END                           source_code
58112             , CASE r
58113                 WHEN 1 THEN TO_CHAR(h1.GL_DATE)
58114                 WHEN 2 THEN TO_CHAR(h1.GL_BUDGET_VERSION_ID)
58115                 
58116                 ELSE null
58117               END                           source_value
58118             , null              source_meaning
58119          FROM xla_events_gt     xet  
58120       , PA_XLA_BC_BUDGET_HEADER_V  h1
58121              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
58122          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
58123            AND xet.event_class_code = C_EVENT_CLASS_CODE
58124               AND h1.event_id = xet.event_id
58125 
58126 )
58127 ;
58128 --
58132          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
58129 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58130 
58131       trace
58133          ,p_level    => C_LEVEL_STATEMENT
58134          ,p_module   => l_log_module);
58135 
58136 END IF;
58137 --
58138 
58139 
58140 
58141 --
58142 INSERT INTO xla_diag_sources  --line2
58143 (
58144         event_id
58145       , ledger_id
58146       , sla_ledger_id
58147       , description_language
58148       , object_name
58149       , object_type_code
58150       , line_number
58151       , source_application_id
58152       , source_type_code
58153       , source_code
58154       , source_value
58155       , source_meaning
58156       , created_by
58157       , creation_date
58158       , last_update_date
58159       , last_updated_by
58160       , last_update_login
58161       , program_update_date
58162       , program_application_id
58163       , program_id
58164       , request_id
58165 )
58166 SELECT  event_id
58167       , p_target_ledger_id
58168       , p_sla_ledger_id
58169       , p_language
58170       , object_name
58171       , object_type_code
58172       , line_number
58173       , source_application_id
58174       , source_type_code
58175       , source_code
58176       , SUBSTR(source_value,1,1996)
58177       , SUBSTR(source_meaning ,1,200)
58178       , xla_environment_pkg.g_Usr_Id
58179       , TRUNC(SYSDATE)
58180       , TRUNC(SYSDATE)
58181       , xla_environment_pkg.g_Usr_Id
58182       , xla_environment_pkg.g_Login_Id
58183       , TRUNC(SYSDATE)
58184       , xla_environment_pkg.g_Prog_Appl_Id
58185       , xla_environment_pkg.g_Prog_Id
58186       , xla_environment_pkg.g_Req_Id
58187   FROM (
58188        SELECT xet.event_id                  event_id
58189             , l2.line_number                 line_number
58190             , CASE r
58191                WHEN 1 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58192                 WHEN 2 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58193                 WHEN 3 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58194                 WHEN 4 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58195                 WHEN 5 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58196                 WHEN 6 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58197                 WHEN 7 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58198                 WHEN 8 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58199                 WHEN 9 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58200                 WHEN 10 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
58201                 
58202                ELSE null
58203               END                           object_name
58204             , CASE r
58205                 WHEN 1 THEN 'LINE' 
58206                 WHEN 2 THEN 'LINE' 
58207                 WHEN 3 THEN 'LINE' 
58208                 WHEN 4 THEN 'LINE' 
58209                 WHEN 5 THEN 'LINE' 
58210                 WHEN 6 THEN 'LINE' 
58211                 WHEN 7 THEN 'LINE' 
58212                 WHEN 8 THEN 'LINE' 
58213                 WHEN 9 THEN 'LINE' 
58214                 WHEN 10 THEN 'LINE' 
58215                 
58216                 ELSE null
58217               END                           object_type_code
58218             , CASE r
58219                 WHEN 1 THEN '275' 
58220                 WHEN 2 THEN '275' 
58221                 WHEN 3 THEN '275' 
58222                 WHEN 4 THEN '275' 
58223                 WHEN 5 THEN '275' 
58224                 WHEN 6 THEN '275' 
58225                 WHEN 7 THEN '275' 
58226                 WHEN 8 THEN '275' 
58227                 WHEN 9 THEN '275' 
58228                 WHEN 10 THEN '275' 
58229                 
58230                 ELSE null
58231               END                           source_application_id
58232             , 'S'             source_type_code
58233             , CASE r
58234                 WHEN 1 THEN 'BUDGET_CCID' 
58235                 WHEN 2 THEN 'REVERSING_LINE_FLAG' 
58236                 WHEN 3 THEN 'ENTERED_CURRENCY_CODE' 
58237                 WHEN 4 THEN 'LINE_TYPE' 
58238                 WHEN 5 THEN 'ENTERED_AMOUNT' 
58239                 WHEN 6 THEN 'ACCT_AMOUNT' 
58240                 WHEN 7 THEN 'ENC_UPG_DR_ACCT_CLASS' 
58241                 WHEN 8 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
58242                 WHEN 9 THEN 'BUDGET_LINE_ID' 
58243                 WHEN 10 THEN 'ENC_UPG_ENC_TYPE_ID' 
58244                 
58245                 ELSE null
58246               END                           source_code
58247             , CASE r
58248                 WHEN 1 THEN TO_CHAR(l2.BUDGET_CCID)
58249                 WHEN 2 THEN TO_CHAR(l2.REVERSING_LINE_FLAG)
58250                 WHEN 3 THEN TO_CHAR(l2.ENTERED_CURRENCY_CODE)
58251                 WHEN 4 THEN TO_CHAR(l2.LINE_TYPE)
58252                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
58253                 WHEN 6 THEN TO_CHAR(l2.ACCT_AMOUNT)
58254                 WHEN 7 THEN TO_CHAR(l2.ENC_UPG_DR_ACCT_CLASS)
58255                 WHEN 8 THEN TO_CHAR(l2.USE_ENC_UPG_ATTRIB_FLAG)
58256                 WHEN 9 THEN TO_CHAR(l2.BUDGET_LINE_ID)
58257                 WHEN 10 THEN TO_CHAR(l2.ENC_UPG_ENC_TYPE_ID)
58258                 
58259                 ELSE null
58260               END                           source_value
58261             , CASE r
58262                 WHEN 4 THEN fvl34.meaning
58263                 
58264                 ELSE null
58265               END               source_meaning
58266          FROM  xla_events_gt     xet  
58270         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
58267         , PA_XLA_BC_BUDGET_LINES_V  l2
58268   , fnd_lookup_values    fvl34
58269             , (select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
58271           AND xet.event_class_code = C_EVENT_CLASS_CODE
58272             AND l2.event_id          = xet.event_id
58273    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
58274   AND fvl34.lookup_code(+)         = l2.LINE_TYPE
58275   AND fvl34.view_application_id(+) = 275
58276   AND fvl34.language(+)            = USERENV('LANG')
58277   
58278 )
58279 ;
58280 --
58281 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58282 
58283       trace
58284          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
58285          ,p_level    => C_LEVEL_STATEMENT
58286          ,p_module   => l_log_module);
58287 
58288 END IF;
58289 
58290 
58291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58292       trace
58293          (p_msg      => 'END of insert_sources_112'
58294          ,p_level    => C_LEVEL_PROCEDURE
58295          ,p_module   => l_log_module);
58296 END IF;
58297 EXCEPTION
58298   WHEN xla_exceptions_pkg.application_exception THEN
58299       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
58300             trace
58301                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
58302                ,p_level    => C_LEVEL_EXCEPTION
58303                ,p_module   => l_log_module);
58304       END IF;
58305       RAISE;
58306   WHEN OTHERS THEN
58307       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
58308             trace
58309                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
58310                ,p_level    => C_LEVEL_EXCEPTION
58311                ,p_module   => l_log_module);
58312        END IF;
58313        xla_exceptions_pkg.raise_message
58314            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_112');
58315 END insert_sources_112;
58316 --
58317 
58318 ---------------------------------------
58319 --
58320 -- PRIVATE FUNCTION
58321 --         EventClass_112
58322 --
58323 ----------------------------------------
58324 --
58325 FUNCTION EventClass_112
58326        (p_application_id         IN NUMBER
58327        ,p_base_ledger_id         IN NUMBER
58328        ,p_target_ledger_id       IN NUMBER
58329        ,p_language               IN VARCHAR2
58330        ,p_currency_code          IN VARCHAR2
58331        ,p_sla_ledger_id          IN NUMBER
58332        ,p_pad_start_date         IN DATE
58333        ,p_pad_end_date           IN DATE
58334        ,p_primary_ledger_id      IN NUMBER)
58335 RETURN BOOLEAN IS
58336 --
58337 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
58338 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BUDGET';
58339 
58340 l_calculate_acctd_flag   VARCHAR2(1) :='N';
58341 l_calculate_g_l_flag     VARCHAR2(1) :='N';
58342 --
58343 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58344 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58345 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58346 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58347 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58348 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58349 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58350 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58351 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58352 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58353 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58354 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58355 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58356 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58357 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58358 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58359 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58360 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58361 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58362 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58363 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58364 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58365 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
58366 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58367 
58368 l_event_id                             NUMBER;
58369 l_previous_event_id                    NUMBER;
58370 l_first_event_id                       NUMBER;
58371 l_last_event_id                        NUMBER;
58372 
58373 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
58374 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
58375 --
58376 --
58377 l_result                    BOOLEAN := TRUE;
58378 l_rows                      NUMBER  := 1000;
58379 l_event_type_name           VARCHAR2(80) := 'All';
58380 l_event_class_name          VARCHAR2(80) := 'Budget';
58381 l_description               VARCHAR2(4000);
58385 l_log_module                VARCHAR2(240);
58382 l_transaction_reversal      NUMBER;
58383 l_ae_header_id              NUMBER;
58384 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
58386 --
58387 l_acct_reversal_source      VARCHAR2(30);
58388 l_trx_reversal_source       VARCHAR2(30);
58389 
58390 l_continue_with_lines       BOOLEAN := TRUE;
58391 --
58392 l_acc_rev_gl_date_source    DATE;                      -- 4262811
58393 --
58394 type t_array_event_id is table of number index by binary_integer;
58395 
58396 l_rec_array_event                    t_rec_array_event;
58397 l_null_rec_array_event               t_rec_array_event;
58398 l_array_ae_header_id                 xla_number_array_type;
58399 l_actual_flag                        VARCHAR2(1) := NULL;
58400 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
58401 l_balance_type_code                  VARCHAR2(1) :=NULL;
58402 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
58403 
58404 --
58405 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
58406 --
58407 
58408 TYPE t_array_source_87 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
58409 TYPE t_array_source_88 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_BUDGET_VERSION_ID%TYPE INDEX BY BINARY_INTEGER;
58410 
58411 TYPE t_array_source_2 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
58412 TYPE t_array_source_22 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
58413 TYPE t_array_source_25 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
58414 TYPE t_array_source_34 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
58415 TYPE t_array_source_41 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
58416 TYPE t_array_source_43 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
58417 TYPE t_array_source_53 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
58418 TYPE t_array_source_55 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
58419 TYPE t_array_source_89 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
58420 TYPE t_array_source_90 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
58421 
58422 l_array_source_87              t_array_source_87;
58423 l_array_source_88              t_array_source_88;
58424 
58425 l_array_source_2      t_array_source_2;
58426 l_array_source_22      t_array_source_22;
58427 l_array_source_25      t_array_source_25;
58428 l_array_source_34      t_array_source_34;
58429 l_array_source_34_meaning      t_array_lookup_meaning;
58430 l_array_source_41      t_array_source_41;
58431 l_array_source_43      t_array_source_43;
58432 l_array_source_53      t_array_source_53;
58433 l_array_source_55      t_array_source_55;
58434 l_array_source_89      t_array_source_89;
58435 l_array_source_90      t_array_source_90;
58436 
58437 --
58438 CURSOR header_cur
58439 IS
58440 SELECT /*+ leading(xet) cardinality(xet,1) */
58441 -- Event Class Code: BUDGET
58442     xet.entity_id
58443    ,xet.legal_entity_id
58444    ,xet.entity_code
58445    ,xet.transaction_number
58446    ,xet.event_id
58447    ,xet.event_class_code
58448    ,xet.event_type_code
58449    ,xet.event_number
58450    ,xet.event_date
58451    ,xet.transaction_date
58452    ,xet.reference_num_1
58453    ,xet.reference_num_2
58454    ,xet.reference_num_3
58455    ,xet.reference_num_4
58456    ,xet.reference_char_1
58457    ,xet.reference_char_2
58458    ,xet.reference_char_3
58459    ,xet.reference_char_4
58460    ,xet.reference_date_1
58461    ,xet.reference_date_2
58462    ,xet.reference_date_3
58463    ,xet.reference_date_4
58464    ,xet.event_created_by
58465    ,xet.budgetary_control_flag 
58466   , h1.GL_DATE    source_87
58467   , h1.GL_BUDGET_VERSION_ID    source_88
58468   FROM xla_events_gt     xet 
58469   , PA_XLA_BC_BUDGET_HEADER_V  h1
58470  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
58471    and xet.event_class_code = C_EVENT_CLASS_CODE
58472    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
58473 
58474  ORDER BY event_id
58475 ;
58476 
58477 
58478 --
58479 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
58480 IS
58481 SELECT  /*+ leading(xet) cardinality(xet,1) */
58482 -- Event Class Code: BUDGET
58483     xet.entity_id
58484    ,xet.legal_entity_id
58485    ,xet.entity_code
58486    ,xet.transaction_number
58487    ,xet.event_id
58488    ,xet.event_class_code
58489    ,xet.event_type_code
58490    ,xet.event_number
58491    ,xet.event_date
58492    ,xet.transaction_date
58493    ,xet.reference_num_1
58494    ,xet.reference_num_2
58495    ,xet.reference_num_3
58496    ,xet.reference_num_4
58497    ,xet.reference_char_1
58498    ,xet.reference_char_2
58499    ,xet.reference_char_3
58500    ,xet.reference_char_4
58501    ,xet.reference_date_1
58502    ,xet.reference_date_2
58503    ,xet.reference_date_3
58504    ,xet.reference_date_4
58505    ,xet.event_created_by
58506    ,xet.budgetary_control_flag
58507  , l2.LINE_NUMBER  
58508   , l2.BUDGET_CCID    source_2
58509   , l2.REVERSING_LINE_FLAG    source_22
58510   , l2.ENTERED_CURRENCY_CODE    source_25
58511   , l2.LINE_TYPE    source_34
58515   , l2.ENC_UPG_DR_ACCT_CLASS    source_53
58512   , fvl34.meaning   source_34_meaning
58513   , l2.ENTERED_AMOUNT    source_41
58514   , l2.ACCT_AMOUNT    source_43
58516   , l2.USE_ENC_UPG_ATTRIB_FLAG    source_55
58517   , l2.BUDGET_LINE_ID    source_89
58518   , l2.ENC_UPG_ENC_TYPE_ID    source_90
58519   FROM xla_events_gt     xet 
58520   , PA_XLA_BC_BUDGET_LINES_V  l2
58521   , fnd_lookup_values    fvl34
58522  WHERE xet.event_id between x_first_event_id and x_last_event_id
58523    and xet.event_date between p_pad_start_date and p_pad_end_date
58524    and xet.event_class_code = C_EVENT_CLASS_CODE
58525    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
58526    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
58527   AND fvl34.lookup_code(+)         = l2.LINE_TYPE
58528   AND fvl34.view_application_id(+) = 275
58529   AND fvl34.language(+)            = USERENV('LANG')
58530   ;
58531 
58532 --
58533 BEGIN
58534 IF g_log_enabled THEN
58535    l_log_module := C_DEFAULT_MODULE||'.EventClass_112';
58536 END IF;
58537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58538    trace
58539       (p_msg      => 'BEGIN of EventClass_112'
58540       ,p_level    => C_LEVEL_PROCEDURE
58541       ,p_module   => l_log_module);
58542 END IF;
58543 
58544 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58545    trace
58546       (p_msg      => 'p_application_id = '||p_application_id||
58547                      ' - p_base_ledger_id = '||p_base_ledger_id||
58548                      ' - p_target_ledger_id  = '||p_target_ledger_id||
58549                      ' - p_language = '||p_language||
58550                      ' - p_currency_code = '||p_currency_code||
58551                      ' - p_sla_ledger_id = '||p_sla_ledger_id
58552       ,p_level    => C_LEVEL_STATEMENT
58553       ,p_module   => l_log_module);
58554 END IF;
58555 --
58556 -- initialze arrays
58557 --
58558 g_array_event.DELETE;
58559 l_rec_array_event := l_null_rec_array_event;
58560 --
58561 --------------------------------------
58562 -- 4262811 Initialze MPA Line Number
58563 --------------------------------------
58564 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
58565 
58566 --
58567 
58568 --
58569 OPEN header_cur;
58570 --
58571 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58572    trace
58573    (p_msg      => 'SQL - FETCH header_cur'
58574    ,p_level    => C_LEVEL_STATEMENT
58575    ,p_module   => l_log_module);
58576 END IF;
58577 --
58578 LOOP
58579 FETCH header_cur BULK COLLECT INTO
58580         l_array_entity_id
58581       , l_array_legal_entity_id
58582       , l_array_entity_code
58583       , l_array_transaction_num
58584       , l_array_event_id
58585       , l_array_class_code
58586       , l_array_event_type
58587       , l_array_event_number
58588       , l_array_event_date
58589       , l_array_transaction_date
58590       , l_array_reference_num_1
58591       , l_array_reference_num_2
58592       , l_array_reference_num_3
58593       , l_array_reference_num_4
58594       , l_array_reference_char_1
58595       , l_array_reference_char_2
58596       , l_array_reference_char_3
58597       , l_array_reference_char_4
58598       , l_array_reference_date_1
58599       , l_array_reference_date_2
58600       , l_array_reference_date_3
58601       , l_array_reference_date_4
58602       , l_array_event_created_by
58603       , l_array_budgetary_control_flag 
58604       , l_array_source_87
58605       , l_array_source_88
58606       LIMIT l_rows;
58607 --
58608 IF (C_LEVEL_EVENT >= g_log_level) THEN
58609    trace
58610    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
58611    ,p_level    => C_LEVEL_EVENT
58612    ,p_module   => l_log_module);
58613 END IF;
58614 --
58615 EXIT WHEN l_array_entity_id.COUNT = 0;
58616 
58617 -- initialize arrays
58618 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
58619 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
58620 
58621 --
58622 -- Bug 4458708
58623 --
58624 XLA_AE_LINES_PKG.g_LineNumber := 0;
58625 
58626 
58627 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
58628 g_last_hdr_idx := l_array_event_id.LAST;
58629 --
58630 -- loop for the headers. Each iteration is for each header extract row
58631 -- fetched in header cursor
58632 --
58633 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
58634 
58635 --
58636 -- set event info as cache for other routines to refer event attributes
58637 --
58638 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
58639    (p_application_id           => p_application_id
58640    ,p_primary_ledger_id        => p_primary_ledger_id
58641    ,p_base_ledger_id           => p_base_ledger_id
58642    ,p_target_ledger_id         => p_target_ledger_id
58643    ,p_entity_id                => l_array_entity_id(hdr_idx)
58644    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
58645    ,p_entity_code              => l_array_entity_code(hdr_idx)
58646    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
58647    ,p_event_id                 => l_array_event_id(hdr_idx)
58648    ,p_event_class_code         => l_array_class_code(hdr_idx)
58649    ,p_event_type_code          => l_array_event_type(hdr_idx)
58653    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
58650    ,p_event_number             => l_array_event_number(hdr_idx)
58651    ,p_event_date               => l_array_event_date(hdr_idx)
58652    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
58654    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
58655    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
58656    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
58657    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
58658    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
58659    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
58660    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
58661    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
58662    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
58663    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
58664    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
58665    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
58666    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
58667 
58668 --
58669 -- set the status of entry to C_VALID (0)
58670 --
58671 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
58672 
58673 --
58674 -- initialize a row for ae header
58675 --
58676 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
58677 
58678 l_event_id := l_array_event_id(hdr_idx);
58679 
58680 --
58681 -- storing the hdr_idx for event. May be used by line cursor.
58682 --
58683 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
58684 
58685 --
58686 -- store sources from header extract. This can be improved to
58687 -- store only those sources from header extract that may be used in lines
58688 --
58689 
58690 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
58691 g_array_event(l_event_id).array_value_num('source_88') := l_array_source_88(hdr_idx);
58692 
58693 --
58694 -- initilaize the status of ae headers for diffrent balance types
58695 -- the status is initialised to C_NOT_CREATED (2)
58696 --
58697 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
58698 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
58699 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
58700 
58701 --
58702 -- call api to validate and store accounting attributes for header
58703 --
58704 
58705 ------------------------------------------------------------
58706 -- Accrual Reversal : to get date for Standard Source (NONE)
58707 ------------------------------------------------------------
58708 l_acc_rev_gl_date_source := NULL;
58709 
58710      l_rec_acct_attrs.array_acct_attr_code(1)   := 'BUDGET_VERSION_ID';
58711       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_88');
58712      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
58713       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_87');
58714 
58715 
58716 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
58717 
58718 XLA_AE_HEADER_PKG.SetJeCategoryName;
58719 
58720 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
58721 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
58722 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
58723 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
58724 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
58725 
58726 
58727 -- No header level analytical criteria
58728 
58729 --
58730 --accounting attribute enhancement, bug 3612931
58731 --
58732 l_trx_reversal_source := SUBSTR(NULL, 1,30);
58733 
58734 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
58735    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
58736 
58737    xla_accounting_err_pkg.build_message
58738       (p_appli_s_name            => 'XLA'
58739       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
58740       ,p_token_1                 => 'ACCT_ATTR_NAME'
58741       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
58742       ,p_token_2                 => 'PRODUCT_NAME'
58743       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
58744       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
58745       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
58746       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
58747 
58748 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
58749    --
58750    -- following sets the accounting attributes needed to reverse
58751    -- accounting for a distributeion
58752    --
58753    xla_ae_lines_pkg.SetTrxReversalAttrs
58754       (p_event_id              => l_event_id
58755       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
58756       ,p_trx_reversal_source   => l_trx_reversal_source);
58757 
58758 END IF;
58759 
58760 
58764 --
58761 ----------------------------------------------------------------
58762 -- 4262811 -  update the header statuses to invalid in need be
58763 ----------------------------------------------------------------
58765 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
58766 
58767 
58768   -----------------------------------------------
58769   -- No accrual reversal for the event class/type
58770   -----------------------------------------------
58771 ----------------------------------------------------------------
58772 
58773 --
58774 -- this ends the header loop iteration for one bulk fetch
58775 --
58776 END LOOP;
58777 
58778 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
58779 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
58780 
58781 --
58782 -- insert dummy rows into lines gt table that were created due to
58783 -- transaction reversals
58784 --
58785 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
58786    l_result := XLA_AE_LINES_PKG.InsertLines;
58787 END IF;
58788 
58789 --
58790 -- reset the temp_line_num for each set of events fetched from header
58791 -- cursor rather than doing it for each new event in line cursor
58792 -- Bug 3939231
58793 --
58794 xla_ae_lines_pkg.g_temp_line_num := 0;
58795 
58796 
58797 
58798 --
58799 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
58800 --
58801 --
58802 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58803 
58804       trace
58805          (p_msg      => 'SQL - FETCH line_cur'
58806          ,p_level    => C_LEVEL_STATEMENT
58807          ,p_module   => l_log_module);
58808 
58809 END IF;
58810 --
58811 --
58812 LOOP
58813   --
58814   FETCH line_cur BULK COLLECT INTO
58815         l_array_entity_id
58816       , l_array_legal_entity_id
58817       , l_array_entity_code
58818       , l_array_transaction_num
58819       , l_array_event_id
58820       , l_array_class_code
58821       , l_array_event_type
58822       , l_array_event_number
58823       , l_array_event_date
58824       , l_array_transaction_date
58825       , l_array_reference_num_1
58826       , l_array_reference_num_2
58827       , l_array_reference_num_3
58828       , l_array_reference_num_4
58829       , l_array_reference_char_1
58830       , l_array_reference_char_2
58831       , l_array_reference_char_3
58832       , l_array_reference_char_4
58833       , l_array_reference_date_1
58834       , l_array_reference_date_2
58835       , l_array_reference_date_3
58836       , l_array_reference_date_4
58837       , l_array_event_created_by
58838       , l_array_budgetary_control_flag
58839       , l_array_extract_line_num 
58840       , l_array_source_2
58841       , l_array_source_22
58842       , l_array_source_25
58843       , l_array_source_34
58844       , l_array_source_34_meaning
58845       , l_array_source_41
58846       , l_array_source_43
58847       , l_array_source_53
58848       , l_array_source_55
58849       , l_array_source_89
58850       , l_array_source_90
58851       LIMIT l_rows;
58852 
58853   --
58854   IF (C_LEVEL_EVENT >= g_log_level) THEN
58855             trace
58856                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
58857                ,p_level    => C_LEVEL_EVENT
58858                ,p_module   => l_log_module);
58859   END IF;
58860   --
58861   EXIT WHEN l_array_entity_id.count = 0;
58862 
58863   XLA_AE_LINES_PKG.g_rec_lines := null;
58864 
58865 --
58866 -- Bug 4458708
58867 --
58868 XLA_AE_LINES_PKG.g_LineNumber := 0;
58869 --
58870 --
58871 
58872 FOR Idx IN 1..l_array_event_id.count LOOP
58873    --
58874    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
58875    --
58876    l_event_id := l_array_event_id(idx);  -- 5648433
58877 
58878    --
58879    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
58880    --
58881 
58882    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
58883              (g_array_event(l_event_id).array_value_num('header_index'))
58884          ,'N'
58885          ) <> 'Y'
58886    THEN
58887       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58888          trace
58889             (p_msg      => 'Trancaction revesal option is not Y '
58890             ,p_level    => C_LEVEL_STATEMENT
58891             ,p_module   => l_log_module);
58892       END IF;
58893 
58894 --
58895 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
58896 --
58897 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
58898 --
58899 -- set event info as cache for other routines to refer event attributes
58900 --
58901 
58902 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
58903    l_previous_event_id := l_event_id;
58904 
58905    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
58906       (p_application_id           => p_application_id
58907       ,p_primary_ledger_id        => p_primary_ledger_id
58908       ,p_base_ledger_id           => p_base_ledger_id
58909       ,p_target_ledger_id         => p_target_ledger_id
58910       ,p_entity_id                => l_array_entity_id(Idx)
58911       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
58915       ,p_event_class_code         => l_array_class_code(Idx)
58912       ,p_entity_code              => l_array_entity_code(Idx)
58913       ,p_transaction_num          => l_array_transaction_num(Idx)
58914       ,p_event_id                 => l_array_event_id(Idx)
58916       ,p_event_type_code          => l_array_event_type(Idx)
58917       ,p_event_number             => l_array_event_number(Idx)
58918       ,p_event_date               => l_array_event_date(Idx)
58919       ,p_transaction_date         => l_array_transaction_date(Idx)
58920       ,p_reference_num_1          => l_array_reference_num_1(Idx)
58921       ,p_reference_num_2          => l_array_reference_num_2(Idx)
58922       ,p_reference_num_3          => l_array_reference_num_3(Idx)
58923       ,p_reference_num_4          => l_array_reference_num_4(Idx)
58924       ,p_reference_char_1         => l_array_reference_char_1(Idx)
58925       ,p_reference_char_2         => l_array_reference_char_2(Idx)
58926       ,p_reference_char_3         => l_array_reference_char_3(Idx)
58927       ,p_reference_char_4         => l_array_reference_char_4(Idx)
58928       ,p_reference_date_1         => l_array_reference_date_1(Idx)
58929       ,p_reference_date_2         => l_array_reference_date_2(Idx)
58930       ,p_reference_date_3         => l_array_reference_date_3(Idx)
58931       ,p_reference_date_4         => l_array_reference_date_4(Idx)
58932       ,p_event_created_by         => l_array_event_created_by(Idx)
58933       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
58934        --
58935 END IF;
58936 
58937 
58938 
58939 --
58940 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
58941 
58942 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
58943 
58944 IF l_continue_with_lines THEN
58945    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
58946       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
58947 
58948       xla_accounting_err_pkg.build_message
58949          (p_appli_s_name            => 'XLA'
58950          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
58951          ,p_token_1                 => 'LINE_NUMBER'
58952          ,p_value_1                 => l_array_extract_line_num(Idx)
58953          ,p_token_2                 => 'PRODUCT_NAME'
58954          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
58955          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
58956          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
58957          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
58958 
58959    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
58960       --
58961       -- following sets the accounting attributes needed to reverse
58962       -- accounting for a distributeion
58963       --
58964 
58965       --
58966       -- 5217187
58967       --
58968       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
58969       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
58970                                        g_array_event(l_event_id).array_value_num('header_index'));
58971       --
58972       --
58973 
58974       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
58975       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
58976       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
58977       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_89(Idx);
58978       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
58979       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_34(Idx);
58980       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_ACCT_CLASS';
58981       l_rec_rev_acct_attrs.array_char_value(5)  := l_array_source_53(Idx);
58982       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_CCID';
58983       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_2(Idx);
58984       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_AMT';
58985       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_41(Idx);
58986       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_ENTERED_CURR';
58987       l_rec_rev_acct_attrs.array_char_value(8)  := l_array_source_25(Idx);
58988       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_LEDGER_AMT';
58989       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_43(Idx);
58990       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_OPTION';
58991       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_55(Idx);
58992       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID1';
58993       l_rec_rev_acct_attrs.array_num_value(11)  := l_array_source_89(Idx);
58994       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
58995       l_rec_rev_acct_attrs.array_char_value(12)  := l_array_source_34(Idx);
58996       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'UPG_DR_ENC_TYPE_ID';
58997       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_90(Idx);
58998 
58999 
59000       xla_ae_lines_pkg.SetAcctReversalAttrs
59001          (p_event_id             => l_event_id
59002          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
59003          ,p_calculate_acctd_flag => l_calculate_acctd_flag
59004          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
59005    END IF;
59006 
59007    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
59008        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
59012       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
59009       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
59010       -- or secondary ledger that has different currency with primary
59011       -- or alc that is calculated by sla
59013             (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'))
59014 
59015 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
59016 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
59017           AND (l_actual_flag = 'A')) THEN
59018         XLA_AE_LINES_PKG.CreateGainOrLossLines(
59019           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
59020          ,p_application_id   => p_application_id
59021          ,p_amb_context_code => 'DEFAULT'
59022          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
59023          ,p_event_class_code => C_EVENT_CLASS_CODE
59024          ,p_event_type_code  => C_EVENT_TYPE_CODE
59025          
59026          ,p_gain_ccid        => -1
59027          ,p_loss_ccid        => -1
59028 
59029          ,p_actual_flag      => l_actual_flag
59030          ,p_enc_flag         => null
59031          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
59032          ,p_enc_g_l_ref      => null
59033          );
59034       END IF;
59035    END IF;
59036 END IF;
59037 
59038    ELSE
59039       --
59040       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
59041       --
59042       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59043          trace
59044             (p_msg      => 'Trancaction revesal option is Y'
59045             ,p_level    => C_LEVEL_STATEMENT
59046             ,p_module   => l_log_module);
59047       END IF;
59048    END IF;
59049 
59050 END LOOP;
59051 l_result := XLA_AE_LINES_PKG.InsertLines ;
59052 end loop;
59053 close line_cur;
59054 
59055 
59056 --
59057 -- insert headers into xla_ae_headers_gt table
59058 --
59059 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
59060 
59061 -- insert into errors table here.
59062 
59063 END LOOP;
59064 
59065 --
59066 -- 4865292
59067 --
59068 -- Compare g_hdr_extract_count with event count in
59069 -- CreateHeadersAndLines.
59070 --
59071 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
59072 
59073 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59074    trace (p_msg     => '# rows extracted from header extract objects '
59075                     || ' (running total): '
59076                     || g_hdr_extract_count
59077          ,p_level   => C_LEVEL_STATEMENT
59078          ,p_module  => l_log_module);
59079 END IF;
59080 
59081 CLOSE header_cur;
59082 --
59083 
59084 --
59085 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59086    trace
59087       (p_msg      => 'END of EventClass_112'
59088       ,p_level    => C_LEVEL_PROCEDURE
59089       ,p_module   => l_log_module);
59090 END IF;
59091 --
59092 RETURN l_result;
59093 EXCEPTION
59094 WHEN xla_exceptions_pkg.application_exception THEN
59095    
59096 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
59097 
59098    
59099 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
59100 
59101    RAISE;
59102 WHEN OTHERS THEN
59103    xla_exceptions_pkg.raise_message
59104       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_112');
59105 END EventClass_112;
59106 --
59107 
59108 ---------------------------------------
59109 --
59110 -- PRIVATE PROCEDURE
59111 --         insert_sources_113
59112 --
59113 ----------------------------------------
59114 --
59115 PROCEDURE insert_sources_113(
59116                                 p_target_ledger_id       IN NUMBER
59117                               , p_language               IN VARCHAR2
59118                               , p_sla_ledger_id          IN NUMBER
59119                               , p_pad_start_date         IN DATE
59120                               , p_pad_end_date           IN DATE
59121                          )
59122 IS
59123 
59124 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ADJ_ALL';
59125 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BURDEN_COST_ADJ';
59126 p_apps_owner                   VARCHAR2(30);
59127 l_log_module                   VARCHAR2(240);
59128 BEGIN
59129 IF g_log_enabled THEN
59130       l_log_module := C_DEFAULT_MODULE||'.insert_sources_113';
59131 END IF;
59132 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59133 
59134       trace
59135          (p_msg      => 'BEGIN of insert_sources_113'
59136          ,p_level    => C_LEVEL_PROCEDURE
59137          ,p_module   => l_log_module);
59138 
59139 END IF;
59140 
59141 -- select APPS owner
59142 SELECT oracle_username
59143   INTO p_apps_owner
59144   FROM fnd_oracle_userid
59145  WHERE read_only_flag = 'U'
59146 ;
59147 
59148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59149       trace
59150          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
59151                         ' - p_language = '||p_language||
59152                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
59156          ,p_level    => C_LEVEL_STATEMENT
59153                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
59154                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
59155                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
59157          ,p_module   => l_log_module);
59158 END IF;
59159 
59160 
59161 --
59162 INSERT INTO xla_diag_sources --hdr2
59163 (
59164         event_id
59165       , ledger_id
59166       , sla_ledger_id
59167       , description_language
59168       , object_name
59169       , object_type_code
59170       , line_number
59171       , source_application_id
59172       , source_type_code
59173       , source_code
59174       , source_value
59175       , source_meaning
59176       , created_by
59177       , creation_date
59178       , last_update_date
59179       , last_updated_by
59180       , last_update_login
59181       , program_update_date
59182       , program_application_id
59183       , program_id
59184       , request_id
59185 )
59186 SELECT
59187         event_id
59188       , p_target_ledger_id
59189       , p_sla_ledger_id
59190       , p_language
59191       , object_name
59192       , object_type_code
59193       , line_number
59194       , source_application_id
59195       , source_type_code
59196       , source_code
59197       , SUBSTR(source_value ,1,1996)
59198       , SUBSTR(source_meaning ,1,200)
59199       , xla_environment_pkg.g_Usr_Id
59200       , TRUNC(SYSDATE)
59201       , TRUNC(SYSDATE)
59202       , xla_environment_pkg.g_Usr_Id
59203       , xla_environment_pkg.g_Login_Id
59204       , TRUNC(SYSDATE)
59205       , xla_environment_pkg.g_Prog_Appl_Id
59206       , xla_environment_pkg.g_Prog_Id
59207       , xla_environment_pkg.g_Req_Id
59208   FROM (
59209        SELECT xet.event_id                  event_id
59210             , 0                          line_number
59211             , CASE r
59212                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
59213                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
59214                 
59215                ELSE null
59216               END                           object_name
59217             , CASE r
59218                 WHEN 1 THEN 'HEADER' 
59219                 WHEN 2 THEN 'HEADER' 
59220                 
59221                 ELSE null
59222               END                           object_type_code
59223             , CASE r
59224                 WHEN 1 THEN '275' 
59225                 WHEN 2 THEN '275' 
59226                 
59227                 ELSE null
59228               END                           source_application_id
59229             , 'S'             source_type_code
59230             , CASE r
59231                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
59232                 WHEN 2 THEN 'GL_DATE' 
59233                 
59234                 ELSE null
59235               END                           source_code
59236             , CASE r
59237                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
59238                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
59239                 
59240                 ELSE null
59241               END                           source_value
59242             , null              source_meaning
59243          FROM xla_events_gt     xet  
59244       , PA_XLA_EXP_HEADER_V  h2
59245              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
59246          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
59247            AND xet.event_class_code = C_EVENT_CLASS_CODE
59248               AND h2.event_id = xet.event_id
59249 
59250 )
59251 ;
59252 --
59253 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59254 
59255       trace
59256          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
59257          ,p_level    => C_LEVEL_STATEMENT
59258          ,p_module   => l_log_module);
59259 
59260 END IF;
59261 --
59262 
59263 
59264 
59265 --
59266 INSERT INTO xla_diag_sources  --line2
59267 (
59268         event_id
59269       , ledger_id
59270       , sla_ledger_id
59271       , description_language
59272       , object_name
59273       , object_type_code
59274       , line_number
59275       , source_application_id
59276       , source_type_code
59277       , source_code
59278       , source_value
59279       , source_meaning
59280       , created_by
59281       , creation_date
59282       , last_update_date
59283       , last_updated_by
59284       , last_update_login
59285       , program_update_date
59286       , program_application_id
59287       , program_id
59288       , request_id
59289 )
59290 SELECT  event_id
59291       , p_target_ledger_id
59292       , p_sla_ledger_id
59293       , p_language
59294       , object_name
59295       , object_type_code
59296       , line_number
59297       , source_application_id
59298       , source_type_code
59299       , source_code
59300       , SUBSTR(source_value,1,1996)
59301       , SUBSTR(source_meaning ,1,200)
59302       , xla_environment_pkg.g_Usr_Id
59303       , TRUNC(SYSDATE)
59304       , TRUNC(SYSDATE)
59305       , xla_environment_pkg.g_Usr_Id
59309       , xla_environment_pkg.g_Prog_Id
59306       , xla_environment_pkg.g_Login_Id
59307       , TRUNC(SYSDATE)
59308       , xla_environment_pkg.g_Prog_Appl_Id
59310       , xla_environment_pkg.g_Req_Id
59311   FROM (
59312        SELECT xet.event_id                  event_id
59313             , l1.line_number                 line_number
59314             , CASE r
59315                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
59316                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
59317                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
59318                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
59319                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
59320                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
59321                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
59322                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
59323                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
59324                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
59325                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
59326                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
59327                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
59328                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
59329                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
59330                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
59331                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
59332                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
59333                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
59334                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
59335                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
59336                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
59337                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
59338                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
59339                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
59340                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
59341                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
59342                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
59343                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
59344                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
59345                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
59346                 
59347                ELSE null
59348               END                           object_name
59349             , CASE r
59350                 WHEN 1 THEN 'LINE' 
59351                 WHEN 2 THEN 'LINE' 
59352                 WHEN 3 THEN 'LINE' 
59353                 WHEN 4 THEN 'LINE' 
59354                 WHEN 5 THEN 'LINE' 
59355                 WHEN 6 THEN 'LINE' 
59356                 WHEN 7 THEN 'LINE' 
59357                 WHEN 8 THEN 'LINE' 
59358                 WHEN 9 THEN 'LINE' 
59359                 WHEN 10 THEN 'LINE' 
59360                 WHEN 11 THEN 'LINE' 
59361                 WHEN 12 THEN 'LINE' 
59362                 WHEN 13 THEN 'LINE' 
59363                 WHEN 14 THEN 'LINE' 
59364                 WHEN 15 THEN 'LINE' 
59365                 WHEN 16 THEN 'LINE' 
59366                 WHEN 17 THEN 'LINE' 
59367                 WHEN 18 THEN 'LINE' 
59368                 WHEN 19 THEN 'LINE' 
59369                 WHEN 20 THEN 'LINE' 
59370                 WHEN 21 THEN 'LINE' 
59371                 WHEN 22 THEN 'LINE' 
59372                 WHEN 23 THEN 'LINE' 
59373                 WHEN 24 THEN 'LINE' 
59374                 WHEN 25 THEN 'LINE' 
59375                 WHEN 26 THEN 'LINE' 
59376                 WHEN 27 THEN 'LINE' 
59377                 WHEN 28 THEN 'LINE' 
59378                 WHEN 29 THEN 'LINE' 
59379                 WHEN 30 THEN 'LINE' 
59380                 WHEN 31 THEN 'LINE' 
59381                 
59382                 ELSE null
59383               END                           object_type_code
59384             , CASE r
59385                 WHEN 1 THEN '275' 
59386                 WHEN 2 THEN '275' 
59387                 WHEN 3 THEN '275' 
59388                 WHEN 4 THEN '275' 
59389                 WHEN 5 THEN '275' 
59390                 WHEN 6 THEN '275' 
59391                 WHEN 7 THEN '275' 
59392                 WHEN 8 THEN '275' 
59393                 WHEN 9 THEN '275' 
59394                 WHEN 10 THEN '275' 
59395                 WHEN 11 THEN '275' 
59396                 WHEN 12 THEN '275' 
59397                 WHEN 13 THEN '275' 
59398                 WHEN 14 THEN '275' 
59399                 WHEN 15 THEN '275' 
59400                 WHEN 16 THEN '275' 
59401                 WHEN 17 THEN '275' 
59402                 WHEN 18 THEN '275' 
59403                 WHEN 19 THEN '275' 
59404                 WHEN 20 THEN '275' 
59405                 WHEN 21 THEN '275' 
59406                 WHEN 22 THEN '275' 
59407                 WHEN 23 THEN '275' 
59408                 WHEN 24 THEN '275' 
59409                 WHEN 25 THEN '275' 
59410                 WHEN 26 THEN '275' 
59411                 WHEN 27 THEN '275' 
59412                 WHEN 28 THEN '275' 
59413                 WHEN 29 THEN '275' 
59414                 WHEN 30 THEN '275' 
59415                 WHEN 31 THEN '275' 
59416                 
59417                 ELSE null
59418               END                           source_application_id
59419             , 'S'             source_type_code
59420             , CASE r
59421                 WHEN 1 THEN 'BUDGET_CCID' 
59422                 WHEN 2 THEN 'COST_CCID' 
59423                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
59424                 WHEN 4 THEN 'ADJ_COST_CCID' 
59425                 WHEN 5 THEN 'COST_CLEARING_CCID' 
59426                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
59430                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
59427                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
59428                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
59429                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
59431                 WHEN 11 THEN 'EXCHANGE_RATE' 
59432                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
59433                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
59434                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
59435                 WHEN 15 THEN 'LINE_NUMBER' 
59436                 WHEN 16 THEN 'LINE_TYPE' 
59437                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
59438                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
59439                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
59440                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
59441                 WHEN 21 THEN 'PA_APPLICATION_ID' 
59442                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
59443                 WHEN 23 THEN 'PA_ENTITY_CODE' 
59444                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
59445                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
59446                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
59447                 WHEN 27 THEN 'ENC_UPG_DR_ACCT_CLASS' 
59448                 WHEN 28 THEN 'ENC_UPG_CR_ACCT_CLASS' 
59449                 WHEN 29 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
59450                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
59451                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
59452                 
59453                 ELSE null
59454               END                           source_code
59455             , CASE r
59456                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
59457                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
59458                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
59459                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
59460                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
59461                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
59462                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
59463                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
59464                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
59465                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
59466                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
59467                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
59468                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
59469                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
59470                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
59471                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
59472                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
59473                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
59474                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
59475                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
59476                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
59477                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
59478                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
59479                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
59480                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
59481                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
59482                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
59483                 WHEN 28 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
59484                 WHEN 29 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
59485                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
59486                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
59487                 
59488                 ELSE null
59489               END                           source_value
59490             , CASE r
59491                 WHEN 3 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
59492                           103371
59493                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
59494                          ,'ALLOW_OVERRIDE_CCID_FLAG'
59495                          ,'S'
59496                          ,275)
59497                 WHEN 16 THEN fvl34.meaning
59498                 
59499                 ELSE null
59500               END               source_meaning
59501          FROM  xla_events_gt     xet  
59502         , PA_XLA_CDL_LINES_V  l1
59503   , fnd_lookup_values    fvl34
59504             , (select rownum r from all_objects where rownum <= 31 and owner = p_apps_owner)
59505         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
59506           AND xet.event_class_code = C_EVENT_CLASS_CODE
59507             AND l1.event_id          = xet.event_id
59508    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
59509   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
59510   AND fvl34.view_application_id(+) = 275
59511   AND fvl34.language(+)            = USERENV('LANG')
59512   
59513 )
59514 ;
59515 --
59516 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59517 
59518       trace
59519          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
59520          ,p_level    => C_LEVEL_STATEMENT
59521          ,p_module   => l_log_module);
59522 
59523 END IF;
59524 
59525 
59526 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59527       trace
59528          (p_msg      => 'END of insert_sources_113'
59529          ,p_level    => C_LEVEL_PROCEDURE
59530          ,p_module   => l_log_module);
59531 END IF;
59532 EXCEPTION
59533   WHEN xla_exceptions_pkg.application_exception THEN
59534       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
59535             trace
59536                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
59537                ,p_level    => C_LEVEL_EXCEPTION
59541   WHEN OTHERS THEN
59538                ,p_module   => l_log_module);
59539       END IF;
59540       RAISE;
59542       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
59543             trace
59544                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
59545                ,p_level    => C_LEVEL_EXCEPTION
59546                ,p_module   => l_log_module);
59547        END IF;
59548        xla_exceptions_pkg.raise_message
59549            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_113');
59550 END insert_sources_113;
59551 --
59552 
59553 ---------------------------------------
59554 --
59555 -- PRIVATE FUNCTION
59556 --         EventClass_113
59557 --
59558 ----------------------------------------
59559 --
59560 FUNCTION EventClass_113
59561        (p_application_id         IN NUMBER
59562        ,p_base_ledger_id         IN NUMBER
59563        ,p_target_ledger_id       IN NUMBER
59564        ,p_language               IN VARCHAR2
59565        ,p_currency_code          IN VARCHAR2
59566        ,p_sla_ledger_id          IN NUMBER
59567        ,p_pad_start_date         IN DATE
59568        ,p_pad_end_date           IN DATE
59569        ,p_primary_ledger_id      IN NUMBER)
59570 RETURN BOOLEAN IS
59571 --
59572 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ADJ_ALL';
59573 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BURDEN_COST_ADJ';
59574 
59575 l_calculate_acctd_flag   VARCHAR2(1) :='N';
59576 l_calculate_g_l_flag     VARCHAR2(1) :='N';
59577 --
59578 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59579 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59580 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59581 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59582 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59583 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59584 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59585 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59586 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59587 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59588 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59589 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59590 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59591 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
59592 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59593 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59594 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59595 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
59596 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59597 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59598 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59599 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
59600 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
59601 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
59602 
59603 l_event_id                             NUMBER;
59604 l_previous_event_id                    NUMBER;
59605 l_first_event_id                       NUMBER;
59606 l_last_event_id                        NUMBER;
59607 
59608 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
59609 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
59610 --
59611 --
59612 l_result                    BOOLEAN := TRUE;
59613 l_rows                      NUMBER  := 1000;
59614 l_event_type_name           VARCHAR2(80) := 'All';
59615 l_event_class_name          VARCHAR2(80) := 'Burden Cost Adjustments';
59616 l_description               VARCHAR2(4000);
59617 l_transaction_reversal      NUMBER;
59618 l_ae_header_id              NUMBER;
59619 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
59620 l_log_module                VARCHAR2(240);
59621 --
59622 l_acct_reversal_source      VARCHAR2(30);
59623 l_trx_reversal_source       VARCHAR2(30);
59624 
59625 l_continue_with_lines       BOOLEAN := TRUE;
59626 --
59627 l_acc_rev_gl_date_source    DATE;                      -- 4262811
59628 --
59629 type t_array_event_id is table of number index by binary_integer;
59630 
59631 l_rec_array_event                    t_rec_array_event;
59632 l_null_rec_array_event               t_rec_array_event;
59633 l_array_ae_header_id                 xla_number_array_type;
59634 l_actual_flag                        VARCHAR2(1) := NULL;
59635 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
59636 l_balance_type_code                  VARCHAR2(1) :=NULL;
59637 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
59638 
59639 --
59640 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
59641 --
59642 
59643 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
59644 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
59645 
59646 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
59647 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
59651 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
59648 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
59649 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
59650 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
59652 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
59653 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59654 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
59655 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
59656 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
59657 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
59658 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59659 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
59660 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
59661 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
59662 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
59663 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
59664 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
59665 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
59666 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
59667 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
59668 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
59669 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
59670 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
59671 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
59672 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59673 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
59674 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
59675 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
59676 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
59677 
59678 l_array_source_32              t_array_source_32;
59679 l_array_source_87              t_array_source_87;
59680 
59681 l_array_source_2      t_array_source_2;
59682 l_array_source_3      t_array_source_3;
59683 l_array_source_4      t_array_source_4;
59684 l_array_source_5      t_array_source_5;
59685 l_array_source_6      t_array_source_6;
59686 l_array_source_7      t_array_source_7;
59687 l_array_source_22      t_array_source_22;
59688 l_array_source_23      t_array_source_23;
59689 l_array_source_25      t_array_source_25;
59690 l_array_source_27      t_array_source_27;
59691 l_array_source_28      t_array_source_28;
59692 l_array_source_29      t_array_source_29;
59693 l_array_source_30      t_array_source_30;
59694 l_array_source_31      t_array_source_31;
59695 l_array_source_33      t_array_source_33;
59696 l_array_source_34      t_array_source_34;
59697 l_array_source_34_meaning      t_array_lookup_meaning;
59698 l_array_source_35      t_array_source_35;
59699 l_array_source_44      t_array_source_44;
59700 l_array_source_45      t_array_source_45;
59701 l_array_source_46      t_array_source_46;
59702 l_array_source_47      t_array_source_47;
59703 l_array_source_48      t_array_source_48;
59704 l_array_source_49      t_array_source_49;
59705 l_array_source_50      t_array_source_50;
59706 l_array_source_51      t_array_source_51;
59707 l_array_source_52      t_array_source_52;
59708 l_array_source_53      t_array_source_53;
59709 l_array_source_54      t_array_source_54;
59710 l_array_source_55      t_array_source_55;
59711 l_array_source_56      t_array_source_56;
59712 l_array_source_57      t_array_source_57;
59713 
59714 --
59715 CURSOR header_cur
59716 IS
59717 SELECT /*+ leading(xet) cardinality(xet,1) */
59718 -- Event Class Code: BURDEN_COST_ADJ
59719     xet.entity_id
59720    ,xet.legal_entity_id
59721    ,xet.entity_code
59722    ,xet.transaction_number
59723    ,xet.event_id
59724    ,xet.event_class_code
59725    ,xet.event_type_code
59726    ,xet.event_number
59727    ,xet.event_date
59728    ,xet.transaction_date
59729    ,xet.reference_num_1
59730    ,xet.reference_num_2
59731    ,xet.reference_num_3
59732    ,xet.reference_num_4
59733    ,xet.reference_char_1
59734    ,xet.reference_char_2
59735    ,xet.reference_char_3
59736    ,xet.reference_char_4
59737    ,xet.reference_date_1
59738    ,xet.reference_date_2
59739    ,xet.reference_date_3
59740    ,xet.reference_date_4
59741    ,xet.event_created_by
59742    ,xet.budgetary_control_flag 
59743   , h2.EXPENDITURE_ITEM_ID    source_32
59747  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
59744   , h2.GL_DATE    source_87
59745   FROM xla_events_gt     xet 
59746   , PA_XLA_EXP_HEADER_V  h2
59748    and xet.event_class_code = C_EVENT_CLASS_CODE
59749    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
59750 
59751  ORDER BY event_id
59752 ;
59753 
59754 
59755 --
59756 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
59757 IS
59758 SELECT  /*+ leading(xet) cardinality(xet,1) */
59759 -- Event Class Code: BURDEN_COST_ADJ
59760     xet.entity_id
59761    ,xet.legal_entity_id
59762    ,xet.entity_code
59763    ,xet.transaction_number
59764    ,xet.event_id
59765    ,xet.event_class_code
59766    ,xet.event_type_code
59767    ,xet.event_number
59768    ,xet.event_date
59769    ,xet.transaction_date
59770    ,xet.reference_num_1
59771    ,xet.reference_num_2
59772    ,xet.reference_num_3
59773    ,xet.reference_num_4
59774    ,xet.reference_char_1
59775    ,xet.reference_char_2
59776    ,xet.reference_char_3
59777    ,xet.reference_char_4
59778    ,xet.reference_date_1
59779    ,xet.reference_date_2
59780    ,xet.reference_date_3
59781    ,xet.reference_date_4
59782    ,xet.event_created_by
59783    ,xet.budgetary_control_flag
59784  , l1.LINE_NUMBER  
59785   , l1.BUDGET_CCID    source_2
59786   , l1.COST_CCID    source_3
59787   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
59788   , l1.ADJ_COST_CCID    source_5
59789   , l1.COST_CLEARING_CCID    source_6
59790   , l1.ADJ_COST_CLEARING_CCID    source_7
59791   , l1.REVERSING_LINE_FLAG    source_22
59792   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
59793   , l1.ENTERED_CURRENCY_CODE    source_25
59794   , l1.EXCHANGE_RATE_DATE    source_27
59795   , l1.EXCHANGE_RATE    source_28
59796   , l1.EXCHANGE_RATE_TYPE    source_29
59797   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
59798   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
59799   , l1.LINE_NUMBER    source_33
59800   , l1.LINE_TYPE    source_34
59801   , fvl34.meaning   source_34_meaning
59802   , l1.LINE_NUM_REVERSED    source_35
59803   , l1.ENTERED_BURDENED_COST    source_44
59804   , l1.ACCT_BURDENED_COST    source_45
59805   , l1.ENCUMBRANCE_AMOUNT    source_46
59806   , l1.PA_APPLICATION_ID    source_47
59807   , l1.PA_DISTRIBUTION_TYPE    source_48
59808   , l1.PA_ENTITY_CODE    source_49
59809   , l1.PA_FIRST_DIST_ID    source_50
59810   , l1.PA_FIRST_SYS_TRANS_ID    source_51
59811   , l1.PA_SECOND_DIST_ID    source_52
59812   , l1.ENC_UPG_DR_ACCT_CLASS    source_53
59813   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
59814   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
59815   , l1.ENCUMBRANCE_TYPE_ID    source_56
59816   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
59817   FROM xla_events_gt     xet 
59818   , PA_XLA_CDL_LINES_V  l1
59819   , fnd_lookup_values    fvl34
59820  WHERE xet.event_id between x_first_event_id and x_last_event_id
59821    and xet.event_date between p_pad_start_date and p_pad_end_date
59822    and xet.event_class_code = C_EVENT_CLASS_CODE
59823    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
59824    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
59825   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
59826   AND fvl34.view_application_id(+) = 275
59827   AND fvl34.language(+)            = USERENV('LANG')
59828   ;
59829 
59830 --
59831 BEGIN
59832 IF g_log_enabled THEN
59833    l_log_module := C_DEFAULT_MODULE||'.EventClass_113';
59834 END IF;
59835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59836    trace
59837       (p_msg      => 'BEGIN of EventClass_113'
59838       ,p_level    => C_LEVEL_PROCEDURE
59839       ,p_module   => l_log_module);
59840 END IF;
59841 
59842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59843    trace
59844       (p_msg      => 'p_application_id = '||p_application_id||
59845                      ' - p_base_ledger_id = '||p_base_ledger_id||
59846                      ' - p_target_ledger_id  = '||p_target_ledger_id||
59847                      ' - p_language = '||p_language||
59848                      ' - p_currency_code = '||p_currency_code||
59849                      ' - p_sla_ledger_id = '||p_sla_ledger_id
59850       ,p_level    => C_LEVEL_STATEMENT
59851       ,p_module   => l_log_module);
59852 END IF;
59853 --
59854 -- initialze arrays
59855 --
59856 g_array_event.DELETE;
59857 l_rec_array_event := l_null_rec_array_event;
59858 --
59859 --------------------------------------
59860 -- 4262811 Initialze MPA Line Number
59861 --------------------------------------
59862 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
59863 
59864 --
59865 
59866 --
59867 OPEN header_cur;
59868 --
59869 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59870    trace
59871    (p_msg      => 'SQL - FETCH header_cur'
59872    ,p_level    => C_LEVEL_STATEMENT
59873    ,p_module   => l_log_module);
59874 END IF;
59875 --
59876 LOOP
59877 FETCH header_cur BULK COLLECT INTO
59878         l_array_entity_id
59879       , l_array_legal_entity_id
59880       , l_array_entity_code
59881       , l_array_transaction_num
59882       , l_array_event_id
59883       , l_array_class_code
59884       , l_array_event_type
59885       , l_array_event_number
59886       , l_array_event_date
59887       , l_array_transaction_date
59891       , l_array_reference_num_4
59888       , l_array_reference_num_1
59889       , l_array_reference_num_2
59890       , l_array_reference_num_3
59892       , l_array_reference_char_1
59893       , l_array_reference_char_2
59894       , l_array_reference_char_3
59895       , l_array_reference_char_4
59896       , l_array_reference_date_1
59897       , l_array_reference_date_2
59898       , l_array_reference_date_3
59899       , l_array_reference_date_4
59900       , l_array_event_created_by
59901       , l_array_budgetary_control_flag 
59902       , l_array_source_32
59903       , l_array_source_87
59904       LIMIT l_rows;
59905 --
59906 IF (C_LEVEL_EVENT >= g_log_level) THEN
59907    trace
59908    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
59909    ,p_level    => C_LEVEL_EVENT
59910    ,p_module   => l_log_module);
59911 END IF;
59912 --
59913 EXIT WHEN l_array_entity_id.COUNT = 0;
59914 
59915 -- initialize arrays
59916 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
59917 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
59918 
59919 --
59920 -- Bug 4458708
59921 --
59922 XLA_AE_LINES_PKG.g_LineNumber := 0;
59923 
59924 
59925 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
59926 g_last_hdr_idx := l_array_event_id.LAST;
59927 --
59928 -- loop for the headers. Each iteration is for each header extract row
59929 -- fetched in header cursor
59930 --
59931 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
59932 
59933 --
59934 -- set event info as cache for other routines to refer event attributes
59935 --
59936 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
59937    (p_application_id           => p_application_id
59938    ,p_primary_ledger_id        => p_primary_ledger_id
59939    ,p_base_ledger_id           => p_base_ledger_id
59940    ,p_target_ledger_id         => p_target_ledger_id
59941    ,p_entity_id                => l_array_entity_id(hdr_idx)
59942    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
59943    ,p_entity_code              => l_array_entity_code(hdr_idx)
59944    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
59945    ,p_event_id                 => l_array_event_id(hdr_idx)
59946    ,p_event_class_code         => l_array_class_code(hdr_idx)
59947    ,p_event_type_code          => l_array_event_type(hdr_idx)
59948    ,p_event_number             => l_array_event_number(hdr_idx)
59949    ,p_event_date               => l_array_event_date(hdr_idx)
59950    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
59951    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
59952    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
59953    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
59954    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
59955    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
59956    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
59957    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
59958    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
59959    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
59960    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
59961    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
59962    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
59963    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
59964    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
59965 
59966 --
59967 -- set the status of entry to C_VALID (0)
59968 --
59969 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
59970 
59971 --
59972 -- initialize a row for ae header
59973 --
59974 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
59975 
59976 l_event_id := l_array_event_id(hdr_idx);
59977 
59978 --
59979 -- storing the hdr_idx for event. May be used by line cursor.
59980 --
59981 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
59982 
59983 --
59984 -- store sources from header extract. This can be improved to
59985 -- store only those sources from header extract that may be used in lines
59986 --
59987 
59988 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
59989 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
59990 
59991 --
59992 -- initilaize the status of ae headers for diffrent balance types
59993 -- the status is initialised to C_NOT_CREATED (2)
59994 --
59995 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
59996 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
59997 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
59998 
59999 --
60000 -- call api to validate and store accounting attributes for header
60001 --
60002 
60003 ------------------------------------------------------------
60004 -- Accrual Reversal : to get date for Standard Source (NONE)
60005 ------------------------------------------------------------
60006 l_acc_rev_gl_date_source := NULL;
60007 
60008      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
60009       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
60010 
60011 
60012 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
60016 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
60013 
60014 XLA_AE_HEADER_PKG.SetJeCategoryName;
60015 
60017 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
60018 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
60019 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
60020 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
60021 
60022 
60023 -- No header level analytical criteria
60024 
60025 --
60026 --accounting attribute enhancement, bug 3612931
60027 --
60028 l_trx_reversal_source := SUBSTR(NULL, 1,30);
60029 
60030 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
60031    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
60032 
60033    xla_accounting_err_pkg.build_message
60034       (p_appli_s_name            => 'XLA'
60035       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
60036       ,p_token_1                 => 'ACCT_ATTR_NAME'
60037       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
60038       ,p_token_2                 => 'PRODUCT_NAME'
60039       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
60040       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
60041       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
60042       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
60043 
60044 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
60045    --
60046    -- following sets the accounting attributes needed to reverse
60047    -- accounting for a distributeion
60048    --
60049    xla_ae_lines_pkg.SetTrxReversalAttrs
60050       (p_event_id              => l_event_id
60051       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
60052       ,p_trx_reversal_source   => l_trx_reversal_source);
60053 
60054 END IF;
60055 
60056 
60057 ----------------------------------------------------------------
60058 -- 4262811 -  update the header statuses to invalid in need be
60059 ----------------------------------------------------------------
60060 --
60061 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
60062 
60063 
60064   -----------------------------------------------
60065   -- No accrual reversal for the event class/type
60066   -----------------------------------------------
60067 ----------------------------------------------------------------
60068 
60069 --
60070 -- this ends the header loop iteration for one bulk fetch
60071 --
60072 END LOOP;
60073 
60074 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
60075 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
60076 
60077 --
60078 -- insert dummy rows into lines gt table that were created due to
60079 -- transaction reversals
60080 --
60081 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
60082    l_result := XLA_AE_LINES_PKG.InsertLines;
60083 END IF;
60084 
60085 --
60086 -- reset the temp_line_num for each set of events fetched from header
60087 -- cursor rather than doing it for each new event in line cursor
60088 -- Bug 3939231
60089 --
60090 xla_ae_lines_pkg.g_temp_line_num := 0;
60091 
60092 
60093 
60094 --
60095 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
60096 --
60097 --
60098 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60099 
60100       trace
60101          (p_msg      => 'SQL - FETCH line_cur'
60102          ,p_level    => C_LEVEL_STATEMENT
60103          ,p_module   => l_log_module);
60104 
60105 END IF;
60106 --
60107 --
60108 LOOP
60109   --
60110   FETCH line_cur BULK COLLECT INTO
60111         l_array_entity_id
60112       , l_array_legal_entity_id
60113       , l_array_entity_code
60114       , l_array_transaction_num
60115       , l_array_event_id
60116       , l_array_class_code
60117       , l_array_event_type
60118       , l_array_event_number
60119       , l_array_event_date
60120       , l_array_transaction_date
60121       , l_array_reference_num_1
60122       , l_array_reference_num_2
60123       , l_array_reference_num_3
60124       , l_array_reference_num_4
60125       , l_array_reference_char_1
60126       , l_array_reference_char_2
60127       , l_array_reference_char_3
60128       , l_array_reference_char_4
60129       , l_array_reference_date_1
60130       , l_array_reference_date_2
60131       , l_array_reference_date_3
60132       , l_array_reference_date_4
60133       , l_array_event_created_by
60134       , l_array_budgetary_control_flag
60135       , l_array_extract_line_num 
60136       , l_array_source_2
60137       , l_array_source_3
60138       , l_array_source_4
60139       , l_array_source_5
60140       , l_array_source_6
60141       , l_array_source_7
60142       , l_array_source_22
60143       , l_array_source_23
60144       , l_array_source_25
60145       , l_array_source_27
60146       , l_array_source_28
60147       , l_array_source_29
60148       , l_array_source_30
60149       , l_array_source_31
60150       , l_array_source_33
60151       , l_array_source_34
60155       , l_array_source_45
60152       , l_array_source_34_meaning
60153       , l_array_source_35
60154       , l_array_source_44
60156       , l_array_source_46
60157       , l_array_source_47
60158       , l_array_source_48
60159       , l_array_source_49
60160       , l_array_source_50
60161       , l_array_source_51
60162       , l_array_source_52
60163       , l_array_source_53
60164       , l_array_source_54
60165       , l_array_source_55
60166       , l_array_source_56
60167       , l_array_source_57
60168       LIMIT l_rows;
60169 
60170   --
60171   IF (C_LEVEL_EVENT >= g_log_level) THEN
60172             trace
60173                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
60174                ,p_level    => C_LEVEL_EVENT
60175                ,p_module   => l_log_module);
60176   END IF;
60177   --
60178   EXIT WHEN l_array_entity_id.count = 0;
60179 
60180   XLA_AE_LINES_PKG.g_rec_lines := null;
60181 
60182 --
60183 -- Bug 4458708
60184 --
60185 XLA_AE_LINES_PKG.g_LineNumber := 0;
60186 --
60187 --
60188 
60189 FOR Idx IN 1..l_array_event_id.count LOOP
60190    --
60191    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
60192    --
60193    l_event_id := l_array_event_id(idx);  -- 5648433
60194 
60195    --
60196    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
60197    --
60198 
60199    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
60200              (g_array_event(l_event_id).array_value_num('header_index'))
60201          ,'N'
60202          ) <> 'Y'
60203    THEN
60204       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60205          trace
60206             (p_msg      => 'Trancaction revesal option is not Y '
60207             ,p_level    => C_LEVEL_STATEMENT
60208             ,p_module   => l_log_module);
60209       END IF;
60210 
60211 --
60212 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
60213 --
60214 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
60215 --
60216 -- set event info as cache for other routines to refer event attributes
60217 --
60218 
60219 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
60220    l_previous_event_id := l_event_id;
60221 
60222    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
60223       (p_application_id           => p_application_id
60224       ,p_primary_ledger_id        => p_primary_ledger_id
60225       ,p_base_ledger_id           => p_base_ledger_id
60226       ,p_target_ledger_id         => p_target_ledger_id
60227       ,p_entity_id                => l_array_entity_id(Idx)
60228       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
60229       ,p_entity_code              => l_array_entity_code(Idx)
60230       ,p_transaction_num          => l_array_transaction_num(Idx)
60231       ,p_event_id                 => l_array_event_id(Idx)
60232       ,p_event_class_code         => l_array_class_code(Idx)
60233       ,p_event_type_code          => l_array_event_type(Idx)
60234       ,p_event_number             => l_array_event_number(Idx)
60235       ,p_event_date               => l_array_event_date(Idx)
60236       ,p_transaction_date         => l_array_transaction_date(Idx)
60237       ,p_reference_num_1          => l_array_reference_num_1(Idx)
60238       ,p_reference_num_2          => l_array_reference_num_2(Idx)
60239       ,p_reference_num_3          => l_array_reference_num_3(Idx)
60240       ,p_reference_num_4          => l_array_reference_num_4(Idx)
60241       ,p_reference_char_1         => l_array_reference_char_1(Idx)
60242       ,p_reference_char_2         => l_array_reference_char_2(Idx)
60243       ,p_reference_char_3         => l_array_reference_char_3(Idx)
60244       ,p_reference_char_4         => l_array_reference_char_4(Idx)
60245       ,p_reference_date_1         => l_array_reference_date_1(Idx)
60246       ,p_reference_date_2         => l_array_reference_date_2(Idx)
60247       ,p_reference_date_3         => l_array_reference_date_3(Idx)
60248       ,p_reference_date_4         => l_array_reference_date_4(Idx)
60249       ,p_event_created_by         => l_array_event_created_by(Idx)
60250       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
60251        --
60252 END IF;
60253 
60254 
60255 
60256 --
60257 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
60258 
60259 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
60260 
60261 IF l_continue_with_lines THEN
60262    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
60263       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
60264 
60265       xla_accounting_err_pkg.build_message
60266          (p_appli_s_name            => 'XLA'
60267          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
60268          ,p_token_1                 => 'LINE_NUMBER'
60269          ,p_value_1                 => l_array_extract_line_num(Idx)
60270          ,p_token_2                 => 'PRODUCT_NAME'
60271          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
60272          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
60273          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
60274          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
60275 
60279       -- accounting for a distributeion
60276    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
60277       --
60278       -- following sets the accounting attributes needed to reverse
60280       --
60281 
60282       --
60283       -- 5217187
60284       --
60285       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
60286       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
60287                                        g_array_event(l_event_id).array_value_num('header_index'));
60288       --
60289       --
60290 
60291       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
60292       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
60293       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
60294       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
60295       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
60296       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
60297       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
60298       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
60299       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
60300       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
60301       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
60302       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
60303       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
60304       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
60305       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
60306       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
60307       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
60308       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
60309       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
60310       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
60311       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
60312       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
60313       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
60314       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
60315       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
60316       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
60317       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
60318       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
60319       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
60320       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
60321       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
60322       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
60323       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
60324       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
60325       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
60326       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
60327       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
60328       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
60329       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
60330       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
60331       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
60332       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
60333       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
60334       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_53(Idx);
60335       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
60336       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
60337       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
60338       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
60339       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
60340       l_rec_rev_acct_attrs.array_char_value(26)  := l_array_source_25(Idx);
60341       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
60342       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
60343       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
60344       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_54(Idx);
60345       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
60346       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_2(Idx);
60347       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
60348       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_46(Idx);
60349       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
60350       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_25(Idx);
60351       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
60352       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_46(Idx);
60353       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
60357       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID2';
60354       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_55(Idx);
60355       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'REVERSED_DISTRIBUTION_ID1';
60356       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_32');
60358       l_rec_rev_acct_attrs.array_num_value(35)  := l_array_source_35(Idx);
60359       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_TYPE';
60360       l_rec_rev_acct_attrs.array_char_value(36)  := l_array_source_34(Idx);
60361       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
60362       l_rec_rev_acct_attrs.array_num_value(37)  := l_array_source_56(Idx);
60363       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
60364       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_57(Idx);
60365 
60366 
60367       xla_ae_lines_pkg.SetAcctReversalAttrs
60368          (p_event_id             => l_event_id
60369          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
60370          ,p_calculate_acctd_flag => l_calculate_acctd_flag
60371          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
60372    END IF;
60373 
60374    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
60375        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
60376 
60377 --
60378 AcctLineType_26 (
60379  p_application_id  => p_application_id
60380  ,p_event_id     => l_event_id
60381  ,p_calculate_acctd_flag => l_calculate_acctd_flag
60382  ,p_calculate_g_l_flag => l_calculate_g_l_flag
60383  ,p_actual_flag => l_actual_flag
60384  ,p_balance_type_code => l_balance_type_code
60385  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
60386  
60387  , p_source_2 => l_array_source_2(Idx)
60388  , p_source_3 => l_array_source_3(Idx)
60389  , p_source_4 => l_array_source_4(Idx)
60390  , p_source_5 => l_array_source_5(Idx)
60391  , p_source_6 => l_array_source_6(Idx)
60392  , p_source_22 => l_array_source_22(Idx)
60393  , p_source_23 => l_array_source_23(Idx)
60394  , p_source_25 => l_array_source_25(Idx)
60395  , p_source_27 => l_array_source_27(Idx)
60396  , p_source_28 => l_array_source_28(Idx)
60397  , p_source_29 => l_array_source_29(Idx)
60398  , p_source_30 => l_array_source_30(Idx)
60399  , p_source_31 => l_array_source_31(Idx)
60400  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
60401  , p_source_33 => l_array_source_33(Idx)
60402  , p_source_34 => l_array_source_34(Idx)
60403  , p_source_34_meaning => l_array_source_34_meaning(Idx)
60404  , p_source_35 => l_array_source_35(Idx)
60405  , p_source_44 => l_array_source_44(Idx)
60406  , p_source_45 => l_array_source_45(Idx)
60407  , p_source_46 => l_array_source_46(Idx)
60408  , p_source_47 => l_array_source_47(Idx)
60409  , p_source_48 => l_array_source_48(Idx)
60410  , p_source_49 => l_array_source_49(Idx)
60411  , p_source_50 => l_array_source_50(Idx)
60412  , p_source_51 => l_array_source_51(Idx)
60413  , p_source_52 => l_array_source_52(Idx)
60414  , p_source_53 => l_array_source_53(Idx)
60415  , p_source_54 => l_array_source_54(Idx)
60416  , p_source_55 => l_array_source_55(Idx)
60417  , p_source_56 => l_array_source_56(Idx)
60418  , p_source_57 => l_array_source_57(Idx)
60419  );
60420 If(l_balance_type_code = 'A') THEN
60421   l_actual_gain_loss_ref := l_gain_or_loss_ref;
60422 END IF;
60423 
60424 --
60425 
60426 
60427 --
60428 AcctLineType_27 (
60429  p_application_id  => p_application_id
60430  ,p_event_id     => l_event_id
60431  ,p_calculate_acctd_flag => l_calculate_acctd_flag
60432  ,p_calculate_g_l_flag => l_calculate_g_l_flag
60433  ,p_actual_flag => l_actual_flag
60434  ,p_balance_type_code => l_balance_type_code
60435  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
60436  
60437  , p_source_2 => l_array_source_2(Idx)
60438  , p_source_3 => l_array_source_3(Idx)
60439  , p_source_4 => l_array_source_4(Idx)
60440  , p_source_6 => l_array_source_6(Idx)
60441  , p_source_7 => l_array_source_7(Idx)
60442  , p_source_22 => l_array_source_22(Idx)
60443  , p_source_23 => l_array_source_23(Idx)
60444  , p_source_25 => l_array_source_25(Idx)
60445  , p_source_27 => l_array_source_27(Idx)
60446  , p_source_28 => l_array_source_28(Idx)
60447  , p_source_29 => l_array_source_29(Idx)
60448  , p_source_30 => l_array_source_30(Idx)
60449  , p_source_31 => l_array_source_31(Idx)
60450  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
60451  , p_source_33 => l_array_source_33(Idx)
60452  , p_source_34 => l_array_source_34(Idx)
60453  , p_source_34_meaning => l_array_source_34_meaning(Idx)
60454  , p_source_35 => l_array_source_35(Idx)
60455  , p_source_44 => l_array_source_44(Idx)
60456  , p_source_45 => l_array_source_45(Idx)
60457  , p_source_46 => l_array_source_46(Idx)
60458  , p_source_47 => l_array_source_47(Idx)
60459  , p_source_48 => l_array_source_48(Idx)
60460  , p_source_49 => l_array_source_49(Idx)
60461  , p_source_50 => l_array_source_50(Idx)
60462  , p_source_51 => l_array_source_51(Idx)
60463  , p_source_52 => l_array_source_52(Idx)
60464  , p_source_53 => l_array_source_53(Idx)
60465  , p_source_54 => l_array_source_54(Idx)
60466  , p_source_55 => l_array_source_55(Idx)
60467  , p_source_56 => l_array_source_56(Idx)
60468  , p_source_57 => l_array_source_57(Idx)
60469  );
60470 If(l_balance_type_code = 'A') THEN
60471   l_actual_gain_loss_ref := l_gain_or_loss_ref;
60472 END IF;
60473 
60474 --
60478       -- or alc that is calculated by sla
60475 
60476       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
60477       -- or secondary ledger that has different currency with primary
60479       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
60480             (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'))
60481 
60482 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
60483 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
60484           AND (l_actual_flag = 'A')) THEN
60485         XLA_AE_LINES_PKG.CreateGainOrLossLines(
60486           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
60487          ,p_application_id   => p_application_id
60488          ,p_amb_context_code => 'DEFAULT'
60489          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
60490          ,p_event_class_code => C_EVENT_CLASS_CODE
60491          ,p_event_type_code  => C_EVENT_TYPE_CODE
60492          
60493          ,p_gain_ccid        => -1
60494          ,p_loss_ccid        => -1
60495 
60496          ,p_actual_flag      => l_actual_flag
60497          ,p_enc_flag         => null
60498          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
60499          ,p_enc_g_l_ref      => null
60500          );
60501       END IF;
60502    END IF;
60503 END IF;
60504 
60505    ELSE
60506       --
60507       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
60508       --
60509       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60510          trace
60511             (p_msg      => 'Trancaction revesal option is Y'
60512             ,p_level    => C_LEVEL_STATEMENT
60513             ,p_module   => l_log_module);
60514       END IF;
60515    END IF;
60516 
60517 END LOOP;
60518 l_result := XLA_AE_LINES_PKG.InsertLines ;
60519 end loop;
60520 close line_cur;
60521 
60522 
60523 --
60524 -- insert headers into xla_ae_headers_gt table
60525 --
60526 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
60527 
60528 -- insert into errors table here.
60529 
60530 END LOOP;
60531 
60532 --
60533 -- 4865292
60534 --
60535 -- Compare g_hdr_extract_count with event count in
60536 -- CreateHeadersAndLines.
60537 --
60538 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
60539 
60540 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60541    trace (p_msg     => '# rows extracted from header extract objects '
60542                     || ' (running total): '
60543                     || g_hdr_extract_count
60544          ,p_level   => C_LEVEL_STATEMENT
60545          ,p_module  => l_log_module);
60546 END IF;
60547 
60548 CLOSE header_cur;
60549 --
60550 
60551 --
60552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60553    trace
60554       (p_msg      => 'END of EventClass_113'
60555       ,p_level    => C_LEVEL_PROCEDURE
60556       ,p_module   => l_log_module);
60557 END IF;
60558 --
60559 RETURN l_result;
60560 EXCEPTION
60561 WHEN xla_exceptions_pkg.application_exception THEN
60562    
60563 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
60564 
60565    
60566 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
60567 
60568    RAISE;
60569 WHEN OTHERS THEN
60570    xla_exceptions_pkg.raise_message
60571       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_113');
60572 END EventClass_113;
60573 --
60574 
60575 ---------------------------------------
60576 --
60577 -- PRIVATE PROCEDURE
60578 --         insert_sources_114
60579 --
60580 ----------------------------------------
60581 --
60582 PROCEDURE insert_sources_114(
60583                                 p_target_ledger_id       IN NUMBER
60584                               , p_language               IN VARCHAR2
60585                               , p_sla_ledger_id          IN NUMBER
60586                               , p_pad_start_date         IN DATE
60587                               , p_pad_end_date           IN DATE
60588                          )
60589 IS
60590 
60591 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ALL';
60592 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BURDEN_COST';
60593 p_apps_owner                   VARCHAR2(30);
60594 l_log_module                   VARCHAR2(240);
60595 BEGIN
60596 IF g_log_enabled THEN
60597       l_log_module := C_DEFAULT_MODULE||'.insert_sources_114';
60598 END IF;
60599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60600 
60601       trace
60602          (p_msg      => 'BEGIN of insert_sources_114'
60603          ,p_level    => C_LEVEL_PROCEDURE
60604          ,p_module   => l_log_module);
60605 
60606 END IF;
60607 
60608 -- select APPS owner
60609 SELECT oracle_username
60610   INTO p_apps_owner
60611   FROM fnd_oracle_userid
60612  WHERE read_only_flag = 'U'
60613 ;
60614 
60615 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60616       trace
60617          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
60618                         ' - p_language = '||p_language||
60619                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
60620                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
60624          ,p_module   => l_log_module);
60621                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
60622                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
60623          ,p_level    => C_LEVEL_STATEMENT
60625 END IF;
60626 
60627 
60628 --
60629 INSERT INTO xla_diag_sources --hdr2
60630 (
60631         event_id
60632       , ledger_id
60633       , sla_ledger_id
60634       , description_language
60635       , object_name
60636       , object_type_code
60637       , line_number
60638       , source_application_id
60639       , source_type_code
60640       , source_code
60641       , source_value
60642       , source_meaning
60643       , created_by
60644       , creation_date
60645       , last_update_date
60646       , last_updated_by
60647       , last_update_login
60648       , program_update_date
60649       , program_application_id
60650       , program_id
60651       , request_id
60652 )
60653 SELECT
60654         event_id
60655       , p_target_ledger_id
60656       , p_sla_ledger_id
60657       , p_language
60658       , object_name
60659       , object_type_code
60660       , line_number
60661       , source_application_id
60662       , source_type_code
60663       , source_code
60664       , SUBSTR(source_value ,1,1996)
60665       , SUBSTR(source_meaning ,1,200)
60666       , xla_environment_pkg.g_Usr_Id
60667       , TRUNC(SYSDATE)
60668       , TRUNC(SYSDATE)
60669       , xla_environment_pkg.g_Usr_Id
60670       , xla_environment_pkg.g_Login_Id
60671       , TRUNC(SYSDATE)
60672       , xla_environment_pkg.g_Prog_Appl_Id
60673       , xla_environment_pkg.g_Prog_Id
60674       , xla_environment_pkg.g_Req_Id
60675   FROM (
60676        SELECT xet.event_id                  event_id
60677             , 0                          line_number
60678             , CASE r
60679                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
60680                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
60681                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
60682                 
60683                ELSE null
60684               END                           object_name
60685             , CASE r
60686                 WHEN 1 THEN 'HEADER' 
60687                 WHEN 2 THEN 'HEADER' 
60688                 WHEN 3 THEN 'HEADER' 
60689                 
60690                 ELSE null
60691               END                           object_type_code
60692             , CASE r
60693                 WHEN 1 THEN '275' 
60694                 WHEN 2 THEN '275' 
60695                 WHEN 3 THEN '275' 
60696                 
60697                 ELSE null
60698               END                           source_application_id
60699             , 'S'             source_type_code
60700             , CASE r
60701                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
60702                 WHEN 2 THEN 'SYSTEM_LINKAGE_FUNCTION' 
60703                 WHEN 3 THEN 'GL_DATE' 
60704                 
60705                 ELSE null
60706               END                           source_code
60707             , CASE r
60708                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
60709                 WHEN 2 THEN TO_CHAR(h2.SYSTEM_LINKAGE_FUNCTION)
60710                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
60711                 
60712                 ELSE null
60713               END                           source_value
60714             , null              source_meaning
60715          FROM xla_events_gt     xet  
60716       , PA_XLA_EXP_HEADER_V  h2
60717              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
60718          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
60719            AND xet.event_class_code = C_EVENT_CLASS_CODE
60720               AND h2.event_id = xet.event_id
60721 
60722 )
60723 ;
60724 --
60725 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60726 
60727       trace
60728          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
60729          ,p_level    => C_LEVEL_STATEMENT
60730          ,p_module   => l_log_module);
60731 
60732 END IF;
60733 --
60734 
60735 
60736 
60737 --
60738 INSERT INTO xla_diag_sources  --line2
60739 (
60740         event_id
60741       , ledger_id
60742       , sla_ledger_id
60743       , description_language
60744       , object_name
60745       , object_type_code
60746       , line_number
60747       , source_application_id
60748       , source_type_code
60749       , source_code
60750       , source_value
60751       , source_meaning
60752       , created_by
60753       , creation_date
60754       , last_update_date
60755       , last_updated_by
60756       , last_update_login
60757       , program_update_date
60758       , program_application_id
60759       , program_id
60760       , request_id
60761 )
60762 SELECT  event_id
60763       , p_target_ledger_id
60764       , p_sla_ledger_id
60765       , p_language
60766       , object_name
60767       , object_type_code
60768       , line_number
60769       , source_application_id
60770       , source_type_code
60771       , source_code
60772       , SUBSTR(source_value,1,1996)
60773       , SUBSTR(source_meaning ,1,200)
60774       , xla_environment_pkg.g_Usr_Id
60775       , TRUNC(SYSDATE)
60776       , TRUNC(SYSDATE)
60780       , xla_environment_pkg.g_Prog_Appl_Id
60777       , xla_environment_pkg.g_Usr_Id
60778       , xla_environment_pkg.g_Login_Id
60779       , TRUNC(SYSDATE)
60781       , xla_environment_pkg.g_Prog_Id
60782       , xla_environment_pkg.g_Req_Id
60783   FROM (
60784        SELECT xet.event_id                  event_id
60785             , l1.line_number                 line_number
60786             , CASE r
60787                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
60788                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
60789                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
60790                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
60791                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
60792                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
60793                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
60794                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
60795                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
60796                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
60797                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
60798                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
60799                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
60800                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
60801                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
60802                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
60803                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
60804                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
60805                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
60806                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
60807                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
60808                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
60809                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
60810                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
60811                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
60812                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
60813                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
60814                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
60815                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
60816                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
60817                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
60818                 WHEN 32 THEN 'PA_XLA_CDL_LINES_V' 
60819                 WHEN 33 THEN 'PA_XLA_CDL_LINES_V' 
60820                 WHEN 34 THEN 'PA_XLA_CDL_LINES_V' 
60821                 WHEN 35 THEN 'PA_XLA_CDL_LINES_V' 
60822                 WHEN 36 THEN 'PA_XLA_CDL_LINES_V' 
60823                 WHEN 37 THEN 'PA_XLA_CDL_LINES_V' 
60824                 WHEN 38 THEN 'PA_XLA_CDL_LINES_V' 
60825                 WHEN 39 THEN 'PA_XLA_CDL_LINES_V' 
60826                 WHEN 40 THEN 'PA_XLA_CDL_LINES_V' 
60827                 WHEN 41 THEN 'PA_XLA_CDL_LINES_V' 
60828                 WHEN 42 THEN 'PA_XLA_CDL_LINES_V' 
60829                 WHEN 43 THEN 'PA_XLA_CDL_LINES_V' 
60830                 WHEN 44 THEN 'PA_XLA_CDL_LINES_V' 
60831                 WHEN 45 THEN 'PA_XLA_CDL_LINES_V' 
60832                 WHEN 46 THEN 'PA_XLA_CDL_LINES_V' 
60833                 WHEN 47 THEN 'PA_XLA_CDL_LINES_V' 
60834                 WHEN 48 THEN 'PA_XLA_CDL_LINES_V' 
60835                 WHEN 49 THEN 'PA_XLA_CDL_LINES_V' 
60836                 
60837                ELSE null
60838               END                           object_name
60839             , CASE r
60840                 WHEN 1 THEN 'LINE' 
60841                 WHEN 2 THEN 'LINE' 
60842                 WHEN 3 THEN 'LINE' 
60843                 WHEN 4 THEN 'LINE' 
60844                 WHEN 5 THEN 'LINE' 
60845                 WHEN 6 THEN 'LINE' 
60846                 WHEN 7 THEN 'LINE' 
60847                 WHEN 8 THEN 'LINE' 
60848                 WHEN 9 THEN 'LINE' 
60849                 WHEN 10 THEN 'LINE' 
60850                 WHEN 11 THEN 'LINE' 
60851                 WHEN 12 THEN 'LINE' 
60852                 WHEN 13 THEN 'LINE' 
60853                 WHEN 14 THEN 'LINE' 
60854                 WHEN 15 THEN 'LINE' 
60855                 WHEN 16 THEN 'LINE' 
60856                 WHEN 17 THEN 'LINE' 
60857                 WHEN 18 THEN 'LINE' 
60858                 WHEN 19 THEN 'LINE' 
60859                 WHEN 20 THEN 'LINE' 
60860                 WHEN 21 THEN 'LINE' 
60861                 WHEN 22 THEN 'LINE' 
60862                 WHEN 23 THEN 'LINE' 
60863                 WHEN 24 THEN 'LINE' 
60864                 WHEN 25 THEN 'LINE' 
60865                 WHEN 26 THEN 'LINE' 
60866                 WHEN 27 THEN 'LINE' 
60867                 WHEN 28 THEN 'LINE' 
60868                 WHEN 29 THEN 'LINE' 
60869                 WHEN 30 THEN 'LINE' 
60870                 WHEN 31 THEN 'LINE' 
60871                 WHEN 32 THEN 'LINE' 
60872                 WHEN 33 THEN 'LINE' 
60873                 WHEN 34 THEN 'LINE' 
60874                 WHEN 35 THEN 'LINE' 
60875                 WHEN 36 THEN 'LINE' 
60876                 WHEN 37 THEN 'LINE' 
60877                 WHEN 38 THEN 'LINE' 
60878                 WHEN 39 THEN 'LINE' 
60879                 WHEN 40 THEN 'LINE' 
60880                 WHEN 41 THEN 'LINE' 
60881                 WHEN 42 THEN 'LINE' 
60882                 WHEN 43 THEN 'LINE' 
60883                 WHEN 44 THEN 'LINE' 
60884                 WHEN 45 THEN 'LINE' 
60885                 WHEN 46 THEN 'LINE' 
60886                 WHEN 47 THEN 'LINE' 
60887                 WHEN 48 THEN 'LINE' 
60888                 WHEN 49 THEN 'LINE' 
60889                 
60890                 ELSE null
60891               END                           object_type_code
60892             , CASE r
60896                 WHEN 4 THEN '275' 
60893                 WHEN 1 THEN '275' 
60894                 WHEN 2 THEN '275' 
60895                 WHEN 3 THEN '275' 
60897                 WHEN 5 THEN '275' 
60898                 WHEN 6 THEN '275' 
60899                 WHEN 7 THEN '275' 
60900                 WHEN 8 THEN '275' 
60901                 WHEN 9 THEN '275' 
60902                 WHEN 10 THEN '275' 
60903                 WHEN 11 THEN '275' 
60904                 WHEN 12 THEN '275' 
60905                 WHEN 13 THEN '275' 
60906                 WHEN 14 THEN '275' 
60907                 WHEN 15 THEN '275' 
60908                 WHEN 16 THEN '275' 
60909                 WHEN 17 THEN '275' 
60910                 WHEN 18 THEN '275' 
60911                 WHEN 19 THEN '275' 
60912                 WHEN 20 THEN '275' 
60913                 WHEN 21 THEN '275' 
60914                 WHEN 22 THEN '275' 
60915                 WHEN 23 THEN '275' 
60916                 WHEN 24 THEN '275' 
60917                 WHEN 25 THEN '275' 
60918                 WHEN 26 THEN '275' 
60919                 WHEN 27 THEN '275' 
60920                 WHEN 28 THEN '275' 
60921                 WHEN 29 THEN '275' 
60922                 WHEN 30 THEN '275' 
60923                 WHEN 31 THEN '275' 
60924                 WHEN 32 THEN '275' 
60925                 WHEN 33 THEN '275' 
60926                 WHEN 34 THEN '275' 
60927                 WHEN 35 THEN '275' 
60928                 WHEN 36 THEN '275' 
60929                 WHEN 37 THEN '275' 
60930                 WHEN 38 THEN '275' 
60931                 WHEN 39 THEN '275' 
60932                 WHEN 40 THEN '275' 
60933                 WHEN 41 THEN '275' 
60934                 WHEN 42 THEN '275' 
60935                 WHEN 43 THEN '275' 
60936                 WHEN 44 THEN '275' 
60937                 WHEN 45 THEN '275' 
60938                 WHEN 46 THEN '275' 
60939                 WHEN 47 THEN '275' 
60940                 WHEN 48 THEN '275' 
60941                 WHEN 49 THEN '275' 
60942                 
60943                 ELSE null
60944               END                           source_application_id
60945             , 'S'             source_type_code
60946             , CASE r
60947                 WHEN 1 THEN 'BUDGET_CCID' 
60948                 WHEN 2 THEN 'COST_CCID' 
60949                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
60950                 WHEN 4 THEN 'ADJ_COST_CCID' 
60951                 WHEN 5 THEN 'COST_CLEARING_CCID' 
60952                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
60953                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
60954                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
60955                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
60956                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
60957                 WHEN 11 THEN 'EXCHANGE_RATE' 
60958                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
60959                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
60960                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
60961                 WHEN 15 THEN 'LINE_NUMBER' 
60962                 WHEN 16 THEN 'LINE_TYPE' 
60963                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
60964                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
60965                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
60966                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
60967                 WHEN 21 THEN 'PA_APPLICATION_ID' 
60968                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
60969                 WHEN 23 THEN 'PA_ENTITY_CODE' 
60970                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
60971                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
60972                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
60973                 WHEN 27 THEN 'ENC_UPG_DR_ACCT_CLASS' 
60974                 WHEN 28 THEN 'ENC_UPG_CR_ACCT_CLASS' 
60975                 WHEN 29 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
60976                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
60977                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
60978                 WHEN 32 THEN 'DOCUMENT_TYPE' 
60979                 WHEN 33 THEN 'ENC_JE_LINES_REVERSED_FLAG' 
60980                 WHEN 34 THEN 'PO_RELEASE_ID' 
60981                 WHEN 35 THEN 'CWK_RATE_BASED_TC_FLAG' 
60982                 WHEN 36 THEN 'INVOICE_APPLICATION_ID' 
60983                 WHEN 37 THEN 'INVOICE_DISTRIBUTION_TYPE' 
60984                 WHEN 38 THEN 'INVOICE_ENTITY_CODE' 
60985                 WHEN 39 THEN 'INVOICE_FIRST_DIST_ID' 
60986                 WHEN 40 THEN 'INVOICE_FIRST_SYS_TRANS_ID' 
60987                 WHEN 41 THEN 'INVOICE_SECOND_DIST_ID' 
60988                 WHEN 42 THEN 'PO_APPLICATION_ID' 
60989                 WHEN 43 THEN 'PO_DISTRIBUTION_TYPE' 
60990                 WHEN 44 THEN 'PO_ENTITY_CODE' 
60991                 WHEN 45 THEN 'PO_FIRST_DIST_ID' 
60992                 WHEN 46 THEN 'PO_FIRST_SYS_TRANS_ID' 
60993                 WHEN 47 THEN 'PO_SECOND_DIST_ID' 
60994                 WHEN 48 THEN 'ENC_ACCT_ENABLED' 
60995                 WHEN 49 THEN 'LIQUIDATE_ENCUM_FLAG' 
60996                 
60997                 ELSE null
60998               END                           source_code
60999             , CASE r
61000                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
61001                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
61002                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
61003                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
61004                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
61008                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
61005                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
61006                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
61007                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
61009                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
61010                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
61011                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
61012                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
61013                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
61014                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
61015                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
61016                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
61017                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
61018                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
61019                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
61020                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
61021                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
61022                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
61023                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
61024                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
61025                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
61026                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
61027                 WHEN 28 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
61028                 WHEN 29 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
61029                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
61030                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
61031                 WHEN 32 THEN TO_CHAR(l1.DOCUMENT_TYPE)
61032                 WHEN 33 THEN TO_CHAR(l1.ENC_JE_LINES_REVERSED_FLAG)
61033                 WHEN 34 THEN TO_CHAR(l1.PO_RELEASE_ID)
61034                 WHEN 35 THEN TO_CHAR(l1.CWK_RATE_BASED_TC_FLAG)
61035                 WHEN 36 THEN TO_CHAR(l1.INVOICE_APPLICATION_ID)
61036                 WHEN 37 THEN TO_CHAR(l1.INVOICE_DISTRIBUTION_TYPE)
61037                 WHEN 38 THEN TO_CHAR(l1.INVOICE_ENTITY_CODE)
61038                 WHEN 39 THEN TO_CHAR(l1.INVOICE_FIRST_DIST_ID)
61039                 WHEN 40 THEN TO_CHAR(l1.INVOICE_FIRST_SYS_TRANS_ID)
61040                 WHEN 41 THEN TO_CHAR(l1.INVOICE_SECOND_DIST_ID)
61041                 WHEN 42 THEN TO_CHAR(l1.PO_APPLICATION_ID)
61042                 WHEN 43 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
61043                 WHEN 44 THEN TO_CHAR(l1.PO_ENTITY_CODE)
61044                 WHEN 45 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
61045                 WHEN 46 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
61046                 WHEN 47 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
61047                 WHEN 48 THEN TO_CHAR(l1.ENC_ACCT_ENABLED)
61048                 WHEN 49 THEN TO_CHAR(l1.LIQUIDATE_ENCUM_FLAG)
61049                 
61050                 ELSE null
61051               END                           source_value
61052             , CASE r
61053                 WHEN 3 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
61054                           103371
61055                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
61056                          ,'ALLOW_OVERRIDE_CCID_FLAG'
61057                          ,'S'
61058                          ,275)
61059                 WHEN 16 THEN fvl34.meaning
61060                 WHEN 32 THEN fvl69.meaning
61061                 
61062                 ELSE null
61063               END               source_meaning
61064          FROM  xla_events_gt     xet  
61065         , PA_XLA_CDL_LINES_V  l1
61066   , fnd_lookup_values    fvl34
61067   , fnd_lookup_values    fvl69
61068             , (select rownum r from all_objects where rownum <= 49 and owner = p_apps_owner)
61069         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
61070           AND xet.event_class_code = C_EVENT_CLASS_CODE
61071             AND l1.event_id          = xet.event_id
61072    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
61073   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
61074   AND fvl34.view_application_id(+) = 275
61075   AND fvl34.language(+)            = USERENV('LANG')
61076      AND fvl69.lookup_type(+)         = 'FC_DOC_TYPE'
61077   AND fvl69.lookup_code(+)         = l1.DOCUMENT_TYPE
61078   AND fvl69.view_application_id(+) = 275
61079   AND fvl69.language(+)            = USERENV('LANG')
61080   
61081 )
61082 ;
61083 --
61084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61085 
61086       trace
61087          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
61088          ,p_level    => C_LEVEL_STATEMENT
61089          ,p_module   => l_log_module);
61090 
61091 END IF;
61092 
61093 
61094 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61095       trace
61096          (p_msg      => 'END of insert_sources_114'
61097          ,p_level    => C_LEVEL_PROCEDURE
61098          ,p_module   => l_log_module);
61099 END IF;
61100 EXCEPTION
61101   WHEN xla_exceptions_pkg.application_exception THEN
61102       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
61103             trace
61104                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
61105                ,p_level    => C_LEVEL_EXCEPTION
61106                ,p_module   => l_log_module);
61107       END IF;
61108       RAISE;
61109   WHEN OTHERS THEN
61110       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
61111             trace
61112                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
61113                ,p_level    => C_LEVEL_EXCEPTION
61117            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_114');
61114                ,p_module   => l_log_module);
61115        END IF;
61116        xla_exceptions_pkg.raise_message
61118 END insert_sources_114;
61119 --
61120 
61121 ---------------------------------------
61122 --
61123 -- PRIVATE FUNCTION
61124 --         EventClass_114
61125 --
61126 ----------------------------------------
61127 --
61128 FUNCTION EventClass_114
61129        (p_application_id         IN NUMBER
61130        ,p_base_ledger_id         IN NUMBER
61131        ,p_target_ledger_id       IN NUMBER
61132        ,p_language               IN VARCHAR2
61133        ,p_currency_code          IN VARCHAR2
61134        ,p_sla_ledger_id          IN NUMBER
61135        ,p_pad_start_date         IN DATE
61136        ,p_pad_end_date           IN DATE
61137        ,p_primary_ledger_id      IN NUMBER)
61138 RETURN BOOLEAN IS
61139 --
61140 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ALL';
61141 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BURDEN_COST';
61142 
61143 l_calculate_acctd_flag   VARCHAR2(1) :='N';
61144 l_calculate_g_l_flag     VARCHAR2(1) :='N';
61145 --
61146 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61147 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61148 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61149 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61150 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61151 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61152 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61153 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61154 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61155 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61156 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61157 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61158 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61159 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
61160 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61161 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61162 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61163 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
61164 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61165 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61166 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61167 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
61168 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
61169 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
61170 
61171 l_event_id                             NUMBER;
61172 l_previous_event_id                    NUMBER;
61173 l_first_event_id                       NUMBER;
61174 l_last_event_id                        NUMBER;
61175 
61176 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
61177 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
61178 --
61179 --
61180 l_result                    BOOLEAN := TRUE;
61181 l_rows                      NUMBER  := 1000;
61182 l_event_type_name           VARCHAR2(80) := 'All';
61183 l_event_class_name          VARCHAR2(80) := 'Burden Cost';
61184 l_description               VARCHAR2(4000);
61185 l_transaction_reversal      NUMBER;
61186 l_ae_header_id              NUMBER;
61187 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
61188 l_log_module                VARCHAR2(240);
61189 --
61190 l_acct_reversal_source      VARCHAR2(30);
61191 l_trx_reversal_source       VARCHAR2(30);
61192 
61193 l_continue_with_lines       BOOLEAN := TRUE;
61194 --
61195 l_acc_rev_gl_date_source    DATE;                      -- 4262811
61196 --
61197 type t_array_event_id is table of number index by binary_integer;
61198 
61199 l_rec_array_event                    t_rec_array_event;
61200 l_null_rec_array_event               t_rec_array_event;
61201 l_array_ae_header_id                 xla_number_array_type;
61202 l_actual_flag                        VARCHAR2(1) := NULL;
61203 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
61204 l_balance_type_code                  VARCHAR2(1) :=NULL;
61205 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
61206 
61207 --
61208 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
61209 --
61210 
61211 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
61212 TYPE t_array_source_37 IS TABLE OF PA_XLA_EXP_HEADER_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
61213 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
61214 
61215 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
61216 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
61217 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
61218 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
61222 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61219 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
61220 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
61221 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
61223 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
61224 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
61225 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
61226 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
61227 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61228 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
61229 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
61230 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
61231 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
61232 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
61233 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
61234 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
61235 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
61236 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
61237 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
61238 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61239 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
61240 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61241 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61242 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
61243 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
61244 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
61245 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
61246 TYPE t_array_source_69 IS TABLE OF PA_XLA_CDL_LINES_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
61247 TYPE t_array_source_70 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_JE_LINES_REVERSED_FLAG%TYPE INDEX BY BINARY_INTEGER;
61248 TYPE t_array_source_71 IS TABLE OF PA_XLA_CDL_LINES_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
61249 TYPE t_array_source_72 IS TABLE OF PA_XLA_CDL_LINES_V.CWK_RATE_BASED_TC_FLAG%TYPE INDEX BY BINARY_INTEGER;
61250 TYPE t_array_source_73 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
61251 TYPE t_array_source_74 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
61252 TYPE t_array_source_75 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
61253 TYPE t_array_source_76 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61254 TYPE t_array_source_77 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
61255 TYPE t_array_source_78 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61256 TYPE t_array_source_79 IS TABLE OF PA_XLA_CDL_LINES_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
61257 TYPE t_array_source_80 IS TABLE OF PA_XLA_CDL_LINES_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
61258 TYPE t_array_source_81 IS TABLE OF PA_XLA_CDL_LINES_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
61259 TYPE t_array_source_82 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61260 TYPE t_array_source_83 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
61261 TYPE t_array_source_84 IS TABLE OF PA_XLA_CDL_LINES_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
61262 TYPE t_array_source_85 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_ACCT_ENABLED%TYPE INDEX BY BINARY_INTEGER;
61263 TYPE t_array_source_86 IS TABLE OF PA_XLA_CDL_LINES_V.LIQUIDATE_ENCUM_FLAG%TYPE INDEX BY BINARY_INTEGER;
61264 
61265 l_array_source_32              t_array_source_32;
61266 l_array_source_37              t_array_source_37;
61267 l_array_source_87              t_array_source_87;
61268 
61269 l_array_source_2      t_array_source_2;
61270 l_array_source_3      t_array_source_3;
61271 l_array_source_4      t_array_source_4;
61272 l_array_source_5      t_array_source_5;
61273 l_array_source_6      t_array_source_6;
61274 l_array_source_7      t_array_source_7;
61275 l_array_source_22      t_array_source_22;
61276 l_array_source_23      t_array_source_23;
61277 l_array_source_25      t_array_source_25;
61278 l_array_source_27      t_array_source_27;
61279 l_array_source_28      t_array_source_28;
61280 l_array_source_29      t_array_source_29;
61281 l_array_source_30      t_array_source_30;
61282 l_array_source_31      t_array_source_31;
61283 l_array_source_33      t_array_source_33;
61284 l_array_source_34      t_array_source_34;
61285 l_array_source_34_meaning      t_array_lookup_meaning;
61286 l_array_source_35      t_array_source_35;
61287 l_array_source_44      t_array_source_44;
61288 l_array_source_45      t_array_source_45;
61289 l_array_source_46      t_array_source_46;
61293 l_array_source_50      t_array_source_50;
61290 l_array_source_47      t_array_source_47;
61291 l_array_source_48      t_array_source_48;
61292 l_array_source_49      t_array_source_49;
61294 l_array_source_51      t_array_source_51;
61295 l_array_source_52      t_array_source_52;
61296 l_array_source_53      t_array_source_53;
61297 l_array_source_54      t_array_source_54;
61298 l_array_source_55      t_array_source_55;
61299 l_array_source_56      t_array_source_56;
61300 l_array_source_57      t_array_source_57;
61301 l_array_source_69      t_array_source_69;
61302 l_array_source_69_meaning      t_array_lookup_meaning;
61303 l_array_source_70      t_array_source_70;
61304 l_array_source_71      t_array_source_71;
61305 l_array_source_72      t_array_source_72;
61306 l_array_source_73      t_array_source_73;
61307 l_array_source_74      t_array_source_74;
61308 l_array_source_75      t_array_source_75;
61309 l_array_source_76      t_array_source_76;
61310 l_array_source_77      t_array_source_77;
61311 l_array_source_78      t_array_source_78;
61312 l_array_source_79      t_array_source_79;
61313 l_array_source_80      t_array_source_80;
61314 l_array_source_81      t_array_source_81;
61315 l_array_source_82      t_array_source_82;
61316 l_array_source_83      t_array_source_83;
61317 l_array_source_84      t_array_source_84;
61318 l_array_source_85      t_array_source_85;
61319 l_array_source_86      t_array_source_86;
61320 
61321 --
61322 CURSOR header_cur
61323 IS
61324 SELECT /*+ leading(xet) cardinality(xet,1) */
61325 -- Event Class Code: BURDEN_COST
61326     xet.entity_id
61327    ,xet.legal_entity_id
61328    ,xet.entity_code
61329    ,xet.transaction_number
61330    ,xet.event_id
61331    ,xet.event_class_code
61332    ,xet.event_type_code
61333    ,xet.event_number
61334    ,xet.event_date
61335    ,xet.transaction_date
61336    ,xet.reference_num_1
61337    ,xet.reference_num_2
61338    ,xet.reference_num_3
61339    ,xet.reference_num_4
61340    ,xet.reference_char_1
61341    ,xet.reference_char_2
61342    ,xet.reference_char_3
61343    ,xet.reference_char_4
61344    ,xet.reference_date_1
61345    ,xet.reference_date_2
61346    ,xet.reference_date_3
61347    ,xet.reference_date_4
61348    ,xet.event_created_by
61349    ,xet.budgetary_control_flag 
61350   , h2.EXPENDITURE_ITEM_ID    source_32
61351   , h2.SYSTEM_LINKAGE_FUNCTION    source_37
61352   , h2.GL_DATE    source_87
61353   FROM xla_events_gt     xet 
61354   , PA_XLA_EXP_HEADER_V  h2
61355  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
61356    and xet.event_class_code = C_EVENT_CLASS_CODE
61357    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
61358 
61359  ORDER BY event_id
61360 ;
61361 
61362 
61363 --
61364 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
61365 IS
61366 SELECT  /*+ leading(xet) cardinality(xet,1) */
61367 -- Event Class Code: BURDEN_COST
61368     xet.entity_id
61369    ,xet.legal_entity_id
61370    ,xet.entity_code
61371    ,xet.transaction_number
61372    ,xet.event_id
61373    ,xet.event_class_code
61374    ,xet.event_type_code
61375    ,xet.event_number
61376    ,xet.event_date
61377    ,xet.transaction_date
61378    ,xet.reference_num_1
61379    ,xet.reference_num_2
61380    ,xet.reference_num_3
61381    ,xet.reference_num_4
61382    ,xet.reference_char_1
61383    ,xet.reference_char_2
61384    ,xet.reference_char_3
61385    ,xet.reference_char_4
61386    ,xet.reference_date_1
61387    ,xet.reference_date_2
61388    ,xet.reference_date_3
61389    ,xet.reference_date_4
61390    ,xet.event_created_by
61391    ,xet.budgetary_control_flag
61392  , l1.LINE_NUMBER  
61393   , l1.BUDGET_CCID    source_2
61394   , l1.COST_CCID    source_3
61395   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
61396   , l1.ADJ_COST_CCID    source_5
61397   , l1.COST_CLEARING_CCID    source_6
61398   , l1.ADJ_COST_CLEARING_CCID    source_7
61399   , l1.REVERSING_LINE_FLAG    source_22
61400   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
61401   , l1.ENTERED_CURRENCY_CODE    source_25
61402   , l1.EXCHANGE_RATE_DATE    source_27
61403   , l1.EXCHANGE_RATE    source_28
61404   , l1.EXCHANGE_RATE_TYPE    source_29
61405   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
61406   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
61407   , l1.LINE_NUMBER    source_33
61408   , l1.LINE_TYPE    source_34
61409   , fvl34.meaning   source_34_meaning
61410   , l1.LINE_NUM_REVERSED    source_35
61411   , l1.ENTERED_BURDENED_COST    source_44
61412   , l1.ACCT_BURDENED_COST    source_45
61413   , l1.ENCUMBRANCE_AMOUNT    source_46
61414   , l1.PA_APPLICATION_ID    source_47
61415   , l1.PA_DISTRIBUTION_TYPE    source_48
61416   , l1.PA_ENTITY_CODE    source_49
61417   , l1.PA_FIRST_DIST_ID    source_50
61418   , l1.PA_FIRST_SYS_TRANS_ID    source_51
61419   , l1.PA_SECOND_DIST_ID    source_52
61420   , l1.ENC_UPG_DR_ACCT_CLASS    source_53
61421   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
61422   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
61423   , l1.ENCUMBRANCE_TYPE_ID    source_56
61424   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
61425   , l1.DOCUMENT_TYPE    source_69
61426   , fvl69.meaning   source_69_meaning
61427   , l1.ENC_JE_LINES_REVERSED_FLAG    source_70
61428   , l1.PO_RELEASE_ID    source_71
61432   , l1.INVOICE_ENTITY_CODE    source_75
61429   , l1.CWK_RATE_BASED_TC_FLAG    source_72
61430   , l1.INVOICE_APPLICATION_ID    source_73
61431   , l1.INVOICE_DISTRIBUTION_TYPE    source_74
61433   , l1.INVOICE_FIRST_DIST_ID    source_76
61434   , l1.INVOICE_FIRST_SYS_TRANS_ID    source_77
61435   , l1.INVOICE_SECOND_DIST_ID    source_78
61436   , l1.PO_APPLICATION_ID    source_79
61437   , l1.PO_DISTRIBUTION_TYPE    source_80
61438   , l1.PO_ENTITY_CODE    source_81
61439   , l1.PO_FIRST_DIST_ID    source_82
61440   , l1.PO_FIRST_SYS_TRANS_ID    source_83
61441   , l1.PO_SECOND_DIST_ID    source_84
61442   , l1.ENC_ACCT_ENABLED    source_85
61443   , l1.LIQUIDATE_ENCUM_FLAG    source_86
61444   FROM xla_events_gt     xet 
61445   , PA_XLA_CDL_LINES_V  l1
61446   , fnd_lookup_values    fvl34
61447   , fnd_lookup_values    fvl69
61448  WHERE xet.event_id between x_first_event_id and x_last_event_id
61449    and xet.event_date between p_pad_start_date and p_pad_end_date
61450    and xet.event_class_code = C_EVENT_CLASS_CODE
61451    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
61452    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
61453   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
61454   AND fvl34.view_application_id(+) = 275
61455   AND fvl34.language(+)            = USERENV('LANG')
61456      AND fvl69.lookup_type(+)         = 'FC_DOC_TYPE'
61457   AND fvl69.lookup_code(+)         = l1.DOCUMENT_TYPE
61458   AND fvl69.view_application_id(+) = 275
61459   AND fvl69.language(+)            = USERENV('LANG')
61460   ;
61461 
61462 --
61463 BEGIN
61464 IF g_log_enabled THEN
61465    l_log_module := C_DEFAULT_MODULE||'.EventClass_114';
61466 END IF;
61467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61468    trace
61469       (p_msg      => 'BEGIN of EventClass_114'
61470       ,p_level    => C_LEVEL_PROCEDURE
61471       ,p_module   => l_log_module);
61472 END IF;
61473 
61474 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61475    trace
61476       (p_msg      => 'p_application_id = '||p_application_id||
61477                      ' - p_base_ledger_id = '||p_base_ledger_id||
61478                      ' - p_target_ledger_id  = '||p_target_ledger_id||
61479                      ' - p_language = '||p_language||
61480                      ' - p_currency_code = '||p_currency_code||
61481                      ' - p_sla_ledger_id = '||p_sla_ledger_id
61482       ,p_level    => C_LEVEL_STATEMENT
61483       ,p_module   => l_log_module);
61484 END IF;
61485 --
61486 -- initialze arrays
61487 --
61488 g_array_event.DELETE;
61489 l_rec_array_event := l_null_rec_array_event;
61490 --
61491 --------------------------------------
61492 -- 4262811 Initialze MPA Line Number
61493 --------------------------------------
61494 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
61495 
61496 --
61497 
61498 --
61499 OPEN header_cur;
61500 --
61501 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61502    trace
61503    (p_msg      => 'SQL - FETCH header_cur'
61504    ,p_level    => C_LEVEL_STATEMENT
61505    ,p_module   => l_log_module);
61506 END IF;
61507 --
61508 LOOP
61509 FETCH header_cur BULK COLLECT INTO
61510         l_array_entity_id
61511       , l_array_legal_entity_id
61512       , l_array_entity_code
61513       , l_array_transaction_num
61514       , l_array_event_id
61515       , l_array_class_code
61516       , l_array_event_type
61517       , l_array_event_number
61518       , l_array_event_date
61519       , l_array_transaction_date
61520       , l_array_reference_num_1
61521       , l_array_reference_num_2
61522       , l_array_reference_num_3
61523       , l_array_reference_num_4
61524       , l_array_reference_char_1
61525       , l_array_reference_char_2
61526       , l_array_reference_char_3
61527       , l_array_reference_char_4
61528       , l_array_reference_date_1
61529       , l_array_reference_date_2
61530       , l_array_reference_date_3
61531       , l_array_reference_date_4
61532       , l_array_event_created_by
61533       , l_array_budgetary_control_flag 
61534       , l_array_source_32
61535       , l_array_source_37
61536       , l_array_source_87
61537       LIMIT l_rows;
61538 --
61539 IF (C_LEVEL_EVENT >= g_log_level) THEN
61540    trace
61541    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
61542    ,p_level    => C_LEVEL_EVENT
61543    ,p_module   => l_log_module);
61544 END IF;
61545 --
61546 EXIT WHEN l_array_entity_id.COUNT = 0;
61547 
61548 -- initialize arrays
61549 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
61550 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
61551 
61552 --
61553 -- Bug 4458708
61554 --
61555 XLA_AE_LINES_PKG.g_LineNumber := 0;
61556 
61557 
61558 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
61559 g_last_hdr_idx := l_array_event_id.LAST;
61560 --
61561 -- loop for the headers. Each iteration is for each header extract row
61562 -- fetched in header cursor
61563 --
61564 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
61565 
61566 --
61567 -- set event info as cache for other routines to refer event attributes
61568 --
61569 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
61573    ,p_target_ledger_id         => p_target_ledger_id
61570    (p_application_id           => p_application_id
61571    ,p_primary_ledger_id        => p_primary_ledger_id
61572    ,p_base_ledger_id           => p_base_ledger_id
61574    ,p_entity_id                => l_array_entity_id(hdr_idx)
61575    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
61576    ,p_entity_code              => l_array_entity_code(hdr_idx)
61577    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
61578    ,p_event_id                 => l_array_event_id(hdr_idx)
61579    ,p_event_class_code         => l_array_class_code(hdr_idx)
61580    ,p_event_type_code          => l_array_event_type(hdr_idx)
61581    ,p_event_number             => l_array_event_number(hdr_idx)
61582    ,p_event_date               => l_array_event_date(hdr_idx)
61583    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
61584    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
61585    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
61586    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
61587    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
61588    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
61589    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
61590    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
61591    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
61592    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
61593    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
61594    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
61595    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
61596    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
61597    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
61598 
61599 --
61600 -- set the status of entry to C_VALID (0)
61601 --
61602 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
61603 
61604 --
61605 -- initialize a row for ae header
61606 --
61607 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
61608 
61609 l_event_id := l_array_event_id(hdr_idx);
61610 
61611 --
61612 -- storing the hdr_idx for event. May be used by line cursor.
61613 --
61614 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
61615 
61616 --
61617 -- store sources from header extract. This can be improved to
61618 -- store only those sources from header extract that may be used in lines
61619 --
61620 
61621 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
61622 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
61623 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
61624 
61625 --
61626 -- initilaize the status of ae headers for diffrent balance types
61627 -- the status is initialised to C_NOT_CREATED (2)
61628 --
61629 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
61630 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
61631 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
61632 
61633 --
61634 -- call api to validate and store accounting attributes for header
61635 --
61636 
61637 ------------------------------------------------------------
61638 -- Accrual Reversal : to get date for Standard Source (NONE)
61639 ------------------------------------------------------------
61640 l_acc_rev_gl_date_source := NULL;
61641 
61642      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
61643       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
61644 
61645 
61646 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
61647 
61648 XLA_AE_HEADER_PKG.SetJeCategoryName;
61649 
61650 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
61651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
61652 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
61653 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
61654 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
61655 
61656 
61657 -- No header level analytical criteria
61658 
61659 --
61660 --accounting attribute enhancement, bug 3612931
61661 --
61662 l_trx_reversal_source := SUBSTR(NULL, 1,30);
61663 
61664 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
61665    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
61666 
61667    xla_accounting_err_pkg.build_message
61668       (p_appli_s_name            => 'XLA'
61669       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
61670       ,p_token_1                 => 'ACCT_ATTR_NAME'
61671       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
61672       ,p_token_2                 => 'PRODUCT_NAME'
61673       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
61674       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
61675       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
61676       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
61677 
61678 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
61679    --
61683    xla_ae_lines_pkg.SetTrxReversalAttrs
61680    -- following sets the accounting attributes needed to reverse
61681    -- accounting for a distributeion
61682    --
61684       (p_event_id              => l_event_id
61685       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
61686       ,p_trx_reversal_source   => l_trx_reversal_source);
61687 
61688 END IF;
61689 
61690 
61691 ----------------------------------------------------------------
61692 -- 4262811 -  update the header statuses to invalid in need be
61693 ----------------------------------------------------------------
61694 --
61695 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
61696 
61697 
61698   -----------------------------------------------
61699   -- No accrual reversal for the event class/type
61700   -----------------------------------------------
61701 ----------------------------------------------------------------
61702 
61703 --
61704 -- this ends the header loop iteration for one bulk fetch
61705 --
61706 END LOOP;
61707 
61708 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
61709 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
61710 
61711 --
61712 -- insert dummy rows into lines gt table that were created due to
61713 -- transaction reversals
61714 --
61715 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
61716    l_result := XLA_AE_LINES_PKG.InsertLines;
61717 END IF;
61718 
61719 --
61720 -- reset the temp_line_num for each set of events fetched from header
61721 -- cursor rather than doing it for each new event in line cursor
61722 -- Bug 3939231
61723 --
61724 xla_ae_lines_pkg.g_temp_line_num := 0;
61725 
61726 
61727 
61728 --
61729 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
61730 --
61731 --
61732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61733 
61734       trace
61735          (p_msg      => 'SQL - FETCH line_cur'
61736          ,p_level    => C_LEVEL_STATEMENT
61737          ,p_module   => l_log_module);
61738 
61739 END IF;
61740 --
61741 --
61742 LOOP
61743   --
61744   FETCH line_cur BULK COLLECT INTO
61745         l_array_entity_id
61746       , l_array_legal_entity_id
61747       , l_array_entity_code
61748       , l_array_transaction_num
61749       , l_array_event_id
61750       , l_array_class_code
61751       , l_array_event_type
61752       , l_array_event_number
61753       , l_array_event_date
61754       , l_array_transaction_date
61755       , l_array_reference_num_1
61756       , l_array_reference_num_2
61757       , l_array_reference_num_3
61758       , l_array_reference_num_4
61759       , l_array_reference_char_1
61760       , l_array_reference_char_2
61761       , l_array_reference_char_3
61762       , l_array_reference_char_4
61763       , l_array_reference_date_1
61764       , l_array_reference_date_2
61765       , l_array_reference_date_3
61766       , l_array_reference_date_4
61767       , l_array_event_created_by
61768       , l_array_budgetary_control_flag
61769       , l_array_extract_line_num 
61770       , l_array_source_2
61771       , l_array_source_3
61772       , l_array_source_4
61773       , l_array_source_5
61774       , l_array_source_6
61775       , l_array_source_7
61776       , l_array_source_22
61777       , l_array_source_23
61778       , l_array_source_25
61779       , l_array_source_27
61780       , l_array_source_28
61781       , l_array_source_29
61782       , l_array_source_30
61783       , l_array_source_31
61784       , l_array_source_33
61785       , l_array_source_34
61786       , l_array_source_34_meaning
61787       , l_array_source_35
61788       , l_array_source_44
61789       , l_array_source_45
61790       , l_array_source_46
61791       , l_array_source_47
61792       , l_array_source_48
61793       , l_array_source_49
61794       , l_array_source_50
61795       , l_array_source_51
61796       , l_array_source_52
61797       , l_array_source_53
61798       , l_array_source_54
61799       , l_array_source_55
61800       , l_array_source_56
61801       , l_array_source_57
61802       , l_array_source_69
61803       , l_array_source_69_meaning
61804       , l_array_source_70
61805       , l_array_source_71
61806       , l_array_source_72
61807       , l_array_source_73
61808       , l_array_source_74
61809       , l_array_source_75
61810       , l_array_source_76
61811       , l_array_source_77
61812       , l_array_source_78
61813       , l_array_source_79
61814       , l_array_source_80
61815       , l_array_source_81
61816       , l_array_source_82
61817       , l_array_source_83
61818       , l_array_source_84
61819       , l_array_source_85
61820       , l_array_source_86
61821       LIMIT l_rows;
61822 
61823   --
61824   IF (C_LEVEL_EVENT >= g_log_level) THEN
61825             trace
61826                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
61827                ,p_level    => C_LEVEL_EVENT
61828                ,p_module   => l_log_module);
61829   END IF;
61830   --
61831   EXIT WHEN l_array_entity_id.count = 0;
61832 
61833   XLA_AE_LINES_PKG.g_rec_lines := null;
61834 
61835 --
61839 --
61836 -- Bug 4458708
61837 --
61838 XLA_AE_LINES_PKG.g_LineNumber := 0;
61840 --
61841 
61842 FOR Idx IN 1..l_array_event_id.count LOOP
61843    --
61844    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
61845    --
61846    l_event_id := l_array_event_id(idx);  -- 5648433
61847 
61848    --
61849    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
61850    --
61851 
61852    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
61853              (g_array_event(l_event_id).array_value_num('header_index'))
61854          ,'N'
61855          ) <> 'Y'
61856    THEN
61857       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
61858          trace
61859             (p_msg      => 'Trancaction revesal option is not Y '
61860             ,p_level    => C_LEVEL_STATEMENT
61861             ,p_module   => l_log_module);
61862       END IF;
61863 
61864 --
61865 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
61866 --
61867 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
61868 --
61869 -- set event info as cache for other routines to refer event attributes
61870 --
61871 
61872 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
61873    l_previous_event_id := l_event_id;
61874 
61875    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
61876       (p_application_id           => p_application_id
61877       ,p_primary_ledger_id        => p_primary_ledger_id
61878       ,p_base_ledger_id           => p_base_ledger_id
61879       ,p_target_ledger_id         => p_target_ledger_id
61880       ,p_entity_id                => l_array_entity_id(Idx)
61881       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
61882       ,p_entity_code              => l_array_entity_code(Idx)
61883       ,p_transaction_num          => l_array_transaction_num(Idx)
61884       ,p_event_id                 => l_array_event_id(Idx)
61885       ,p_event_class_code         => l_array_class_code(Idx)
61886       ,p_event_type_code          => l_array_event_type(Idx)
61887       ,p_event_number             => l_array_event_number(Idx)
61888       ,p_event_date               => l_array_event_date(Idx)
61889       ,p_transaction_date         => l_array_transaction_date(Idx)
61890       ,p_reference_num_1          => l_array_reference_num_1(Idx)
61891       ,p_reference_num_2          => l_array_reference_num_2(Idx)
61892       ,p_reference_num_3          => l_array_reference_num_3(Idx)
61893       ,p_reference_num_4          => l_array_reference_num_4(Idx)
61894       ,p_reference_char_1         => l_array_reference_char_1(Idx)
61895       ,p_reference_char_2         => l_array_reference_char_2(Idx)
61896       ,p_reference_char_3         => l_array_reference_char_3(Idx)
61897       ,p_reference_char_4         => l_array_reference_char_4(Idx)
61898       ,p_reference_date_1         => l_array_reference_date_1(Idx)
61899       ,p_reference_date_2         => l_array_reference_date_2(Idx)
61900       ,p_reference_date_3         => l_array_reference_date_3(Idx)
61901       ,p_reference_date_4         => l_array_reference_date_4(Idx)
61902       ,p_event_created_by         => l_array_event_created_by(Idx)
61903       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
61904        --
61905 END IF;
61906 
61907 
61908 
61909 --
61910 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
61911 
61912 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
61913 
61914 IF l_continue_with_lines THEN
61915    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
61916       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
61917 
61918       xla_accounting_err_pkg.build_message
61919          (p_appli_s_name            => 'XLA'
61920          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
61921          ,p_token_1                 => 'LINE_NUMBER'
61922          ,p_value_1                 => l_array_extract_line_num(Idx)
61923          ,p_token_2                 => 'PRODUCT_NAME'
61924          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
61925          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
61926          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
61927          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
61928 
61929    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
61930       --
61931       -- following sets the accounting attributes needed to reverse
61932       -- accounting for a distributeion
61933       --
61934 
61935       --
61936       -- 5217187
61937       --
61938       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
61939       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
61940                                        g_array_event(l_event_id).array_value_num('header_index'));
61941       --
61942       --
61943 
61944       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
61945       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
61946       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
61947       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
61948       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
61949       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
61953       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
61950       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
61951       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
61952       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
61954       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
61955       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
61956       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
61957       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
61958       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
61959       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
61960       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
61961       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
61962       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
61963       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
61964       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
61965       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
61966       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
61967       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
61968       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
61969       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
61970       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
61971       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
61972       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
61973       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
61974       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
61975       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
61976       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
61977       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
61978       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
61979       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
61980       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
61981       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
61982       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
61983       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
61984       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
61985       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
61986       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
61987       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_53(Idx);
61988       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
61989       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
61990       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
61991       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
61992       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
61993       l_rec_rev_acct_attrs.array_char_value(26)  := l_array_source_25(Idx);
61994       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
61995       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
61996       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
61997       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_54(Idx);
61998       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
61999       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_2(Idx);
62000       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
62001       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_46(Idx);
62002       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
62003       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_25(Idx);
62004       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
62005       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_46(Idx);
62006       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
62007       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_55(Idx);
62008       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'REVERSED_DISTRIBUTION_ID1';
62009       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_32');
62010       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID2';
62011       l_rec_rev_acct_attrs.array_num_value(35)  := l_array_source_35(Idx);
62012       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_TYPE';
62013       l_rec_rev_acct_attrs.array_char_value(36)  := l_array_source_34(Idx);
62014       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
62015       l_rec_rev_acct_attrs.array_num_value(37)  := l_array_source_56(Idx);
62016       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
62017       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_57(Idx);
62018 
62019 
62020       xla_ae_lines_pkg.SetAcctReversalAttrs
62021          (p_event_id             => l_event_id
62022          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
62026 
62023          ,p_calculate_acctd_flag => l_calculate_acctd_flag
62024          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
62025    END IF;
62027    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
62028        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
62029 
62030 --
62031 AcctLineType_25 (
62032  p_application_id  => p_application_id
62033  ,p_event_id     => l_event_id
62034  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62035  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62036  ,p_actual_flag => l_actual_flag
62037  ,p_balance_type_code => l_balance_type_code
62038  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62039  
62040  , p_source_2 => l_array_source_2(Idx)
62041  , p_source_3 => l_array_source_3(Idx)
62042  , p_source_4 => l_array_source_4(Idx)
62043  , p_source_5 => l_array_source_5(Idx)
62044  , p_source_6 => l_array_source_6(Idx)
62045  , p_source_22 => l_array_source_22(Idx)
62046  , p_source_23 => l_array_source_23(Idx)
62047  , p_source_25 => l_array_source_25(Idx)
62048  , p_source_27 => l_array_source_27(Idx)
62049  , p_source_28 => l_array_source_28(Idx)
62050  , p_source_29 => l_array_source_29(Idx)
62051  , p_source_30 => l_array_source_30(Idx)
62052  , p_source_31 => l_array_source_31(Idx)
62053  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62054  , p_source_33 => l_array_source_33(Idx)
62055  , p_source_34 => l_array_source_34(Idx)
62056  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62057  , p_source_35 => l_array_source_35(Idx)
62058  , p_source_44 => l_array_source_44(Idx)
62059  , p_source_45 => l_array_source_45(Idx)
62060  , p_source_46 => l_array_source_46(Idx)
62061  , p_source_47 => l_array_source_47(Idx)
62062  , p_source_48 => l_array_source_48(Idx)
62063  , p_source_49 => l_array_source_49(Idx)
62064  , p_source_50 => l_array_source_50(Idx)
62065  , p_source_51 => l_array_source_51(Idx)
62066  , p_source_52 => l_array_source_52(Idx)
62067  , p_source_53 => l_array_source_53(Idx)
62068  , p_source_54 => l_array_source_54(Idx)
62069  , p_source_55 => l_array_source_55(Idx)
62070  , p_source_56 => l_array_source_56(Idx)
62071  , p_source_57 => l_array_source_57(Idx)
62072  );
62073 If(l_balance_type_code = 'A') THEN
62074   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62075 END IF;
62076 
62077 --
62078 
62079 
62080 --
62081 AcctLineType_28 (
62082  p_application_id  => p_application_id
62083  ,p_event_id     => l_event_id
62084  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62085  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62086  ,p_actual_flag => l_actual_flag
62087  ,p_balance_type_code => l_balance_type_code
62088  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62089  
62090  , p_source_2 => l_array_source_2(Idx)
62091  , p_source_3 => l_array_source_3(Idx)
62092  , p_source_4 => l_array_source_4(Idx)
62093  , p_source_6 => l_array_source_6(Idx)
62094  , p_source_7 => l_array_source_7(Idx)
62095  , p_source_22 => l_array_source_22(Idx)
62096  , p_source_23 => l_array_source_23(Idx)
62097  , p_source_25 => l_array_source_25(Idx)
62098  , p_source_27 => l_array_source_27(Idx)
62099  , p_source_28 => l_array_source_28(Idx)
62100  , p_source_29 => l_array_source_29(Idx)
62101  , p_source_30 => l_array_source_30(Idx)
62102  , p_source_31 => l_array_source_31(Idx)
62103  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62104  , p_source_33 => l_array_source_33(Idx)
62105  , p_source_34 => l_array_source_34(Idx)
62106  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62107  , p_source_35 => l_array_source_35(Idx)
62108  , p_source_44 => l_array_source_44(Idx)
62109  , p_source_45 => l_array_source_45(Idx)
62110  , p_source_46 => l_array_source_46(Idx)
62111  , p_source_47 => l_array_source_47(Idx)
62112  , p_source_48 => l_array_source_48(Idx)
62113  , p_source_49 => l_array_source_49(Idx)
62114  , p_source_50 => l_array_source_50(Idx)
62115  , p_source_51 => l_array_source_51(Idx)
62116  , p_source_52 => l_array_source_52(Idx)
62117  , p_source_53 => l_array_source_53(Idx)
62118  , p_source_54 => l_array_source_54(Idx)
62119  , p_source_55 => l_array_source_55(Idx)
62120  , p_source_56 => l_array_source_56(Idx)
62121  , p_source_57 => l_array_source_57(Idx)
62122  );
62123 If(l_balance_type_code = 'A') THEN
62124   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62125 END IF;
62126 
62127 --
62128 
62129 
62130 --
62131 AcctLineType_90 (
62132  p_application_id  => p_application_id
62133  ,p_event_id     => l_event_id
62134  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62135  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62136  ,p_actual_flag => l_actual_flag
62137  ,p_balance_type_code => l_balance_type_code
62138  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62139  
62140  , p_source_2 => l_array_source_2(Idx)
62141  , p_source_3 => l_array_source_3(Idx)
62142  , p_source_6 => l_array_source_6(Idx)
62143  , p_source_22 => l_array_source_22(Idx)
62144  , p_source_23 => l_array_source_23(Idx)
62145  , p_source_25 => l_array_source_25(Idx)
62146  , p_source_27 => l_array_source_27(Idx)
62147  , p_source_28 => l_array_source_28(Idx)
62148  , p_source_29 => l_array_source_29(Idx)
62149  , p_source_30 => l_array_source_30(Idx)
62150  , p_source_31 => l_array_source_31(Idx)
62151  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62152  , p_source_33 => l_array_source_33(Idx)
62156  , p_source_44 => l_array_source_44(Idx)
62153  , p_source_34 => l_array_source_34(Idx)
62154  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62155  , p_source_35 => l_array_source_35(Idx)
62157  , p_source_45 => l_array_source_45(Idx)
62158  , p_source_46 => l_array_source_46(Idx)
62159  , p_source_47 => l_array_source_47(Idx)
62160  , p_source_48 => l_array_source_48(Idx)
62161  , p_source_49 => l_array_source_49(Idx)
62162  , p_source_50 => l_array_source_50(Idx)
62163  , p_source_51 => l_array_source_51(Idx)
62164  , p_source_52 => l_array_source_52(Idx)
62165  , p_source_53 => l_array_source_53(Idx)
62166  , p_source_54 => l_array_source_54(Idx)
62167  , p_source_55 => l_array_source_55(Idx)
62168  , p_source_56 => l_array_source_56(Idx)
62169  , p_source_57 => l_array_source_57(Idx)
62170  );
62171 If(l_balance_type_code = 'A') THEN
62172   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62173 END IF;
62174 
62175 --
62176 
62177 
62178 --
62179 AcctLineType_94 (
62180  p_application_id  => p_application_id
62181  ,p_event_id     => l_event_id
62182  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62183  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62184  ,p_actual_flag => l_actual_flag
62185  ,p_balance_type_code => l_balance_type_code
62186  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62187  
62188  , p_source_2 => l_array_source_2(Idx)
62189  , p_source_3 => l_array_source_3(Idx)
62190  , p_source_6 => l_array_source_6(Idx)
62191  , p_source_22 => l_array_source_22(Idx)
62192  , p_source_23 => l_array_source_23(Idx)
62193  , p_source_25 => l_array_source_25(Idx)
62194  , p_source_27 => l_array_source_27(Idx)
62195  , p_source_28 => l_array_source_28(Idx)
62196  , p_source_29 => l_array_source_29(Idx)
62197  , p_source_30 => l_array_source_30(Idx)
62198  , p_source_31 => l_array_source_31(Idx)
62199  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62200  , p_source_33 => l_array_source_33(Idx)
62201  , p_source_34 => l_array_source_34(Idx)
62202  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62203  , p_source_35 => l_array_source_35(Idx)
62204  , p_source_44 => l_array_source_44(Idx)
62205  , p_source_45 => l_array_source_45(Idx)
62206  , p_source_46 => l_array_source_46(Idx)
62207  , p_source_47 => l_array_source_47(Idx)
62208  , p_source_48 => l_array_source_48(Idx)
62209  , p_source_49 => l_array_source_49(Idx)
62210  , p_source_50 => l_array_source_50(Idx)
62211  , p_source_51 => l_array_source_51(Idx)
62212  , p_source_52 => l_array_source_52(Idx)
62213  , p_source_53 => l_array_source_53(Idx)
62214  , p_source_54 => l_array_source_54(Idx)
62215  , p_source_55 => l_array_source_55(Idx)
62216  , p_source_56 => l_array_source_56(Idx)
62217  , p_source_57 => l_array_source_57(Idx)
62218  , p_source_69 => l_array_source_69(Idx)
62219  , p_source_69_meaning => l_array_source_69_meaning(Idx)
62220  , p_source_70 => l_array_source_70(Idx)
62221  );
62222 If(l_balance_type_code = 'A') THEN
62223   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62224 END IF;
62225 
62226 --
62227 
62228 
62229 --
62230 AcctLineType_97 (
62231  p_application_id  => p_application_id
62232  ,p_event_id     => l_event_id
62233  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62234  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62235  ,p_actual_flag => l_actual_flag
62236  ,p_balance_type_code => l_balance_type_code
62237  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62238  
62239  , p_source_2 => l_array_source_2(Idx)
62240  , p_source_3 => l_array_source_3(Idx)
62241  , p_source_6 => l_array_source_6(Idx)
62242  , p_source_22 => l_array_source_22(Idx)
62243  , p_source_23 => l_array_source_23(Idx)
62244  , p_source_25 => l_array_source_25(Idx)
62245  , p_source_27 => l_array_source_27(Idx)
62246  , p_source_28 => l_array_source_28(Idx)
62247  , p_source_29 => l_array_source_29(Idx)
62248  , p_source_30 => l_array_source_30(Idx)
62249  , p_source_31 => l_array_source_31(Idx)
62250  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62251  , p_source_33 => l_array_source_33(Idx)
62252  , p_source_34 => l_array_source_34(Idx)
62253  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62254  , p_source_35 => l_array_source_35(Idx)
62255  , p_source_44 => l_array_source_44(Idx)
62256  , p_source_45 => l_array_source_45(Idx)
62257  , p_source_46 => l_array_source_46(Idx)
62258  , p_source_47 => l_array_source_47(Idx)
62259  , p_source_48 => l_array_source_48(Idx)
62260  , p_source_49 => l_array_source_49(Idx)
62261  , p_source_50 => l_array_source_50(Idx)
62262  , p_source_51 => l_array_source_51(Idx)
62263  , p_source_52 => l_array_source_52(Idx)
62264  , p_source_53 => l_array_source_53(Idx)
62265  , p_source_54 => l_array_source_54(Idx)
62266  , p_source_55 => l_array_source_55(Idx)
62267  , p_source_56 => l_array_source_56(Idx)
62268  , p_source_57 => l_array_source_57(Idx)
62269  , p_source_69 => l_array_source_69(Idx)
62270  , p_source_69_meaning => l_array_source_69_meaning(Idx)
62271  , p_source_71 => l_array_source_71(Idx)
62272  , p_source_72 => l_array_source_72(Idx)
62273  );
62274 If(l_balance_type_code = 'A') THEN
62275   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62276 END IF;
62277 
62278 --
62279 
62280 
62281 --
62282 AcctLineType_100 (
62283  p_application_id  => p_application_id
62284  ,p_event_id     => l_event_id
62285  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62286  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62290  
62287  ,p_actual_flag => l_actual_flag
62288  ,p_balance_type_code => l_balance_type_code
62289  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62291  , p_source_2 => l_array_source_2(Idx)
62292  , p_source_3 => l_array_source_3(Idx)
62293  , p_source_6 => l_array_source_6(Idx)
62294  , p_source_22 => l_array_source_22(Idx)
62295  , p_source_23 => l_array_source_23(Idx)
62296  , p_source_25 => l_array_source_25(Idx)
62297  , p_source_27 => l_array_source_27(Idx)
62298  , p_source_28 => l_array_source_28(Idx)
62299  , p_source_29 => l_array_source_29(Idx)
62300  , p_source_30 => l_array_source_30(Idx)
62301  , p_source_31 => l_array_source_31(Idx)
62302  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62303  , p_source_33 => l_array_source_33(Idx)
62304  , p_source_34 => l_array_source_34(Idx)
62305  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62306  , p_source_35 => l_array_source_35(Idx)
62307  , p_source_44 => l_array_source_44(Idx)
62308  , p_source_45 => l_array_source_45(Idx)
62309  , p_source_46 => l_array_source_46(Idx)
62310  , p_source_53 => l_array_source_53(Idx)
62311  , p_source_54 => l_array_source_54(Idx)
62312  , p_source_55 => l_array_source_55(Idx)
62313  , p_source_56 => l_array_source_56(Idx)
62314  , p_source_57 => l_array_source_57(Idx)
62315  , p_source_69 => l_array_source_69(Idx)
62316  , p_source_69_meaning => l_array_source_69_meaning(Idx)
62317  , p_source_70 => l_array_source_70(Idx)
62318  , p_source_73 => l_array_source_73(Idx)
62319  , p_source_74 => l_array_source_74(Idx)
62320  , p_source_75 => l_array_source_75(Idx)
62321  , p_source_76 => l_array_source_76(Idx)
62322  , p_source_77 => l_array_source_77(Idx)
62323  , p_source_78 => l_array_source_78(Idx)
62324  );
62325 If(l_balance_type_code = 'A') THEN
62326   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62327 END IF;
62328 
62329 --
62330 
62331 
62332 --
62333 AcctLineType_103 (
62334  p_application_id  => p_application_id
62335  ,p_event_id     => l_event_id
62336  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62337  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62338  ,p_actual_flag => l_actual_flag
62339  ,p_balance_type_code => l_balance_type_code
62340  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62341  
62342  , p_source_2 => l_array_source_2(Idx)
62343  , p_source_3 => l_array_source_3(Idx)
62344  , p_source_6 => l_array_source_6(Idx)
62345  , p_source_22 => l_array_source_22(Idx)
62346  , p_source_23 => l_array_source_23(Idx)
62347  , p_source_25 => l_array_source_25(Idx)
62348  , p_source_27 => l_array_source_27(Idx)
62349  , p_source_28 => l_array_source_28(Idx)
62350  , p_source_29 => l_array_source_29(Idx)
62351  , p_source_30 => l_array_source_30(Idx)
62352  , p_source_31 => l_array_source_31(Idx)
62353  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62354  , p_source_33 => l_array_source_33(Idx)
62355  , p_source_34 => l_array_source_34(Idx)
62356  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62357  , p_source_35 => l_array_source_35(Idx)
62358  , p_source_44 => l_array_source_44(Idx)
62359  , p_source_45 => l_array_source_45(Idx)
62360  , p_source_46 => l_array_source_46(Idx)
62361  , p_source_53 => l_array_source_53(Idx)
62362  , p_source_54 => l_array_source_54(Idx)
62363  , p_source_55 => l_array_source_55(Idx)
62364  , p_source_56 => l_array_source_56(Idx)
62365  , p_source_57 => l_array_source_57(Idx)
62366  , p_source_69 => l_array_source_69(Idx)
62367  , p_source_69_meaning => l_array_source_69_meaning(Idx)
62368  , p_source_71 => l_array_source_71(Idx)
62369  , p_source_72 => l_array_source_72(Idx)
62370  , p_source_79 => l_array_source_79(Idx)
62371  , p_source_80 => l_array_source_80(Idx)
62372  , p_source_81 => l_array_source_81(Idx)
62373  , p_source_82 => l_array_source_82(Idx)
62374  , p_source_83 => l_array_source_83(Idx)
62375  , p_source_84 => l_array_source_84(Idx)
62376  );
62377 If(l_balance_type_code = 'A') THEN
62378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62379 END IF;
62380 
62381 --
62382 
62383 
62384 --
62385 AcctLineType_105 (
62386  p_application_id  => p_application_id
62387  ,p_event_id     => l_event_id
62388  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62389  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62390  ,p_actual_flag => l_actual_flag
62391  ,p_balance_type_code => l_balance_type_code
62392  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62393  
62394  , p_source_2 => l_array_source_2(Idx)
62395  , p_source_3 => l_array_source_3(Idx)
62396  , p_source_6 => l_array_source_6(Idx)
62397  , p_source_22 => l_array_source_22(Idx)
62398  , p_source_23 => l_array_source_23(Idx)
62399  , p_source_25 => l_array_source_25(Idx)
62400  , p_source_27 => l_array_source_27(Idx)
62401  , p_source_28 => l_array_source_28(Idx)
62402  , p_source_29 => l_array_source_29(Idx)
62403  , p_source_30 => l_array_source_30(Idx)
62404  , p_source_31 => l_array_source_31(Idx)
62405  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62406  , p_source_33 => l_array_source_33(Idx)
62407  , p_source_34 => l_array_source_34(Idx)
62408  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62409  , p_source_35 => l_array_source_35(Idx)
62410  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
62411  , p_source_44 => l_array_source_44(Idx)
62412  , p_source_45 => l_array_source_45(Idx)
62413  , p_source_46 => l_array_source_46(Idx)
62414  , p_source_47 => l_array_source_47(Idx)
62415  , p_source_48 => l_array_source_48(Idx)
62419  , p_source_52 => l_array_source_52(Idx)
62416  , p_source_49 => l_array_source_49(Idx)
62417  , p_source_50 => l_array_source_50(Idx)
62418  , p_source_51 => l_array_source_51(Idx)
62420  , p_source_53 => l_array_source_53(Idx)
62421  , p_source_54 => l_array_source_54(Idx)
62422  , p_source_55 => l_array_source_55(Idx)
62423  , p_source_56 => l_array_source_56(Idx)
62424  , p_source_57 => l_array_source_57(Idx)
62425  , p_source_85 => l_array_source_85(Idx)
62426  , p_source_86 => l_array_source_86(Idx)
62427  );
62428 If(l_balance_type_code = 'A') THEN
62429   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62430 END IF;
62431 
62432 --
62433 
62434 
62435 --
62436 AcctLineType_109 (
62437  p_application_id  => p_application_id
62438  ,p_event_id     => l_event_id
62439  ,p_calculate_acctd_flag => l_calculate_acctd_flag
62440  ,p_calculate_g_l_flag => l_calculate_g_l_flag
62441  ,p_actual_flag => l_actual_flag
62442  ,p_balance_type_code => l_balance_type_code
62443  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
62444  
62445  , p_source_2 => l_array_source_2(Idx)
62446  , p_source_3 => l_array_source_3(Idx)
62447  , p_source_6 => l_array_source_6(Idx)
62448  , p_source_22 => l_array_source_22(Idx)
62449  , p_source_23 => l_array_source_23(Idx)
62450  , p_source_25 => l_array_source_25(Idx)
62451  , p_source_27 => l_array_source_27(Idx)
62452  , p_source_28 => l_array_source_28(Idx)
62453  , p_source_29 => l_array_source_29(Idx)
62454  , p_source_30 => l_array_source_30(Idx)
62455  , p_source_31 => l_array_source_31(Idx)
62456  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
62457  , p_source_33 => l_array_source_33(Idx)
62458  , p_source_34 => l_array_source_34(Idx)
62459  , p_source_34_meaning => l_array_source_34_meaning(Idx)
62460  , p_source_35 => l_array_source_35(Idx)
62461  , p_source_44 => l_array_source_44(Idx)
62462  , p_source_45 => l_array_source_45(Idx)
62463  , p_source_46 => l_array_source_46(Idx)
62464  , p_source_53 => l_array_source_53(Idx)
62465  , p_source_54 => l_array_source_54(Idx)
62466  , p_source_55 => l_array_source_55(Idx)
62467  , p_source_56 => l_array_source_56(Idx)
62468  , p_source_57 => l_array_source_57(Idx)
62469  , p_source_69 => l_array_source_69(Idx)
62470  , p_source_69_meaning => l_array_source_69_meaning(Idx)
62471  , p_source_71 => l_array_source_71(Idx)
62472  , p_source_72 => l_array_source_72(Idx)
62473  , p_source_79 => l_array_source_79(Idx)
62474  , p_source_80 => l_array_source_80(Idx)
62475  , p_source_81 => l_array_source_81(Idx)
62476  , p_source_82 => l_array_source_82(Idx)
62477  , p_source_83 => l_array_source_83(Idx)
62478  , p_source_84 => l_array_source_84(Idx)
62479  );
62480 If(l_balance_type_code = 'A') THEN
62481   l_actual_gain_loss_ref := l_gain_or_loss_ref;
62482 END IF;
62483 
62484 --
62485 
62486       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
62487       -- or secondary ledger that has different currency with primary
62488       -- or alc that is calculated by sla
62489       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
62490             (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'))
62491 
62492 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
62493 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
62494           AND (l_actual_flag = 'A')) THEN
62495         XLA_AE_LINES_PKG.CreateGainOrLossLines(
62496           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
62497          ,p_application_id   => p_application_id
62498          ,p_amb_context_code => 'DEFAULT'
62499          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
62500          ,p_event_class_code => C_EVENT_CLASS_CODE
62501          ,p_event_type_code  => C_EVENT_TYPE_CODE
62502          
62503          ,p_gain_ccid        => -1
62504          ,p_loss_ccid        => -1
62505 
62506          ,p_actual_flag      => l_actual_flag
62507          ,p_enc_flag         => null
62508          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
62509          ,p_enc_g_l_ref      => null
62510          );
62511       END IF;
62512    END IF;
62513 END IF;
62514 
62515    ELSE
62516       --
62517       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
62518       --
62519       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62520          trace
62521             (p_msg      => 'Trancaction revesal option is Y'
62522             ,p_level    => C_LEVEL_STATEMENT
62523             ,p_module   => l_log_module);
62524       END IF;
62525    END IF;
62526 
62527 END LOOP;
62528 l_result := XLA_AE_LINES_PKG.InsertLines ;
62529 end loop;
62530 close line_cur;
62531 
62532 
62533 --
62534 -- insert headers into xla_ae_headers_gt table
62535 --
62536 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
62537 
62538 -- insert into errors table here.
62539 
62540 END LOOP;
62541 
62542 --
62543 -- 4865292
62544 --
62545 -- Compare g_hdr_extract_count with event count in
62546 -- CreateHeadersAndLines.
62547 --
62548 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
62549 
62553                     || g_hdr_extract_count
62550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62551    trace (p_msg     => '# rows extracted from header extract objects '
62552                     || ' (running total): '
62554          ,p_level   => C_LEVEL_STATEMENT
62555          ,p_module  => l_log_module);
62556 END IF;
62557 
62558 CLOSE header_cur;
62559 --
62560 
62561 --
62562 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62563    trace
62564       (p_msg      => 'END of EventClass_114'
62565       ,p_level    => C_LEVEL_PROCEDURE
62566       ,p_module   => l_log_module);
62567 END IF;
62568 --
62569 RETURN l_result;
62570 EXCEPTION
62571 WHEN xla_exceptions_pkg.application_exception THEN
62572    
62573 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
62574 
62575    
62576 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
62577 
62578    RAISE;
62579 WHEN OTHERS THEN
62580    xla_exceptions_pkg.raise_message
62581       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_114');
62582 END EventClass_114;
62583 --
62584 
62585 ---------------------------------------
62586 --
62587 -- PRIVATE PROCEDURE
62588 --         insert_sources_115
62589 --
62590 ----------------------------------------
62591 --
62592 PROCEDURE insert_sources_115(
62593                                 p_target_ledger_id       IN NUMBER
62594                               , p_language               IN VARCHAR2
62595                               , p_sla_ledger_id          IN NUMBER
62596                               , p_pad_start_date         IN DATE
62597                               , p_pad_end_date           IN DATE
62598                          )
62599 IS
62600 
62601 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ADJ_ALL';
62602 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVENTORY_COST_ADJ';
62603 p_apps_owner                   VARCHAR2(30);
62604 l_log_module                   VARCHAR2(240);
62605 BEGIN
62606 IF g_log_enabled THEN
62607       l_log_module := C_DEFAULT_MODULE||'.insert_sources_115';
62608 END IF;
62609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62610 
62611       trace
62612          (p_msg      => 'BEGIN of insert_sources_115'
62613          ,p_level    => C_LEVEL_PROCEDURE
62614          ,p_module   => l_log_module);
62615 
62616 END IF;
62617 
62618 -- select APPS owner
62619 SELECT oracle_username
62620   INTO p_apps_owner
62621   FROM fnd_oracle_userid
62622  WHERE read_only_flag = 'U'
62623 ;
62624 
62625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62626       trace
62627          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
62628                         ' - p_language = '||p_language||
62629                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
62630                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
62631                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
62632                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
62633          ,p_level    => C_LEVEL_STATEMENT
62634          ,p_module   => l_log_module);
62635 END IF;
62636 
62637 
62638 --
62639 INSERT INTO xla_diag_sources --hdr2
62640 (
62641         event_id
62642       , ledger_id
62643       , sla_ledger_id
62644       , description_language
62645       , object_name
62646       , object_type_code
62647       , line_number
62648       , source_application_id
62649       , source_type_code
62650       , source_code
62651       , source_value
62652       , source_meaning
62653       , created_by
62654       , creation_date
62655       , last_update_date
62656       , last_updated_by
62657       , last_update_login
62658       , program_update_date
62659       , program_application_id
62660       , program_id
62661       , request_id
62662 )
62663 SELECT
62664         event_id
62665       , p_target_ledger_id
62666       , p_sla_ledger_id
62667       , p_language
62668       , object_name
62669       , object_type_code
62670       , line_number
62671       , source_application_id
62672       , source_type_code
62673       , source_code
62674       , SUBSTR(source_value ,1,1996)
62675       , SUBSTR(source_meaning ,1,200)
62676       , xla_environment_pkg.g_Usr_Id
62677       , TRUNC(SYSDATE)
62678       , TRUNC(SYSDATE)
62679       , xla_environment_pkg.g_Usr_Id
62680       , xla_environment_pkg.g_Login_Id
62681       , TRUNC(SYSDATE)
62682       , xla_environment_pkg.g_Prog_Appl_Id
62683       , xla_environment_pkg.g_Prog_Id
62684       , xla_environment_pkg.g_Req_Id
62685   FROM (
62686        SELECT xet.event_id                  event_id
62687             , 0                          line_number
62688             , CASE r
62689                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
62690                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
62691                 
62692                ELSE null
62693               END                           object_name
62694             , CASE r
62695                 WHEN 1 THEN 'HEADER' 
62696                 WHEN 2 THEN 'HEADER' 
62697                 
62698                 ELSE null
62699               END                           object_type_code
62700             , CASE r
62704                 ELSE null
62701                 WHEN 1 THEN '275' 
62702                 WHEN 2 THEN '275' 
62703                 
62705               END                           source_application_id
62706             , 'S'             source_type_code
62707             , CASE r
62708                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
62709                 WHEN 2 THEN 'GL_DATE' 
62710                 
62711                 ELSE null
62712               END                           source_code
62713             , CASE r
62714                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
62715                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
62716                 
62717                 ELSE null
62718               END                           source_value
62719             , null              source_meaning
62720          FROM xla_events_gt     xet  
62721       , PA_XLA_EXP_HEADER_V  h2
62722              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
62723          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
62724            AND xet.event_class_code = C_EVENT_CLASS_CODE
62725               AND h2.event_id = xet.event_id
62726 
62727 )
62728 ;
62729 --
62730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62731 
62732       trace
62733          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
62734          ,p_level    => C_LEVEL_STATEMENT
62735          ,p_module   => l_log_module);
62736 
62737 END IF;
62738 --
62739 
62740 
62741 
62742 --
62743 INSERT INTO xla_diag_sources  --line2
62744 (
62745         event_id
62746       , ledger_id
62747       , sla_ledger_id
62748       , description_language
62749       , object_name
62750       , object_type_code
62751       , line_number
62752       , source_application_id
62753       , source_type_code
62754       , source_code
62755       , source_value
62756       , source_meaning
62757       , created_by
62758       , creation_date
62759       , last_update_date
62760       , last_updated_by
62761       , last_update_login
62762       , program_update_date
62763       , program_application_id
62764       , program_id
62765       , request_id
62766 )
62767 SELECT  event_id
62768       , p_target_ledger_id
62769       , p_sla_ledger_id
62770       , p_language
62771       , object_name
62772       , object_type_code
62773       , line_number
62774       , source_application_id
62775       , source_type_code
62776       , source_code
62777       , SUBSTR(source_value,1,1996)
62778       , SUBSTR(source_meaning ,1,200)
62779       , xla_environment_pkg.g_Usr_Id
62780       , TRUNC(SYSDATE)
62781       , TRUNC(SYSDATE)
62782       , xla_environment_pkg.g_Usr_Id
62783       , xla_environment_pkg.g_Login_Id
62784       , TRUNC(SYSDATE)
62785       , xla_environment_pkg.g_Prog_Appl_Id
62786       , xla_environment_pkg.g_Prog_Id
62787       , xla_environment_pkg.g_Req_Id
62788   FROM (
62789        SELECT xet.event_id                  event_id
62790             , l1.line_number                 line_number
62791             , CASE r
62792                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
62793                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
62794                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
62795                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
62796                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
62797                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
62798                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
62799                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
62800                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
62801                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
62802                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
62803                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
62804                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
62805                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
62806                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
62807                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
62808                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
62809                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
62810                 
62811                ELSE null
62812               END                           object_name
62813             , CASE r
62814                 WHEN 1 THEN 'LINE' 
62815                 WHEN 2 THEN 'LINE' 
62816                 WHEN 3 THEN 'LINE' 
62817                 WHEN 4 THEN 'LINE' 
62818                 WHEN 5 THEN 'LINE' 
62819                 WHEN 6 THEN 'LINE' 
62820                 WHEN 7 THEN 'LINE' 
62821                 WHEN 8 THEN 'LINE' 
62822                 WHEN 9 THEN 'LINE' 
62823                 WHEN 10 THEN 'LINE' 
62824                 WHEN 11 THEN 'LINE' 
62825                 WHEN 12 THEN 'LINE' 
62826                 WHEN 13 THEN 'LINE' 
62827                 WHEN 14 THEN 'LINE' 
62828                 WHEN 15 THEN 'LINE' 
62829                 WHEN 16 THEN 'LINE' 
62830                 WHEN 17 THEN 'LINE' 
62831                 WHEN 18 THEN 'LINE' 
62832                 
62833                 ELSE null
62834               END                           object_type_code
62835             , CASE r
62836                 WHEN 1 THEN '275' 
62837                 WHEN 2 THEN '275' 
62838                 WHEN 3 THEN '275' 
62839                 WHEN 4 THEN '275' 
62840                 WHEN 5 THEN '275' 
62841                 WHEN 6 THEN '275' 
62845                 WHEN 10 THEN '275' 
62842                 WHEN 7 THEN '275' 
62843                 WHEN 8 THEN '275' 
62844                 WHEN 9 THEN '275' 
62846                 WHEN 11 THEN '275' 
62847                 WHEN 12 THEN '275' 
62848                 WHEN 13 THEN '275' 
62849                 WHEN 14 THEN '275' 
62850                 WHEN 15 THEN '275' 
62851                 WHEN 16 THEN '275' 
62852                 WHEN 17 THEN '275' 
62853                 WHEN 18 THEN '275' 
62854                 
62855                 ELSE null
62856               END                           source_application_id
62857             , 'S'             source_type_code
62858             , CASE r
62859                 WHEN 1 THEN 'COST_CCID' 
62860                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
62861                 WHEN 3 THEN 'ADJ_COST_CCID' 
62862                 WHEN 4 THEN 'COST_CLEARING_CCID' 
62863                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
62864                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
62865                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
62866                 WHEN 8 THEN 'ENTERED_RAW_COST' 
62867                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
62868                 WHEN 10 THEN 'ACCT_RAW_COST' 
62869                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
62870                 WHEN 12 THEN 'EXCHANGE_RATE' 
62871                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
62872                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
62873                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
62874                 WHEN 16 THEN 'LINE_NUMBER' 
62875                 WHEN 17 THEN 'LINE_TYPE' 
62876                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
62877                 
62878                 ELSE null
62879               END                           source_code
62880             , CASE r
62881                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
62882                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
62883                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
62884                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
62885                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
62886                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
62887                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
62888                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
62889                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
62890                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
62891                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
62892                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
62893                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
62894                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
62895                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
62896                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
62897                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
62898                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
62899                 
62900                 ELSE null
62901               END                           source_value
62902             , CASE r
62903                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
62904                           103371
62905                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
62906                          ,'ALLOW_OVERRIDE_CCID_FLAG'
62907                          ,'S'
62908                          ,275)
62909                 WHEN 17 THEN fvl34.meaning
62910                 
62911                 ELSE null
62912               END               source_meaning
62913          FROM  xla_events_gt     xet  
62914         , PA_XLA_CDL_LINES_V  l1
62915   , fnd_lookup_values    fvl34
62916             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
62917         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
62918           AND xet.event_class_code = C_EVENT_CLASS_CODE
62919             AND l1.event_id          = xet.event_id
62920    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
62921   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
62922   AND fvl34.view_application_id(+) = 275
62923   AND fvl34.language(+)            = USERENV('LANG')
62924   
62925 )
62926 ;
62927 --
62928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62929 
62930       trace
62931          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
62932          ,p_level    => C_LEVEL_STATEMENT
62933          ,p_module   => l_log_module);
62934 
62935 END IF;
62936 
62937 
62938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62939       trace
62940          (p_msg      => 'END of insert_sources_115'
62941          ,p_level    => C_LEVEL_PROCEDURE
62942          ,p_module   => l_log_module);
62943 END IF;
62944 EXCEPTION
62945   WHEN xla_exceptions_pkg.application_exception THEN
62946       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
62947             trace
62948                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
62949                ,p_level    => C_LEVEL_EXCEPTION
62950                ,p_module   => l_log_module);
62951       END IF;
62952       RAISE;
62953   WHEN OTHERS THEN
62954       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
62955             trace
62956                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
62957                ,p_level    => C_LEVEL_EXCEPTION
62958                ,p_module   => l_log_module);
62959        END IF;
62960        xla_exceptions_pkg.raise_message
62964 
62961            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_115');
62962 END insert_sources_115;
62963 --
62965 ---------------------------------------
62966 --
62967 -- PRIVATE FUNCTION
62968 --         EventClass_115
62969 --
62970 ----------------------------------------
62971 --
62972 FUNCTION EventClass_115
62973        (p_application_id         IN NUMBER
62974        ,p_base_ledger_id         IN NUMBER
62975        ,p_target_ledger_id       IN NUMBER
62976        ,p_language               IN VARCHAR2
62977        ,p_currency_code          IN VARCHAR2
62978        ,p_sla_ledger_id          IN NUMBER
62979        ,p_pad_start_date         IN DATE
62980        ,p_pad_end_date           IN DATE
62981        ,p_primary_ledger_id      IN NUMBER)
62982 RETURN BOOLEAN IS
62983 --
62984 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ADJ_ALL';
62985 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVENTORY_COST_ADJ';
62986 
62987 l_calculate_acctd_flag   VARCHAR2(1) :='N';
62988 l_calculate_g_l_flag     VARCHAR2(1) :='N';
62989 --
62990 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
62991 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
62992 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
62993 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
62994 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
62995 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
62996 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
62997 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
62998 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
62999 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63000 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63001 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63002 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63003 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63004 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63005 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63006 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63007 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63008 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63009 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63010 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63011 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63012 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
63013 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63014 
63015 l_event_id                             NUMBER;
63016 l_previous_event_id                    NUMBER;
63017 l_first_event_id                       NUMBER;
63018 l_last_event_id                        NUMBER;
63019 
63020 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
63021 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
63022 --
63023 --
63024 l_result                    BOOLEAN := TRUE;
63025 l_rows                      NUMBER  := 1000;
63026 l_event_type_name           VARCHAR2(80) := 'All';
63027 l_event_class_name          VARCHAR2(80) := 'Inventory Cost Adjustment';
63028 l_description               VARCHAR2(4000);
63029 l_transaction_reversal      NUMBER;
63030 l_ae_header_id              NUMBER;
63031 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
63032 l_log_module                VARCHAR2(240);
63033 --
63034 l_acct_reversal_source      VARCHAR2(30);
63035 l_trx_reversal_source       VARCHAR2(30);
63036 
63037 l_continue_with_lines       BOOLEAN := TRUE;
63038 --
63039 l_acc_rev_gl_date_source    DATE;                      -- 4262811
63040 --
63041 type t_array_event_id is table of number index by binary_integer;
63042 
63043 l_rec_array_event                    t_rec_array_event;
63044 l_null_rec_array_event               t_rec_array_event;
63045 l_array_ae_header_id                 xla_number_array_type;
63046 l_actual_flag                        VARCHAR2(1) := NULL;
63047 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
63048 l_balance_type_code                  VARCHAR2(1) :=NULL;
63049 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
63050 
63051 --
63052 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
63053 --
63054 
63055 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
63056 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
63057 
63058 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
63059 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
63060 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
63061 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
63062 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
63063 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
63067 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
63064 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
63065 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
63066 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
63068 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
63069 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
63070 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
63071 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
63072 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
63073 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
63074 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
63075 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
63076 
63077 l_array_source_32              t_array_source_32;
63078 l_array_source_87              t_array_source_87;
63079 
63080 l_array_source_3      t_array_source_3;
63081 l_array_source_4      t_array_source_4;
63082 l_array_source_5      t_array_source_5;
63083 l_array_source_6      t_array_source_6;
63084 l_array_source_7      t_array_source_7;
63085 l_array_source_22      t_array_source_22;
63086 l_array_source_23      t_array_source_23;
63087 l_array_source_24      t_array_source_24;
63088 l_array_source_25      t_array_source_25;
63089 l_array_source_26      t_array_source_26;
63090 l_array_source_27      t_array_source_27;
63091 l_array_source_28      t_array_source_28;
63092 l_array_source_29      t_array_source_29;
63093 l_array_source_30      t_array_source_30;
63094 l_array_source_31      t_array_source_31;
63095 l_array_source_33      t_array_source_33;
63096 l_array_source_34      t_array_source_34;
63097 l_array_source_34_meaning      t_array_lookup_meaning;
63098 l_array_source_35      t_array_source_35;
63099 
63100 --
63101 CURSOR header_cur
63102 IS
63103 SELECT /*+ leading(xet) cardinality(xet,1) */
63104 -- Event Class Code: INVENTORY_COST_ADJ
63105     xet.entity_id
63106    ,xet.legal_entity_id
63107    ,xet.entity_code
63108    ,xet.transaction_number
63109    ,xet.event_id
63110    ,xet.event_class_code
63111    ,xet.event_type_code
63112    ,xet.event_number
63113    ,xet.event_date
63114    ,xet.transaction_date
63115    ,xet.reference_num_1
63116    ,xet.reference_num_2
63117    ,xet.reference_num_3
63118    ,xet.reference_num_4
63119    ,xet.reference_char_1
63120    ,xet.reference_char_2
63121    ,xet.reference_char_3
63122    ,xet.reference_char_4
63123    ,xet.reference_date_1
63124    ,xet.reference_date_2
63125    ,xet.reference_date_3
63126    ,xet.reference_date_4
63127    ,xet.event_created_by
63128    ,xet.budgetary_control_flag 
63129   , h2.EXPENDITURE_ITEM_ID    source_32
63130   , h2.GL_DATE    source_87
63131   FROM xla_events_gt     xet 
63132   , PA_XLA_EXP_HEADER_V  h2
63133  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
63134    and xet.event_class_code = C_EVENT_CLASS_CODE
63135    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
63136 
63137  ORDER BY event_id
63138 ;
63139 
63140 
63141 --
63142 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
63143 IS
63144 SELECT  /*+ leading(xet) cardinality(xet,1) */
63145 -- Event Class Code: INVENTORY_COST_ADJ
63146     xet.entity_id
63147    ,xet.legal_entity_id
63148    ,xet.entity_code
63149    ,xet.transaction_number
63150    ,xet.event_id
63151    ,xet.event_class_code
63152    ,xet.event_type_code
63153    ,xet.event_number
63154    ,xet.event_date
63155    ,xet.transaction_date
63156    ,xet.reference_num_1
63157    ,xet.reference_num_2
63158    ,xet.reference_num_3
63159    ,xet.reference_num_4
63160    ,xet.reference_char_1
63161    ,xet.reference_char_2
63162    ,xet.reference_char_3
63163    ,xet.reference_char_4
63164    ,xet.reference_date_1
63165    ,xet.reference_date_2
63166    ,xet.reference_date_3
63167    ,xet.reference_date_4
63168    ,xet.event_created_by
63169    ,xet.budgetary_control_flag
63170  , l1.LINE_NUMBER  
63171   , l1.COST_CCID    source_3
63172   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
63173   , l1.ADJ_COST_CCID    source_5
63174   , l1.COST_CLEARING_CCID    source_6
63175   , l1.ADJ_COST_CLEARING_CCID    source_7
63176   , l1.REVERSING_LINE_FLAG    source_22
63177   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
63178   , l1.ENTERED_RAW_COST    source_24
63179   , l1.ENTERED_CURRENCY_CODE    source_25
63180   , l1.ACCT_RAW_COST    source_26
63181   , l1.EXCHANGE_RATE_DATE    source_27
63182   , l1.EXCHANGE_RATE    source_28
63183   , l1.EXCHANGE_RATE_TYPE    source_29
63184   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
63185   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
63186   , l1.LINE_NUMBER    source_33
63187   , l1.LINE_TYPE    source_34
63188   , fvl34.meaning   source_34_meaning
63189   , l1.LINE_NUM_REVERSED    source_35
63190   FROM xla_events_gt     xet 
63194    and xet.event_date between p_pad_start_date and p_pad_end_date
63191   , PA_XLA_CDL_LINES_V  l1
63192   , fnd_lookup_values    fvl34
63193  WHERE xet.event_id between x_first_event_id and x_last_event_id
63195    and xet.event_class_code = C_EVENT_CLASS_CODE
63196    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
63197    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
63198   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
63199   AND fvl34.view_application_id(+) = 275
63200   AND fvl34.language(+)            = USERENV('LANG')
63201   ;
63202 
63203 --
63204 BEGIN
63205 IF g_log_enabled THEN
63206    l_log_module := C_DEFAULT_MODULE||'.EventClass_115';
63207 END IF;
63208 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63209    trace
63210       (p_msg      => 'BEGIN of EventClass_115'
63211       ,p_level    => C_LEVEL_PROCEDURE
63212       ,p_module   => l_log_module);
63213 END IF;
63214 
63215 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63216    trace
63217       (p_msg      => 'p_application_id = '||p_application_id||
63218                      ' - p_base_ledger_id = '||p_base_ledger_id||
63219                      ' - p_target_ledger_id  = '||p_target_ledger_id||
63220                      ' - p_language = '||p_language||
63221                      ' - p_currency_code = '||p_currency_code||
63222                      ' - p_sla_ledger_id = '||p_sla_ledger_id
63223       ,p_level    => C_LEVEL_STATEMENT
63224       ,p_module   => l_log_module);
63225 END IF;
63226 --
63227 -- initialze arrays
63228 --
63229 g_array_event.DELETE;
63230 l_rec_array_event := l_null_rec_array_event;
63231 --
63232 --------------------------------------
63233 -- 4262811 Initialze MPA Line Number
63234 --------------------------------------
63235 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
63236 
63237 --
63238 
63239 --
63240 OPEN header_cur;
63241 --
63242 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63243    trace
63244    (p_msg      => 'SQL - FETCH header_cur'
63245    ,p_level    => C_LEVEL_STATEMENT
63246    ,p_module   => l_log_module);
63247 END IF;
63248 --
63249 LOOP
63250 FETCH header_cur BULK COLLECT INTO
63251         l_array_entity_id
63252       , l_array_legal_entity_id
63253       , l_array_entity_code
63254       , l_array_transaction_num
63255       , l_array_event_id
63256       , l_array_class_code
63257       , l_array_event_type
63258       , l_array_event_number
63259       , l_array_event_date
63260       , l_array_transaction_date
63261       , l_array_reference_num_1
63262       , l_array_reference_num_2
63263       , l_array_reference_num_3
63264       , l_array_reference_num_4
63265       , l_array_reference_char_1
63266       , l_array_reference_char_2
63267       , l_array_reference_char_3
63268       , l_array_reference_char_4
63269       , l_array_reference_date_1
63270       , l_array_reference_date_2
63271       , l_array_reference_date_3
63272       , l_array_reference_date_4
63273       , l_array_event_created_by
63274       , l_array_budgetary_control_flag 
63275       , l_array_source_32
63276       , l_array_source_87
63277       LIMIT l_rows;
63278 --
63279 IF (C_LEVEL_EVENT >= g_log_level) THEN
63280    trace
63281    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
63282    ,p_level    => C_LEVEL_EVENT
63283    ,p_module   => l_log_module);
63284 END IF;
63285 --
63286 EXIT WHEN l_array_entity_id.COUNT = 0;
63287 
63288 -- initialize arrays
63289 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
63290 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
63291 
63292 --
63293 -- Bug 4458708
63294 --
63295 XLA_AE_LINES_PKG.g_LineNumber := 0;
63296 
63297 
63298 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
63299 g_last_hdr_idx := l_array_event_id.LAST;
63300 --
63301 -- loop for the headers. Each iteration is for each header extract row
63302 -- fetched in header cursor
63303 --
63304 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
63305 
63306 --
63307 -- set event info as cache for other routines to refer event attributes
63308 --
63309 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
63310    (p_application_id           => p_application_id
63311    ,p_primary_ledger_id        => p_primary_ledger_id
63312    ,p_base_ledger_id           => p_base_ledger_id
63313    ,p_target_ledger_id         => p_target_ledger_id
63314    ,p_entity_id                => l_array_entity_id(hdr_idx)
63315    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
63316    ,p_entity_code              => l_array_entity_code(hdr_idx)
63317    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
63318    ,p_event_id                 => l_array_event_id(hdr_idx)
63319    ,p_event_class_code         => l_array_class_code(hdr_idx)
63320    ,p_event_type_code          => l_array_event_type(hdr_idx)
63321    ,p_event_number             => l_array_event_number(hdr_idx)
63322    ,p_event_date               => l_array_event_date(hdr_idx)
63323    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
63324    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
63325    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
63329    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
63326    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
63327    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
63328    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
63330    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
63331    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
63332    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
63333    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
63334    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
63335    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
63336    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
63337    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
63338 
63339 --
63340 -- set the status of entry to C_VALID (0)
63341 --
63342 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
63343 
63344 --
63345 -- initialize a row for ae header
63346 --
63347 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
63348 
63349 l_event_id := l_array_event_id(hdr_idx);
63350 
63351 --
63352 -- storing the hdr_idx for event. May be used by line cursor.
63353 --
63354 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
63355 
63356 --
63357 -- store sources from header extract. This can be improved to
63358 -- store only those sources from header extract that may be used in lines
63359 --
63360 
63361 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
63362 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
63363 
63364 --
63365 -- initilaize the status of ae headers for diffrent balance types
63366 -- the status is initialised to C_NOT_CREATED (2)
63367 --
63368 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63369 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63370 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63371 
63372 --
63373 -- call api to validate and store accounting attributes for header
63374 --
63375 
63376 ------------------------------------------------------------
63377 -- Accrual Reversal : to get date for Standard Source (NONE)
63378 ------------------------------------------------------------
63379 l_acc_rev_gl_date_source := NULL;
63380 
63381      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
63382       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
63383 
63384 
63385 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
63386 
63387 XLA_AE_HEADER_PKG.SetJeCategoryName;
63388 
63389 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
63390 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
63391 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
63392 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
63393 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
63394 
63395 
63396 -- No header level analytical criteria
63397 
63398 --
63399 --accounting attribute enhancement, bug 3612931
63400 --
63401 l_trx_reversal_source := SUBSTR(NULL, 1,30);
63402 
63403 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
63404    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
63405 
63406    xla_accounting_err_pkg.build_message
63407       (p_appli_s_name            => 'XLA'
63408       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
63409       ,p_token_1                 => 'ACCT_ATTR_NAME'
63410       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
63411       ,p_token_2                 => 'PRODUCT_NAME'
63412       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
63413       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
63414       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
63415       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
63416 
63417 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
63418    --
63419    -- following sets the accounting attributes needed to reverse
63420    -- accounting for a distributeion
63421    --
63422    xla_ae_lines_pkg.SetTrxReversalAttrs
63423       (p_event_id              => l_event_id
63424       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
63425       ,p_trx_reversal_source   => l_trx_reversal_source);
63426 
63427 END IF;
63428 
63429 
63430 ----------------------------------------------------------------
63431 -- 4262811 -  update the header statuses to invalid in need be
63432 ----------------------------------------------------------------
63433 --
63434 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
63435 
63436 
63437   -----------------------------------------------
63438   -- No accrual reversal for the event class/type
63439   -----------------------------------------------
63440 ----------------------------------------------------------------
63441 
63442 --
63443 -- this ends the header loop iteration for one bulk fetch
63444 --
63448 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
63445 END LOOP;
63446 
63447 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
63449 
63450 --
63451 -- insert dummy rows into lines gt table that were created due to
63452 -- transaction reversals
63453 --
63454 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
63455    l_result := XLA_AE_LINES_PKG.InsertLines;
63456 END IF;
63457 
63458 --
63459 -- reset the temp_line_num for each set of events fetched from header
63460 -- cursor rather than doing it for each new event in line cursor
63461 -- Bug 3939231
63462 --
63463 xla_ae_lines_pkg.g_temp_line_num := 0;
63464 
63465 
63466 
63467 --
63468 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
63469 --
63470 --
63471 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63472 
63473       trace
63474          (p_msg      => 'SQL - FETCH line_cur'
63475          ,p_level    => C_LEVEL_STATEMENT
63476          ,p_module   => l_log_module);
63477 
63478 END IF;
63479 --
63480 --
63481 LOOP
63482   --
63483   FETCH line_cur BULK COLLECT INTO
63484         l_array_entity_id
63485       , l_array_legal_entity_id
63486       , l_array_entity_code
63487       , l_array_transaction_num
63488       , l_array_event_id
63489       , l_array_class_code
63490       , l_array_event_type
63491       , l_array_event_number
63492       , l_array_event_date
63493       , l_array_transaction_date
63494       , l_array_reference_num_1
63495       , l_array_reference_num_2
63496       , l_array_reference_num_3
63497       , l_array_reference_num_4
63498       , l_array_reference_char_1
63499       , l_array_reference_char_2
63500       , l_array_reference_char_3
63501       , l_array_reference_char_4
63502       , l_array_reference_date_1
63503       , l_array_reference_date_2
63504       , l_array_reference_date_3
63505       , l_array_reference_date_4
63506       , l_array_event_created_by
63507       , l_array_budgetary_control_flag
63508       , l_array_extract_line_num 
63509       , l_array_source_3
63510       , l_array_source_4
63511       , l_array_source_5
63512       , l_array_source_6
63513       , l_array_source_7
63514       , l_array_source_22
63515       , l_array_source_23
63516       , l_array_source_24
63517       , l_array_source_25
63518       , l_array_source_26
63519       , l_array_source_27
63520       , l_array_source_28
63521       , l_array_source_29
63522       , l_array_source_30
63523       , l_array_source_31
63524       , l_array_source_33
63525       , l_array_source_34
63526       , l_array_source_34_meaning
63527       , l_array_source_35
63528       LIMIT l_rows;
63529 
63530   --
63531   IF (C_LEVEL_EVENT >= g_log_level) THEN
63532             trace
63533                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
63534                ,p_level    => C_LEVEL_EVENT
63535                ,p_module   => l_log_module);
63536   END IF;
63537   --
63538   EXIT WHEN l_array_entity_id.count = 0;
63539 
63540   XLA_AE_LINES_PKG.g_rec_lines := null;
63541 
63542 --
63543 -- Bug 4458708
63544 --
63545 XLA_AE_LINES_PKG.g_LineNumber := 0;
63546 --
63547 --
63548 
63549 FOR Idx IN 1..l_array_event_id.count LOOP
63550    --
63551    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
63552    --
63553    l_event_id := l_array_event_id(idx);  -- 5648433
63554 
63555    --
63556    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
63557    --
63558 
63559    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
63560              (g_array_event(l_event_id).array_value_num('header_index'))
63561          ,'N'
63562          ) <> 'Y'
63563    THEN
63564       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63565          trace
63566             (p_msg      => 'Trancaction revesal option is not Y '
63567             ,p_level    => C_LEVEL_STATEMENT
63568             ,p_module   => l_log_module);
63569       END IF;
63570 
63571 --
63572 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
63573 --
63574 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
63575 --
63576 -- set event info as cache for other routines to refer event attributes
63577 --
63578 
63579 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
63580    l_previous_event_id := l_event_id;
63581 
63582    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
63583       (p_application_id           => p_application_id
63584       ,p_primary_ledger_id        => p_primary_ledger_id
63585       ,p_base_ledger_id           => p_base_ledger_id
63586       ,p_target_ledger_id         => p_target_ledger_id
63587       ,p_entity_id                => l_array_entity_id(Idx)
63588       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
63589       ,p_entity_code              => l_array_entity_code(Idx)
63590       ,p_transaction_num          => l_array_transaction_num(Idx)
63591       ,p_event_id                 => l_array_event_id(Idx)
63592       ,p_event_class_code         => l_array_class_code(Idx)
63593       ,p_event_type_code          => l_array_event_type(Idx)
63594       ,p_event_number             => l_array_event_number(Idx)
63598       ,p_reference_num_2          => l_array_reference_num_2(Idx)
63595       ,p_event_date               => l_array_event_date(Idx)
63596       ,p_transaction_date         => l_array_transaction_date(Idx)
63597       ,p_reference_num_1          => l_array_reference_num_1(Idx)
63599       ,p_reference_num_3          => l_array_reference_num_3(Idx)
63600       ,p_reference_num_4          => l_array_reference_num_4(Idx)
63601       ,p_reference_char_1         => l_array_reference_char_1(Idx)
63602       ,p_reference_char_2         => l_array_reference_char_2(Idx)
63603       ,p_reference_char_3         => l_array_reference_char_3(Idx)
63604       ,p_reference_char_4         => l_array_reference_char_4(Idx)
63605       ,p_reference_date_1         => l_array_reference_date_1(Idx)
63606       ,p_reference_date_2         => l_array_reference_date_2(Idx)
63607       ,p_reference_date_3         => l_array_reference_date_3(Idx)
63608       ,p_reference_date_4         => l_array_reference_date_4(Idx)
63609       ,p_event_created_by         => l_array_event_created_by(Idx)
63610       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
63611        --
63612 END IF;
63613 
63614 
63615 
63616 --
63617 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
63618 
63619 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
63620 
63621 IF l_continue_with_lines THEN
63622    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
63623       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
63624 
63625       xla_accounting_err_pkg.build_message
63626          (p_appli_s_name            => 'XLA'
63627          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
63628          ,p_token_1                 => 'LINE_NUMBER'
63629          ,p_value_1                 => l_array_extract_line_num(Idx)
63630          ,p_token_2                 => 'PRODUCT_NAME'
63631          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
63632          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
63633          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
63634          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
63635 
63636    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
63637       --
63638       -- following sets the accounting attributes needed to reverse
63639       -- accounting for a distributeion
63640       --
63641 
63642       --
63643       -- 5217187
63644       --
63645       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
63646       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
63647                                        g_array_event(l_event_id).array_value_num('header_index'));
63648       --
63649       --
63650 
63651       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
63652       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
63653       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
63654       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
63655       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
63656       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
63657       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
63658       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
63659       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
63660       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
63661       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
63662       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
63663       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
63664       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
63665       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
63666       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
63667       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
63668       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
63669       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
63670       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
63671       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
63672       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
63673       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
63674       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
63675       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
63676       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
63677       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
63678       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
63679       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
63680       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
63681       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
63682       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
63683       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
63684       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
63688       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
63685       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
63686       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
63687       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
63689       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
63690       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
63691       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
63692       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
63693       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
63694       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
63695       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
63696       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
63697       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
63698       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
63699 
63700 
63701       xla_ae_lines_pkg.SetAcctReversalAttrs
63702          (p_event_id             => l_event_id
63703          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
63704          ,p_calculate_acctd_flag => l_calculate_acctd_flag
63705          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
63706    END IF;
63707 
63708    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
63709        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
63710 
63711 --
63712 AcctLineType_50 (
63713  p_application_id  => p_application_id
63714  ,p_event_id     => l_event_id
63715  ,p_calculate_acctd_flag => l_calculate_acctd_flag
63716  ,p_calculate_g_l_flag => l_calculate_g_l_flag
63717  ,p_actual_flag => l_actual_flag
63718  ,p_balance_type_code => l_balance_type_code
63719  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
63720  
63721  , p_source_3 => l_array_source_3(Idx)
63722  , p_source_4 => l_array_source_4(Idx)
63723  , p_source_5 => l_array_source_5(Idx)
63724  , p_source_6 => l_array_source_6(Idx)
63725  , p_source_22 => l_array_source_22(Idx)
63726  , p_source_23 => l_array_source_23(Idx)
63727  , p_source_24 => l_array_source_24(Idx)
63728  , p_source_25 => l_array_source_25(Idx)
63729  , p_source_26 => l_array_source_26(Idx)
63730  , p_source_27 => l_array_source_27(Idx)
63731  , p_source_28 => l_array_source_28(Idx)
63732  , p_source_29 => l_array_source_29(Idx)
63733  , p_source_30 => l_array_source_30(Idx)
63734  , p_source_31 => l_array_source_31(Idx)
63735  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
63736  , p_source_33 => l_array_source_33(Idx)
63737  , p_source_34 => l_array_source_34(Idx)
63738  , p_source_34_meaning => l_array_source_34_meaning(Idx)
63739  , p_source_35 => l_array_source_35(Idx)
63740  );
63741 If(l_balance_type_code = 'A') THEN
63742   l_actual_gain_loss_ref := l_gain_or_loss_ref;
63743 END IF;
63744 
63745 --
63746 
63747 
63748 --
63749 AcctLineType_64 (
63750  p_application_id  => p_application_id
63751  ,p_event_id     => l_event_id
63752  ,p_calculate_acctd_flag => l_calculate_acctd_flag
63753  ,p_calculate_g_l_flag => l_calculate_g_l_flag
63754  ,p_actual_flag => l_actual_flag
63755  ,p_balance_type_code => l_balance_type_code
63756  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
63757  
63758  , p_source_3 => l_array_source_3(Idx)
63759  , p_source_4 => l_array_source_4(Idx)
63760  , p_source_6 => l_array_source_6(Idx)
63761  , p_source_7 => l_array_source_7(Idx)
63762  , p_source_22 => l_array_source_22(Idx)
63763  , p_source_23 => l_array_source_23(Idx)
63764  , p_source_24 => l_array_source_24(Idx)
63765  , p_source_25 => l_array_source_25(Idx)
63766  , p_source_26 => l_array_source_26(Idx)
63767  , p_source_27 => l_array_source_27(Idx)
63768  , p_source_28 => l_array_source_28(Idx)
63769  , p_source_29 => l_array_source_29(Idx)
63770  , p_source_30 => l_array_source_30(Idx)
63771  , p_source_31 => l_array_source_31(Idx)
63772  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
63773  , p_source_33 => l_array_source_33(Idx)
63774  , p_source_34 => l_array_source_34(Idx)
63775  , p_source_34_meaning => l_array_source_34_meaning(Idx)
63776  , p_source_35 => l_array_source_35(Idx)
63777  );
63778 If(l_balance_type_code = 'A') THEN
63779   l_actual_gain_loss_ref := l_gain_or_loss_ref;
63780 END IF;
63781 
63782 --
63783 
63784       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
63785       -- or secondary ledger that has different currency with primary
63786       -- or alc that is calculated by sla
63787       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
63788             (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'))
63789 
63790 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
63791 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
63792           AND (l_actual_flag = 'A')) THEN
63793         XLA_AE_LINES_PKG.CreateGainOrLossLines(
63794           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
63795          ,p_application_id   => p_application_id
63799          ,p_event_type_code  => C_EVENT_TYPE_CODE
63796          ,p_amb_context_code => 'DEFAULT'
63797          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
63798          ,p_event_class_code => C_EVENT_CLASS_CODE
63800          
63801          ,p_gain_ccid        => -1
63802          ,p_loss_ccid        => -1
63803 
63804          ,p_actual_flag      => l_actual_flag
63805          ,p_enc_flag         => null
63806          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
63807          ,p_enc_g_l_ref      => null
63808          );
63809       END IF;
63810    END IF;
63811 END IF;
63812 
63813    ELSE
63814       --
63815       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
63816       --
63817       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63818          trace
63819             (p_msg      => 'Trancaction revesal option is Y'
63820             ,p_level    => C_LEVEL_STATEMENT
63821             ,p_module   => l_log_module);
63822       END IF;
63823    END IF;
63824 
63825 END LOOP;
63826 l_result := XLA_AE_LINES_PKG.InsertLines ;
63827 end loop;
63828 close line_cur;
63829 
63830 
63831 --
63832 -- insert headers into xla_ae_headers_gt table
63833 --
63834 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
63835 
63836 -- insert into errors table here.
63837 
63838 END LOOP;
63839 
63840 --
63841 -- 4865292
63842 --
63843 -- Compare g_hdr_extract_count with event count in
63844 -- CreateHeadersAndLines.
63845 --
63846 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
63847 
63848 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63849    trace (p_msg     => '# rows extracted from header extract objects '
63850                     || ' (running total): '
63851                     || g_hdr_extract_count
63852          ,p_level   => C_LEVEL_STATEMENT
63853          ,p_module  => l_log_module);
63854 END IF;
63855 
63856 CLOSE header_cur;
63857 --
63858 
63859 --
63860 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63861    trace
63862       (p_msg      => 'END of EventClass_115'
63863       ,p_level    => C_LEVEL_PROCEDURE
63864       ,p_module   => l_log_module);
63865 END IF;
63866 --
63867 RETURN l_result;
63868 EXCEPTION
63869 WHEN xla_exceptions_pkg.application_exception THEN
63870    
63871 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
63872 
63873    
63874 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
63875 
63876    RAISE;
63877 WHEN OTHERS THEN
63878    xla_exceptions_pkg.raise_message
63879       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_115');
63880 END EventClass_115;
63881 --
63882 
63883 ---------------------------------------
63884 --
63885 -- PRIVATE PROCEDURE
63886 --         insert_sources_116
63887 --
63888 ----------------------------------------
63889 --
63890 PROCEDURE insert_sources_116(
63891                                 p_target_ledger_id       IN NUMBER
63892                               , p_language               IN VARCHAR2
63893                               , p_sla_ledger_id          IN NUMBER
63894                               , p_pad_start_date         IN DATE
63895                               , p_pad_end_date           IN DATE
63896                          )
63897 IS
63898 
63899 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ALL';
63900 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVENTORY_COST';
63901 p_apps_owner                   VARCHAR2(30);
63902 l_log_module                   VARCHAR2(240);
63903 BEGIN
63904 IF g_log_enabled THEN
63905       l_log_module := C_DEFAULT_MODULE||'.insert_sources_116';
63906 END IF;
63907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63908 
63909       trace
63910          (p_msg      => 'BEGIN of insert_sources_116'
63911          ,p_level    => C_LEVEL_PROCEDURE
63912          ,p_module   => l_log_module);
63913 
63914 END IF;
63915 
63916 -- select APPS owner
63917 SELECT oracle_username
63918   INTO p_apps_owner
63919   FROM fnd_oracle_userid
63920  WHERE read_only_flag = 'U'
63921 ;
63922 
63923 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63924       trace
63925          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
63926                         ' - p_language = '||p_language||
63927                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
63928                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
63929                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
63930                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
63931          ,p_level    => C_LEVEL_STATEMENT
63932          ,p_module   => l_log_module);
63933 END IF;
63934 
63935 
63936 --
63937 INSERT INTO xla_diag_sources --hdr2
63938 (
63939         event_id
63940       , ledger_id
63941       , sla_ledger_id
63942       , description_language
63943       , object_name
63944       , object_type_code
63945       , line_number
63946       , source_application_id
63947       , source_type_code
63948       , source_code
63949       , source_value
63950       , source_meaning
63951       , created_by
63952       , creation_date
63953       , last_update_date
63957       , program_application_id
63954       , last_updated_by
63955       , last_update_login
63956       , program_update_date
63958       , program_id
63959       , request_id
63960 )
63961 SELECT
63962         event_id
63963       , p_target_ledger_id
63964       , p_sla_ledger_id
63965       , p_language
63966       , object_name
63967       , object_type_code
63968       , line_number
63969       , source_application_id
63970       , source_type_code
63971       , source_code
63972       , SUBSTR(source_value ,1,1996)
63973       , SUBSTR(source_meaning ,1,200)
63974       , xla_environment_pkg.g_Usr_Id
63975       , TRUNC(SYSDATE)
63976       , TRUNC(SYSDATE)
63977       , xla_environment_pkg.g_Usr_Id
63978       , xla_environment_pkg.g_Login_Id
63979       , TRUNC(SYSDATE)
63980       , xla_environment_pkg.g_Prog_Appl_Id
63981       , xla_environment_pkg.g_Prog_Id
63982       , xla_environment_pkg.g_Req_Id
63983   FROM (
63984        SELECT xet.event_id                  event_id
63985             , 0                          line_number
63986             , CASE r
63987                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
63988                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
63989                 
63990                ELSE null
63991               END                           object_name
63992             , CASE r
63993                 WHEN 1 THEN 'HEADER' 
63994                 WHEN 2 THEN 'HEADER' 
63995                 
63996                 ELSE null
63997               END                           object_type_code
63998             , CASE r
63999                 WHEN 1 THEN '275' 
64000                 WHEN 2 THEN '275' 
64001                 
64002                 ELSE null
64003               END                           source_application_id
64004             , 'S'             source_type_code
64005             , CASE r
64006                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
64007                 WHEN 2 THEN 'GL_DATE' 
64008                 
64009                 ELSE null
64010               END                           source_code
64011             , CASE r
64012                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
64013                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
64014                 
64015                 ELSE null
64016               END                           source_value
64017             , null              source_meaning
64018          FROM xla_events_gt     xet  
64019       , PA_XLA_EXP_HEADER_V  h2
64020              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
64021          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
64022            AND xet.event_class_code = C_EVENT_CLASS_CODE
64023               AND h2.event_id = xet.event_id
64024 
64025 )
64026 ;
64027 --
64028 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64029 
64030       trace
64031          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
64032          ,p_level    => C_LEVEL_STATEMENT
64033          ,p_module   => l_log_module);
64034 
64035 END IF;
64036 --
64037 
64038 
64039 
64040 --
64041 INSERT INTO xla_diag_sources  --line2
64042 (
64043         event_id
64044       , ledger_id
64045       , sla_ledger_id
64046       , description_language
64047       , object_name
64048       , object_type_code
64049       , line_number
64050       , source_application_id
64051       , source_type_code
64052       , source_code
64053       , source_value
64054       , source_meaning
64055       , created_by
64056       , creation_date
64057       , last_update_date
64058       , last_updated_by
64059       , last_update_login
64060       , program_update_date
64061       , program_application_id
64062       , program_id
64063       , request_id
64064 )
64065 SELECT  event_id
64066       , p_target_ledger_id
64067       , p_sla_ledger_id
64068       , p_language
64069       , object_name
64070       , object_type_code
64071       , line_number
64072       , source_application_id
64073       , source_type_code
64074       , source_code
64075       , SUBSTR(source_value,1,1996)
64076       , SUBSTR(source_meaning ,1,200)
64077       , xla_environment_pkg.g_Usr_Id
64078       , TRUNC(SYSDATE)
64079       , TRUNC(SYSDATE)
64080       , xla_environment_pkg.g_Usr_Id
64081       , xla_environment_pkg.g_Login_Id
64082       , TRUNC(SYSDATE)
64083       , xla_environment_pkg.g_Prog_Appl_Id
64084       , xla_environment_pkg.g_Prog_Id
64085       , xla_environment_pkg.g_Req_Id
64086   FROM (
64087        SELECT xet.event_id                  event_id
64088             , l1.line_number                 line_number
64089             , CASE r
64090                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
64091                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
64092                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
64093                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
64094                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
64095                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
64096                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
64097                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
64098                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
64099                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
64100                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
64101                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
64105                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
64102                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
64103                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
64104                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
64106                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
64107                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
64108                 
64109                ELSE null
64110               END                           object_name
64111             , CASE r
64112                 WHEN 1 THEN 'LINE' 
64113                 WHEN 2 THEN 'LINE' 
64114                 WHEN 3 THEN 'LINE' 
64115                 WHEN 4 THEN 'LINE' 
64116                 WHEN 5 THEN 'LINE' 
64117                 WHEN 6 THEN 'LINE' 
64118                 WHEN 7 THEN 'LINE' 
64119                 WHEN 8 THEN 'LINE' 
64120                 WHEN 9 THEN 'LINE' 
64121                 WHEN 10 THEN 'LINE' 
64122                 WHEN 11 THEN 'LINE' 
64123                 WHEN 12 THEN 'LINE' 
64124                 WHEN 13 THEN 'LINE' 
64125                 WHEN 14 THEN 'LINE' 
64126                 WHEN 15 THEN 'LINE' 
64127                 WHEN 16 THEN 'LINE' 
64128                 WHEN 17 THEN 'LINE' 
64129                 WHEN 18 THEN 'LINE' 
64130                 
64131                 ELSE null
64132               END                           object_type_code
64133             , CASE r
64134                 WHEN 1 THEN '275' 
64135                 WHEN 2 THEN '275' 
64136                 WHEN 3 THEN '275' 
64137                 WHEN 4 THEN '275' 
64138                 WHEN 5 THEN '275' 
64139                 WHEN 6 THEN '275' 
64140                 WHEN 7 THEN '275' 
64141                 WHEN 8 THEN '275' 
64142                 WHEN 9 THEN '275' 
64143                 WHEN 10 THEN '275' 
64144                 WHEN 11 THEN '275' 
64145                 WHEN 12 THEN '275' 
64146                 WHEN 13 THEN '275' 
64147                 WHEN 14 THEN '275' 
64148                 WHEN 15 THEN '275' 
64149                 WHEN 16 THEN '275' 
64150                 WHEN 17 THEN '275' 
64151                 WHEN 18 THEN '275' 
64152                 
64153                 ELSE null
64154               END                           source_application_id
64155             , 'S'             source_type_code
64156             , CASE r
64157                 WHEN 1 THEN 'COST_CCID' 
64158                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
64159                 WHEN 3 THEN 'ADJ_COST_CCID' 
64160                 WHEN 4 THEN 'COST_CLEARING_CCID' 
64161                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
64162                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
64163                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
64164                 WHEN 8 THEN 'ENTERED_RAW_COST' 
64165                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
64166                 WHEN 10 THEN 'ACCT_RAW_COST' 
64167                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
64168                 WHEN 12 THEN 'EXCHANGE_RATE' 
64169                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
64170                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
64171                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
64172                 WHEN 16 THEN 'LINE_NUMBER' 
64173                 WHEN 17 THEN 'LINE_TYPE' 
64174                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
64175                 
64176                 ELSE null
64177               END                           source_code
64178             , CASE r
64179                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
64180                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
64181                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
64182                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
64183                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
64184                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
64185                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
64186                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
64187                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
64188                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
64189                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
64190                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
64191                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
64192                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
64193                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
64194                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
64195                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
64196                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
64197                 
64198                 ELSE null
64199               END                           source_value
64200             , CASE r
64201                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
64202                           103371
64203                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
64204                          ,'ALLOW_OVERRIDE_CCID_FLAG'
64205                          ,'S'
64206                          ,275)
64207                 WHEN 17 THEN fvl34.meaning
64208                 
64209                 ELSE null
64210               END               source_meaning
64211          FROM  xla_events_gt     xet  
64212         , PA_XLA_CDL_LINES_V  l1
64213   , fnd_lookup_values    fvl34
64214             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
64215         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
64216           AND xet.event_class_code = C_EVENT_CLASS_CODE
64217             AND l1.event_id          = xet.event_id
64221   AND fvl34.language(+)            = USERENV('LANG')
64218    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
64219   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
64220   AND fvl34.view_application_id(+) = 275
64222   
64223 )
64224 ;
64225 --
64226 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64227 
64228       trace
64229          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
64230          ,p_level    => C_LEVEL_STATEMENT
64231          ,p_module   => l_log_module);
64232 
64233 END IF;
64234 
64235 
64236 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64237       trace
64238          (p_msg      => 'END of insert_sources_116'
64239          ,p_level    => C_LEVEL_PROCEDURE
64240          ,p_module   => l_log_module);
64241 END IF;
64242 EXCEPTION
64243   WHEN xla_exceptions_pkg.application_exception THEN
64244       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
64245             trace
64246                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
64247                ,p_level    => C_LEVEL_EXCEPTION
64248                ,p_module   => l_log_module);
64249       END IF;
64250       RAISE;
64251   WHEN OTHERS THEN
64252       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
64253             trace
64254                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
64255                ,p_level    => C_LEVEL_EXCEPTION
64256                ,p_module   => l_log_module);
64257        END IF;
64258        xla_exceptions_pkg.raise_message
64259            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_116');
64260 END insert_sources_116;
64261 --
64262 
64263 ---------------------------------------
64264 --
64265 -- PRIVATE FUNCTION
64266 --         EventClass_116
64267 --
64268 ----------------------------------------
64269 --
64270 FUNCTION EventClass_116
64271        (p_application_id         IN NUMBER
64272        ,p_base_ledger_id         IN NUMBER
64273        ,p_target_ledger_id       IN NUMBER
64274        ,p_language               IN VARCHAR2
64275        ,p_currency_code          IN VARCHAR2
64276        ,p_sla_ledger_id          IN NUMBER
64277        ,p_pad_start_date         IN DATE
64278        ,p_pad_end_date           IN DATE
64279        ,p_primary_ledger_id      IN NUMBER)
64280 RETURN BOOLEAN IS
64281 --
64282 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ALL';
64283 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVENTORY_COST';
64284 
64285 l_calculate_acctd_flag   VARCHAR2(1) :='N';
64286 l_calculate_g_l_flag     VARCHAR2(1) :='N';
64287 --
64288 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64289 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64290 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64291 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64292 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64293 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64294 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64295 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64296 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64297 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64298 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64299 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64300 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64301 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64302 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64303 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64304 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64305 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64306 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64307 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64308 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64309 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64310 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
64311 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64312 
64313 l_event_id                             NUMBER;
64314 l_previous_event_id                    NUMBER;
64315 l_first_event_id                       NUMBER;
64316 l_last_event_id                        NUMBER;
64317 
64318 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
64319 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
64320 --
64321 --
64322 l_result                    BOOLEAN := TRUE;
64323 l_rows                      NUMBER  := 1000;
64324 l_event_type_name           VARCHAR2(80) := 'All';
64325 l_event_class_name          VARCHAR2(80) := 'Inventory Cost';
64326 l_description               VARCHAR2(4000);
64327 l_transaction_reversal      NUMBER;
64328 l_ae_header_id              NUMBER;
64329 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
64330 l_log_module                VARCHAR2(240);
64331 --
64332 l_acct_reversal_source      VARCHAR2(30);
64333 l_trx_reversal_source       VARCHAR2(30);
64334 
64338 --
64335 l_continue_with_lines       BOOLEAN := TRUE;
64336 --
64337 l_acc_rev_gl_date_source    DATE;                      -- 4262811
64339 type t_array_event_id is table of number index by binary_integer;
64340 
64341 l_rec_array_event                    t_rec_array_event;
64342 l_null_rec_array_event               t_rec_array_event;
64343 l_array_ae_header_id                 xla_number_array_type;
64344 l_actual_flag                        VARCHAR2(1) := NULL;
64345 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
64346 l_balance_type_code                  VARCHAR2(1) :=NULL;
64347 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
64348 
64349 --
64350 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
64351 --
64352 
64353 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
64354 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
64355 
64356 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
64357 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
64358 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
64359 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
64360 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
64361 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
64362 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
64363 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
64364 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
64365 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
64366 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
64367 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
64368 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
64369 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
64370 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
64371 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
64372 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
64373 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
64374 
64375 l_array_source_32              t_array_source_32;
64376 l_array_source_87              t_array_source_87;
64377 
64378 l_array_source_3      t_array_source_3;
64379 l_array_source_4      t_array_source_4;
64380 l_array_source_5      t_array_source_5;
64381 l_array_source_6      t_array_source_6;
64382 l_array_source_7      t_array_source_7;
64383 l_array_source_22      t_array_source_22;
64384 l_array_source_23      t_array_source_23;
64385 l_array_source_24      t_array_source_24;
64386 l_array_source_25      t_array_source_25;
64387 l_array_source_26      t_array_source_26;
64388 l_array_source_27      t_array_source_27;
64389 l_array_source_28      t_array_source_28;
64390 l_array_source_29      t_array_source_29;
64391 l_array_source_30      t_array_source_30;
64392 l_array_source_31      t_array_source_31;
64393 l_array_source_33      t_array_source_33;
64394 l_array_source_34      t_array_source_34;
64395 l_array_source_34_meaning      t_array_lookup_meaning;
64396 l_array_source_35      t_array_source_35;
64397 
64398 --
64399 CURSOR header_cur
64400 IS
64401 SELECT /*+ leading(xet) cardinality(xet,1) */
64402 -- Event Class Code: INVENTORY_COST
64403     xet.entity_id
64404    ,xet.legal_entity_id
64405    ,xet.entity_code
64406    ,xet.transaction_number
64407    ,xet.event_id
64408    ,xet.event_class_code
64409    ,xet.event_type_code
64410    ,xet.event_number
64411    ,xet.event_date
64412    ,xet.transaction_date
64413    ,xet.reference_num_1
64414    ,xet.reference_num_2
64415    ,xet.reference_num_3
64416    ,xet.reference_num_4
64417    ,xet.reference_char_1
64418    ,xet.reference_char_2
64419    ,xet.reference_char_3
64420    ,xet.reference_char_4
64421    ,xet.reference_date_1
64422    ,xet.reference_date_2
64423    ,xet.reference_date_3
64424    ,xet.reference_date_4
64425    ,xet.event_created_by
64426    ,xet.budgetary_control_flag 
64427   , h2.EXPENDITURE_ITEM_ID    source_32
64428   , h2.GL_DATE    source_87
64429   FROM xla_events_gt     xet 
64430   , PA_XLA_EXP_HEADER_V  h2
64431  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
64432    and xet.event_class_code = C_EVENT_CLASS_CODE
64433    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
64434 
64435  ORDER BY event_id
64436 ;
64437 
64438 
64439 --
64440 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
64441 IS
64442 SELECT  /*+ leading(xet) cardinality(xet,1) */
64443 -- Event Class Code: INVENTORY_COST
64444     xet.entity_id
64445    ,xet.legal_entity_id
64446    ,xet.entity_code
64447    ,xet.transaction_number
64451    ,xet.event_number
64448    ,xet.event_id
64449    ,xet.event_class_code
64450    ,xet.event_type_code
64452    ,xet.event_date
64453    ,xet.transaction_date
64454    ,xet.reference_num_1
64455    ,xet.reference_num_2
64456    ,xet.reference_num_3
64457    ,xet.reference_num_4
64458    ,xet.reference_char_1
64459    ,xet.reference_char_2
64460    ,xet.reference_char_3
64461    ,xet.reference_char_4
64462    ,xet.reference_date_1
64463    ,xet.reference_date_2
64464    ,xet.reference_date_3
64465    ,xet.reference_date_4
64466    ,xet.event_created_by
64467    ,xet.budgetary_control_flag
64468  , l1.LINE_NUMBER  
64469   , l1.COST_CCID    source_3
64470   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
64471   , l1.ADJ_COST_CCID    source_5
64472   , l1.COST_CLEARING_CCID    source_6
64473   , l1.ADJ_COST_CLEARING_CCID    source_7
64474   , l1.REVERSING_LINE_FLAG    source_22
64475   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
64476   , l1.ENTERED_RAW_COST    source_24
64477   , l1.ENTERED_CURRENCY_CODE    source_25
64478   , l1.ACCT_RAW_COST    source_26
64479   , l1.EXCHANGE_RATE_DATE    source_27
64480   , l1.EXCHANGE_RATE    source_28
64481   , l1.EXCHANGE_RATE_TYPE    source_29
64482   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
64483   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
64484   , l1.LINE_NUMBER    source_33
64485   , l1.LINE_TYPE    source_34
64486   , fvl34.meaning   source_34_meaning
64487   , l1.LINE_NUM_REVERSED    source_35
64488   FROM xla_events_gt     xet 
64489   , PA_XLA_CDL_LINES_V  l1
64490   , fnd_lookup_values    fvl34
64491  WHERE xet.event_id between x_first_event_id and x_last_event_id
64492    and xet.event_date between p_pad_start_date and p_pad_end_date
64493    and xet.event_class_code = C_EVENT_CLASS_CODE
64494    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
64495    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
64496   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
64497   AND fvl34.view_application_id(+) = 275
64498   AND fvl34.language(+)            = USERENV('LANG')
64499   ;
64500 
64501 --
64502 BEGIN
64503 IF g_log_enabled THEN
64504    l_log_module := C_DEFAULT_MODULE||'.EventClass_116';
64505 END IF;
64506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64507    trace
64508       (p_msg      => 'BEGIN of EventClass_116'
64509       ,p_level    => C_LEVEL_PROCEDURE
64510       ,p_module   => l_log_module);
64511 END IF;
64512 
64513 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64514    trace
64515       (p_msg      => 'p_application_id = '||p_application_id||
64516                      ' - p_base_ledger_id = '||p_base_ledger_id||
64517                      ' - p_target_ledger_id  = '||p_target_ledger_id||
64518                      ' - p_language = '||p_language||
64519                      ' - p_currency_code = '||p_currency_code||
64520                      ' - p_sla_ledger_id = '||p_sla_ledger_id
64521       ,p_level    => C_LEVEL_STATEMENT
64522       ,p_module   => l_log_module);
64523 END IF;
64524 --
64525 -- initialze arrays
64526 --
64527 g_array_event.DELETE;
64528 l_rec_array_event := l_null_rec_array_event;
64529 --
64530 --------------------------------------
64531 -- 4262811 Initialze MPA Line Number
64532 --------------------------------------
64533 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
64534 
64535 --
64536 
64537 --
64538 OPEN header_cur;
64539 --
64540 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64541    trace
64542    (p_msg      => 'SQL - FETCH header_cur'
64543    ,p_level    => C_LEVEL_STATEMENT
64544    ,p_module   => l_log_module);
64545 END IF;
64546 --
64547 LOOP
64548 FETCH header_cur BULK COLLECT INTO
64549         l_array_entity_id
64550       , l_array_legal_entity_id
64551       , l_array_entity_code
64552       , l_array_transaction_num
64553       , l_array_event_id
64554       , l_array_class_code
64555       , l_array_event_type
64556       , l_array_event_number
64557       , l_array_event_date
64558       , l_array_transaction_date
64559       , l_array_reference_num_1
64560       , l_array_reference_num_2
64561       , l_array_reference_num_3
64562       , l_array_reference_num_4
64563       , l_array_reference_char_1
64564       , l_array_reference_char_2
64565       , l_array_reference_char_3
64566       , l_array_reference_char_4
64567       , l_array_reference_date_1
64568       , l_array_reference_date_2
64569       , l_array_reference_date_3
64570       , l_array_reference_date_4
64571       , l_array_event_created_by
64572       , l_array_budgetary_control_flag 
64573       , l_array_source_32
64574       , l_array_source_87
64575       LIMIT l_rows;
64576 --
64577 IF (C_LEVEL_EVENT >= g_log_level) THEN
64578    trace
64579    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
64580    ,p_level    => C_LEVEL_EVENT
64581    ,p_module   => l_log_module);
64582 END IF;
64583 --
64584 EXIT WHEN l_array_entity_id.COUNT = 0;
64585 
64586 -- initialize arrays
64587 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
64588 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
64589 
64590 --
64591 -- Bug 4458708
64592 --
64593 XLA_AE_LINES_PKG.g_LineNumber := 0;
64594 
64595 
64599 -- loop for the headers. Each iteration is for each header extract row
64596 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
64597 g_last_hdr_idx := l_array_event_id.LAST;
64598 --
64600 -- fetched in header cursor
64601 --
64602 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
64603 
64604 --
64605 -- set event info as cache for other routines to refer event attributes
64606 --
64607 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
64608    (p_application_id           => p_application_id
64609    ,p_primary_ledger_id        => p_primary_ledger_id
64610    ,p_base_ledger_id           => p_base_ledger_id
64611    ,p_target_ledger_id         => p_target_ledger_id
64612    ,p_entity_id                => l_array_entity_id(hdr_idx)
64613    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
64614    ,p_entity_code              => l_array_entity_code(hdr_idx)
64615    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
64616    ,p_event_id                 => l_array_event_id(hdr_idx)
64617    ,p_event_class_code         => l_array_class_code(hdr_idx)
64618    ,p_event_type_code          => l_array_event_type(hdr_idx)
64619    ,p_event_number             => l_array_event_number(hdr_idx)
64620    ,p_event_date               => l_array_event_date(hdr_idx)
64621    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
64622    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
64623    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
64624    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
64625    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
64626    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
64627    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
64628    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
64629    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
64630    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
64631    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
64632    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
64633    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
64634    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
64635    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
64636 
64637 --
64638 -- set the status of entry to C_VALID (0)
64639 --
64640 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
64641 
64642 --
64643 -- initialize a row for ae header
64644 --
64645 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
64646 
64647 l_event_id := l_array_event_id(hdr_idx);
64648 
64649 --
64650 -- storing the hdr_idx for event. May be used by line cursor.
64651 --
64652 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
64653 
64654 --
64655 -- store sources from header extract. This can be improved to
64656 -- store only those sources from header extract that may be used in lines
64657 --
64658 
64659 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
64660 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
64661 
64662 --
64663 -- initilaize the status of ae headers for diffrent balance types
64664 -- the status is initialised to C_NOT_CREATED (2)
64665 --
64666 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
64667 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
64668 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
64669 
64670 --
64671 -- call api to validate and store accounting attributes for header
64672 --
64673 
64674 ------------------------------------------------------------
64675 -- Accrual Reversal : to get date for Standard Source (NONE)
64676 ------------------------------------------------------------
64677 l_acc_rev_gl_date_source := NULL;
64678 
64679      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
64680       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
64681 
64682 
64683 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
64684 
64685 XLA_AE_HEADER_PKG.SetJeCategoryName;
64686 
64687 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
64688 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
64689 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
64690 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
64691 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
64692 
64693 
64694 -- No header level analytical criteria
64695 
64696 --
64697 --accounting attribute enhancement, bug 3612931
64698 --
64699 l_trx_reversal_source := SUBSTR(NULL, 1,30);
64700 
64701 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
64702    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
64703 
64704    xla_accounting_err_pkg.build_message
64705       (p_appli_s_name            => 'XLA'
64706       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
64707       ,p_token_1                 => 'ACCT_ATTR_NAME'
64711       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
64708       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
64709       ,p_token_2                 => 'PRODUCT_NAME'
64710       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
64712       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
64713       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
64714 
64715 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
64716    --
64717    -- following sets the accounting attributes needed to reverse
64718    -- accounting for a distributeion
64719    --
64720    xla_ae_lines_pkg.SetTrxReversalAttrs
64721       (p_event_id              => l_event_id
64722       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
64723       ,p_trx_reversal_source   => l_trx_reversal_source);
64724 
64725 END IF;
64726 
64727 
64728 ----------------------------------------------------------------
64729 -- 4262811 -  update the header statuses to invalid in need be
64730 ----------------------------------------------------------------
64731 --
64732 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
64733 
64734 
64735   -----------------------------------------------
64736   -- No accrual reversal for the event class/type
64737   -----------------------------------------------
64738 ----------------------------------------------------------------
64739 
64740 --
64741 -- this ends the header loop iteration for one bulk fetch
64742 --
64743 END LOOP;
64744 
64745 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
64746 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
64747 
64748 --
64749 -- insert dummy rows into lines gt table that were created due to
64750 -- transaction reversals
64751 --
64752 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
64753    l_result := XLA_AE_LINES_PKG.InsertLines;
64754 END IF;
64755 
64756 --
64757 -- reset the temp_line_num for each set of events fetched from header
64758 -- cursor rather than doing it for each new event in line cursor
64759 -- Bug 3939231
64760 --
64761 xla_ae_lines_pkg.g_temp_line_num := 0;
64762 
64763 
64764 
64765 --
64766 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
64767 --
64768 --
64769 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64770 
64771       trace
64772          (p_msg      => 'SQL - FETCH line_cur'
64773          ,p_level    => C_LEVEL_STATEMENT
64774          ,p_module   => l_log_module);
64775 
64776 END IF;
64777 --
64778 --
64779 LOOP
64780   --
64781   FETCH line_cur BULK COLLECT INTO
64782         l_array_entity_id
64783       , l_array_legal_entity_id
64784       , l_array_entity_code
64785       , l_array_transaction_num
64786       , l_array_event_id
64787       , l_array_class_code
64788       , l_array_event_type
64789       , l_array_event_number
64790       , l_array_event_date
64791       , l_array_transaction_date
64792       , l_array_reference_num_1
64793       , l_array_reference_num_2
64794       , l_array_reference_num_3
64795       , l_array_reference_num_4
64796       , l_array_reference_char_1
64797       , l_array_reference_char_2
64798       , l_array_reference_char_3
64799       , l_array_reference_char_4
64800       , l_array_reference_date_1
64801       , l_array_reference_date_2
64802       , l_array_reference_date_3
64803       , l_array_reference_date_4
64804       , l_array_event_created_by
64805       , l_array_budgetary_control_flag
64806       , l_array_extract_line_num 
64807       , l_array_source_3
64808       , l_array_source_4
64809       , l_array_source_5
64810       , l_array_source_6
64811       , l_array_source_7
64812       , l_array_source_22
64813       , l_array_source_23
64814       , l_array_source_24
64815       , l_array_source_25
64816       , l_array_source_26
64817       , l_array_source_27
64818       , l_array_source_28
64819       , l_array_source_29
64820       , l_array_source_30
64821       , l_array_source_31
64822       , l_array_source_33
64823       , l_array_source_34
64824       , l_array_source_34_meaning
64825       , l_array_source_35
64826       LIMIT l_rows;
64827 
64828   --
64829   IF (C_LEVEL_EVENT >= g_log_level) THEN
64830             trace
64831                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
64832                ,p_level    => C_LEVEL_EVENT
64833                ,p_module   => l_log_module);
64834   END IF;
64835   --
64836   EXIT WHEN l_array_entity_id.count = 0;
64837 
64838   XLA_AE_LINES_PKG.g_rec_lines := null;
64839 
64840 --
64841 -- Bug 4458708
64842 --
64843 XLA_AE_LINES_PKG.g_LineNumber := 0;
64844 --
64845 --
64846 
64847 FOR Idx IN 1..l_array_event_id.count LOOP
64848    --
64849    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
64850    --
64851    l_event_id := l_array_event_id(idx);  -- 5648433
64852 
64853    --
64854    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
64855    --
64856 
64857    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
64861    THEN
64858              (g_array_event(l_event_id).array_value_num('header_index'))
64859          ,'N'
64860          ) <> 'Y'
64862       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64863          trace
64864             (p_msg      => 'Trancaction revesal option is not Y '
64865             ,p_level    => C_LEVEL_STATEMENT
64866             ,p_module   => l_log_module);
64867       END IF;
64868 
64869 --
64870 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
64871 --
64872 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
64873 --
64874 -- set event info as cache for other routines to refer event attributes
64875 --
64876 
64877 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
64878    l_previous_event_id := l_event_id;
64879 
64880    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
64881       (p_application_id           => p_application_id
64882       ,p_primary_ledger_id        => p_primary_ledger_id
64883       ,p_base_ledger_id           => p_base_ledger_id
64884       ,p_target_ledger_id         => p_target_ledger_id
64885       ,p_entity_id                => l_array_entity_id(Idx)
64886       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
64887       ,p_entity_code              => l_array_entity_code(Idx)
64888       ,p_transaction_num          => l_array_transaction_num(Idx)
64889       ,p_event_id                 => l_array_event_id(Idx)
64890       ,p_event_class_code         => l_array_class_code(Idx)
64891       ,p_event_type_code          => l_array_event_type(Idx)
64892       ,p_event_number             => l_array_event_number(Idx)
64893       ,p_event_date               => l_array_event_date(Idx)
64894       ,p_transaction_date         => l_array_transaction_date(Idx)
64895       ,p_reference_num_1          => l_array_reference_num_1(Idx)
64896       ,p_reference_num_2          => l_array_reference_num_2(Idx)
64897       ,p_reference_num_3          => l_array_reference_num_3(Idx)
64898       ,p_reference_num_4          => l_array_reference_num_4(Idx)
64899       ,p_reference_char_1         => l_array_reference_char_1(Idx)
64900       ,p_reference_char_2         => l_array_reference_char_2(Idx)
64901       ,p_reference_char_3         => l_array_reference_char_3(Idx)
64902       ,p_reference_char_4         => l_array_reference_char_4(Idx)
64903       ,p_reference_date_1         => l_array_reference_date_1(Idx)
64904       ,p_reference_date_2         => l_array_reference_date_2(Idx)
64905       ,p_reference_date_3         => l_array_reference_date_3(Idx)
64906       ,p_reference_date_4         => l_array_reference_date_4(Idx)
64907       ,p_event_created_by         => l_array_event_created_by(Idx)
64908       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
64909        --
64910 END IF;
64911 
64912 
64913 
64914 --
64915 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
64916 
64917 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
64918 
64919 IF l_continue_with_lines THEN
64920    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
64921       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
64922 
64923       xla_accounting_err_pkg.build_message
64924          (p_appli_s_name            => 'XLA'
64925          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
64926          ,p_token_1                 => 'LINE_NUMBER'
64927          ,p_value_1                 => l_array_extract_line_num(Idx)
64928          ,p_token_2                 => 'PRODUCT_NAME'
64929          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
64930          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
64931          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
64932          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
64933 
64934    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
64935       --
64936       -- following sets the accounting attributes needed to reverse
64937       -- accounting for a distributeion
64938       --
64939 
64940       --
64941       -- 5217187
64942       --
64943       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
64944       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
64945                                        g_array_event(l_event_id).array_value_num('header_index'));
64946       --
64947       --
64948 
64949       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
64950       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
64951       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
64952       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
64953       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
64954       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
64955       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
64956       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
64957       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
64958       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
64959       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
64960       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
64964       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
64961       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
64962       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
64963       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
64965       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
64966       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
64967       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
64968       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
64969       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
64970       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
64971       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
64972       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
64973       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
64974       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
64975       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
64976       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
64977       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
64978       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
64979       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
64980       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
64981       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
64982       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
64983       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
64984       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
64985       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
64986       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
64987       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
64988       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
64989       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
64990       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
64991       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
64992       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
64993       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
64994       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
64995       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
64996       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
64997 
64998 
64999       xla_ae_lines_pkg.SetAcctReversalAttrs
65000          (p_event_id             => l_event_id
65001          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
65002          ,p_calculate_acctd_flag => l_calculate_acctd_flag
65003          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
65004    END IF;
65005 
65006    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
65007        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
65008 
65009 --
65010 AcctLineType_43 (
65011  p_application_id  => p_application_id
65012  ,p_event_id     => l_event_id
65013  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65014  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65015  ,p_actual_flag => l_actual_flag
65016  ,p_balance_type_code => l_balance_type_code
65017  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65018  
65019  , p_source_3 => l_array_source_3(Idx)
65020  , p_source_4 => l_array_source_4(Idx)
65021  , p_source_5 => l_array_source_5(Idx)
65022  , p_source_6 => l_array_source_6(Idx)
65023  , p_source_22 => l_array_source_22(Idx)
65024  , p_source_23 => l_array_source_23(Idx)
65025  , p_source_24 => l_array_source_24(Idx)
65026  , p_source_25 => l_array_source_25(Idx)
65027  , p_source_26 => l_array_source_26(Idx)
65028  , p_source_27 => l_array_source_27(Idx)
65029  , p_source_28 => l_array_source_28(Idx)
65030  , p_source_29 => l_array_source_29(Idx)
65031  , p_source_30 => l_array_source_30(Idx)
65032  , p_source_31 => l_array_source_31(Idx)
65033  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
65034  , p_source_33 => l_array_source_33(Idx)
65035  , p_source_34 => l_array_source_34(Idx)
65036  , p_source_34_meaning => l_array_source_34_meaning(Idx)
65037  , p_source_35 => l_array_source_35(Idx)
65038  );
65039 If(l_balance_type_code = 'A') THEN
65040   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65041 END IF;
65042 
65043 --
65044 
65045 
65046 --
65047 AcctLineType_54 (
65048  p_application_id  => p_application_id
65049  ,p_event_id     => l_event_id
65050  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65051  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65052  ,p_actual_flag => l_actual_flag
65053  ,p_balance_type_code => l_balance_type_code
65054  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65055  
65056  , p_source_3 => l_array_source_3(Idx)
65057  , p_source_4 => l_array_source_4(Idx)
65058  , p_source_6 => l_array_source_6(Idx)
65059  , p_source_7 => l_array_source_7(Idx)
65060  , p_source_22 => l_array_source_22(Idx)
65061  , p_source_23 => l_array_source_23(Idx)
65065  , p_source_27 => l_array_source_27(Idx)
65062  , p_source_24 => l_array_source_24(Idx)
65063  , p_source_25 => l_array_source_25(Idx)
65064  , p_source_26 => l_array_source_26(Idx)
65066  , p_source_28 => l_array_source_28(Idx)
65067  , p_source_29 => l_array_source_29(Idx)
65068  , p_source_30 => l_array_source_30(Idx)
65069  , p_source_31 => l_array_source_31(Idx)
65070  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
65071  , p_source_33 => l_array_source_33(Idx)
65072  , p_source_34 => l_array_source_34(Idx)
65073  , p_source_34_meaning => l_array_source_34_meaning(Idx)
65074  , p_source_35 => l_array_source_35(Idx)
65075  );
65076 If(l_balance_type_code = 'A') THEN
65077   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65078 END IF;
65079 
65080 --
65081 
65082       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
65083       -- or secondary ledger that has different currency with primary
65084       -- or alc that is calculated by sla
65085       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
65086             (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'))
65087 
65088 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
65089 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
65090           AND (l_actual_flag = 'A')) THEN
65091         XLA_AE_LINES_PKG.CreateGainOrLossLines(
65092           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
65093          ,p_application_id   => p_application_id
65094          ,p_amb_context_code => 'DEFAULT'
65095          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
65096          ,p_event_class_code => C_EVENT_CLASS_CODE
65097          ,p_event_type_code  => C_EVENT_TYPE_CODE
65098          
65099          ,p_gain_ccid        => -1
65100          ,p_loss_ccid        => -1
65101 
65102          ,p_actual_flag      => l_actual_flag
65103          ,p_enc_flag         => null
65104          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
65105          ,p_enc_g_l_ref      => null
65106          );
65107       END IF;
65108    END IF;
65109 END IF;
65110 
65111    ELSE
65112       --
65113       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
65114       --
65115       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65116          trace
65117             (p_msg      => 'Trancaction revesal option is Y'
65118             ,p_level    => C_LEVEL_STATEMENT
65119             ,p_module   => l_log_module);
65120       END IF;
65121    END IF;
65122 
65123 END LOOP;
65124 l_result := XLA_AE_LINES_PKG.InsertLines ;
65125 end loop;
65126 close line_cur;
65127 
65128 
65129 --
65130 -- insert headers into xla_ae_headers_gt table
65131 --
65132 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
65133 
65134 -- insert into errors table here.
65135 
65136 END LOOP;
65137 
65138 --
65139 -- 4865292
65140 --
65141 -- Compare g_hdr_extract_count with event count in
65142 -- CreateHeadersAndLines.
65143 --
65144 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
65145 
65146 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65147    trace (p_msg     => '# rows extracted from header extract objects '
65148                     || ' (running total): '
65149                     || g_hdr_extract_count
65150          ,p_level   => C_LEVEL_STATEMENT
65151          ,p_module  => l_log_module);
65152 END IF;
65153 
65154 CLOSE header_cur;
65155 --
65156 
65157 --
65158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65159    trace
65160       (p_msg      => 'END of EventClass_116'
65161       ,p_level    => C_LEVEL_PROCEDURE
65162       ,p_module   => l_log_module);
65163 END IF;
65164 --
65165 RETURN l_result;
65166 EXCEPTION
65167 WHEN xla_exceptions_pkg.application_exception THEN
65168    
65169 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
65170 
65171    
65172 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
65173 
65174    RAISE;
65175 WHEN OTHERS THEN
65176    xla_exceptions_pkg.raise_message
65177       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_116');
65178 END EventClass_116;
65179 --
65180 
65181 ---------------------------------------
65182 --
65183 -- PRIVATE PROCEDURE
65184 --         insert_sources_117
65185 --
65186 ----------------------------------------
65187 --
65188 PROCEDURE insert_sources_117(
65189                                 p_target_ledger_id       IN NUMBER
65190                               , p_language               IN VARCHAR2
65191                               , p_sla_ledger_id          IN NUMBER
65192                               , p_pad_start_date         IN DATE
65193                               , p_pad_end_date           IN DATE
65194                          )
65195 IS
65196 
65197 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ADJ_ALL';
65198 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LABOR_COST_ADJ';
65199 p_apps_owner                   VARCHAR2(30);
65200 l_log_module                   VARCHAR2(240);
65201 BEGIN
65202 IF g_log_enabled THEN
65203       l_log_module := C_DEFAULT_MODULE||'.insert_sources_117';
65204 END IF;
65205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65209          ,p_level    => C_LEVEL_PROCEDURE
65206 
65207       trace
65208          (p_msg      => 'BEGIN of insert_sources_117'
65210          ,p_module   => l_log_module);
65211 
65212 END IF;
65213 
65214 -- select APPS owner
65215 SELECT oracle_username
65216   INTO p_apps_owner
65217   FROM fnd_oracle_userid
65218  WHERE read_only_flag = 'U'
65219 ;
65220 
65221 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65222       trace
65223          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
65224                         ' - p_language = '||p_language||
65225                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
65226                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
65227                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
65228                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
65229          ,p_level    => C_LEVEL_STATEMENT
65230          ,p_module   => l_log_module);
65231 END IF;
65232 
65233 
65234 --
65235 INSERT INTO xla_diag_sources --hdr2
65236 (
65237         event_id
65238       , ledger_id
65239       , sla_ledger_id
65240       , description_language
65241       , object_name
65242       , object_type_code
65243       , line_number
65244       , source_application_id
65245       , source_type_code
65246       , source_code
65247       , source_value
65248       , source_meaning
65249       , created_by
65250       , creation_date
65251       , last_update_date
65252       , last_updated_by
65253       , last_update_login
65254       , program_update_date
65255       , program_application_id
65256       , program_id
65257       , request_id
65258 )
65259 SELECT
65260         event_id
65261       , p_target_ledger_id
65262       , p_sla_ledger_id
65263       , p_language
65264       , object_name
65265       , object_type_code
65266       , line_number
65267       , source_application_id
65268       , source_type_code
65269       , source_code
65270       , SUBSTR(source_value ,1,1996)
65271       , SUBSTR(source_meaning ,1,200)
65272       , xla_environment_pkg.g_Usr_Id
65273       , TRUNC(SYSDATE)
65274       , TRUNC(SYSDATE)
65275       , xla_environment_pkg.g_Usr_Id
65276       , xla_environment_pkg.g_Login_Id
65277       , TRUNC(SYSDATE)
65278       , xla_environment_pkg.g_Prog_Appl_Id
65279       , xla_environment_pkg.g_Prog_Id
65280       , xla_environment_pkg.g_Req_Id
65281   FROM (
65282        SELECT xet.event_id                  event_id
65283             , 0                          line_number
65284             , CASE r
65285                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
65286                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
65287                 
65288                ELSE null
65289               END                           object_name
65290             , CASE r
65291                 WHEN 1 THEN 'HEADER' 
65292                 WHEN 2 THEN 'HEADER' 
65293                 
65294                 ELSE null
65295               END                           object_type_code
65296             , CASE r
65297                 WHEN 1 THEN '275' 
65298                 WHEN 2 THEN '275' 
65299                 
65300                 ELSE null
65301               END                           source_application_id
65302             , 'S'             source_type_code
65303             , CASE r
65304                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
65305                 WHEN 2 THEN 'GL_DATE' 
65306                 
65307                 ELSE null
65308               END                           source_code
65309             , CASE r
65310                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
65311                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
65312                 
65313                 ELSE null
65314               END                           source_value
65315             , null              source_meaning
65316          FROM xla_events_gt     xet  
65317       , PA_XLA_EXP_HEADER_V  h2
65318              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
65319          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
65320            AND xet.event_class_code = C_EVENT_CLASS_CODE
65321               AND h2.event_id = xet.event_id
65322 
65323 )
65324 ;
65325 --
65326 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65327 
65328       trace
65329          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
65330          ,p_level    => C_LEVEL_STATEMENT
65331          ,p_module   => l_log_module);
65332 
65333 END IF;
65334 --
65335 
65336 
65337 
65338 --
65339 INSERT INTO xla_diag_sources  --line2
65340 (
65341         event_id
65342       , ledger_id
65343       , sla_ledger_id
65344       , description_language
65345       , object_name
65346       , object_type_code
65347       , line_number
65348       , source_application_id
65349       , source_type_code
65350       , source_code
65351       , source_value
65352       , source_meaning
65353       , created_by
65354       , creation_date
65355       , last_update_date
65356       , last_updated_by
65357       , last_update_login
65358       , program_update_date
65359       , program_application_id
65360       , program_id
65364       , p_target_ledger_id
65361       , request_id
65362 )
65363 SELECT  event_id
65365       , p_sla_ledger_id
65366       , p_language
65367       , object_name
65368       , object_type_code
65369       , line_number
65370       , source_application_id
65371       , source_type_code
65372       , source_code
65373       , SUBSTR(source_value,1,1996)
65374       , SUBSTR(source_meaning ,1,200)
65375       , xla_environment_pkg.g_Usr_Id
65376       , TRUNC(SYSDATE)
65377       , TRUNC(SYSDATE)
65378       , xla_environment_pkg.g_Usr_Id
65379       , xla_environment_pkg.g_Login_Id
65380       , TRUNC(SYSDATE)
65381       , xla_environment_pkg.g_Prog_Appl_Id
65382       , xla_environment_pkg.g_Prog_Id
65383       , xla_environment_pkg.g_Req_Id
65384   FROM (
65385        SELECT xet.event_id                  event_id
65386             , l1.line_number                 line_number
65387             , CASE r
65388                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
65389                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
65390                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
65391                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
65392                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
65393                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
65394                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
65395                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
65396                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
65397                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
65398                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
65399                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
65400                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
65401                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
65402                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
65403                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
65404                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
65405                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
65406                 
65407                ELSE null
65408               END                           object_name
65409             , CASE r
65410                 WHEN 1 THEN 'LINE' 
65411                 WHEN 2 THEN 'LINE' 
65412                 WHEN 3 THEN 'LINE' 
65413                 WHEN 4 THEN 'LINE' 
65414                 WHEN 5 THEN 'LINE' 
65415                 WHEN 6 THEN 'LINE' 
65416                 WHEN 7 THEN 'LINE' 
65417                 WHEN 8 THEN 'LINE' 
65418                 WHEN 9 THEN 'LINE' 
65419                 WHEN 10 THEN 'LINE' 
65420                 WHEN 11 THEN 'LINE' 
65421                 WHEN 12 THEN 'LINE' 
65422                 WHEN 13 THEN 'LINE' 
65423                 WHEN 14 THEN 'LINE' 
65424                 WHEN 15 THEN 'LINE' 
65425                 WHEN 16 THEN 'LINE' 
65426                 WHEN 17 THEN 'LINE' 
65427                 WHEN 18 THEN 'LINE' 
65428                 
65429                 ELSE null
65430               END                           object_type_code
65431             , CASE r
65432                 WHEN 1 THEN '275' 
65433                 WHEN 2 THEN '275' 
65434                 WHEN 3 THEN '275' 
65435                 WHEN 4 THEN '275' 
65436                 WHEN 5 THEN '275' 
65437                 WHEN 6 THEN '275' 
65438                 WHEN 7 THEN '275' 
65439                 WHEN 8 THEN '275' 
65440                 WHEN 9 THEN '275' 
65441                 WHEN 10 THEN '275' 
65442                 WHEN 11 THEN '275' 
65443                 WHEN 12 THEN '275' 
65444                 WHEN 13 THEN '275' 
65445                 WHEN 14 THEN '275' 
65446                 WHEN 15 THEN '275' 
65447                 WHEN 16 THEN '275' 
65448                 WHEN 17 THEN '275' 
65449                 WHEN 18 THEN '275' 
65450                 
65451                 ELSE null
65452               END                           source_application_id
65453             , 'S'             source_type_code
65454             , CASE r
65455                 WHEN 1 THEN 'COST_CCID' 
65456                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
65457                 WHEN 3 THEN 'ADJ_COST_CCID' 
65458                 WHEN 4 THEN 'COST_CLEARING_CCID' 
65459                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
65460                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
65461                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
65462                 WHEN 8 THEN 'ENTERED_RAW_COST' 
65463                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
65464                 WHEN 10 THEN 'ACCT_RAW_COST' 
65465                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
65466                 WHEN 12 THEN 'EXCHANGE_RATE' 
65467                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
65468                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
65469                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
65470                 WHEN 16 THEN 'LINE_NUMBER' 
65471                 WHEN 17 THEN 'LINE_TYPE' 
65472                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
65473                 
65474                 ELSE null
65475               END                           source_code
65476             , CASE r
65477                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
65478                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
65479                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
65480                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
65481                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
65482                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
65483                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
65487                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
65484                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
65485                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
65486                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
65488                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
65489                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
65490                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
65491                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
65492                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
65493                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
65494                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
65495                 
65496                 ELSE null
65497               END                           source_value
65498             , CASE r
65499                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
65500                           103371
65501                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
65502                          ,'ALLOW_OVERRIDE_CCID_FLAG'
65503                          ,'S'
65504                          ,275)
65505                 WHEN 17 THEN fvl34.meaning
65506                 
65507                 ELSE null
65508               END               source_meaning
65509          FROM  xla_events_gt     xet  
65510         , PA_XLA_CDL_LINES_V  l1
65511   , fnd_lookup_values    fvl34
65512             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
65513         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
65514           AND xet.event_class_code = C_EVENT_CLASS_CODE
65515             AND l1.event_id          = xet.event_id
65516    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
65517   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
65518   AND fvl34.view_application_id(+) = 275
65519   AND fvl34.language(+)            = USERENV('LANG')
65520   
65521 )
65522 ;
65523 --
65524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65525 
65526       trace
65527          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
65528          ,p_level    => C_LEVEL_STATEMENT
65529          ,p_module   => l_log_module);
65530 
65531 END IF;
65532 
65533 
65534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65535       trace
65536          (p_msg      => 'END of insert_sources_117'
65537          ,p_level    => C_LEVEL_PROCEDURE
65538          ,p_module   => l_log_module);
65539 END IF;
65540 EXCEPTION
65541   WHEN xla_exceptions_pkg.application_exception THEN
65542       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
65543             trace
65544                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
65545                ,p_level    => C_LEVEL_EXCEPTION
65546                ,p_module   => l_log_module);
65547       END IF;
65548       RAISE;
65549   WHEN OTHERS THEN
65550       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
65551             trace
65552                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
65553                ,p_level    => C_LEVEL_EXCEPTION
65554                ,p_module   => l_log_module);
65555        END IF;
65556        xla_exceptions_pkg.raise_message
65557            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_117');
65558 END insert_sources_117;
65559 --
65560 
65561 ---------------------------------------
65562 --
65563 -- PRIVATE FUNCTION
65564 --         EventClass_117
65565 --
65566 ----------------------------------------
65567 --
65568 FUNCTION EventClass_117
65569        (p_application_id         IN NUMBER
65570        ,p_base_ledger_id         IN NUMBER
65571        ,p_target_ledger_id       IN NUMBER
65572        ,p_language               IN VARCHAR2
65573        ,p_currency_code          IN VARCHAR2
65574        ,p_sla_ledger_id          IN NUMBER
65575        ,p_pad_start_date         IN DATE
65576        ,p_pad_end_date           IN DATE
65577        ,p_primary_ledger_id      IN NUMBER)
65578 RETURN BOOLEAN IS
65579 --
65580 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ADJ_ALL';
65581 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LABOR_COST_ADJ';
65582 
65583 l_calculate_acctd_flag   VARCHAR2(1) :='N';
65584 l_calculate_g_l_flag     VARCHAR2(1) :='N';
65585 --
65586 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65587 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65588 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65589 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65590 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65591 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65592 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65593 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65594 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65595 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65596 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65597 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65598 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65599 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
65603 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65600 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65601 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65602 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
65604 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65605 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65606 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65607 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
65608 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
65609 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
65610 
65611 l_event_id                             NUMBER;
65612 l_previous_event_id                    NUMBER;
65613 l_first_event_id                       NUMBER;
65614 l_last_event_id                        NUMBER;
65615 
65616 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
65617 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
65618 --
65619 --
65620 l_result                    BOOLEAN := TRUE;
65621 l_rows                      NUMBER  := 1000;
65622 l_event_type_name           VARCHAR2(80) := 'All';
65623 l_event_class_name          VARCHAR2(80) := 'Labor Cost Adjustment';
65624 l_description               VARCHAR2(4000);
65625 l_transaction_reversal      NUMBER;
65626 l_ae_header_id              NUMBER;
65627 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
65628 l_log_module                VARCHAR2(240);
65629 --
65630 l_acct_reversal_source      VARCHAR2(30);
65631 l_trx_reversal_source       VARCHAR2(30);
65632 
65633 l_continue_with_lines       BOOLEAN := TRUE;
65634 --
65635 l_acc_rev_gl_date_source    DATE;                      -- 4262811
65636 --
65637 type t_array_event_id is table of number index by binary_integer;
65638 
65639 l_rec_array_event                    t_rec_array_event;
65640 l_null_rec_array_event               t_rec_array_event;
65641 l_array_ae_header_id                 xla_number_array_type;
65642 l_actual_flag                        VARCHAR2(1) := NULL;
65643 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
65644 l_balance_type_code                  VARCHAR2(1) :=NULL;
65645 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
65646 
65647 --
65648 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
65649 --
65650 
65651 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
65652 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
65653 
65654 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
65655 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
65656 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
65657 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
65658 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
65659 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
65660 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
65661 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
65662 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
65663 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
65664 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
65665 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
65666 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
65667 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
65668 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
65669 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
65670 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
65671 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
65672 
65673 l_array_source_32              t_array_source_32;
65674 l_array_source_87              t_array_source_87;
65675 
65676 l_array_source_3      t_array_source_3;
65677 l_array_source_4      t_array_source_4;
65678 l_array_source_5      t_array_source_5;
65679 l_array_source_6      t_array_source_6;
65680 l_array_source_7      t_array_source_7;
65681 l_array_source_22      t_array_source_22;
65682 l_array_source_23      t_array_source_23;
65683 l_array_source_24      t_array_source_24;
65684 l_array_source_25      t_array_source_25;
65685 l_array_source_26      t_array_source_26;
65686 l_array_source_27      t_array_source_27;
65687 l_array_source_28      t_array_source_28;
65688 l_array_source_29      t_array_source_29;
65689 l_array_source_30      t_array_source_30;
65690 l_array_source_31      t_array_source_31;
65691 l_array_source_33      t_array_source_33;
65692 l_array_source_34      t_array_source_34;
65693 l_array_source_34_meaning      t_array_lookup_meaning;
65697 CURSOR header_cur
65694 l_array_source_35      t_array_source_35;
65695 
65696 --
65698 IS
65699 SELECT /*+ leading(xet) cardinality(xet,1) */
65700 -- Event Class Code: LABOR_COST_ADJ
65701     xet.entity_id
65702    ,xet.legal_entity_id
65703    ,xet.entity_code
65704    ,xet.transaction_number
65705    ,xet.event_id
65706    ,xet.event_class_code
65707    ,xet.event_type_code
65708    ,xet.event_number
65709    ,xet.event_date
65710    ,xet.transaction_date
65711    ,xet.reference_num_1
65712    ,xet.reference_num_2
65713    ,xet.reference_num_3
65714    ,xet.reference_num_4
65715    ,xet.reference_char_1
65716    ,xet.reference_char_2
65717    ,xet.reference_char_3
65718    ,xet.reference_char_4
65719    ,xet.reference_date_1
65720    ,xet.reference_date_2
65721    ,xet.reference_date_3
65722    ,xet.reference_date_4
65723    ,xet.event_created_by
65724    ,xet.budgetary_control_flag 
65725   , h2.EXPENDITURE_ITEM_ID    source_32
65726   , h2.GL_DATE    source_87
65727   FROM xla_events_gt     xet 
65728   , PA_XLA_EXP_HEADER_V  h2
65729  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
65730    and xet.event_class_code = C_EVENT_CLASS_CODE
65731    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
65732 
65733  ORDER BY event_id
65734 ;
65735 
65736 
65737 --
65738 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
65739 IS
65740 SELECT  /*+ leading(xet) cardinality(xet,1) */
65741 -- Event Class Code: LABOR_COST_ADJ
65742     xet.entity_id
65743    ,xet.legal_entity_id
65744    ,xet.entity_code
65745    ,xet.transaction_number
65746    ,xet.event_id
65747    ,xet.event_class_code
65748    ,xet.event_type_code
65749    ,xet.event_number
65750    ,xet.event_date
65751    ,xet.transaction_date
65752    ,xet.reference_num_1
65753    ,xet.reference_num_2
65754    ,xet.reference_num_3
65755    ,xet.reference_num_4
65756    ,xet.reference_char_1
65757    ,xet.reference_char_2
65758    ,xet.reference_char_3
65759    ,xet.reference_char_4
65760    ,xet.reference_date_1
65761    ,xet.reference_date_2
65762    ,xet.reference_date_3
65763    ,xet.reference_date_4
65764    ,xet.event_created_by
65765    ,xet.budgetary_control_flag
65766  , l1.LINE_NUMBER  
65767   , l1.COST_CCID    source_3
65768   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
65769   , l1.ADJ_COST_CCID    source_5
65770   , l1.COST_CLEARING_CCID    source_6
65771   , l1.ADJ_COST_CLEARING_CCID    source_7
65772   , l1.REVERSING_LINE_FLAG    source_22
65773   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
65774   , l1.ENTERED_RAW_COST    source_24
65775   , l1.ENTERED_CURRENCY_CODE    source_25
65776   , l1.ACCT_RAW_COST    source_26
65777   , l1.EXCHANGE_RATE_DATE    source_27
65778   , l1.EXCHANGE_RATE    source_28
65779   , l1.EXCHANGE_RATE_TYPE    source_29
65780   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
65781   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
65782   , l1.LINE_NUMBER    source_33
65783   , l1.LINE_TYPE    source_34
65784   , fvl34.meaning   source_34_meaning
65785   , l1.LINE_NUM_REVERSED    source_35
65786   FROM xla_events_gt     xet 
65787   , PA_XLA_CDL_LINES_V  l1
65788   , fnd_lookup_values    fvl34
65789  WHERE xet.event_id between x_first_event_id and x_last_event_id
65790    and xet.event_date between p_pad_start_date and p_pad_end_date
65791    and xet.event_class_code = C_EVENT_CLASS_CODE
65792    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
65793    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
65794   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
65795   AND fvl34.view_application_id(+) = 275
65796   AND fvl34.language(+)            = USERENV('LANG')
65797   ;
65798 
65799 --
65800 BEGIN
65801 IF g_log_enabled THEN
65802    l_log_module := C_DEFAULT_MODULE||'.EventClass_117';
65803 END IF;
65804 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65805    trace
65806       (p_msg      => 'BEGIN of EventClass_117'
65807       ,p_level    => C_LEVEL_PROCEDURE
65808       ,p_module   => l_log_module);
65809 END IF;
65810 
65811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65812    trace
65813       (p_msg      => 'p_application_id = '||p_application_id||
65814                      ' - p_base_ledger_id = '||p_base_ledger_id||
65815                      ' - p_target_ledger_id  = '||p_target_ledger_id||
65816                      ' - p_language = '||p_language||
65817                      ' - p_currency_code = '||p_currency_code||
65818                      ' - p_sla_ledger_id = '||p_sla_ledger_id
65819       ,p_level    => C_LEVEL_STATEMENT
65820       ,p_module   => l_log_module);
65821 END IF;
65822 --
65823 -- initialze arrays
65824 --
65825 g_array_event.DELETE;
65826 l_rec_array_event := l_null_rec_array_event;
65827 --
65828 --------------------------------------
65829 -- 4262811 Initialze MPA Line Number
65830 --------------------------------------
65831 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
65832 
65833 --
65834 
65835 --
65836 OPEN header_cur;
65837 --
65838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65839    trace
65840    (p_msg      => 'SQL - FETCH header_cur'
65841    ,p_level    => C_LEVEL_STATEMENT
65842    ,p_module   => l_log_module);
65843 END IF;
65844 --
65845 LOOP
65846 FETCH header_cur BULK COLLECT INTO
65850       , l_array_transaction_num
65847         l_array_entity_id
65848       , l_array_legal_entity_id
65849       , l_array_entity_code
65851       , l_array_event_id
65852       , l_array_class_code
65853       , l_array_event_type
65854       , l_array_event_number
65855       , l_array_event_date
65856       , l_array_transaction_date
65857       , l_array_reference_num_1
65858       , l_array_reference_num_2
65859       , l_array_reference_num_3
65860       , l_array_reference_num_4
65861       , l_array_reference_char_1
65862       , l_array_reference_char_2
65863       , l_array_reference_char_3
65864       , l_array_reference_char_4
65865       , l_array_reference_date_1
65866       , l_array_reference_date_2
65867       , l_array_reference_date_3
65868       , l_array_reference_date_4
65869       , l_array_event_created_by
65870       , l_array_budgetary_control_flag 
65871       , l_array_source_32
65872       , l_array_source_87
65873       LIMIT l_rows;
65874 --
65875 IF (C_LEVEL_EVENT >= g_log_level) THEN
65876    trace
65877    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
65878    ,p_level    => C_LEVEL_EVENT
65879    ,p_module   => l_log_module);
65880 END IF;
65881 --
65882 EXIT WHEN l_array_entity_id.COUNT = 0;
65883 
65884 -- initialize arrays
65885 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
65886 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
65887 
65888 --
65889 -- Bug 4458708
65890 --
65891 XLA_AE_LINES_PKG.g_LineNumber := 0;
65892 
65893 
65894 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
65895 g_last_hdr_idx := l_array_event_id.LAST;
65896 --
65897 -- loop for the headers. Each iteration is for each header extract row
65898 -- fetched in header cursor
65899 --
65900 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
65901 
65902 --
65903 -- set event info as cache for other routines to refer event attributes
65904 --
65905 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
65906    (p_application_id           => p_application_id
65907    ,p_primary_ledger_id        => p_primary_ledger_id
65908    ,p_base_ledger_id           => p_base_ledger_id
65909    ,p_target_ledger_id         => p_target_ledger_id
65910    ,p_entity_id                => l_array_entity_id(hdr_idx)
65911    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
65912    ,p_entity_code              => l_array_entity_code(hdr_idx)
65913    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
65914    ,p_event_id                 => l_array_event_id(hdr_idx)
65915    ,p_event_class_code         => l_array_class_code(hdr_idx)
65916    ,p_event_type_code          => l_array_event_type(hdr_idx)
65917    ,p_event_number             => l_array_event_number(hdr_idx)
65918    ,p_event_date               => l_array_event_date(hdr_idx)
65919    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
65920    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
65921    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
65922    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
65923    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
65924    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
65925    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
65926    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
65927    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
65928    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
65929    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
65930    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
65931    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
65932    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
65933    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
65934 
65935 --
65936 -- set the status of entry to C_VALID (0)
65937 --
65938 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
65939 
65940 --
65941 -- initialize a row for ae header
65942 --
65943 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
65944 
65945 l_event_id := l_array_event_id(hdr_idx);
65946 
65947 --
65948 -- storing the hdr_idx for event. May be used by line cursor.
65949 --
65950 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
65951 
65952 --
65953 -- store sources from header extract. This can be improved to
65954 -- store only those sources from header extract that may be used in lines
65955 --
65956 
65957 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
65958 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
65959 
65960 --
65961 -- initilaize the status of ae headers for diffrent balance types
65962 -- the status is initialised to C_NOT_CREATED (2)
65963 --
65964 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
65965 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
65966 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
65967 
65968 --
65969 -- call api to validate and store accounting attributes for header
65970 --
65971 
65972 ------------------------------------------------------------
65976 
65973 -- Accrual Reversal : to get date for Standard Source (NONE)
65974 ------------------------------------------------------------
65975 l_acc_rev_gl_date_source := NULL;
65977      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
65978       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
65979 
65980 
65981 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
65982 
65983 XLA_AE_HEADER_PKG.SetJeCategoryName;
65984 
65985 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
65986 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
65987 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
65988 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
65989 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
65990 
65991 
65992 -- No header level analytical criteria
65993 
65994 --
65995 --accounting attribute enhancement, bug 3612931
65996 --
65997 l_trx_reversal_source := SUBSTR(NULL, 1,30);
65998 
65999 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
66000    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
66001 
66002    xla_accounting_err_pkg.build_message
66003       (p_appli_s_name            => 'XLA'
66004       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
66005       ,p_token_1                 => 'ACCT_ATTR_NAME'
66006       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
66007       ,p_token_2                 => 'PRODUCT_NAME'
66008       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
66009       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
66010       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
66011       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
66012 
66013 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
66014    --
66015    -- following sets the accounting attributes needed to reverse
66016    -- accounting for a distributeion
66017    --
66018    xla_ae_lines_pkg.SetTrxReversalAttrs
66019       (p_event_id              => l_event_id
66020       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
66021       ,p_trx_reversal_source   => l_trx_reversal_source);
66022 
66023 END IF;
66024 
66025 
66026 ----------------------------------------------------------------
66027 -- 4262811 -  update the header statuses to invalid in need be
66028 ----------------------------------------------------------------
66029 --
66030 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
66031 
66032 
66033   -----------------------------------------------
66034   -- No accrual reversal for the event class/type
66035   -----------------------------------------------
66036 ----------------------------------------------------------------
66037 
66038 --
66039 -- this ends the header loop iteration for one bulk fetch
66040 --
66041 END LOOP;
66042 
66043 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
66044 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
66045 
66046 --
66047 -- insert dummy rows into lines gt table that were created due to
66048 -- transaction reversals
66049 --
66050 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
66051    l_result := XLA_AE_LINES_PKG.InsertLines;
66052 END IF;
66053 
66054 --
66055 -- reset the temp_line_num for each set of events fetched from header
66056 -- cursor rather than doing it for each new event in line cursor
66057 -- Bug 3939231
66058 --
66059 xla_ae_lines_pkg.g_temp_line_num := 0;
66060 
66061 
66062 
66063 --
66064 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
66065 --
66066 --
66067 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66068 
66069       trace
66070          (p_msg      => 'SQL - FETCH line_cur'
66071          ,p_level    => C_LEVEL_STATEMENT
66072          ,p_module   => l_log_module);
66073 
66074 END IF;
66075 --
66076 --
66077 LOOP
66078   --
66079   FETCH line_cur BULK COLLECT INTO
66080         l_array_entity_id
66081       , l_array_legal_entity_id
66082       , l_array_entity_code
66083       , l_array_transaction_num
66084       , l_array_event_id
66085       , l_array_class_code
66086       , l_array_event_type
66087       , l_array_event_number
66088       , l_array_event_date
66089       , l_array_transaction_date
66090       , l_array_reference_num_1
66091       , l_array_reference_num_2
66092       , l_array_reference_num_3
66093       , l_array_reference_num_4
66094       , l_array_reference_char_1
66095       , l_array_reference_char_2
66096       , l_array_reference_char_3
66097       , l_array_reference_char_4
66098       , l_array_reference_date_1
66099       , l_array_reference_date_2
66100       , l_array_reference_date_3
66101       , l_array_reference_date_4
66102       , l_array_event_created_by
66103       , l_array_budgetary_control_flag
66104       , l_array_extract_line_num 
66105       , l_array_source_3
66106       , l_array_source_4
66107       , l_array_source_5
66111       , l_array_source_23
66108       , l_array_source_6
66109       , l_array_source_7
66110       , l_array_source_22
66112       , l_array_source_24
66113       , l_array_source_25
66114       , l_array_source_26
66115       , l_array_source_27
66116       , l_array_source_28
66117       , l_array_source_29
66118       , l_array_source_30
66119       , l_array_source_31
66120       , l_array_source_33
66121       , l_array_source_34
66122       , l_array_source_34_meaning
66123       , l_array_source_35
66124       LIMIT l_rows;
66125 
66126   --
66127   IF (C_LEVEL_EVENT >= g_log_level) THEN
66128             trace
66129                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
66130                ,p_level    => C_LEVEL_EVENT
66131                ,p_module   => l_log_module);
66132   END IF;
66133   --
66134   EXIT WHEN l_array_entity_id.count = 0;
66135 
66136   XLA_AE_LINES_PKG.g_rec_lines := null;
66137 
66138 --
66139 -- Bug 4458708
66140 --
66141 XLA_AE_LINES_PKG.g_LineNumber := 0;
66142 --
66143 --
66144 
66145 FOR Idx IN 1..l_array_event_id.count LOOP
66146    --
66147    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
66148    --
66149    l_event_id := l_array_event_id(idx);  -- 5648433
66150 
66151    --
66152    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
66153    --
66154 
66155    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
66156              (g_array_event(l_event_id).array_value_num('header_index'))
66157          ,'N'
66158          ) <> 'Y'
66159    THEN
66160       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66161          trace
66162             (p_msg      => 'Trancaction revesal option is not Y '
66163             ,p_level    => C_LEVEL_STATEMENT
66164             ,p_module   => l_log_module);
66165       END IF;
66166 
66167 --
66168 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
66169 --
66170 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
66171 --
66172 -- set event info as cache for other routines to refer event attributes
66173 --
66174 
66175 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
66176    l_previous_event_id := l_event_id;
66177 
66178    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
66179       (p_application_id           => p_application_id
66180       ,p_primary_ledger_id        => p_primary_ledger_id
66181       ,p_base_ledger_id           => p_base_ledger_id
66182       ,p_target_ledger_id         => p_target_ledger_id
66183       ,p_entity_id                => l_array_entity_id(Idx)
66184       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
66185       ,p_entity_code              => l_array_entity_code(Idx)
66186       ,p_transaction_num          => l_array_transaction_num(Idx)
66187       ,p_event_id                 => l_array_event_id(Idx)
66188       ,p_event_class_code         => l_array_class_code(Idx)
66189       ,p_event_type_code          => l_array_event_type(Idx)
66190       ,p_event_number             => l_array_event_number(Idx)
66191       ,p_event_date               => l_array_event_date(Idx)
66192       ,p_transaction_date         => l_array_transaction_date(Idx)
66193       ,p_reference_num_1          => l_array_reference_num_1(Idx)
66194       ,p_reference_num_2          => l_array_reference_num_2(Idx)
66195       ,p_reference_num_3          => l_array_reference_num_3(Idx)
66196       ,p_reference_num_4          => l_array_reference_num_4(Idx)
66197       ,p_reference_char_1         => l_array_reference_char_1(Idx)
66198       ,p_reference_char_2         => l_array_reference_char_2(Idx)
66199       ,p_reference_char_3         => l_array_reference_char_3(Idx)
66200       ,p_reference_char_4         => l_array_reference_char_4(Idx)
66201       ,p_reference_date_1         => l_array_reference_date_1(Idx)
66202       ,p_reference_date_2         => l_array_reference_date_2(Idx)
66203       ,p_reference_date_3         => l_array_reference_date_3(Idx)
66204       ,p_reference_date_4         => l_array_reference_date_4(Idx)
66205       ,p_event_created_by         => l_array_event_created_by(Idx)
66206       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
66207        --
66208 END IF;
66209 
66210 
66211 
66212 --
66213 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
66214 
66215 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
66216 
66217 IF l_continue_with_lines THEN
66218    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
66219       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
66220 
66221       xla_accounting_err_pkg.build_message
66222          (p_appli_s_name            => 'XLA'
66223          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
66224          ,p_token_1                 => 'LINE_NUMBER'
66225          ,p_value_1                 => l_array_extract_line_num(Idx)
66226          ,p_token_2                 => 'PRODUCT_NAME'
66227          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
66228          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
66229          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
66233       --
66230          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
66231 
66232    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
66234       -- following sets the accounting attributes needed to reverse
66235       -- accounting for a distributeion
66236       --
66237 
66238       --
66239       -- 5217187
66240       --
66241       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
66242       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
66243                                        g_array_event(l_event_id).array_value_num('header_index'));
66244       --
66245       --
66246 
66247       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
66248       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
66249       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
66250       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
66251       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
66252       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
66253       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
66254       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
66255       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
66256       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
66257       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
66258       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
66259       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
66260       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
66261       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
66262       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
66263       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
66264       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
66265       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
66266       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
66267       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
66268       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
66269       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
66270       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
66271       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
66272       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
66273       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
66274       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
66275       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
66276       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
66277       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
66278       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
66279       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
66280       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
66281       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
66282       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
66283       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
66284       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
66285       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
66286       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
66287       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
66288       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
66289       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
66290       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
66291       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
66292       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
66293       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
66294       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
66295 
66296 
66297       xla_ae_lines_pkg.SetAcctReversalAttrs
66298          (p_event_id             => l_event_id
66299          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
66300          ,p_calculate_acctd_flag => l_calculate_acctd_flag
66301          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
66302    END IF;
66303 
66304    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
66305        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
66306 
66307 --
66308 AcctLineType_51 (
66309  p_application_id  => p_application_id
66310  ,p_event_id     => l_event_id
66311  ,p_calculate_acctd_flag => l_calculate_acctd_flag
66312  ,p_calculate_g_l_flag => l_calculate_g_l_flag
66313  ,p_actual_flag => l_actual_flag
66314  ,p_balance_type_code => l_balance_type_code
66315  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
66316  
66317  , p_source_3 => l_array_source_3(Idx)
66318  , p_source_4 => l_array_source_4(Idx)
66319  , p_source_5 => l_array_source_5(Idx)
66320  , p_source_6 => l_array_source_6(Idx)
66324  , p_source_25 => l_array_source_25(Idx)
66321  , p_source_22 => l_array_source_22(Idx)
66322  , p_source_23 => l_array_source_23(Idx)
66323  , p_source_24 => l_array_source_24(Idx)
66325  , p_source_26 => l_array_source_26(Idx)
66326  , p_source_27 => l_array_source_27(Idx)
66327  , p_source_28 => l_array_source_28(Idx)
66328  , p_source_29 => l_array_source_29(Idx)
66329  , p_source_30 => l_array_source_30(Idx)
66330  , p_source_31 => l_array_source_31(Idx)
66331  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
66332  , p_source_33 => l_array_source_33(Idx)
66333  , p_source_34 => l_array_source_34(Idx)
66334  , p_source_34_meaning => l_array_source_34_meaning(Idx)
66335  , p_source_35 => l_array_source_35(Idx)
66336  );
66337 If(l_balance_type_code = 'A') THEN
66338   l_actual_gain_loss_ref := l_gain_or_loss_ref;
66339 END IF;
66340 
66341 --
66342 
66343 
66344 --
66345 AcctLineType_60 (
66346  p_application_id  => p_application_id
66347  ,p_event_id     => l_event_id
66348  ,p_calculate_acctd_flag => l_calculate_acctd_flag
66349  ,p_calculate_g_l_flag => l_calculate_g_l_flag
66350  ,p_actual_flag => l_actual_flag
66351  ,p_balance_type_code => l_balance_type_code
66352  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
66353  
66354  , p_source_3 => l_array_source_3(Idx)
66355  , p_source_4 => l_array_source_4(Idx)
66356  , p_source_6 => l_array_source_6(Idx)
66357  , p_source_7 => l_array_source_7(Idx)
66358  , p_source_22 => l_array_source_22(Idx)
66359  , p_source_23 => l_array_source_23(Idx)
66360  , p_source_24 => l_array_source_24(Idx)
66361  , p_source_25 => l_array_source_25(Idx)
66362  , p_source_26 => l_array_source_26(Idx)
66363  , p_source_27 => l_array_source_27(Idx)
66364  , p_source_28 => l_array_source_28(Idx)
66365  , p_source_29 => l_array_source_29(Idx)
66366  , p_source_30 => l_array_source_30(Idx)
66367  , p_source_31 => l_array_source_31(Idx)
66368  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
66369  , p_source_33 => l_array_source_33(Idx)
66370  , p_source_34 => l_array_source_34(Idx)
66371  , p_source_34_meaning => l_array_source_34_meaning(Idx)
66372  , p_source_35 => l_array_source_35(Idx)
66373  );
66374 If(l_balance_type_code = 'A') THEN
66375   l_actual_gain_loss_ref := l_gain_or_loss_ref;
66376 END IF;
66377 
66378 --
66379 
66380       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
66381       -- or secondary ledger that has different currency with primary
66382       -- or alc that is calculated by sla
66383       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
66384             (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'))
66385 
66386 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
66387 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
66388           AND (l_actual_flag = 'A')) THEN
66389         XLA_AE_LINES_PKG.CreateGainOrLossLines(
66390           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
66391          ,p_application_id   => p_application_id
66392          ,p_amb_context_code => 'DEFAULT'
66393          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
66394          ,p_event_class_code => C_EVENT_CLASS_CODE
66395          ,p_event_type_code  => C_EVENT_TYPE_CODE
66396          
66397          ,p_gain_ccid        => -1
66398          ,p_loss_ccid        => -1
66399 
66400          ,p_actual_flag      => l_actual_flag
66401          ,p_enc_flag         => null
66402          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
66403          ,p_enc_g_l_ref      => null
66404          );
66405       END IF;
66406    END IF;
66407 END IF;
66408 
66409    ELSE
66410       --
66411       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
66412       --
66413       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66414          trace
66415             (p_msg      => 'Trancaction revesal option is Y'
66416             ,p_level    => C_LEVEL_STATEMENT
66417             ,p_module   => l_log_module);
66418       END IF;
66419    END IF;
66420 
66421 END LOOP;
66422 l_result := XLA_AE_LINES_PKG.InsertLines ;
66423 end loop;
66424 close line_cur;
66425 
66426 
66427 --
66428 -- insert headers into xla_ae_headers_gt table
66429 --
66430 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
66431 
66432 -- insert into errors table here.
66433 
66434 END LOOP;
66435 
66436 --
66437 -- 4865292
66438 --
66439 -- Compare g_hdr_extract_count with event count in
66440 -- CreateHeadersAndLines.
66441 --
66442 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
66443 
66444 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66445    trace (p_msg     => '# rows extracted from header extract objects '
66446                     || ' (running total): '
66447                     || g_hdr_extract_count
66448          ,p_level   => C_LEVEL_STATEMENT
66449          ,p_module  => l_log_module);
66450 END IF;
66451 
66452 CLOSE header_cur;
66453 --
66454 
66455 --
66456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66457    trace
66458       (p_msg      => 'END of EventClass_117'
66459       ,p_level    => C_LEVEL_PROCEDURE
66463 RETURN l_result;
66460       ,p_module   => l_log_module);
66461 END IF;
66462 --
66464 EXCEPTION
66465 WHEN xla_exceptions_pkg.application_exception THEN
66466    
66467 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
66468 
66469    
66470 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
66471 
66472    RAISE;
66473 WHEN OTHERS THEN
66474    xla_exceptions_pkg.raise_message
66475       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_117');
66476 END EventClass_117;
66477 --
66478 
66479 ---------------------------------------
66480 --
66481 -- PRIVATE PROCEDURE
66482 --         insert_sources_118
66483 --
66484 ----------------------------------------
66485 --
66486 PROCEDURE insert_sources_118(
66487                                 p_target_ledger_id       IN NUMBER
66488                               , p_language               IN VARCHAR2
66489                               , p_sla_ledger_id          IN NUMBER
66490                               , p_pad_start_date         IN DATE
66491                               , p_pad_end_date           IN DATE
66492                          )
66493 IS
66494 
66495 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ALL';
66496 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LABOR_COST';
66497 p_apps_owner                   VARCHAR2(30);
66498 l_log_module                   VARCHAR2(240);
66499 BEGIN
66500 IF g_log_enabled THEN
66501       l_log_module := C_DEFAULT_MODULE||'.insert_sources_118';
66502 END IF;
66503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66504 
66505       trace
66506          (p_msg      => 'BEGIN of insert_sources_118'
66507          ,p_level    => C_LEVEL_PROCEDURE
66508          ,p_module   => l_log_module);
66509 
66510 END IF;
66511 
66512 -- select APPS owner
66513 SELECT oracle_username
66514   INTO p_apps_owner
66515   FROM fnd_oracle_userid
66516  WHERE read_only_flag = 'U'
66517 ;
66518 
66519 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66520       trace
66521          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
66522                         ' - p_language = '||p_language||
66523                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
66524                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
66525                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
66526                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
66527          ,p_level    => C_LEVEL_STATEMENT
66528          ,p_module   => l_log_module);
66529 END IF;
66530 
66531 
66532 --
66533 INSERT INTO xla_diag_sources --hdr2
66534 (
66535         event_id
66536       , ledger_id
66537       , sla_ledger_id
66538       , description_language
66539       , object_name
66540       , object_type_code
66541       , line_number
66542       , source_application_id
66543       , source_type_code
66544       , source_code
66545       , source_value
66546       , source_meaning
66547       , created_by
66548       , creation_date
66549       , last_update_date
66550       , last_updated_by
66551       , last_update_login
66552       , program_update_date
66553       , program_application_id
66554       , program_id
66555       , request_id
66556 )
66557 SELECT
66558         event_id
66559       , p_target_ledger_id
66560       , p_sla_ledger_id
66561       , p_language
66562       , object_name
66563       , object_type_code
66564       , line_number
66565       , source_application_id
66566       , source_type_code
66567       , source_code
66568       , SUBSTR(source_value ,1,1996)
66569       , SUBSTR(source_meaning ,1,200)
66570       , xla_environment_pkg.g_Usr_Id
66571       , TRUNC(SYSDATE)
66572       , TRUNC(SYSDATE)
66573       , xla_environment_pkg.g_Usr_Id
66574       , xla_environment_pkg.g_Login_Id
66575       , TRUNC(SYSDATE)
66576       , xla_environment_pkg.g_Prog_Appl_Id
66577       , xla_environment_pkg.g_Prog_Id
66578       , xla_environment_pkg.g_Req_Id
66579   FROM (
66580        SELECT xet.event_id                  event_id
66581             , 0                          line_number
66582             , CASE r
66583                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
66584                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
66585                 
66586                ELSE null
66587               END                           object_name
66588             , CASE r
66589                 WHEN 1 THEN 'HEADER' 
66590                 WHEN 2 THEN 'HEADER' 
66591                 
66592                 ELSE null
66593               END                           object_type_code
66594             , CASE r
66595                 WHEN 1 THEN '275' 
66596                 WHEN 2 THEN '275' 
66597                 
66598                 ELSE null
66599               END                           source_application_id
66600             , 'S'             source_type_code
66601             , CASE r
66602                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
66603                 WHEN 2 THEN 'GL_DATE' 
66604                 
66605                 ELSE null
66606               END                           source_code
66607             , CASE r
66608                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
66609                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
66610                 
66611                 ELSE null
66615       , PA_XLA_EXP_HEADER_V  h2
66612               END                           source_value
66613             , null              source_meaning
66614          FROM xla_events_gt     xet  
66616              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
66617          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
66618            AND xet.event_class_code = C_EVENT_CLASS_CODE
66619               AND h2.event_id = xet.event_id
66620 
66621 )
66622 ;
66623 --
66624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66625 
66626       trace
66627          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
66628          ,p_level    => C_LEVEL_STATEMENT
66629          ,p_module   => l_log_module);
66630 
66631 END IF;
66632 --
66633 
66634 
66635 
66636 --
66637 INSERT INTO xla_diag_sources  --line2
66638 (
66639         event_id
66640       , ledger_id
66641       , sla_ledger_id
66642       , description_language
66643       , object_name
66644       , object_type_code
66645       , line_number
66646       , source_application_id
66647       , source_type_code
66648       , source_code
66649       , source_value
66650       , source_meaning
66651       , created_by
66652       , creation_date
66653       , last_update_date
66654       , last_updated_by
66655       , last_update_login
66656       , program_update_date
66657       , program_application_id
66658       , program_id
66659       , request_id
66660 )
66661 SELECT  event_id
66662       , p_target_ledger_id
66663       , p_sla_ledger_id
66664       , p_language
66665       , object_name
66666       , object_type_code
66667       , line_number
66668       , source_application_id
66669       , source_type_code
66670       , source_code
66671       , SUBSTR(source_value,1,1996)
66672       , SUBSTR(source_meaning ,1,200)
66673       , xla_environment_pkg.g_Usr_Id
66674       , TRUNC(SYSDATE)
66675       , TRUNC(SYSDATE)
66676       , xla_environment_pkg.g_Usr_Id
66677       , xla_environment_pkg.g_Login_Id
66678       , TRUNC(SYSDATE)
66679       , xla_environment_pkg.g_Prog_Appl_Id
66680       , xla_environment_pkg.g_Prog_Id
66681       , xla_environment_pkg.g_Req_Id
66682   FROM (
66683        SELECT xet.event_id                  event_id
66684             , l1.line_number                 line_number
66685             , CASE r
66686                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
66687                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
66688                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
66689                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
66690                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
66691                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
66692                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
66693                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
66694                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
66695                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
66696                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
66697                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
66698                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
66699                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
66700                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
66701                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
66702                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
66703                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
66704                 
66705                ELSE null
66706               END                           object_name
66707             , CASE r
66708                 WHEN 1 THEN 'LINE' 
66709                 WHEN 2 THEN 'LINE' 
66710                 WHEN 3 THEN 'LINE' 
66711                 WHEN 4 THEN 'LINE' 
66712                 WHEN 5 THEN 'LINE' 
66713                 WHEN 6 THEN 'LINE' 
66714                 WHEN 7 THEN 'LINE' 
66715                 WHEN 8 THEN 'LINE' 
66716                 WHEN 9 THEN 'LINE' 
66717                 WHEN 10 THEN 'LINE' 
66718                 WHEN 11 THEN 'LINE' 
66719                 WHEN 12 THEN 'LINE' 
66720                 WHEN 13 THEN 'LINE' 
66721                 WHEN 14 THEN 'LINE' 
66722                 WHEN 15 THEN 'LINE' 
66723                 WHEN 16 THEN 'LINE' 
66724                 WHEN 17 THEN 'LINE' 
66725                 WHEN 18 THEN 'LINE' 
66726                 
66727                 ELSE null
66728               END                           object_type_code
66729             , CASE r
66730                 WHEN 1 THEN '275' 
66731                 WHEN 2 THEN '275' 
66732                 WHEN 3 THEN '275' 
66733                 WHEN 4 THEN '275' 
66734                 WHEN 5 THEN '275' 
66735                 WHEN 6 THEN '275' 
66736                 WHEN 7 THEN '275' 
66737                 WHEN 8 THEN '275' 
66738                 WHEN 9 THEN '275' 
66739                 WHEN 10 THEN '275' 
66740                 WHEN 11 THEN '275' 
66741                 WHEN 12 THEN '275' 
66742                 WHEN 13 THEN '275' 
66743                 WHEN 14 THEN '275' 
66744                 WHEN 15 THEN '275' 
66745                 WHEN 16 THEN '275' 
66746                 WHEN 17 THEN '275' 
66747                 WHEN 18 THEN '275' 
66748                 
66749                 ELSE null
66753                 WHEN 1 THEN 'COST_CCID' 
66750               END                           source_application_id
66751             , 'S'             source_type_code
66752             , CASE r
66754                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
66755                 WHEN 3 THEN 'ADJ_COST_CCID' 
66756                 WHEN 4 THEN 'COST_CLEARING_CCID' 
66757                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
66758                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
66759                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
66760                 WHEN 8 THEN 'ENTERED_RAW_COST' 
66761                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
66762                 WHEN 10 THEN 'ACCT_RAW_COST' 
66763                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
66764                 WHEN 12 THEN 'EXCHANGE_RATE' 
66765                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
66766                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
66767                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
66768                 WHEN 16 THEN 'LINE_NUMBER' 
66769                 WHEN 17 THEN 'LINE_TYPE' 
66770                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
66771                 
66772                 ELSE null
66773               END                           source_code
66774             , CASE r
66775                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
66776                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
66777                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
66778                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
66779                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
66780                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
66781                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
66782                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
66783                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
66784                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
66785                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
66786                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
66787                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
66788                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
66789                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
66790                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
66791                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
66792                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
66793                 
66794                 ELSE null
66795               END                           source_value
66796             , CASE r
66797                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
66798                           103371
66799                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
66800                          ,'ALLOW_OVERRIDE_CCID_FLAG'
66801                          ,'S'
66802                          ,275)
66803                 WHEN 17 THEN fvl34.meaning
66804                 
66805                 ELSE null
66806               END               source_meaning
66807          FROM  xla_events_gt     xet  
66808         , PA_XLA_CDL_LINES_V  l1
66809   , fnd_lookup_values    fvl34
66810             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
66811         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
66812           AND xet.event_class_code = C_EVENT_CLASS_CODE
66813             AND l1.event_id          = xet.event_id
66814    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
66815   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
66816   AND fvl34.view_application_id(+) = 275
66817   AND fvl34.language(+)            = USERENV('LANG')
66818   
66819 )
66820 ;
66821 --
66822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66823 
66824       trace
66825          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
66826          ,p_level    => C_LEVEL_STATEMENT
66827          ,p_module   => l_log_module);
66828 
66829 END IF;
66830 
66831 
66832 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66833       trace
66834          (p_msg      => 'END of insert_sources_118'
66835          ,p_level    => C_LEVEL_PROCEDURE
66836          ,p_module   => l_log_module);
66837 END IF;
66838 EXCEPTION
66839   WHEN xla_exceptions_pkg.application_exception THEN
66840       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66841             trace
66842                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66843                ,p_level    => C_LEVEL_EXCEPTION
66844                ,p_module   => l_log_module);
66845       END IF;
66846       RAISE;
66847   WHEN OTHERS THEN
66848       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66849             trace
66850                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66851                ,p_level    => C_LEVEL_EXCEPTION
66852                ,p_module   => l_log_module);
66853        END IF;
66854        xla_exceptions_pkg.raise_message
66855            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_118');
66856 END insert_sources_118;
66857 --
66858 
66859 ---------------------------------------
66860 --
66861 -- PRIVATE FUNCTION
66862 --         EventClass_118
66863 --
66864 ----------------------------------------
66865 --
66866 FUNCTION EventClass_118
66867        (p_application_id         IN NUMBER
66868        ,p_base_ledger_id         IN NUMBER
66869        ,p_target_ledger_id       IN NUMBER
66873        ,p_pad_start_date         IN DATE
66870        ,p_language               IN VARCHAR2
66871        ,p_currency_code          IN VARCHAR2
66872        ,p_sla_ledger_id          IN NUMBER
66874        ,p_pad_end_date           IN DATE
66875        ,p_primary_ledger_id      IN NUMBER)
66876 RETURN BOOLEAN IS
66877 --
66878 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ALL';
66879 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LABOR_COST';
66880 
66881 l_calculate_acctd_flag   VARCHAR2(1) :='N';
66882 l_calculate_g_l_flag     VARCHAR2(1) :='N';
66883 --
66884 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66885 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66886 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66887 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66888 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66889 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66890 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66891 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66892 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66893 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66894 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66895 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66896 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66897 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66898 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66899 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66900 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66901 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66902 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66903 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66904 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66905 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66906 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
66907 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66908 
66909 l_event_id                             NUMBER;
66910 l_previous_event_id                    NUMBER;
66911 l_first_event_id                       NUMBER;
66912 l_last_event_id                        NUMBER;
66913 
66914 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
66915 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
66916 --
66917 --
66918 l_result                    BOOLEAN := TRUE;
66919 l_rows                      NUMBER  := 1000;
66920 l_event_type_name           VARCHAR2(80) := 'All';
66921 l_event_class_name          VARCHAR2(80) := 'Labor Cost';
66922 l_description               VARCHAR2(4000);
66923 l_transaction_reversal      NUMBER;
66924 l_ae_header_id              NUMBER;
66925 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
66926 l_log_module                VARCHAR2(240);
66927 --
66928 l_acct_reversal_source      VARCHAR2(30);
66929 l_trx_reversal_source       VARCHAR2(30);
66930 
66931 l_continue_with_lines       BOOLEAN := TRUE;
66932 --
66933 l_acc_rev_gl_date_source    DATE;                      -- 4262811
66934 --
66935 type t_array_event_id is table of number index by binary_integer;
66936 
66937 l_rec_array_event                    t_rec_array_event;
66938 l_null_rec_array_event               t_rec_array_event;
66939 l_array_ae_header_id                 xla_number_array_type;
66940 l_actual_flag                        VARCHAR2(1) := NULL;
66941 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
66942 l_balance_type_code                  VARCHAR2(1) :=NULL;
66943 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
66944 
66945 --
66946 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
66947 --
66948 
66949 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
66950 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
66951 
66952 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
66953 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
66954 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
66955 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
66956 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
66957 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
66958 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
66959 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
66960 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
66961 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
66962 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
66963 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
66967 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
66964 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
66965 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
66966 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
66968 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
66969 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
66970 
66971 l_array_source_32              t_array_source_32;
66972 l_array_source_87              t_array_source_87;
66973 
66974 l_array_source_3      t_array_source_3;
66975 l_array_source_4      t_array_source_4;
66976 l_array_source_5      t_array_source_5;
66977 l_array_source_6      t_array_source_6;
66978 l_array_source_7      t_array_source_7;
66979 l_array_source_22      t_array_source_22;
66980 l_array_source_23      t_array_source_23;
66981 l_array_source_24      t_array_source_24;
66982 l_array_source_25      t_array_source_25;
66983 l_array_source_26      t_array_source_26;
66984 l_array_source_27      t_array_source_27;
66985 l_array_source_28      t_array_source_28;
66986 l_array_source_29      t_array_source_29;
66987 l_array_source_30      t_array_source_30;
66988 l_array_source_31      t_array_source_31;
66989 l_array_source_33      t_array_source_33;
66990 l_array_source_34      t_array_source_34;
66991 l_array_source_34_meaning      t_array_lookup_meaning;
66992 l_array_source_35      t_array_source_35;
66993 
66994 --
66995 CURSOR header_cur
66996 IS
66997 SELECT /*+ leading(xet) cardinality(xet,1) */
66998 -- Event Class Code: LABOR_COST
66999     xet.entity_id
67000    ,xet.legal_entity_id
67001    ,xet.entity_code
67002    ,xet.transaction_number
67003    ,xet.event_id
67004    ,xet.event_class_code
67005    ,xet.event_type_code
67006    ,xet.event_number
67007    ,xet.event_date
67008    ,xet.transaction_date
67009    ,xet.reference_num_1
67010    ,xet.reference_num_2
67011    ,xet.reference_num_3
67012    ,xet.reference_num_4
67013    ,xet.reference_char_1
67014    ,xet.reference_char_2
67015    ,xet.reference_char_3
67016    ,xet.reference_char_4
67017    ,xet.reference_date_1
67018    ,xet.reference_date_2
67019    ,xet.reference_date_3
67020    ,xet.reference_date_4
67021    ,xet.event_created_by
67022    ,xet.budgetary_control_flag 
67023   , h2.EXPENDITURE_ITEM_ID    source_32
67024   , h2.GL_DATE    source_87
67025   FROM xla_events_gt     xet 
67026   , PA_XLA_EXP_HEADER_V  h2
67027  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
67028    and xet.event_class_code = C_EVENT_CLASS_CODE
67029    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
67030 
67031  ORDER BY event_id
67032 ;
67033 
67034 
67035 --
67036 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
67037 IS
67038 SELECT  /*+ leading(xet) cardinality(xet,1) */
67039 -- Event Class Code: LABOR_COST
67040     xet.entity_id
67041    ,xet.legal_entity_id
67042    ,xet.entity_code
67043    ,xet.transaction_number
67044    ,xet.event_id
67045    ,xet.event_class_code
67046    ,xet.event_type_code
67047    ,xet.event_number
67048    ,xet.event_date
67049    ,xet.transaction_date
67050    ,xet.reference_num_1
67051    ,xet.reference_num_2
67052    ,xet.reference_num_3
67053    ,xet.reference_num_4
67054    ,xet.reference_char_1
67055    ,xet.reference_char_2
67056    ,xet.reference_char_3
67057    ,xet.reference_char_4
67058    ,xet.reference_date_1
67059    ,xet.reference_date_2
67060    ,xet.reference_date_3
67061    ,xet.reference_date_4
67062    ,xet.event_created_by
67063    ,xet.budgetary_control_flag
67064  , l1.LINE_NUMBER  
67065   , l1.COST_CCID    source_3
67066   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
67067   , l1.ADJ_COST_CCID    source_5
67068   , l1.COST_CLEARING_CCID    source_6
67069   , l1.ADJ_COST_CLEARING_CCID    source_7
67070   , l1.REVERSING_LINE_FLAG    source_22
67071   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
67072   , l1.ENTERED_RAW_COST    source_24
67073   , l1.ENTERED_CURRENCY_CODE    source_25
67074   , l1.ACCT_RAW_COST    source_26
67075   , l1.EXCHANGE_RATE_DATE    source_27
67076   , l1.EXCHANGE_RATE    source_28
67077   , l1.EXCHANGE_RATE_TYPE    source_29
67078   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
67079   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
67080   , l1.LINE_NUMBER    source_33
67081   , l1.LINE_TYPE    source_34
67082   , fvl34.meaning   source_34_meaning
67083   , l1.LINE_NUM_REVERSED    source_35
67084   FROM xla_events_gt     xet 
67085   , PA_XLA_CDL_LINES_V  l1
67086   , fnd_lookup_values    fvl34
67087  WHERE xet.event_id between x_first_event_id and x_last_event_id
67088    and xet.event_date between p_pad_start_date and p_pad_end_date
67089    and xet.event_class_code = C_EVENT_CLASS_CODE
67090    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
67091    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
67092   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
67093   AND fvl34.view_application_id(+) = 275
67094   AND fvl34.language(+)            = USERENV('LANG')
67095   ;
67096 
67097 --
67098 BEGIN
67099 IF g_log_enabled THEN
67103    trace
67100    l_log_module := C_DEFAULT_MODULE||'.EventClass_118';
67101 END IF;
67102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67104       (p_msg      => 'BEGIN of EventClass_118'
67105       ,p_level    => C_LEVEL_PROCEDURE
67106       ,p_module   => l_log_module);
67107 END IF;
67108 
67109 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67110    trace
67111       (p_msg      => 'p_application_id = '||p_application_id||
67112                      ' - p_base_ledger_id = '||p_base_ledger_id||
67113                      ' - p_target_ledger_id  = '||p_target_ledger_id||
67114                      ' - p_language = '||p_language||
67115                      ' - p_currency_code = '||p_currency_code||
67116                      ' - p_sla_ledger_id = '||p_sla_ledger_id
67117       ,p_level    => C_LEVEL_STATEMENT
67118       ,p_module   => l_log_module);
67119 END IF;
67120 --
67121 -- initialze arrays
67122 --
67123 g_array_event.DELETE;
67124 l_rec_array_event := l_null_rec_array_event;
67125 --
67126 --------------------------------------
67127 -- 4262811 Initialze MPA Line Number
67128 --------------------------------------
67129 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
67130 
67131 --
67132 
67133 --
67134 OPEN header_cur;
67135 --
67136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67137    trace
67138    (p_msg      => 'SQL - FETCH header_cur'
67139    ,p_level    => C_LEVEL_STATEMENT
67140    ,p_module   => l_log_module);
67141 END IF;
67142 --
67143 LOOP
67144 FETCH header_cur BULK COLLECT INTO
67145         l_array_entity_id
67146       , l_array_legal_entity_id
67147       , l_array_entity_code
67148       , l_array_transaction_num
67149       , l_array_event_id
67150       , l_array_class_code
67151       , l_array_event_type
67152       , l_array_event_number
67153       , l_array_event_date
67154       , l_array_transaction_date
67155       , l_array_reference_num_1
67156       , l_array_reference_num_2
67157       , l_array_reference_num_3
67158       , l_array_reference_num_4
67159       , l_array_reference_char_1
67160       , l_array_reference_char_2
67161       , l_array_reference_char_3
67162       , l_array_reference_char_4
67163       , l_array_reference_date_1
67164       , l_array_reference_date_2
67165       , l_array_reference_date_3
67166       , l_array_reference_date_4
67167       , l_array_event_created_by
67168       , l_array_budgetary_control_flag 
67169       , l_array_source_32
67170       , l_array_source_87
67171       LIMIT l_rows;
67172 --
67173 IF (C_LEVEL_EVENT >= g_log_level) THEN
67174    trace
67175    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
67176    ,p_level    => C_LEVEL_EVENT
67177    ,p_module   => l_log_module);
67178 END IF;
67179 --
67180 EXIT WHEN l_array_entity_id.COUNT = 0;
67181 
67182 -- initialize arrays
67183 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
67184 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
67185 
67186 --
67187 -- Bug 4458708
67188 --
67189 XLA_AE_LINES_PKG.g_LineNumber := 0;
67190 
67191 
67192 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
67193 g_last_hdr_idx := l_array_event_id.LAST;
67194 --
67195 -- loop for the headers. Each iteration is for each header extract row
67196 -- fetched in header cursor
67197 --
67198 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
67199 
67200 --
67201 -- set event info as cache for other routines to refer event attributes
67202 --
67203 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
67204    (p_application_id           => p_application_id
67205    ,p_primary_ledger_id        => p_primary_ledger_id
67206    ,p_base_ledger_id           => p_base_ledger_id
67207    ,p_target_ledger_id         => p_target_ledger_id
67208    ,p_entity_id                => l_array_entity_id(hdr_idx)
67209    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
67210    ,p_entity_code              => l_array_entity_code(hdr_idx)
67211    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
67212    ,p_event_id                 => l_array_event_id(hdr_idx)
67213    ,p_event_class_code         => l_array_class_code(hdr_idx)
67214    ,p_event_type_code          => l_array_event_type(hdr_idx)
67215    ,p_event_number             => l_array_event_number(hdr_idx)
67216    ,p_event_date               => l_array_event_date(hdr_idx)
67217    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
67218    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
67219    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
67220    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
67221    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
67222    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
67223    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
67224    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
67225    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
67226    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
67227    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
67228    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
67229    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
67230    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
67231    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
67235 --
67232 
67233 --
67234 -- set the status of entry to C_VALID (0)
67236 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
67237 
67238 --
67239 -- initialize a row for ae header
67240 --
67241 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
67242 
67243 l_event_id := l_array_event_id(hdr_idx);
67244 
67245 --
67246 -- storing the hdr_idx for event. May be used by line cursor.
67247 --
67248 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
67249 
67250 --
67251 -- store sources from header extract. This can be improved to
67252 -- store only those sources from header extract that may be used in lines
67253 --
67254 
67255 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
67256 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
67257 
67258 --
67259 -- initilaize the status of ae headers for diffrent balance types
67260 -- the status is initialised to C_NOT_CREATED (2)
67261 --
67262 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67263 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67264 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67265 
67266 --
67267 -- call api to validate and store accounting attributes for header
67268 --
67269 
67270 ------------------------------------------------------------
67271 -- Accrual Reversal : to get date for Standard Source (NONE)
67272 ------------------------------------------------------------
67273 l_acc_rev_gl_date_source := NULL;
67274 
67275      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
67276       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
67277 
67278 
67279 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
67280 
67281 XLA_AE_HEADER_PKG.SetJeCategoryName;
67282 
67283 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
67284 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
67285 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
67286 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
67287 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
67288 
67289 
67290 -- No header level analytical criteria
67291 
67292 --
67293 --accounting attribute enhancement, bug 3612931
67294 --
67295 l_trx_reversal_source := SUBSTR(NULL, 1,30);
67296 
67297 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
67298    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
67299 
67300    xla_accounting_err_pkg.build_message
67301       (p_appli_s_name            => 'XLA'
67302       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
67303       ,p_token_1                 => 'ACCT_ATTR_NAME'
67304       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
67305       ,p_token_2                 => 'PRODUCT_NAME'
67306       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
67307       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
67308       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
67309       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
67310 
67311 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
67312    --
67313    -- following sets the accounting attributes needed to reverse
67314    -- accounting for a distributeion
67315    --
67316    xla_ae_lines_pkg.SetTrxReversalAttrs
67317       (p_event_id              => l_event_id
67318       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
67319       ,p_trx_reversal_source   => l_trx_reversal_source);
67320 
67321 END IF;
67322 
67323 
67324 ----------------------------------------------------------------
67325 -- 4262811 -  update the header statuses to invalid in need be
67326 ----------------------------------------------------------------
67327 --
67328 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
67329 
67330 
67331   -----------------------------------------------
67332   -- No accrual reversal for the event class/type
67333   -----------------------------------------------
67334 ----------------------------------------------------------------
67335 
67336 --
67337 -- this ends the header loop iteration for one bulk fetch
67338 --
67339 END LOOP;
67340 
67341 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
67342 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
67343 
67344 --
67345 -- insert dummy rows into lines gt table that were created due to
67346 -- transaction reversals
67347 --
67348 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
67349    l_result := XLA_AE_LINES_PKG.InsertLines;
67350 END IF;
67351 
67352 --
67353 -- reset the temp_line_num for each set of events fetched from header
67354 -- cursor rather than doing it for each new event in line cursor
67355 -- Bug 3939231
67356 --
67357 xla_ae_lines_pkg.g_temp_line_num := 0;
67361 --
67358 
67359 
67360 
67362 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
67363 --
67364 --
67365 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67366 
67367       trace
67368          (p_msg      => 'SQL - FETCH line_cur'
67369          ,p_level    => C_LEVEL_STATEMENT
67370          ,p_module   => l_log_module);
67371 
67372 END IF;
67373 --
67374 --
67375 LOOP
67376   --
67377   FETCH line_cur BULK COLLECT INTO
67378         l_array_entity_id
67379       , l_array_legal_entity_id
67380       , l_array_entity_code
67381       , l_array_transaction_num
67382       , l_array_event_id
67383       , l_array_class_code
67384       , l_array_event_type
67385       , l_array_event_number
67386       , l_array_event_date
67387       , l_array_transaction_date
67388       , l_array_reference_num_1
67389       , l_array_reference_num_2
67390       , l_array_reference_num_3
67391       , l_array_reference_num_4
67392       , l_array_reference_char_1
67393       , l_array_reference_char_2
67394       , l_array_reference_char_3
67395       , l_array_reference_char_4
67396       , l_array_reference_date_1
67397       , l_array_reference_date_2
67398       , l_array_reference_date_3
67399       , l_array_reference_date_4
67400       , l_array_event_created_by
67401       , l_array_budgetary_control_flag
67402       , l_array_extract_line_num 
67403       , l_array_source_3
67404       , l_array_source_4
67405       , l_array_source_5
67406       , l_array_source_6
67407       , l_array_source_7
67408       , l_array_source_22
67409       , l_array_source_23
67410       , l_array_source_24
67411       , l_array_source_25
67412       , l_array_source_26
67413       , l_array_source_27
67414       , l_array_source_28
67415       , l_array_source_29
67416       , l_array_source_30
67417       , l_array_source_31
67418       , l_array_source_33
67419       , l_array_source_34
67420       , l_array_source_34_meaning
67421       , l_array_source_35
67422       LIMIT l_rows;
67423 
67424   --
67425   IF (C_LEVEL_EVENT >= g_log_level) THEN
67426             trace
67427                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
67428                ,p_level    => C_LEVEL_EVENT
67429                ,p_module   => l_log_module);
67430   END IF;
67431   --
67432   EXIT WHEN l_array_entity_id.count = 0;
67433 
67434   XLA_AE_LINES_PKG.g_rec_lines := null;
67435 
67436 --
67437 -- Bug 4458708
67438 --
67439 XLA_AE_LINES_PKG.g_LineNumber := 0;
67440 --
67441 --
67442 
67443 FOR Idx IN 1..l_array_event_id.count LOOP
67444    --
67445    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
67446    --
67447    l_event_id := l_array_event_id(idx);  -- 5648433
67448 
67449    --
67450    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
67451    --
67452 
67453    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
67454              (g_array_event(l_event_id).array_value_num('header_index'))
67455          ,'N'
67456          ) <> 'Y'
67457    THEN
67458       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67459          trace
67460             (p_msg      => 'Trancaction revesal option is not Y '
67461             ,p_level    => C_LEVEL_STATEMENT
67462             ,p_module   => l_log_module);
67463       END IF;
67464 
67465 --
67466 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
67467 --
67468 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
67469 --
67470 -- set event info as cache for other routines to refer event attributes
67471 --
67472 
67473 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
67474    l_previous_event_id := l_event_id;
67475 
67476    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
67477       (p_application_id           => p_application_id
67478       ,p_primary_ledger_id        => p_primary_ledger_id
67479       ,p_base_ledger_id           => p_base_ledger_id
67480       ,p_target_ledger_id         => p_target_ledger_id
67481       ,p_entity_id                => l_array_entity_id(Idx)
67482       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
67483       ,p_entity_code              => l_array_entity_code(Idx)
67484       ,p_transaction_num          => l_array_transaction_num(Idx)
67485       ,p_event_id                 => l_array_event_id(Idx)
67486       ,p_event_class_code         => l_array_class_code(Idx)
67487       ,p_event_type_code          => l_array_event_type(Idx)
67488       ,p_event_number             => l_array_event_number(Idx)
67489       ,p_event_date               => l_array_event_date(Idx)
67490       ,p_transaction_date         => l_array_transaction_date(Idx)
67491       ,p_reference_num_1          => l_array_reference_num_1(Idx)
67492       ,p_reference_num_2          => l_array_reference_num_2(Idx)
67493       ,p_reference_num_3          => l_array_reference_num_3(Idx)
67494       ,p_reference_num_4          => l_array_reference_num_4(Idx)
67495       ,p_reference_char_1         => l_array_reference_char_1(Idx)
67496       ,p_reference_char_2         => l_array_reference_char_2(Idx)
67497       ,p_reference_char_3         => l_array_reference_char_3(Idx)
67501       ,p_reference_date_3         => l_array_reference_date_3(Idx)
67498       ,p_reference_char_4         => l_array_reference_char_4(Idx)
67499       ,p_reference_date_1         => l_array_reference_date_1(Idx)
67500       ,p_reference_date_2         => l_array_reference_date_2(Idx)
67502       ,p_reference_date_4         => l_array_reference_date_4(Idx)
67503       ,p_event_created_by         => l_array_event_created_by(Idx)
67504       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
67505        --
67506 END IF;
67507 
67508 
67509 
67510 --
67511 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
67512 
67513 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
67514 
67515 IF l_continue_with_lines THEN
67516    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
67517       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
67518 
67519       xla_accounting_err_pkg.build_message
67520          (p_appli_s_name            => 'XLA'
67521          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
67522          ,p_token_1                 => 'LINE_NUMBER'
67523          ,p_value_1                 => l_array_extract_line_num(Idx)
67524          ,p_token_2                 => 'PRODUCT_NAME'
67525          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
67526          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
67527          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
67528          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
67529 
67530    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
67531       --
67532       -- following sets the accounting attributes needed to reverse
67533       -- accounting for a distributeion
67534       --
67535 
67536       --
67537       -- 5217187
67538       --
67539       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
67540       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
67541                                        g_array_event(l_event_id).array_value_num('header_index'));
67542       --
67543       --
67544 
67545       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
67546       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
67547       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
67548       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
67549       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
67550       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
67551       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
67552       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
67553       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
67554       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
67555       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
67556       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
67557       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
67558       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
67559       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
67560       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
67561       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
67562       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
67563       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
67564       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
67565       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
67566       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
67567       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
67568       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
67569       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
67570       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
67571       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
67572       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
67573       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
67574       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
67575       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
67576       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
67577       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
67578       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
67579       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
67580       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
67581       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
67582       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
67583       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
67584       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
67585       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
67586       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
67587       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
67591       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
67588       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
67589       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
67590       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
67592       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
67593 
67594 
67595       xla_ae_lines_pkg.SetAcctReversalAttrs
67596          (p_event_id             => l_event_id
67597          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
67598          ,p_calculate_acctd_flag => l_calculate_acctd_flag
67599          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
67600    END IF;
67601 
67602    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
67603        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
67604 
67605 --
67606 AcctLineType_45 (
67607  p_application_id  => p_application_id
67608  ,p_event_id     => l_event_id
67609  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67610  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67611  ,p_actual_flag => l_actual_flag
67612  ,p_balance_type_code => l_balance_type_code
67613  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67614  
67615  , p_source_3 => l_array_source_3(Idx)
67616  , p_source_4 => l_array_source_4(Idx)
67617  , p_source_5 => l_array_source_5(Idx)
67618  , p_source_6 => l_array_source_6(Idx)
67619  , p_source_22 => l_array_source_22(Idx)
67620  , p_source_23 => l_array_source_23(Idx)
67621  , p_source_24 => l_array_source_24(Idx)
67622  , p_source_25 => l_array_source_25(Idx)
67623  , p_source_26 => l_array_source_26(Idx)
67624  , p_source_27 => l_array_source_27(Idx)
67625  , p_source_28 => l_array_source_28(Idx)
67626  , p_source_29 => l_array_source_29(Idx)
67627  , p_source_30 => l_array_source_30(Idx)
67628  , p_source_31 => l_array_source_31(Idx)
67629  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
67630  , p_source_33 => l_array_source_33(Idx)
67631  , p_source_34 => l_array_source_34(Idx)
67632  , p_source_34_meaning => l_array_source_34_meaning(Idx)
67633  , p_source_35 => l_array_source_35(Idx)
67634  );
67635 If(l_balance_type_code = 'A') THEN
67636   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67637 END IF;
67638 
67639 --
67640 
67641 
67642 --
67643 AcctLineType_55 (
67644  p_application_id  => p_application_id
67645  ,p_event_id     => l_event_id
67646  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67647  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67648  ,p_actual_flag => l_actual_flag
67649  ,p_balance_type_code => l_balance_type_code
67650  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67651  
67652  , p_source_3 => l_array_source_3(Idx)
67653  , p_source_4 => l_array_source_4(Idx)
67654  , p_source_6 => l_array_source_6(Idx)
67655  , p_source_7 => l_array_source_7(Idx)
67656  , p_source_22 => l_array_source_22(Idx)
67657  , p_source_23 => l_array_source_23(Idx)
67658  , p_source_24 => l_array_source_24(Idx)
67659  , p_source_25 => l_array_source_25(Idx)
67660  , p_source_26 => l_array_source_26(Idx)
67661  , p_source_27 => l_array_source_27(Idx)
67662  , p_source_28 => l_array_source_28(Idx)
67663  , p_source_29 => l_array_source_29(Idx)
67664  , p_source_30 => l_array_source_30(Idx)
67665  , p_source_31 => l_array_source_31(Idx)
67666  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
67667  , p_source_33 => l_array_source_33(Idx)
67668  , p_source_34 => l_array_source_34(Idx)
67669  , p_source_34_meaning => l_array_source_34_meaning(Idx)
67670  , p_source_35 => l_array_source_35(Idx)
67671  );
67672 If(l_balance_type_code = 'A') THEN
67673   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67674 END IF;
67675 
67676 --
67677 
67678       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
67679       -- or secondary ledger that has different currency with primary
67680       -- or alc that is calculated by sla
67681       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
67682             (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'))
67683 
67684 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
67685 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
67686           AND (l_actual_flag = 'A')) THEN
67687         XLA_AE_LINES_PKG.CreateGainOrLossLines(
67688           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
67689          ,p_application_id   => p_application_id
67690          ,p_amb_context_code => 'DEFAULT'
67691          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
67692          ,p_event_class_code => C_EVENT_CLASS_CODE
67693          ,p_event_type_code  => C_EVENT_TYPE_CODE
67694          
67695          ,p_gain_ccid        => -1
67696          ,p_loss_ccid        => -1
67697 
67698          ,p_actual_flag      => l_actual_flag
67699          ,p_enc_flag         => null
67700          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
67701          ,p_enc_g_l_ref      => null
67702          );
67703       END IF;
67704    END IF;
67705 END IF;
67706 
67707    ELSE
67708       --
67709       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
67710       --
67714             ,p_level    => C_LEVEL_STATEMENT
67711       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67712          trace
67713             (p_msg      => 'Trancaction revesal option is Y'
67715             ,p_module   => l_log_module);
67716       END IF;
67717    END IF;
67718 
67719 END LOOP;
67720 l_result := XLA_AE_LINES_PKG.InsertLines ;
67721 end loop;
67722 close line_cur;
67723 
67724 
67725 --
67726 -- insert headers into xla_ae_headers_gt table
67727 --
67728 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
67729 
67730 -- insert into errors table here.
67731 
67732 END LOOP;
67733 
67734 --
67735 -- 4865292
67736 --
67737 -- Compare g_hdr_extract_count with event count in
67738 -- CreateHeadersAndLines.
67739 --
67740 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
67741 
67742 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67743    trace (p_msg     => '# rows extracted from header extract objects '
67744                     || ' (running total): '
67745                     || g_hdr_extract_count
67746          ,p_level   => C_LEVEL_STATEMENT
67747          ,p_module  => l_log_module);
67748 END IF;
67749 
67750 CLOSE header_cur;
67751 --
67752 
67753 --
67754 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67755    trace
67756       (p_msg      => 'END of EventClass_118'
67757       ,p_level    => C_LEVEL_PROCEDURE
67758       ,p_module   => l_log_module);
67759 END IF;
67760 --
67761 RETURN l_result;
67762 EXCEPTION
67763 WHEN xla_exceptions_pkg.application_exception THEN
67764    
67765 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
67766 
67767    
67768 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
67769 
67770    RAISE;
67771 WHEN OTHERS THEN
67772    xla_exceptions_pkg.raise_message
67773       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_118');
67774 END EventClass_118;
67775 --
67776 
67777 ---------------------------------------
67778 --
67779 -- PRIVATE PROCEDURE
67780 --         insert_sources_119
67781 --
67782 ----------------------------------------
67783 --
67784 PROCEDURE insert_sources_119(
67785                                 p_target_ledger_id       IN NUMBER
67786                               , p_language               IN VARCHAR2
67787                               , p_sla_ledger_id          IN NUMBER
67788                               , p_pad_start_date         IN DATE
67789                               , p_pad_end_date           IN DATE
67790                          )
67791 IS
67792 
67793 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ADJ_ALL';
67794 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_COST_ADJ';
67795 p_apps_owner                   VARCHAR2(30);
67796 l_log_module                   VARCHAR2(240);
67797 BEGIN
67798 IF g_log_enabled THEN
67799       l_log_module := C_DEFAULT_MODULE||'.insert_sources_119';
67800 END IF;
67801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67802 
67803       trace
67804          (p_msg      => 'BEGIN of insert_sources_119'
67805          ,p_level    => C_LEVEL_PROCEDURE
67806          ,p_module   => l_log_module);
67807 
67808 END IF;
67809 
67810 -- select APPS owner
67811 SELECT oracle_username
67812   INTO p_apps_owner
67813   FROM fnd_oracle_userid
67814  WHERE read_only_flag = 'U'
67815 ;
67816 
67817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67818       trace
67819          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
67820                         ' - p_language = '||p_language||
67821                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
67822                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
67823                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
67824                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
67825          ,p_level    => C_LEVEL_STATEMENT
67826          ,p_module   => l_log_module);
67827 END IF;
67828 
67829 
67830 --
67831 INSERT INTO xla_diag_sources --hdr2
67832 (
67833         event_id
67834       , ledger_id
67835       , sla_ledger_id
67836       , description_language
67837       , object_name
67838       , object_type_code
67839       , line_number
67840       , source_application_id
67841       , source_type_code
67842       , source_code
67843       , source_value
67844       , source_meaning
67845       , created_by
67846       , creation_date
67847       , last_update_date
67848       , last_updated_by
67849       , last_update_login
67850       , program_update_date
67851       , program_application_id
67852       , program_id
67853       , request_id
67854 )
67855 SELECT
67856         event_id
67857       , p_target_ledger_id
67858       , p_sla_ledger_id
67859       , p_language
67860       , object_name
67861       , object_type_code
67862       , line_number
67863       , source_application_id
67864       , source_type_code
67865       , source_code
67866       , SUBSTR(source_value ,1,1996)
67867       , SUBSTR(source_meaning ,1,200)
67868       , xla_environment_pkg.g_Usr_Id
67869       , TRUNC(SYSDATE)
67870       , TRUNC(SYSDATE)
67871       , xla_environment_pkg.g_Usr_Id
67872       , xla_environment_pkg.g_Login_Id
67876       , xla_environment_pkg.g_Req_Id
67873       , TRUNC(SYSDATE)
67874       , xla_environment_pkg.g_Prog_Appl_Id
67875       , xla_environment_pkg.g_Prog_Id
67877   FROM (
67878        SELECT xet.event_id                  event_id
67879             , 0                          line_number
67880             , CASE r
67881                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
67882                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
67883                 
67884                ELSE null
67885               END                           object_name
67886             , CASE r
67887                 WHEN 1 THEN 'HEADER' 
67888                 WHEN 2 THEN 'HEADER' 
67889                 
67890                 ELSE null
67891               END                           object_type_code
67892             , CASE r
67893                 WHEN 1 THEN '275' 
67894                 WHEN 2 THEN '275' 
67895                 
67896                 ELSE null
67897               END                           source_application_id
67898             , 'S'             source_type_code
67899             , CASE r
67900                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
67901                 WHEN 2 THEN 'GL_DATE' 
67902                 
67903                 ELSE null
67904               END                           source_code
67905             , CASE r
67906                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
67907                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
67908                 
67909                 ELSE null
67910               END                           source_value
67911             , null              source_meaning
67912          FROM xla_events_gt     xet  
67913       , PA_XLA_EXP_HEADER_V  h2
67914              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
67915          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
67916            AND xet.event_class_code = C_EVENT_CLASS_CODE
67917               AND h2.event_id = xet.event_id
67918 
67919 )
67920 ;
67921 --
67922 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67923 
67924       trace
67925          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
67926          ,p_level    => C_LEVEL_STATEMENT
67927          ,p_module   => l_log_module);
67928 
67929 END IF;
67930 --
67931 
67932 
67933 
67934 --
67935 INSERT INTO xla_diag_sources  --line2
67936 (
67937         event_id
67938       , ledger_id
67939       , sla_ledger_id
67940       , description_language
67941       , object_name
67942       , object_type_code
67943       , line_number
67944       , source_application_id
67945       , source_type_code
67946       , source_code
67947       , source_value
67948       , source_meaning
67949       , created_by
67950       , creation_date
67951       , last_update_date
67952       , last_updated_by
67953       , last_update_login
67954       , program_update_date
67955       , program_application_id
67956       , program_id
67957       , request_id
67958 )
67959 SELECT  event_id
67960       , p_target_ledger_id
67961       , p_sla_ledger_id
67962       , p_language
67963       , object_name
67964       , object_type_code
67965       , line_number
67966       , source_application_id
67967       , source_type_code
67968       , source_code
67969       , SUBSTR(source_value,1,1996)
67970       , SUBSTR(source_meaning ,1,200)
67971       , xla_environment_pkg.g_Usr_Id
67972       , TRUNC(SYSDATE)
67973       , TRUNC(SYSDATE)
67974       , xla_environment_pkg.g_Usr_Id
67975       , xla_environment_pkg.g_Login_Id
67976       , TRUNC(SYSDATE)
67977       , xla_environment_pkg.g_Prog_Appl_Id
67978       , xla_environment_pkg.g_Prog_Id
67979       , xla_environment_pkg.g_Req_Id
67980   FROM (
67981        SELECT xet.event_id                  event_id
67982             , l1.line_number                 line_number
67983             , CASE r
67984                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
67985                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
67986                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
67987                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
67988                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
67989                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
67990                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
67991                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
67992                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
67993                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
67994                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
67995                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
67996                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
67997                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
67998                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
67999                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
68000                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
68001                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
68002                 
68003                ELSE null
68004               END                           object_name
68005             , CASE r
68006                 WHEN 1 THEN 'LINE' 
68007                 WHEN 2 THEN 'LINE' 
68008                 WHEN 3 THEN 'LINE' 
68009                 WHEN 4 THEN 'LINE' 
68010                 WHEN 5 THEN 'LINE' 
68011                 WHEN 6 THEN 'LINE' 
68015                 WHEN 10 THEN 'LINE' 
68012                 WHEN 7 THEN 'LINE' 
68013                 WHEN 8 THEN 'LINE' 
68014                 WHEN 9 THEN 'LINE' 
68016                 WHEN 11 THEN 'LINE' 
68017                 WHEN 12 THEN 'LINE' 
68018                 WHEN 13 THEN 'LINE' 
68019                 WHEN 14 THEN 'LINE' 
68020                 WHEN 15 THEN 'LINE' 
68021                 WHEN 16 THEN 'LINE' 
68022                 WHEN 17 THEN 'LINE' 
68023                 WHEN 18 THEN 'LINE' 
68024                 
68025                 ELSE null
68026               END                           object_type_code
68027             , CASE r
68028                 WHEN 1 THEN '275' 
68029                 WHEN 2 THEN '275' 
68030                 WHEN 3 THEN '275' 
68031                 WHEN 4 THEN '275' 
68032                 WHEN 5 THEN '275' 
68033                 WHEN 6 THEN '275' 
68034                 WHEN 7 THEN '275' 
68035                 WHEN 8 THEN '275' 
68036                 WHEN 9 THEN '275' 
68037                 WHEN 10 THEN '275' 
68038                 WHEN 11 THEN '275' 
68039                 WHEN 12 THEN '275' 
68040                 WHEN 13 THEN '275' 
68041                 WHEN 14 THEN '275' 
68042                 WHEN 15 THEN '275' 
68043                 WHEN 16 THEN '275' 
68044                 WHEN 17 THEN '275' 
68045                 WHEN 18 THEN '275' 
68046                 
68047                 ELSE null
68048               END                           source_application_id
68049             , 'S'             source_type_code
68050             , CASE r
68051                 WHEN 1 THEN 'COST_CCID' 
68052                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
68053                 WHEN 3 THEN 'ADJ_COST_CCID' 
68054                 WHEN 4 THEN 'COST_CLEARING_CCID' 
68055                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
68056                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
68057                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
68058                 WHEN 8 THEN 'ENTERED_RAW_COST' 
68059                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
68060                 WHEN 10 THEN 'ACCT_RAW_COST' 
68061                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
68062                 WHEN 12 THEN 'EXCHANGE_RATE' 
68063                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
68064                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
68065                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
68066                 WHEN 16 THEN 'LINE_NUMBER' 
68067                 WHEN 17 THEN 'LINE_TYPE' 
68068                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
68069                 
68070                 ELSE null
68071               END                           source_code
68072             , CASE r
68073                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
68074                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
68075                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
68076                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
68077                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
68078                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
68079                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
68080                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
68081                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
68082                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
68083                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
68084                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
68085                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
68086                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
68087                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
68088                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
68089                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
68090                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
68091                 
68092                 ELSE null
68093               END                           source_value
68094             , CASE r
68095                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
68096                           103371
68097                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
68098                          ,'ALLOW_OVERRIDE_CCID_FLAG'
68099                          ,'S'
68100                          ,275)
68101                 WHEN 17 THEN fvl34.meaning
68102                 
68103                 ELSE null
68104               END               source_meaning
68105          FROM  xla_events_gt     xet  
68106         , PA_XLA_CDL_LINES_V  l1
68107   , fnd_lookup_values    fvl34
68108             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
68109         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
68110           AND xet.event_class_code = C_EVENT_CLASS_CODE
68111             AND l1.event_id          = xet.event_id
68112    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
68113   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
68114   AND fvl34.view_application_id(+) = 275
68115   AND fvl34.language(+)            = USERENV('LANG')
68116   
68117 )
68118 ;
68119 --
68120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68121 
68122       trace
68123          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
68124          ,p_level    => C_LEVEL_STATEMENT
68125          ,p_module   => l_log_module);
68126 
68127 END IF;
68128 
68129 
68130 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68134          ,p_module   => l_log_module);
68131       trace
68132          (p_msg      => 'END of insert_sources_119'
68133          ,p_level    => C_LEVEL_PROCEDURE
68135 END IF;
68136 EXCEPTION
68137   WHEN xla_exceptions_pkg.application_exception THEN
68138       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
68139             trace
68140                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
68141                ,p_level    => C_LEVEL_EXCEPTION
68142                ,p_module   => l_log_module);
68143       END IF;
68144       RAISE;
68145   WHEN OTHERS THEN
68146       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
68147             trace
68148                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
68149                ,p_level    => C_LEVEL_EXCEPTION
68150                ,p_module   => l_log_module);
68151        END IF;
68152        xla_exceptions_pkg.raise_message
68153            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_119');
68154 END insert_sources_119;
68155 --
68156 
68157 ---------------------------------------
68158 --
68159 -- PRIVATE FUNCTION
68160 --         EventClass_119
68161 --
68162 ----------------------------------------
68163 --
68164 FUNCTION EventClass_119
68165        (p_application_id         IN NUMBER
68166        ,p_base_ledger_id         IN NUMBER
68167        ,p_target_ledger_id       IN NUMBER
68168        ,p_language               IN VARCHAR2
68169        ,p_currency_code          IN VARCHAR2
68170        ,p_sla_ledger_id          IN NUMBER
68171        ,p_pad_start_date         IN DATE
68172        ,p_pad_end_date           IN DATE
68173        ,p_primary_ledger_id      IN NUMBER)
68174 RETURN BOOLEAN IS
68175 --
68176 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ADJ_ALL';
68177 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_COST_ADJ';
68178 
68179 l_calculate_acctd_flag   VARCHAR2(1) :='N';
68180 l_calculate_g_l_flag     VARCHAR2(1) :='N';
68181 --
68182 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68183 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68184 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68185 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68186 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68187 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68188 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68189 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68190 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68191 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68192 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68193 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68194 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68195 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68196 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68197 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68198 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68199 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68200 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68201 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68202 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68203 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68204 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
68205 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68206 
68207 l_event_id                             NUMBER;
68208 l_previous_event_id                    NUMBER;
68209 l_first_event_id                       NUMBER;
68210 l_last_event_id                        NUMBER;
68211 
68212 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
68213 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
68214 --
68215 --
68216 l_result                    BOOLEAN := TRUE;
68217 l_rows                      NUMBER  := 1000;
68218 l_event_type_name           VARCHAR2(80) := 'All';
68219 l_event_class_name          VARCHAR2(80) := 'Miscelleneous Cost Adjustment';
68220 l_description               VARCHAR2(4000);
68221 l_transaction_reversal      NUMBER;
68222 l_ae_header_id              NUMBER;
68223 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
68224 l_log_module                VARCHAR2(240);
68225 --
68226 l_acct_reversal_source      VARCHAR2(30);
68227 l_trx_reversal_source       VARCHAR2(30);
68228 
68229 l_continue_with_lines       BOOLEAN := TRUE;
68230 --
68231 l_acc_rev_gl_date_source    DATE;                      -- 4262811
68232 --
68233 type t_array_event_id is table of number index by binary_integer;
68234 
68235 l_rec_array_event                    t_rec_array_event;
68236 l_null_rec_array_event               t_rec_array_event;
68237 l_array_ae_header_id                 xla_number_array_type;
68238 l_actual_flag                        VARCHAR2(1) := NULL;
68239 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
68240 l_balance_type_code                  VARCHAR2(1) :=NULL;
68241 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
68242 
68243 --
68247 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
68244 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
68245 --
68246 
68248 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
68249 
68250 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
68251 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
68252 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
68253 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
68254 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
68255 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
68256 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
68257 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
68258 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
68259 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
68260 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
68261 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
68262 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
68263 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
68264 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
68265 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
68266 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
68267 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
68268 
68269 l_array_source_32              t_array_source_32;
68270 l_array_source_87              t_array_source_87;
68271 
68272 l_array_source_3      t_array_source_3;
68273 l_array_source_4      t_array_source_4;
68274 l_array_source_5      t_array_source_5;
68275 l_array_source_6      t_array_source_6;
68276 l_array_source_7      t_array_source_7;
68277 l_array_source_22      t_array_source_22;
68278 l_array_source_23      t_array_source_23;
68279 l_array_source_24      t_array_source_24;
68280 l_array_source_25      t_array_source_25;
68281 l_array_source_26      t_array_source_26;
68282 l_array_source_27      t_array_source_27;
68283 l_array_source_28      t_array_source_28;
68284 l_array_source_29      t_array_source_29;
68285 l_array_source_30      t_array_source_30;
68286 l_array_source_31      t_array_source_31;
68287 l_array_source_33      t_array_source_33;
68288 l_array_source_34      t_array_source_34;
68289 l_array_source_34_meaning      t_array_lookup_meaning;
68290 l_array_source_35      t_array_source_35;
68291 
68292 --
68293 CURSOR header_cur
68294 IS
68295 SELECT /*+ leading(xet) cardinality(xet,1) */
68296 -- Event Class Code: MISC_COST_ADJ
68297     xet.entity_id
68298    ,xet.legal_entity_id
68299    ,xet.entity_code
68300    ,xet.transaction_number
68301    ,xet.event_id
68302    ,xet.event_class_code
68303    ,xet.event_type_code
68304    ,xet.event_number
68305    ,xet.event_date
68306    ,xet.transaction_date
68307    ,xet.reference_num_1
68308    ,xet.reference_num_2
68309    ,xet.reference_num_3
68310    ,xet.reference_num_4
68311    ,xet.reference_char_1
68312    ,xet.reference_char_2
68313    ,xet.reference_char_3
68314    ,xet.reference_char_4
68315    ,xet.reference_date_1
68316    ,xet.reference_date_2
68317    ,xet.reference_date_3
68318    ,xet.reference_date_4
68319    ,xet.event_created_by
68320    ,xet.budgetary_control_flag 
68321   , h2.EXPENDITURE_ITEM_ID    source_32
68322   , h2.GL_DATE    source_87
68323   FROM xla_events_gt     xet 
68324   , PA_XLA_EXP_HEADER_V  h2
68325  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
68326    and xet.event_class_code = C_EVENT_CLASS_CODE
68327    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
68328 
68329  ORDER BY event_id
68330 ;
68331 
68332 
68333 --
68334 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
68335 IS
68336 SELECT  /*+ leading(xet) cardinality(xet,1) */
68337 -- Event Class Code: MISC_COST_ADJ
68338     xet.entity_id
68339    ,xet.legal_entity_id
68340    ,xet.entity_code
68341    ,xet.transaction_number
68342    ,xet.event_id
68343    ,xet.event_class_code
68344    ,xet.event_type_code
68345    ,xet.event_number
68346    ,xet.event_date
68347    ,xet.transaction_date
68348    ,xet.reference_num_1
68349    ,xet.reference_num_2
68350    ,xet.reference_num_3
68351    ,xet.reference_num_4
68352    ,xet.reference_char_1
68353    ,xet.reference_char_2
68354    ,xet.reference_char_3
68355    ,xet.reference_char_4
68356    ,xet.reference_date_1
68357    ,xet.reference_date_2
68358    ,xet.reference_date_3
68359    ,xet.reference_date_4
68360    ,xet.event_created_by
68361    ,xet.budgetary_control_flag
68362  , l1.LINE_NUMBER  
68363   , l1.COST_CCID    source_3
68364   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
68365   , l1.ADJ_COST_CCID    source_5
68369   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
68366   , l1.COST_CLEARING_CCID    source_6
68367   , l1.ADJ_COST_CLEARING_CCID    source_7
68368   , l1.REVERSING_LINE_FLAG    source_22
68370   , l1.ENTERED_RAW_COST    source_24
68371   , l1.ENTERED_CURRENCY_CODE    source_25
68372   , l1.ACCT_RAW_COST    source_26
68373   , l1.EXCHANGE_RATE_DATE    source_27
68374   , l1.EXCHANGE_RATE    source_28
68375   , l1.EXCHANGE_RATE_TYPE    source_29
68376   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
68377   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
68378   , l1.LINE_NUMBER    source_33
68379   , l1.LINE_TYPE    source_34
68380   , fvl34.meaning   source_34_meaning
68381   , l1.LINE_NUM_REVERSED    source_35
68382   FROM xla_events_gt     xet 
68383   , PA_XLA_CDL_LINES_V  l1
68384   , fnd_lookup_values    fvl34
68385  WHERE xet.event_id between x_first_event_id and x_last_event_id
68386    and xet.event_date between p_pad_start_date and p_pad_end_date
68387    and xet.event_class_code = C_EVENT_CLASS_CODE
68388    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
68389    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
68390   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
68391   AND fvl34.view_application_id(+) = 275
68392   AND fvl34.language(+)            = USERENV('LANG')
68393   ;
68394 
68395 --
68396 BEGIN
68397 IF g_log_enabled THEN
68398    l_log_module := C_DEFAULT_MODULE||'.EventClass_119';
68399 END IF;
68400 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68401    trace
68402       (p_msg      => 'BEGIN of EventClass_119'
68403       ,p_level    => C_LEVEL_PROCEDURE
68404       ,p_module   => l_log_module);
68405 END IF;
68406 
68407 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68408    trace
68409       (p_msg      => 'p_application_id = '||p_application_id||
68410                      ' - p_base_ledger_id = '||p_base_ledger_id||
68411                      ' - p_target_ledger_id  = '||p_target_ledger_id||
68412                      ' - p_language = '||p_language||
68413                      ' - p_currency_code = '||p_currency_code||
68414                      ' - p_sla_ledger_id = '||p_sla_ledger_id
68415       ,p_level    => C_LEVEL_STATEMENT
68416       ,p_module   => l_log_module);
68417 END IF;
68418 --
68419 -- initialze arrays
68420 --
68421 g_array_event.DELETE;
68422 l_rec_array_event := l_null_rec_array_event;
68423 --
68424 --------------------------------------
68425 -- 4262811 Initialze MPA Line Number
68426 --------------------------------------
68427 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
68428 
68429 --
68430 
68431 --
68432 OPEN header_cur;
68433 --
68434 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68435    trace
68436    (p_msg      => 'SQL - FETCH header_cur'
68437    ,p_level    => C_LEVEL_STATEMENT
68438    ,p_module   => l_log_module);
68439 END IF;
68440 --
68441 LOOP
68442 FETCH header_cur BULK COLLECT INTO
68443         l_array_entity_id
68444       , l_array_legal_entity_id
68445       , l_array_entity_code
68446       , l_array_transaction_num
68447       , l_array_event_id
68448       , l_array_class_code
68449       , l_array_event_type
68450       , l_array_event_number
68451       , l_array_event_date
68452       , l_array_transaction_date
68453       , l_array_reference_num_1
68454       , l_array_reference_num_2
68455       , l_array_reference_num_3
68456       , l_array_reference_num_4
68457       , l_array_reference_char_1
68458       , l_array_reference_char_2
68459       , l_array_reference_char_3
68460       , l_array_reference_char_4
68461       , l_array_reference_date_1
68462       , l_array_reference_date_2
68463       , l_array_reference_date_3
68464       , l_array_reference_date_4
68465       , l_array_event_created_by
68466       , l_array_budgetary_control_flag 
68467       , l_array_source_32
68468       , l_array_source_87
68469       LIMIT l_rows;
68470 --
68471 IF (C_LEVEL_EVENT >= g_log_level) THEN
68472    trace
68473    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
68474    ,p_level    => C_LEVEL_EVENT
68475    ,p_module   => l_log_module);
68476 END IF;
68477 --
68478 EXIT WHEN l_array_entity_id.COUNT = 0;
68479 
68480 -- initialize arrays
68481 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
68482 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
68483 
68484 --
68485 -- Bug 4458708
68486 --
68487 XLA_AE_LINES_PKG.g_LineNumber := 0;
68488 
68489 
68490 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
68491 g_last_hdr_idx := l_array_event_id.LAST;
68492 --
68493 -- loop for the headers. Each iteration is for each header extract row
68494 -- fetched in header cursor
68495 --
68496 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
68497 
68498 --
68499 -- set event info as cache for other routines to refer event attributes
68500 --
68501 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
68502    (p_application_id           => p_application_id
68503    ,p_primary_ledger_id        => p_primary_ledger_id
68504    ,p_base_ledger_id           => p_base_ledger_id
68505    ,p_target_ledger_id         => p_target_ledger_id
68506    ,p_entity_id                => l_array_entity_id(hdr_idx)
68510    ,p_event_id                 => l_array_event_id(hdr_idx)
68507    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
68508    ,p_entity_code              => l_array_entity_code(hdr_idx)
68509    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
68511    ,p_event_class_code         => l_array_class_code(hdr_idx)
68512    ,p_event_type_code          => l_array_event_type(hdr_idx)
68513    ,p_event_number             => l_array_event_number(hdr_idx)
68514    ,p_event_date               => l_array_event_date(hdr_idx)
68515    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
68516    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
68517    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
68518    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
68519    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
68520    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
68521    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
68522    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
68523    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
68524    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
68525    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
68526    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
68527    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
68528    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
68529    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
68530 
68531 --
68532 -- set the status of entry to C_VALID (0)
68533 --
68534 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
68535 
68536 --
68537 -- initialize a row for ae header
68538 --
68539 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
68540 
68541 l_event_id := l_array_event_id(hdr_idx);
68542 
68543 --
68544 -- storing the hdr_idx for event. May be used by line cursor.
68545 --
68546 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
68547 
68548 --
68549 -- store sources from header extract. This can be improved to
68550 -- store only those sources from header extract that may be used in lines
68551 --
68552 
68553 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
68554 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
68555 
68556 --
68557 -- initilaize the status of ae headers for diffrent balance types
68558 -- the status is initialised to C_NOT_CREATED (2)
68559 --
68560 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68561 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68562 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68563 
68564 --
68565 -- call api to validate and store accounting attributes for header
68566 --
68567 
68568 ------------------------------------------------------------
68569 -- Accrual Reversal : to get date for Standard Source (NONE)
68570 ------------------------------------------------------------
68571 l_acc_rev_gl_date_source := NULL;
68572 
68573      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
68574       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
68575 
68576 
68577 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
68578 
68579 XLA_AE_HEADER_PKG.SetJeCategoryName;
68580 
68581 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
68582 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
68583 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
68584 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
68585 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
68586 
68587 
68588 -- No header level analytical criteria
68589 
68590 --
68591 --accounting attribute enhancement, bug 3612931
68592 --
68593 l_trx_reversal_source := SUBSTR(NULL, 1,30);
68594 
68595 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
68596    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68597 
68598    xla_accounting_err_pkg.build_message
68599       (p_appli_s_name            => 'XLA'
68600       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
68601       ,p_token_1                 => 'ACCT_ATTR_NAME'
68602       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
68603       ,p_token_2                 => 'PRODUCT_NAME'
68604       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68605       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68606       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68607       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68608 
68609 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
68610    --
68611    -- following sets the accounting attributes needed to reverse
68612    -- accounting for a distributeion
68613    --
68614    xla_ae_lines_pkg.SetTrxReversalAttrs
68618 
68615       (p_event_id              => l_event_id
68616       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
68617       ,p_trx_reversal_source   => l_trx_reversal_source);
68619 END IF;
68620 
68621 
68622 ----------------------------------------------------------------
68623 -- 4262811 -  update the header statuses to invalid in need be
68624 ----------------------------------------------------------------
68625 --
68626 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
68627 
68628 
68629   -----------------------------------------------
68630   -- No accrual reversal for the event class/type
68631   -----------------------------------------------
68632 ----------------------------------------------------------------
68633 
68634 --
68635 -- this ends the header loop iteration for one bulk fetch
68636 --
68637 END LOOP;
68638 
68639 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
68640 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
68641 
68642 --
68643 -- insert dummy rows into lines gt table that were created due to
68644 -- transaction reversals
68645 --
68646 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
68647    l_result := XLA_AE_LINES_PKG.InsertLines;
68648 END IF;
68649 
68650 --
68651 -- reset the temp_line_num for each set of events fetched from header
68652 -- cursor rather than doing it for each new event in line cursor
68653 -- Bug 3939231
68654 --
68655 xla_ae_lines_pkg.g_temp_line_num := 0;
68656 
68657 
68658 
68659 --
68660 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
68661 --
68662 --
68663 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68664 
68665       trace
68666          (p_msg      => 'SQL - FETCH line_cur'
68667          ,p_level    => C_LEVEL_STATEMENT
68668          ,p_module   => l_log_module);
68669 
68670 END IF;
68671 --
68672 --
68673 LOOP
68674   --
68675   FETCH line_cur BULK COLLECT INTO
68676         l_array_entity_id
68677       , l_array_legal_entity_id
68678       , l_array_entity_code
68679       , l_array_transaction_num
68680       , l_array_event_id
68681       , l_array_class_code
68682       , l_array_event_type
68683       , l_array_event_number
68684       , l_array_event_date
68685       , l_array_transaction_date
68686       , l_array_reference_num_1
68687       , l_array_reference_num_2
68688       , l_array_reference_num_3
68689       , l_array_reference_num_4
68690       , l_array_reference_char_1
68691       , l_array_reference_char_2
68692       , l_array_reference_char_3
68693       , l_array_reference_char_4
68694       , l_array_reference_date_1
68695       , l_array_reference_date_2
68696       , l_array_reference_date_3
68697       , l_array_reference_date_4
68698       , l_array_event_created_by
68699       , l_array_budgetary_control_flag
68700       , l_array_extract_line_num 
68701       , l_array_source_3
68702       , l_array_source_4
68703       , l_array_source_5
68704       , l_array_source_6
68705       , l_array_source_7
68706       , l_array_source_22
68707       , l_array_source_23
68708       , l_array_source_24
68709       , l_array_source_25
68710       , l_array_source_26
68711       , l_array_source_27
68712       , l_array_source_28
68713       , l_array_source_29
68714       , l_array_source_30
68715       , l_array_source_31
68716       , l_array_source_33
68717       , l_array_source_34
68718       , l_array_source_34_meaning
68719       , l_array_source_35
68720       LIMIT l_rows;
68721 
68722   --
68723   IF (C_LEVEL_EVENT >= g_log_level) THEN
68724             trace
68725                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
68726                ,p_level    => C_LEVEL_EVENT
68727                ,p_module   => l_log_module);
68728   END IF;
68729   --
68730   EXIT WHEN l_array_entity_id.count = 0;
68731 
68732   XLA_AE_LINES_PKG.g_rec_lines := null;
68733 
68734 --
68735 -- Bug 4458708
68736 --
68737 XLA_AE_LINES_PKG.g_LineNumber := 0;
68738 --
68739 --
68740 
68741 FOR Idx IN 1..l_array_event_id.count LOOP
68742    --
68743    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
68744    --
68745    l_event_id := l_array_event_id(idx);  -- 5648433
68746 
68747    --
68748    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
68749    --
68750 
68751    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
68752              (g_array_event(l_event_id).array_value_num('header_index'))
68753          ,'N'
68754          ) <> 'Y'
68755    THEN
68756       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68757          trace
68758             (p_msg      => 'Trancaction revesal option is not Y '
68759             ,p_level    => C_LEVEL_STATEMENT
68760             ,p_module   => l_log_module);
68761       END IF;
68762 
68763 --
68764 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
68765 --
68766 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
68767 --
68768 -- set event info as cache for other routines to refer event attributes
68769 --
68773 
68770 
68771 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
68772    l_previous_event_id := l_event_id;
68774    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
68775       (p_application_id           => p_application_id
68776       ,p_primary_ledger_id        => p_primary_ledger_id
68777       ,p_base_ledger_id           => p_base_ledger_id
68778       ,p_target_ledger_id         => p_target_ledger_id
68779       ,p_entity_id                => l_array_entity_id(Idx)
68780       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
68781       ,p_entity_code              => l_array_entity_code(Idx)
68782       ,p_transaction_num          => l_array_transaction_num(Idx)
68783       ,p_event_id                 => l_array_event_id(Idx)
68784       ,p_event_class_code         => l_array_class_code(Idx)
68785       ,p_event_type_code          => l_array_event_type(Idx)
68786       ,p_event_number             => l_array_event_number(Idx)
68787       ,p_event_date               => l_array_event_date(Idx)
68788       ,p_transaction_date         => l_array_transaction_date(Idx)
68789       ,p_reference_num_1          => l_array_reference_num_1(Idx)
68790       ,p_reference_num_2          => l_array_reference_num_2(Idx)
68791       ,p_reference_num_3          => l_array_reference_num_3(Idx)
68792       ,p_reference_num_4          => l_array_reference_num_4(Idx)
68793       ,p_reference_char_1         => l_array_reference_char_1(Idx)
68794       ,p_reference_char_2         => l_array_reference_char_2(Idx)
68795       ,p_reference_char_3         => l_array_reference_char_3(Idx)
68796       ,p_reference_char_4         => l_array_reference_char_4(Idx)
68797       ,p_reference_date_1         => l_array_reference_date_1(Idx)
68798       ,p_reference_date_2         => l_array_reference_date_2(Idx)
68799       ,p_reference_date_3         => l_array_reference_date_3(Idx)
68800       ,p_reference_date_4         => l_array_reference_date_4(Idx)
68801       ,p_event_created_by         => l_array_event_created_by(Idx)
68802       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
68803        --
68804 END IF;
68805 
68806 
68807 
68808 --
68809 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
68810 
68811 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
68812 
68813 IF l_continue_with_lines THEN
68814    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
68815       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68816 
68817       xla_accounting_err_pkg.build_message
68818          (p_appli_s_name            => 'XLA'
68819          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
68820          ,p_token_1                 => 'LINE_NUMBER'
68821          ,p_value_1                 => l_array_extract_line_num(Idx)
68822          ,p_token_2                 => 'PRODUCT_NAME'
68823          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68824          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68825          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68826          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68827 
68828    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
68829       --
68830       -- following sets the accounting attributes needed to reverse
68831       -- accounting for a distributeion
68832       --
68833 
68834       --
68835       -- 5217187
68836       --
68837       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
68838       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
68839                                        g_array_event(l_event_id).array_value_num('header_index'));
68840       --
68841       --
68842 
68843       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
68844       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
68845       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
68846       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
68847       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
68848       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
68849       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
68850       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
68851       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
68852       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
68853       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
68854       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
68855       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
68856       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
68857       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
68858       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
68859       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
68860       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
68861       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
68862       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
68863       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
68864       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
68868       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
68865       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
68866       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
68867       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
68869       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
68870       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
68871       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
68872       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
68873       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
68874       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
68875       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
68876       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
68877       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
68878       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
68879       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
68880       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
68881       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
68882       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
68883       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
68884       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
68885       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
68886       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
68887       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
68888       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
68889       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
68890       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
68891 
68892 
68893       xla_ae_lines_pkg.SetAcctReversalAttrs
68894          (p_event_id             => l_event_id
68895          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
68896          ,p_calculate_acctd_flag => l_calculate_acctd_flag
68897          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
68898    END IF;
68899 
68900    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
68901        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
68902 
68903 --
68904 AcctLineType_49 (
68905  p_application_id  => p_application_id
68906  ,p_event_id     => l_event_id
68907  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68908  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68909  ,p_actual_flag => l_actual_flag
68910  ,p_balance_type_code => l_balance_type_code
68911  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68912  
68913  , p_source_3 => l_array_source_3(Idx)
68914  , p_source_4 => l_array_source_4(Idx)
68915  , p_source_5 => l_array_source_5(Idx)
68916  , p_source_6 => l_array_source_6(Idx)
68917  , p_source_22 => l_array_source_22(Idx)
68918  , p_source_23 => l_array_source_23(Idx)
68919  , p_source_24 => l_array_source_24(Idx)
68920  , p_source_25 => l_array_source_25(Idx)
68921  , p_source_26 => l_array_source_26(Idx)
68922  , p_source_27 => l_array_source_27(Idx)
68923  , p_source_28 => l_array_source_28(Idx)
68924  , p_source_29 => l_array_source_29(Idx)
68925  , p_source_30 => l_array_source_30(Idx)
68926  , p_source_31 => l_array_source_31(Idx)
68927  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
68928  , p_source_33 => l_array_source_33(Idx)
68929  , p_source_34 => l_array_source_34(Idx)
68930  , p_source_34_meaning => l_array_source_34_meaning(Idx)
68931  , p_source_35 => l_array_source_35(Idx)
68932  );
68933 If(l_balance_type_code = 'A') THEN
68934   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68935 END IF;
68936 
68937 --
68938 
68939 
68940 --
68941 AcctLineType_61 (
68942  p_application_id  => p_application_id
68943  ,p_event_id     => l_event_id
68944  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68945  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68946  ,p_actual_flag => l_actual_flag
68947  ,p_balance_type_code => l_balance_type_code
68948  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68949  
68950  , p_source_3 => l_array_source_3(Idx)
68951  , p_source_4 => l_array_source_4(Idx)
68952  , p_source_6 => l_array_source_6(Idx)
68953  , p_source_7 => l_array_source_7(Idx)
68954  , p_source_22 => l_array_source_22(Idx)
68955  , p_source_23 => l_array_source_23(Idx)
68956  , p_source_24 => l_array_source_24(Idx)
68957  , p_source_25 => l_array_source_25(Idx)
68958  , p_source_26 => l_array_source_26(Idx)
68959  , p_source_27 => l_array_source_27(Idx)
68960  , p_source_28 => l_array_source_28(Idx)
68961  , p_source_29 => l_array_source_29(Idx)
68962  , p_source_30 => l_array_source_30(Idx)
68963  , p_source_31 => l_array_source_31(Idx)
68964  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
68965  , p_source_33 => l_array_source_33(Idx)
68966  , p_source_34 => l_array_source_34(Idx)
68967  , p_source_34_meaning => l_array_source_34_meaning(Idx)
68968  , p_source_35 => l_array_source_35(Idx)
68969  );
68970 If(l_balance_type_code = 'A') THEN
68971   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68972 END IF;
68973 
68974 --
68975 
68979       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
68976       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
68977       -- or secondary ledger that has different currency with primary
68978       -- or alc that is calculated by sla
68980             (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'))
68981 
68982 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
68983 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
68984           AND (l_actual_flag = 'A')) THEN
68985         XLA_AE_LINES_PKG.CreateGainOrLossLines(
68986           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
68987          ,p_application_id   => p_application_id
68988          ,p_amb_context_code => 'DEFAULT'
68989          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
68990          ,p_event_class_code => C_EVENT_CLASS_CODE
68991          ,p_event_type_code  => C_EVENT_TYPE_CODE
68992          
68993          ,p_gain_ccid        => -1
68994          ,p_loss_ccid        => -1
68995 
68996          ,p_actual_flag      => l_actual_flag
68997          ,p_enc_flag         => null
68998          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
68999          ,p_enc_g_l_ref      => null
69000          );
69001       END IF;
69002    END IF;
69003 END IF;
69004 
69005    ELSE
69006       --
69007       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
69008       --
69009       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69010          trace
69011             (p_msg      => 'Trancaction revesal option is Y'
69012             ,p_level    => C_LEVEL_STATEMENT
69013             ,p_module   => l_log_module);
69014       END IF;
69015    END IF;
69016 
69017 END LOOP;
69018 l_result := XLA_AE_LINES_PKG.InsertLines ;
69019 end loop;
69020 close line_cur;
69021 
69022 
69023 --
69024 -- insert headers into xla_ae_headers_gt table
69025 --
69026 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
69027 
69028 -- insert into errors table here.
69029 
69030 END LOOP;
69031 
69032 --
69033 -- 4865292
69034 --
69035 -- Compare g_hdr_extract_count with event count in
69036 -- CreateHeadersAndLines.
69037 --
69038 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
69039 
69040 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69041    trace (p_msg     => '# rows extracted from header extract objects '
69042                     || ' (running total): '
69043                     || g_hdr_extract_count
69044          ,p_level   => C_LEVEL_STATEMENT
69045          ,p_module  => l_log_module);
69046 END IF;
69047 
69048 CLOSE header_cur;
69049 --
69050 
69051 --
69052 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69053    trace
69054       (p_msg      => 'END of EventClass_119'
69055       ,p_level    => C_LEVEL_PROCEDURE
69056       ,p_module   => l_log_module);
69057 END IF;
69058 --
69059 RETURN l_result;
69060 EXCEPTION
69061 WHEN xla_exceptions_pkg.application_exception THEN
69062    
69063 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
69064 
69065    
69066 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
69067 
69068    RAISE;
69069 WHEN OTHERS THEN
69070    xla_exceptions_pkg.raise_message
69071       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_119');
69072 END EventClass_119;
69073 --
69074 
69075 ---------------------------------------
69076 --
69077 -- PRIVATE PROCEDURE
69078 --         insert_sources_120
69079 --
69080 ----------------------------------------
69081 --
69082 PROCEDURE insert_sources_120(
69083                                 p_target_ledger_id       IN NUMBER
69084                               , p_language               IN VARCHAR2
69085                               , p_sla_ledger_id          IN NUMBER
69086                               , p_pad_start_date         IN DATE
69087                               , p_pad_end_date           IN DATE
69088                          )
69089 IS
69090 
69091 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ALL';
69092 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_COST';
69093 p_apps_owner                   VARCHAR2(30);
69094 l_log_module                   VARCHAR2(240);
69095 BEGIN
69096 IF g_log_enabled THEN
69097       l_log_module := C_DEFAULT_MODULE||'.insert_sources_120';
69098 END IF;
69099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69100 
69101       trace
69102          (p_msg      => 'BEGIN of insert_sources_120'
69103          ,p_level    => C_LEVEL_PROCEDURE
69104          ,p_module   => l_log_module);
69105 
69106 END IF;
69107 
69108 -- select APPS owner
69109 SELECT oracle_username
69110   INTO p_apps_owner
69111   FROM fnd_oracle_userid
69112  WHERE read_only_flag = 'U'
69113 ;
69114 
69115 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69116       trace
69117          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
69118                         ' - p_language = '||p_language||
69119                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
69123          ,p_level    => C_LEVEL_STATEMENT
69120                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
69121                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
69122                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
69124          ,p_module   => l_log_module);
69125 END IF;
69126 
69127 
69128 --
69129 INSERT INTO xla_diag_sources --hdr2
69130 (
69131         event_id
69132       , ledger_id
69133       , sla_ledger_id
69134       , description_language
69135       , object_name
69136       , object_type_code
69137       , line_number
69138       , source_application_id
69139       , source_type_code
69140       , source_code
69141       , source_value
69142       , source_meaning
69143       , created_by
69144       , creation_date
69145       , last_update_date
69146       , last_updated_by
69147       , last_update_login
69148       , program_update_date
69149       , program_application_id
69150       , program_id
69151       , request_id
69152 )
69153 SELECT
69154         event_id
69155       , p_target_ledger_id
69156       , p_sla_ledger_id
69157       , p_language
69158       , object_name
69159       , object_type_code
69160       , line_number
69161       , source_application_id
69162       , source_type_code
69163       , source_code
69164       , SUBSTR(source_value ,1,1996)
69165       , SUBSTR(source_meaning ,1,200)
69166       , xla_environment_pkg.g_Usr_Id
69167       , TRUNC(SYSDATE)
69168       , TRUNC(SYSDATE)
69169       , xla_environment_pkg.g_Usr_Id
69170       , xla_environment_pkg.g_Login_Id
69171       , TRUNC(SYSDATE)
69172       , xla_environment_pkg.g_Prog_Appl_Id
69173       , xla_environment_pkg.g_Prog_Id
69174       , xla_environment_pkg.g_Req_Id
69175   FROM (
69176        SELECT xet.event_id                  event_id
69177             , 0                          line_number
69178             , CASE r
69179                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
69180                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
69181                 
69182                ELSE null
69183               END                           object_name
69184             , CASE r
69185                 WHEN 1 THEN 'HEADER' 
69186                 WHEN 2 THEN 'HEADER' 
69187                 
69188                 ELSE null
69189               END                           object_type_code
69190             , CASE r
69191                 WHEN 1 THEN '275' 
69192                 WHEN 2 THEN '275' 
69193                 
69194                 ELSE null
69195               END                           source_application_id
69196             , 'S'             source_type_code
69197             , CASE r
69198                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
69199                 WHEN 2 THEN 'GL_DATE' 
69200                 
69201                 ELSE null
69202               END                           source_code
69203             , CASE r
69204                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
69205                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
69206                 
69207                 ELSE null
69208               END                           source_value
69209             , null              source_meaning
69210          FROM xla_events_gt     xet  
69211       , PA_XLA_EXP_HEADER_V  h2
69212              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
69213          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
69214            AND xet.event_class_code = C_EVENT_CLASS_CODE
69215               AND h2.event_id = xet.event_id
69216 
69217 )
69218 ;
69219 --
69220 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69221 
69222       trace
69223          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
69224          ,p_level    => C_LEVEL_STATEMENT
69225          ,p_module   => l_log_module);
69226 
69227 END IF;
69228 --
69229 
69230 
69231 
69232 --
69233 INSERT INTO xla_diag_sources  --line2
69234 (
69235         event_id
69236       , ledger_id
69237       , sla_ledger_id
69238       , description_language
69239       , object_name
69240       , object_type_code
69241       , line_number
69242       , source_application_id
69243       , source_type_code
69244       , source_code
69245       , source_value
69246       , source_meaning
69247       , created_by
69248       , creation_date
69249       , last_update_date
69250       , last_updated_by
69251       , last_update_login
69252       , program_update_date
69253       , program_application_id
69254       , program_id
69255       , request_id
69256 )
69257 SELECT  event_id
69258       , p_target_ledger_id
69259       , p_sla_ledger_id
69260       , p_language
69261       , object_name
69262       , object_type_code
69263       , line_number
69264       , source_application_id
69265       , source_type_code
69266       , source_code
69267       , SUBSTR(source_value,1,1996)
69268       , SUBSTR(source_meaning ,1,200)
69269       , xla_environment_pkg.g_Usr_Id
69270       , TRUNC(SYSDATE)
69271       , TRUNC(SYSDATE)
69272       , xla_environment_pkg.g_Usr_Id
69273       , xla_environment_pkg.g_Login_Id
69277       , xla_environment_pkg.g_Req_Id
69274       , TRUNC(SYSDATE)
69275       , xla_environment_pkg.g_Prog_Appl_Id
69276       , xla_environment_pkg.g_Prog_Id
69278   FROM (
69279        SELECT xet.event_id                  event_id
69280             , l1.line_number                 line_number
69281             , CASE r
69282                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
69283                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
69284                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
69285                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
69286                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
69287                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
69288                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
69289                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
69290                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
69291                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
69292                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
69293                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
69294                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
69295                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
69296                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
69297                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
69298                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
69299                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
69300                 
69301                ELSE null
69302               END                           object_name
69303             , CASE r
69304                 WHEN 1 THEN 'LINE' 
69305                 WHEN 2 THEN 'LINE' 
69306                 WHEN 3 THEN 'LINE' 
69307                 WHEN 4 THEN 'LINE' 
69308                 WHEN 5 THEN 'LINE' 
69309                 WHEN 6 THEN 'LINE' 
69310                 WHEN 7 THEN 'LINE' 
69311                 WHEN 8 THEN 'LINE' 
69312                 WHEN 9 THEN 'LINE' 
69313                 WHEN 10 THEN 'LINE' 
69314                 WHEN 11 THEN 'LINE' 
69315                 WHEN 12 THEN 'LINE' 
69316                 WHEN 13 THEN 'LINE' 
69317                 WHEN 14 THEN 'LINE' 
69318                 WHEN 15 THEN 'LINE' 
69319                 WHEN 16 THEN 'LINE' 
69320                 WHEN 17 THEN 'LINE' 
69321                 WHEN 18 THEN 'LINE' 
69322                 
69323                 ELSE null
69324               END                           object_type_code
69325             , CASE r
69326                 WHEN 1 THEN '275' 
69327                 WHEN 2 THEN '275' 
69328                 WHEN 3 THEN '275' 
69329                 WHEN 4 THEN '275' 
69330                 WHEN 5 THEN '275' 
69331                 WHEN 6 THEN '275' 
69332                 WHEN 7 THEN '275' 
69333                 WHEN 8 THEN '275' 
69334                 WHEN 9 THEN '275' 
69335                 WHEN 10 THEN '275' 
69336                 WHEN 11 THEN '275' 
69337                 WHEN 12 THEN '275' 
69338                 WHEN 13 THEN '275' 
69339                 WHEN 14 THEN '275' 
69340                 WHEN 15 THEN '275' 
69341                 WHEN 16 THEN '275' 
69342                 WHEN 17 THEN '275' 
69343                 WHEN 18 THEN '275' 
69344                 
69345                 ELSE null
69346               END                           source_application_id
69347             , 'S'             source_type_code
69348             , CASE r
69349                 WHEN 1 THEN 'COST_CCID' 
69350                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
69351                 WHEN 3 THEN 'ADJ_COST_CCID' 
69352                 WHEN 4 THEN 'COST_CLEARING_CCID' 
69353                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
69354                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
69355                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
69356                 WHEN 8 THEN 'ENTERED_RAW_COST' 
69357                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
69358                 WHEN 10 THEN 'ACCT_RAW_COST' 
69359                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
69360                 WHEN 12 THEN 'EXCHANGE_RATE' 
69361                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
69362                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
69363                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
69364                 WHEN 16 THEN 'LINE_NUMBER' 
69365                 WHEN 17 THEN 'LINE_TYPE' 
69366                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
69367                 
69368                 ELSE null
69369               END                           source_code
69370             , CASE r
69371                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
69372                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
69373                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
69374                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
69375                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
69376                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
69377                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
69378                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
69379                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
69380                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
69381                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
69382                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
69383                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
69384                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
69385                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
69386                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
69387                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
69388                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
69389                 
69393                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
69390                 ELSE null
69391               END                           source_value
69392             , CASE r
69394                           103371
69395                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
69396                          ,'ALLOW_OVERRIDE_CCID_FLAG'
69397                          ,'S'
69398                          ,275)
69399                 WHEN 17 THEN fvl34.meaning
69400                 
69401                 ELSE null
69402               END               source_meaning
69403          FROM  xla_events_gt     xet  
69404         , PA_XLA_CDL_LINES_V  l1
69405   , fnd_lookup_values    fvl34
69406             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
69407         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
69408           AND xet.event_class_code = C_EVENT_CLASS_CODE
69409             AND l1.event_id          = xet.event_id
69410    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
69411   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
69412   AND fvl34.view_application_id(+) = 275
69413   AND fvl34.language(+)            = USERENV('LANG')
69414   
69415 )
69416 ;
69417 --
69418 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69419 
69420       trace
69421          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
69422          ,p_level    => C_LEVEL_STATEMENT
69423          ,p_module   => l_log_module);
69424 
69425 END IF;
69426 
69427 
69428 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69429       trace
69430          (p_msg      => 'END of insert_sources_120'
69431          ,p_level    => C_LEVEL_PROCEDURE
69432          ,p_module   => l_log_module);
69433 END IF;
69434 EXCEPTION
69435   WHEN xla_exceptions_pkg.application_exception THEN
69436       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69437             trace
69438                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69439                ,p_level    => C_LEVEL_EXCEPTION
69440                ,p_module   => l_log_module);
69441       END IF;
69442       RAISE;
69443   WHEN OTHERS THEN
69444       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69445             trace
69446                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69447                ,p_level    => C_LEVEL_EXCEPTION
69448                ,p_module   => l_log_module);
69449        END IF;
69450        xla_exceptions_pkg.raise_message
69451            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_120');
69452 END insert_sources_120;
69453 --
69454 
69455 ---------------------------------------
69456 --
69457 -- PRIVATE FUNCTION
69458 --         EventClass_120
69459 --
69460 ----------------------------------------
69461 --
69462 FUNCTION EventClass_120
69463        (p_application_id         IN NUMBER
69464        ,p_base_ledger_id         IN NUMBER
69465        ,p_target_ledger_id       IN NUMBER
69466        ,p_language               IN VARCHAR2
69467        ,p_currency_code          IN VARCHAR2
69468        ,p_sla_ledger_id          IN NUMBER
69469        ,p_pad_start_date         IN DATE
69470        ,p_pad_end_date           IN DATE
69471        ,p_primary_ledger_id      IN NUMBER)
69472 RETURN BOOLEAN IS
69473 --
69474 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ALL';
69475 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_COST';
69476 
69477 l_calculate_acctd_flag   VARCHAR2(1) :='N';
69478 l_calculate_g_l_flag     VARCHAR2(1) :='N';
69479 --
69480 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69481 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69482 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69483 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69484 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69485 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69486 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69487 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69488 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69489 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69490 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69491 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69492 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69493 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69494 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69495 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69496 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69497 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69498 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69499 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69500 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69501 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69502 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
69503 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69504 
69508 l_last_event_id                        NUMBER;
69505 l_event_id                             NUMBER;
69506 l_previous_event_id                    NUMBER;
69507 l_first_event_id                       NUMBER;
69509 
69510 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
69511 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
69512 --
69513 --
69514 l_result                    BOOLEAN := TRUE;
69515 l_rows                      NUMBER  := 1000;
69516 l_event_type_name           VARCHAR2(80) := 'All';
69517 l_event_class_name          VARCHAR2(80) := 'Miscellaneous Cost';
69518 l_description               VARCHAR2(4000);
69519 l_transaction_reversal      NUMBER;
69520 l_ae_header_id              NUMBER;
69521 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
69522 l_log_module                VARCHAR2(240);
69523 --
69524 l_acct_reversal_source      VARCHAR2(30);
69525 l_trx_reversal_source       VARCHAR2(30);
69526 
69527 l_continue_with_lines       BOOLEAN := TRUE;
69528 --
69529 l_acc_rev_gl_date_source    DATE;                      -- 4262811
69530 --
69531 type t_array_event_id is table of number index by binary_integer;
69532 
69533 l_rec_array_event                    t_rec_array_event;
69534 l_null_rec_array_event               t_rec_array_event;
69535 l_array_ae_header_id                 xla_number_array_type;
69536 l_actual_flag                        VARCHAR2(1) := NULL;
69537 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
69538 l_balance_type_code                  VARCHAR2(1) :=NULL;
69539 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
69540 
69541 --
69542 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
69543 --
69544 
69545 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
69546 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
69547 
69548 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
69549 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
69550 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
69551 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
69552 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
69553 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
69554 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
69555 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
69556 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
69557 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
69558 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
69559 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
69560 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
69561 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
69562 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
69563 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
69564 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
69565 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
69566 
69567 l_array_source_32              t_array_source_32;
69568 l_array_source_87              t_array_source_87;
69569 
69570 l_array_source_3      t_array_source_3;
69571 l_array_source_4      t_array_source_4;
69572 l_array_source_5      t_array_source_5;
69573 l_array_source_6      t_array_source_6;
69574 l_array_source_7      t_array_source_7;
69575 l_array_source_22      t_array_source_22;
69576 l_array_source_23      t_array_source_23;
69577 l_array_source_24      t_array_source_24;
69578 l_array_source_25      t_array_source_25;
69579 l_array_source_26      t_array_source_26;
69580 l_array_source_27      t_array_source_27;
69581 l_array_source_28      t_array_source_28;
69582 l_array_source_29      t_array_source_29;
69583 l_array_source_30      t_array_source_30;
69584 l_array_source_31      t_array_source_31;
69585 l_array_source_33      t_array_source_33;
69586 l_array_source_34      t_array_source_34;
69587 l_array_source_34_meaning      t_array_lookup_meaning;
69588 l_array_source_35      t_array_source_35;
69589 
69590 --
69591 CURSOR header_cur
69592 IS
69593 SELECT /*+ leading(xet) cardinality(xet,1) */
69594 -- Event Class Code: MISC_COST
69595     xet.entity_id
69596    ,xet.legal_entity_id
69597    ,xet.entity_code
69598    ,xet.transaction_number
69599    ,xet.event_id
69600    ,xet.event_class_code
69601    ,xet.event_type_code
69602    ,xet.event_number
69603    ,xet.event_date
69604    ,xet.transaction_date
69605    ,xet.reference_num_1
69606    ,xet.reference_num_2
69607    ,xet.reference_num_3
69608    ,xet.reference_num_4
69609    ,xet.reference_char_1
69610    ,xet.reference_char_2
69611    ,xet.reference_char_3
69615    ,xet.reference_date_3
69612    ,xet.reference_char_4
69613    ,xet.reference_date_1
69614    ,xet.reference_date_2
69616    ,xet.reference_date_4
69617    ,xet.event_created_by
69618    ,xet.budgetary_control_flag 
69619   , h2.EXPENDITURE_ITEM_ID    source_32
69620   , h2.GL_DATE    source_87
69621   FROM xla_events_gt     xet 
69622   , PA_XLA_EXP_HEADER_V  h2
69623  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
69624    and xet.event_class_code = C_EVENT_CLASS_CODE
69625    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
69626 
69627  ORDER BY event_id
69628 ;
69629 
69630 
69631 --
69632 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
69633 IS
69634 SELECT  /*+ leading(xet) cardinality(xet,1) */
69635 -- Event Class Code: MISC_COST
69636     xet.entity_id
69637    ,xet.legal_entity_id
69638    ,xet.entity_code
69639    ,xet.transaction_number
69640    ,xet.event_id
69641    ,xet.event_class_code
69642    ,xet.event_type_code
69643    ,xet.event_number
69644    ,xet.event_date
69645    ,xet.transaction_date
69646    ,xet.reference_num_1
69647    ,xet.reference_num_2
69648    ,xet.reference_num_3
69649    ,xet.reference_num_4
69650    ,xet.reference_char_1
69651    ,xet.reference_char_2
69652    ,xet.reference_char_3
69653    ,xet.reference_char_4
69654    ,xet.reference_date_1
69655    ,xet.reference_date_2
69656    ,xet.reference_date_3
69657    ,xet.reference_date_4
69658    ,xet.event_created_by
69659    ,xet.budgetary_control_flag
69660  , l1.LINE_NUMBER  
69661   , l1.COST_CCID    source_3
69662   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
69663   , l1.ADJ_COST_CCID    source_5
69664   , l1.COST_CLEARING_CCID    source_6
69665   , l1.ADJ_COST_CLEARING_CCID    source_7
69666   , l1.REVERSING_LINE_FLAG    source_22
69667   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
69668   , l1.ENTERED_RAW_COST    source_24
69669   , l1.ENTERED_CURRENCY_CODE    source_25
69670   , l1.ACCT_RAW_COST    source_26
69671   , l1.EXCHANGE_RATE_DATE    source_27
69672   , l1.EXCHANGE_RATE    source_28
69673   , l1.EXCHANGE_RATE_TYPE    source_29
69674   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
69675   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
69676   , l1.LINE_NUMBER    source_33
69677   , l1.LINE_TYPE    source_34
69678   , fvl34.meaning   source_34_meaning
69679   , l1.LINE_NUM_REVERSED    source_35
69680   FROM xla_events_gt     xet 
69681   , PA_XLA_CDL_LINES_V  l1
69682   , fnd_lookup_values    fvl34
69683  WHERE xet.event_id between x_first_event_id and x_last_event_id
69684    and xet.event_date between p_pad_start_date and p_pad_end_date
69685    and xet.event_class_code = C_EVENT_CLASS_CODE
69686    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
69687    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
69688   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
69689   AND fvl34.view_application_id(+) = 275
69690   AND fvl34.language(+)            = USERENV('LANG')
69691   ;
69692 
69693 --
69694 BEGIN
69695 IF g_log_enabled THEN
69696    l_log_module := C_DEFAULT_MODULE||'.EventClass_120';
69697 END IF;
69698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69699    trace
69700       (p_msg      => 'BEGIN of EventClass_120'
69701       ,p_level    => C_LEVEL_PROCEDURE
69702       ,p_module   => l_log_module);
69703 END IF;
69704 
69705 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69706    trace
69707       (p_msg      => 'p_application_id = '||p_application_id||
69708                      ' - p_base_ledger_id = '||p_base_ledger_id||
69709                      ' - p_target_ledger_id  = '||p_target_ledger_id||
69710                      ' - p_language = '||p_language||
69711                      ' - p_currency_code = '||p_currency_code||
69712                      ' - p_sla_ledger_id = '||p_sla_ledger_id
69713       ,p_level    => C_LEVEL_STATEMENT
69714       ,p_module   => l_log_module);
69715 END IF;
69716 --
69717 -- initialze arrays
69718 --
69719 g_array_event.DELETE;
69720 l_rec_array_event := l_null_rec_array_event;
69721 --
69722 --------------------------------------
69723 -- 4262811 Initialze MPA Line Number
69724 --------------------------------------
69725 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
69726 
69727 --
69728 
69729 --
69730 OPEN header_cur;
69731 --
69732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69733    trace
69734    (p_msg      => 'SQL - FETCH header_cur'
69735    ,p_level    => C_LEVEL_STATEMENT
69736    ,p_module   => l_log_module);
69737 END IF;
69738 --
69739 LOOP
69740 FETCH header_cur BULK COLLECT INTO
69741         l_array_entity_id
69742       , l_array_legal_entity_id
69743       , l_array_entity_code
69744       , l_array_transaction_num
69745       , l_array_event_id
69746       , l_array_class_code
69747       , l_array_event_type
69748       , l_array_event_number
69749       , l_array_event_date
69750       , l_array_transaction_date
69751       , l_array_reference_num_1
69752       , l_array_reference_num_2
69753       , l_array_reference_num_3
69754       , l_array_reference_num_4
69755       , l_array_reference_char_1
69756       , l_array_reference_char_2
69757       , l_array_reference_char_3
69758       , l_array_reference_char_4
69762       , l_array_reference_date_4
69759       , l_array_reference_date_1
69760       , l_array_reference_date_2
69761       , l_array_reference_date_3
69763       , l_array_event_created_by
69764       , l_array_budgetary_control_flag 
69765       , l_array_source_32
69766       , l_array_source_87
69767       LIMIT l_rows;
69768 --
69769 IF (C_LEVEL_EVENT >= g_log_level) THEN
69770    trace
69771    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
69772    ,p_level    => C_LEVEL_EVENT
69773    ,p_module   => l_log_module);
69774 END IF;
69775 --
69776 EXIT WHEN l_array_entity_id.COUNT = 0;
69777 
69778 -- initialize arrays
69779 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
69780 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
69781 
69782 --
69783 -- Bug 4458708
69784 --
69785 XLA_AE_LINES_PKG.g_LineNumber := 0;
69786 
69787 
69788 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
69789 g_last_hdr_idx := l_array_event_id.LAST;
69790 --
69791 -- loop for the headers. Each iteration is for each header extract row
69792 -- fetched in header cursor
69793 --
69794 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
69795 
69796 --
69797 -- set event info as cache for other routines to refer event attributes
69798 --
69799 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
69800    (p_application_id           => p_application_id
69801    ,p_primary_ledger_id        => p_primary_ledger_id
69802    ,p_base_ledger_id           => p_base_ledger_id
69803    ,p_target_ledger_id         => p_target_ledger_id
69804    ,p_entity_id                => l_array_entity_id(hdr_idx)
69805    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
69806    ,p_entity_code              => l_array_entity_code(hdr_idx)
69807    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
69808    ,p_event_id                 => l_array_event_id(hdr_idx)
69809    ,p_event_class_code         => l_array_class_code(hdr_idx)
69810    ,p_event_type_code          => l_array_event_type(hdr_idx)
69811    ,p_event_number             => l_array_event_number(hdr_idx)
69812    ,p_event_date               => l_array_event_date(hdr_idx)
69813    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
69814    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
69815    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
69816    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
69817    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
69818    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
69819    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
69820    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
69821    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
69822    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
69823    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
69824    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
69825    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
69826    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
69827    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
69828 
69829 --
69830 -- set the status of entry to C_VALID (0)
69831 --
69832 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
69833 
69834 --
69835 -- initialize a row for ae header
69836 --
69837 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
69838 
69839 l_event_id := l_array_event_id(hdr_idx);
69840 
69841 --
69842 -- storing the hdr_idx for event. May be used by line cursor.
69843 --
69844 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
69845 
69846 --
69847 -- store sources from header extract. This can be improved to
69848 -- store only those sources from header extract that may be used in lines
69849 --
69850 
69851 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
69852 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
69853 
69854 --
69855 -- initilaize the status of ae headers for diffrent balance types
69856 -- the status is initialised to C_NOT_CREATED (2)
69857 --
69858 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69859 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69860 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69861 
69862 --
69863 -- call api to validate and store accounting attributes for header
69864 --
69865 
69866 ------------------------------------------------------------
69867 -- Accrual Reversal : to get date for Standard Source (NONE)
69868 ------------------------------------------------------------
69869 l_acc_rev_gl_date_source := NULL;
69870 
69871      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
69872       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
69873 
69874 
69875 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
69876 
69877 XLA_AE_HEADER_PKG.SetJeCategoryName;
69878 
69879 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
69880 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
69884 
69881 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
69882 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
69883 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
69885 
69886 -- No header level analytical criteria
69887 
69888 --
69889 --accounting attribute enhancement, bug 3612931
69890 --
69891 l_trx_reversal_source := SUBSTR(NULL, 1,30);
69892 
69893 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
69894    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
69895 
69896    xla_accounting_err_pkg.build_message
69897       (p_appli_s_name            => 'XLA'
69898       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
69899       ,p_token_1                 => 'ACCT_ATTR_NAME'
69900       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
69901       ,p_token_2                 => 'PRODUCT_NAME'
69902       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
69903       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
69904       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
69905       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
69906 
69907 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
69908    --
69909    -- following sets the accounting attributes needed to reverse
69910    -- accounting for a distributeion
69911    --
69912    xla_ae_lines_pkg.SetTrxReversalAttrs
69913       (p_event_id              => l_event_id
69914       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
69915       ,p_trx_reversal_source   => l_trx_reversal_source);
69916 
69917 END IF;
69918 
69919 
69920 ----------------------------------------------------------------
69921 -- 4262811 -  update the header statuses to invalid in need be
69922 ----------------------------------------------------------------
69923 --
69924 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
69925 
69926 
69927   -----------------------------------------------
69928   -- No accrual reversal for the event class/type
69929   -----------------------------------------------
69930 ----------------------------------------------------------------
69931 
69932 --
69933 -- this ends the header loop iteration for one bulk fetch
69934 --
69935 END LOOP;
69936 
69937 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
69938 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
69939 
69940 --
69941 -- insert dummy rows into lines gt table that were created due to
69942 -- transaction reversals
69943 --
69944 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
69945    l_result := XLA_AE_LINES_PKG.InsertLines;
69946 END IF;
69947 
69948 --
69949 -- reset the temp_line_num for each set of events fetched from header
69950 -- cursor rather than doing it for each new event in line cursor
69951 -- Bug 3939231
69952 --
69953 xla_ae_lines_pkg.g_temp_line_num := 0;
69954 
69955 
69956 
69957 --
69958 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
69959 --
69960 --
69961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69962 
69963       trace
69964          (p_msg      => 'SQL - FETCH line_cur'
69965          ,p_level    => C_LEVEL_STATEMENT
69966          ,p_module   => l_log_module);
69967 
69968 END IF;
69969 --
69970 --
69971 LOOP
69972   --
69973   FETCH line_cur BULK COLLECT INTO
69974         l_array_entity_id
69975       , l_array_legal_entity_id
69976       , l_array_entity_code
69977       , l_array_transaction_num
69978       , l_array_event_id
69979       , l_array_class_code
69980       , l_array_event_type
69981       , l_array_event_number
69982       , l_array_event_date
69983       , l_array_transaction_date
69984       , l_array_reference_num_1
69985       , l_array_reference_num_2
69986       , l_array_reference_num_3
69987       , l_array_reference_num_4
69988       , l_array_reference_char_1
69989       , l_array_reference_char_2
69990       , l_array_reference_char_3
69991       , l_array_reference_char_4
69992       , l_array_reference_date_1
69993       , l_array_reference_date_2
69994       , l_array_reference_date_3
69995       , l_array_reference_date_4
69996       , l_array_event_created_by
69997       , l_array_budgetary_control_flag
69998       , l_array_extract_line_num 
69999       , l_array_source_3
70000       , l_array_source_4
70001       , l_array_source_5
70002       , l_array_source_6
70003       , l_array_source_7
70004       , l_array_source_22
70005       , l_array_source_23
70006       , l_array_source_24
70007       , l_array_source_25
70008       , l_array_source_26
70009       , l_array_source_27
70010       , l_array_source_28
70011       , l_array_source_29
70012       , l_array_source_30
70013       , l_array_source_31
70014       , l_array_source_33
70015       , l_array_source_34
70016       , l_array_source_34_meaning
70017       , l_array_source_35
70018       LIMIT l_rows;
70019 
70020   --
70021   IF (C_LEVEL_EVENT >= g_log_level) THEN
70022             trace
70026   END IF;
70023                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
70024                ,p_level    => C_LEVEL_EVENT
70025                ,p_module   => l_log_module);
70027   --
70028   EXIT WHEN l_array_entity_id.count = 0;
70029 
70030   XLA_AE_LINES_PKG.g_rec_lines := null;
70031 
70032 --
70033 -- Bug 4458708
70034 --
70035 XLA_AE_LINES_PKG.g_LineNumber := 0;
70036 --
70037 --
70038 
70039 FOR Idx IN 1..l_array_event_id.count LOOP
70040    --
70041    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
70042    --
70043    l_event_id := l_array_event_id(idx);  -- 5648433
70044 
70045    --
70046    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
70047    --
70048 
70049    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
70050              (g_array_event(l_event_id).array_value_num('header_index'))
70051          ,'N'
70052          ) <> 'Y'
70053    THEN
70054       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70055          trace
70056             (p_msg      => 'Trancaction revesal option is not Y '
70057             ,p_level    => C_LEVEL_STATEMENT
70058             ,p_module   => l_log_module);
70059       END IF;
70060 
70061 --
70062 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
70063 --
70064 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
70065 --
70066 -- set event info as cache for other routines to refer event attributes
70067 --
70068 
70069 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
70070    l_previous_event_id := l_event_id;
70071 
70072    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
70073       (p_application_id           => p_application_id
70074       ,p_primary_ledger_id        => p_primary_ledger_id
70075       ,p_base_ledger_id           => p_base_ledger_id
70076       ,p_target_ledger_id         => p_target_ledger_id
70077       ,p_entity_id                => l_array_entity_id(Idx)
70078       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
70079       ,p_entity_code              => l_array_entity_code(Idx)
70080       ,p_transaction_num          => l_array_transaction_num(Idx)
70081       ,p_event_id                 => l_array_event_id(Idx)
70082       ,p_event_class_code         => l_array_class_code(Idx)
70083       ,p_event_type_code          => l_array_event_type(Idx)
70084       ,p_event_number             => l_array_event_number(Idx)
70085       ,p_event_date               => l_array_event_date(Idx)
70086       ,p_transaction_date         => l_array_transaction_date(Idx)
70087       ,p_reference_num_1          => l_array_reference_num_1(Idx)
70088       ,p_reference_num_2          => l_array_reference_num_2(Idx)
70089       ,p_reference_num_3          => l_array_reference_num_3(Idx)
70090       ,p_reference_num_4          => l_array_reference_num_4(Idx)
70091       ,p_reference_char_1         => l_array_reference_char_1(Idx)
70092       ,p_reference_char_2         => l_array_reference_char_2(Idx)
70093       ,p_reference_char_3         => l_array_reference_char_3(Idx)
70094       ,p_reference_char_4         => l_array_reference_char_4(Idx)
70095       ,p_reference_date_1         => l_array_reference_date_1(Idx)
70096       ,p_reference_date_2         => l_array_reference_date_2(Idx)
70097       ,p_reference_date_3         => l_array_reference_date_3(Idx)
70098       ,p_reference_date_4         => l_array_reference_date_4(Idx)
70099       ,p_event_created_by         => l_array_event_created_by(Idx)
70100       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
70101        --
70102 END IF;
70103 
70104 
70105 
70106 --
70107 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
70108 
70109 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
70110 
70111 IF l_continue_with_lines THEN
70112    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
70113       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
70114 
70115       xla_accounting_err_pkg.build_message
70116          (p_appli_s_name            => 'XLA'
70117          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
70118          ,p_token_1                 => 'LINE_NUMBER'
70119          ,p_value_1                 => l_array_extract_line_num(Idx)
70120          ,p_token_2                 => 'PRODUCT_NAME'
70121          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
70122          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
70123          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
70124          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
70125 
70126    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
70127       --
70128       -- following sets the accounting attributes needed to reverse
70129       -- accounting for a distributeion
70130       --
70131 
70132       --
70133       -- 5217187
70134       --
70135       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
70136       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
70137                                        g_array_event(l_event_id).array_value_num('header_index'));
70138       --
70139       --
70140 
70144       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
70141       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
70142       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
70143       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
70145       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
70146       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
70147       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
70148       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
70149       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
70150       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
70151       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
70152       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
70153       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
70154       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
70155       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
70156       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
70157       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
70158       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
70159       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
70160       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
70161       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
70162       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
70163       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
70164       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
70165       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
70166       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
70167       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
70168       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
70169       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
70170       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
70171       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
70172       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
70173       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
70174       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
70175       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
70176       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
70177       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
70178       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
70179       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
70180       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
70181       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
70182       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
70183       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
70184       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
70185       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
70186       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
70187       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
70188       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
70189 
70190 
70191       xla_ae_lines_pkg.SetAcctReversalAttrs
70192          (p_event_id             => l_event_id
70193          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
70194          ,p_calculate_acctd_flag => l_calculate_acctd_flag
70195          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
70196    END IF;
70197 
70198    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
70199        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
70200 
70201 --
70202 AcctLineType_46 (
70203  p_application_id  => p_application_id
70204  ,p_event_id     => l_event_id
70205  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70206  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70207  ,p_actual_flag => l_actual_flag
70208  ,p_balance_type_code => l_balance_type_code
70209  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70210  
70211  , p_source_3 => l_array_source_3(Idx)
70212  , p_source_4 => l_array_source_4(Idx)
70213  , p_source_5 => l_array_source_5(Idx)
70214  , p_source_6 => l_array_source_6(Idx)
70215  , p_source_22 => l_array_source_22(Idx)
70216  , p_source_23 => l_array_source_23(Idx)
70217  , p_source_24 => l_array_source_24(Idx)
70218  , p_source_25 => l_array_source_25(Idx)
70219  , p_source_26 => l_array_source_26(Idx)
70220  , p_source_27 => l_array_source_27(Idx)
70221  , p_source_28 => l_array_source_28(Idx)
70222  , p_source_29 => l_array_source_29(Idx)
70223  , p_source_30 => l_array_source_30(Idx)
70224  , p_source_31 => l_array_source_31(Idx)
70225  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
70226  , p_source_33 => l_array_source_33(Idx)
70227  , p_source_34 => l_array_source_34(Idx)
70228  , p_source_34_meaning => l_array_source_34_meaning(Idx)
70232   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70229  , p_source_35 => l_array_source_35(Idx)
70230  );
70231 If(l_balance_type_code = 'A') THEN
70233 END IF;
70234 
70235 --
70236 
70237 
70238 --
70239 AcctLineType_57 (
70240  p_application_id  => p_application_id
70241  ,p_event_id     => l_event_id
70242  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70243  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70244  ,p_actual_flag => l_actual_flag
70245  ,p_balance_type_code => l_balance_type_code
70246  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70247  
70248  , p_source_3 => l_array_source_3(Idx)
70249  , p_source_4 => l_array_source_4(Idx)
70250  , p_source_6 => l_array_source_6(Idx)
70251  , p_source_7 => l_array_source_7(Idx)
70252  , p_source_22 => l_array_source_22(Idx)
70253  , p_source_23 => l_array_source_23(Idx)
70254  , p_source_24 => l_array_source_24(Idx)
70255  , p_source_25 => l_array_source_25(Idx)
70256  , p_source_26 => l_array_source_26(Idx)
70257  , p_source_27 => l_array_source_27(Idx)
70258  , p_source_28 => l_array_source_28(Idx)
70259  , p_source_29 => l_array_source_29(Idx)
70260  , p_source_30 => l_array_source_30(Idx)
70261  , p_source_31 => l_array_source_31(Idx)
70262  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
70263  , p_source_33 => l_array_source_33(Idx)
70264  , p_source_34 => l_array_source_34(Idx)
70265  , p_source_34_meaning => l_array_source_34_meaning(Idx)
70266  , p_source_35 => l_array_source_35(Idx)
70267  );
70268 If(l_balance_type_code = 'A') THEN
70269   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70270 END IF;
70271 
70272 --
70273 
70274       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
70275       -- or secondary ledger that has different currency with primary
70276       -- or alc that is calculated by sla
70277       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
70278             (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'))
70279 
70280 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
70281 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
70282           AND (l_actual_flag = 'A')) THEN
70283         XLA_AE_LINES_PKG.CreateGainOrLossLines(
70284           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
70285          ,p_application_id   => p_application_id
70286          ,p_amb_context_code => 'DEFAULT'
70287          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
70288          ,p_event_class_code => C_EVENT_CLASS_CODE
70289          ,p_event_type_code  => C_EVENT_TYPE_CODE
70290          
70291          ,p_gain_ccid        => -1
70292          ,p_loss_ccid        => -1
70293 
70294          ,p_actual_flag      => l_actual_flag
70295          ,p_enc_flag         => null
70296          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
70297          ,p_enc_g_l_ref      => null
70298          );
70299       END IF;
70300    END IF;
70301 END IF;
70302 
70303    ELSE
70304       --
70305       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
70306       --
70307       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70308          trace
70309             (p_msg      => 'Trancaction revesal option is Y'
70310             ,p_level    => C_LEVEL_STATEMENT
70311             ,p_module   => l_log_module);
70312       END IF;
70313    END IF;
70314 
70315 END LOOP;
70316 l_result := XLA_AE_LINES_PKG.InsertLines ;
70317 end loop;
70318 close line_cur;
70319 
70320 
70321 --
70322 -- insert headers into xla_ae_headers_gt table
70323 --
70324 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
70325 
70326 -- insert into errors table here.
70327 
70328 END LOOP;
70329 
70330 --
70331 -- 4865292
70332 --
70333 -- Compare g_hdr_extract_count with event count in
70334 -- CreateHeadersAndLines.
70335 --
70336 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
70337 
70338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70339    trace (p_msg     => '# rows extracted from header extract objects '
70340                     || ' (running total): '
70341                     || g_hdr_extract_count
70342          ,p_level   => C_LEVEL_STATEMENT
70343          ,p_module  => l_log_module);
70344 END IF;
70345 
70346 CLOSE header_cur;
70347 --
70348 
70349 --
70350 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70351    trace
70352       (p_msg      => 'END of EventClass_120'
70353       ,p_level    => C_LEVEL_PROCEDURE
70354       ,p_module   => l_log_module);
70355 END IF;
70356 --
70357 RETURN l_result;
70358 EXCEPTION
70359 WHEN xla_exceptions_pkg.application_exception THEN
70360    
70361 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
70362 
70363    
70364 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
70365 
70366    RAISE;
70367 WHEN OTHERS THEN
70368    xla_exceptions_pkg.raise_message
70369       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_120');
70370 END EventClass_120;
70371 --
70372 
70373 ---------------------------------------
70374 --
70375 -- PRIVATE PROCEDURE
70376 --         insert_sources_121
70377 --
70381                                 p_target_ledger_id       IN NUMBER
70378 ----------------------------------------
70379 --
70380 PROCEDURE insert_sources_121(
70382                               , p_language               IN VARCHAR2
70383                               , p_sla_ledger_id          IN NUMBER
70384                               , p_pad_start_date         IN DATE
70385                               , p_pad_end_date           IN DATE
70386                          )
70387 IS
70388 
70389 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
70390 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS_ADJ';
70391 p_apps_owner                   VARCHAR2(30);
70392 l_log_module                   VARCHAR2(240);
70393 BEGIN
70394 IF g_log_enabled THEN
70395       l_log_module := C_DEFAULT_MODULE||'.insert_sources_121';
70396 END IF;
70397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70398 
70399       trace
70400          (p_msg      => 'BEGIN of insert_sources_121'
70401          ,p_level    => C_LEVEL_PROCEDURE
70402          ,p_module   => l_log_module);
70403 
70404 END IF;
70405 
70406 -- select APPS owner
70407 SELECT oracle_username
70408   INTO p_apps_owner
70409   FROM fnd_oracle_userid
70410  WHERE read_only_flag = 'U'
70411 ;
70412 
70413 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70414       trace
70415          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
70416                         ' - p_language = '||p_language||
70417                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
70418                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
70419                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
70420                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
70421          ,p_level    => C_LEVEL_STATEMENT
70422          ,p_module   => l_log_module);
70423 END IF;
70424 
70425 
70426 --
70427 INSERT INTO xla_diag_sources --hdr2
70428 (
70429         event_id
70430       , ledger_id
70431       , sla_ledger_id
70432       , description_language
70433       , object_name
70434       , object_type_code
70435       , line_number
70436       , source_application_id
70437       , source_type_code
70438       , source_code
70439       , source_value
70440       , source_meaning
70441       , created_by
70442       , creation_date
70443       , last_update_date
70444       , last_updated_by
70445       , last_update_login
70446       , program_update_date
70447       , program_application_id
70448       , program_id
70449       , request_id
70450 )
70451 SELECT
70452         event_id
70453       , p_target_ledger_id
70454       , p_sla_ledger_id
70455       , p_language
70456       , object_name
70457       , object_type_code
70458       , line_number
70459       , source_application_id
70460       , source_type_code
70461       , source_code
70462       , SUBSTR(source_value ,1,1996)
70463       , SUBSTR(source_meaning ,1,200)
70464       , xla_environment_pkg.g_Usr_Id
70465       , TRUNC(SYSDATE)
70466       , TRUNC(SYSDATE)
70467       , xla_environment_pkg.g_Usr_Id
70468       , xla_environment_pkg.g_Login_Id
70469       , TRUNC(SYSDATE)
70470       , xla_environment_pkg.g_Prog_Appl_Id
70471       , xla_environment_pkg.g_Prog_Id
70472       , xla_environment_pkg.g_Req_Id
70473   FROM (
70474        SELECT xet.event_id                  event_id
70475             , 0                          line_number
70476             , CASE r
70477                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
70478                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
70479                 
70480                ELSE null
70481               END                           object_name
70482             , CASE r
70483                 WHEN 1 THEN 'HEADER' 
70484                 WHEN 2 THEN 'HEADER' 
70485                 
70486                 ELSE null
70487               END                           object_type_code
70488             , CASE r
70489                 WHEN 1 THEN '275' 
70490                 WHEN 2 THEN '275' 
70491                 
70492                 ELSE null
70493               END                           source_application_id
70494             , 'S'             source_type_code
70495             , CASE r
70496                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
70497                 WHEN 2 THEN 'GL_DATE' 
70498                 
70499                 ELSE null
70500               END                           source_code
70501             , CASE r
70502                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
70503                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
70504                 
70505                 ELSE null
70506               END                           source_value
70507             , null              source_meaning
70508          FROM xla_events_gt     xet  
70509       , PA_XLA_EXP_HEADER_V  h2
70510              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
70511          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
70512            AND xet.event_class_code = C_EVENT_CLASS_CODE
70513               AND h2.event_id = xet.event_id
70514 
70515 )
70516 ;
70517 --
70518 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70519 
70520       trace
70521          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
70525 END IF;
70522          ,p_level    => C_LEVEL_STATEMENT
70523          ,p_module   => l_log_module);
70524 
70526 --
70527 
70528 
70529 
70530 --
70531 INSERT INTO xla_diag_sources  --line2
70532 (
70533         event_id
70534       , ledger_id
70535       , sla_ledger_id
70536       , description_language
70537       , object_name
70538       , object_type_code
70539       , line_number
70540       , source_application_id
70541       , source_type_code
70542       , source_code
70543       , source_value
70544       , source_meaning
70545       , created_by
70546       , creation_date
70547       , last_update_date
70548       , last_updated_by
70549       , last_update_login
70550       , program_update_date
70551       , program_application_id
70552       , program_id
70553       , request_id
70554 )
70555 SELECT  event_id
70556       , p_target_ledger_id
70557       , p_sla_ledger_id
70558       , p_language
70559       , object_name
70560       , object_type_code
70561       , line_number
70562       , source_application_id
70563       , source_type_code
70564       , source_code
70565       , SUBSTR(source_value,1,1996)
70566       , SUBSTR(source_meaning ,1,200)
70567       , xla_environment_pkg.g_Usr_Id
70568       , TRUNC(SYSDATE)
70569       , TRUNC(SYSDATE)
70570       , xla_environment_pkg.g_Usr_Id
70571       , xla_environment_pkg.g_Login_Id
70572       , TRUNC(SYSDATE)
70573       , xla_environment_pkg.g_Prog_Appl_Id
70574       , xla_environment_pkg.g_Prog_Id
70575       , xla_environment_pkg.g_Req_Id
70576   FROM (
70577        SELECT xet.event_id                  event_id
70578             , l1.line_number                 line_number
70579             , CASE r
70580                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
70581                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
70582                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
70583                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
70584                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
70585                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
70586                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
70587                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
70588                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
70589                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
70590                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
70591                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
70592                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
70593                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
70594                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
70595                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
70596                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
70597                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
70598                 
70599                ELSE null
70600               END                           object_name
70601             , CASE r
70602                 WHEN 1 THEN 'LINE' 
70603                 WHEN 2 THEN 'LINE' 
70604                 WHEN 3 THEN 'LINE' 
70605                 WHEN 4 THEN 'LINE' 
70606                 WHEN 5 THEN 'LINE' 
70607                 WHEN 6 THEN 'LINE' 
70608                 WHEN 7 THEN 'LINE' 
70609                 WHEN 8 THEN 'LINE' 
70610                 WHEN 9 THEN 'LINE' 
70611                 WHEN 10 THEN 'LINE' 
70612                 WHEN 11 THEN 'LINE' 
70613                 WHEN 12 THEN 'LINE' 
70614                 WHEN 13 THEN 'LINE' 
70615                 WHEN 14 THEN 'LINE' 
70616                 WHEN 15 THEN 'LINE' 
70617                 WHEN 16 THEN 'LINE' 
70618                 WHEN 17 THEN 'LINE' 
70619                 WHEN 18 THEN 'LINE' 
70620                 
70621                 ELSE null
70622               END                           object_type_code
70623             , CASE r
70624                 WHEN 1 THEN '275' 
70625                 WHEN 2 THEN '275' 
70626                 WHEN 3 THEN '275' 
70627                 WHEN 4 THEN '275' 
70628                 WHEN 5 THEN '275' 
70629                 WHEN 6 THEN '275' 
70630                 WHEN 7 THEN '275' 
70631                 WHEN 8 THEN '275' 
70632                 WHEN 9 THEN '275' 
70633                 WHEN 10 THEN '275' 
70634                 WHEN 11 THEN '275' 
70635                 WHEN 12 THEN '275' 
70636                 WHEN 13 THEN '275' 
70637                 WHEN 14 THEN '275' 
70638                 WHEN 15 THEN '275' 
70639                 WHEN 16 THEN '275' 
70640                 WHEN 17 THEN '275' 
70641                 WHEN 18 THEN '275' 
70642                 
70643                 ELSE null
70644               END                           source_application_id
70645             , 'S'             source_type_code
70646             , CASE r
70647                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
70648                 WHEN 2 THEN 'DESTINATION_CCID' 
70649                 WHEN 3 THEN 'ADJ_DESTINATION_CCID' 
70650                 WHEN 4 THEN 'SOURCE_CCID' 
70651                 WHEN 5 THEN 'ADJ_SOURCE_CCID' 
70652                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
70653                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
70654                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
70655                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
70656                 WHEN 10 THEN 'EXCHANGE_RATE' 
70657                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
70661                 WHEN 15 THEN 'LINE_TYPE' 
70658                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
70659                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
70660                 WHEN 14 THEN 'LINE_NUMBER' 
70662                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
70663                 WHEN 17 THEN 'ENTERED_AMOUNT' 
70664                 WHEN 18 THEN 'ACCT_AMOUNT' 
70665                 
70666                 ELSE null
70667               END                           source_code
70668             , CASE r
70669                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
70670                 WHEN 2 THEN TO_CHAR(l1.DESTINATION_CCID)
70671                 WHEN 3 THEN TO_CHAR(l1.ADJ_DESTINATION_CCID)
70672                 WHEN 4 THEN TO_CHAR(l1.SOURCE_CCID)
70673                 WHEN 5 THEN TO_CHAR(l1.ADJ_SOURCE_CCID)
70674                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
70675                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
70676                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
70677                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
70678                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
70679                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
70680                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
70681                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
70682                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
70683                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
70684                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
70685                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
70686                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
70687                 
70688                 ELSE null
70689               END                           source_value
70690             , CASE r
70691                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
70692                           103371
70693                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
70694                          ,'ALLOW_OVERRIDE_CCID_FLAG'
70695                          ,'S'
70696                          ,275)
70697                 WHEN 15 THEN fvl34.meaning
70698                 
70699                 ELSE null
70700               END               source_meaning
70701          FROM  xla_events_gt     xet  
70702         , PA_XLA_CCDL_LINES_V  l1
70703   , fnd_lookup_values    fvl34
70704             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
70705         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
70706           AND xet.event_class_code = C_EVENT_CLASS_CODE
70707             AND l1.event_id          = xet.event_id
70708    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
70709   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
70710   AND fvl34.view_application_id(+) = 275
70711   AND fvl34.language(+)            = USERENV('LANG')
70712   
70713 )
70714 ;
70715 --
70716 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70717 
70718       trace
70719          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
70720          ,p_level    => C_LEVEL_STATEMENT
70721          ,p_module   => l_log_module);
70722 
70723 END IF;
70724 
70725 
70726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70727       trace
70728          (p_msg      => 'END of insert_sources_121'
70729          ,p_level    => C_LEVEL_PROCEDURE
70730          ,p_module   => l_log_module);
70731 END IF;
70732 EXCEPTION
70733   WHEN xla_exceptions_pkg.application_exception THEN
70734       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
70735             trace
70736                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
70737                ,p_level    => C_LEVEL_EXCEPTION
70738                ,p_module   => l_log_module);
70739       END IF;
70740       RAISE;
70741   WHEN OTHERS THEN
70742       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
70743             trace
70744                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
70745                ,p_level    => C_LEVEL_EXCEPTION
70746                ,p_module   => l_log_module);
70747        END IF;
70748        xla_exceptions_pkg.raise_message
70749            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_121');
70750 END insert_sources_121;
70751 --
70752 
70753 ---------------------------------------
70754 --
70755 -- PRIVATE FUNCTION
70756 --         EventClass_121
70757 --
70758 ----------------------------------------
70759 --
70760 FUNCTION EventClass_121
70761        (p_application_id         IN NUMBER
70762        ,p_base_ledger_id         IN NUMBER
70763        ,p_target_ledger_id       IN NUMBER
70764        ,p_language               IN VARCHAR2
70765        ,p_currency_code          IN VARCHAR2
70766        ,p_sla_ledger_id          IN NUMBER
70767        ,p_pad_start_date         IN DATE
70768        ,p_pad_end_date           IN DATE
70769        ,p_primary_ledger_id      IN NUMBER)
70770 RETURN BOOLEAN IS
70771 --
70772 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
70773 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS_ADJ';
70774 
70775 l_calculate_acctd_flag   VARCHAR2(1) :='N';
70776 l_calculate_g_l_flag     VARCHAR2(1) :='N';
70777 --
70778 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70782 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70779 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70780 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70781 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70783 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70784 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70785 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70786 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70787 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70788 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70789 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70790 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70791 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70792 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70793 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70794 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70795 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70796 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70797 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70798 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70799 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70800 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
70801 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70802 
70803 l_event_id                             NUMBER;
70804 l_previous_event_id                    NUMBER;
70805 l_first_event_id                       NUMBER;
70806 l_last_event_id                        NUMBER;
70807 
70808 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
70809 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
70810 --
70811 --
70812 l_result                    BOOLEAN := TRUE;
70813 l_rows                      NUMBER  := 1000;
70814 l_event_type_name           VARCHAR2(80) := 'All';
70815 l_event_class_name          VARCHAR2(80) := 'Provider and Receiver Reclass Adjustment';
70816 l_description               VARCHAR2(4000);
70817 l_transaction_reversal      NUMBER;
70818 l_ae_header_id              NUMBER;
70819 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
70820 l_log_module                VARCHAR2(240);
70821 --
70822 l_acct_reversal_source      VARCHAR2(30);
70823 l_trx_reversal_source       VARCHAR2(30);
70824 
70825 l_continue_with_lines       BOOLEAN := TRUE;
70826 --
70827 l_acc_rev_gl_date_source    DATE;                      -- 4262811
70828 --
70829 type t_array_event_id is table of number index by binary_integer;
70830 
70831 l_rec_array_event                    t_rec_array_event;
70832 l_null_rec_array_event               t_rec_array_event;
70833 l_array_ae_header_id                 xla_number_array_type;
70834 l_actual_flag                        VARCHAR2(1) := NULL;
70835 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
70836 l_balance_type_code                  VARCHAR2(1) :=NULL;
70837 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
70838 
70839 --
70840 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
70841 --
70842 
70843 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
70844 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
70845 
70846 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
70847 TYPE t_array_source_11 IS TABLE OF PA_XLA_CCDL_LINES_V.DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
70848 TYPE t_array_source_12 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
70849 TYPE t_array_source_13 IS TABLE OF PA_XLA_CCDL_LINES_V.SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
70850 TYPE t_array_source_14 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
70851 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
70852 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
70853 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
70854 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
70855 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
70856 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
70857 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
70858 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
70859 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
70860 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
70861 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
70862 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
70863 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
70864 
70868 l_array_source_4      t_array_source_4;
70865 l_array_source_32              t_array_source_32;
70866 l_array_source_87              t_array_source_87;
70867 
70869 l_array_source_11      t_array_source_11;
70870 l_array_source_12      t_array_source_12;
70871 l_array_source_13      t_array_source_13;
70872 l_array_source_14      t_array_source_14;
70873 l_array_source_22      t_array_source_22;
70874 l_array_source_23      t_array_source_23;
70875 l_array_source_25      t_array_source_25;
70876 l_array_source_27      t_array_source_27;
70877 l_array_source_28      t_array_source_28;
70878 l_array_source_29      t_array_source_29;
70879 l_array_source_30      t_array_source_30;
70880 l_array_source_31      t_array_source_31;
70881 l_array_source_33      t_array_source_33;
70882 l_array_source_34      t_array_source_34;
70883 l_array_source_34_meaning      t_array_lookup_meaning;
70884 l_array_source_35      t_array_source_35;
70885 l_array_source_41      t_array_source_41;
70886 l_array_source_43      t_array_source_43;
70887 
70888 --
70889 CURSOR header_cur
70890 IS
70891 SELECT /*+ leading(xet) cardinality(xet,1) */
70892 -- Event Class Code: PRVDR_RECVR_RECLASS_ADJ
70893     xet.entity_id
70894    ,xet.legal_entity_id
70895    ,xet.entity_code
70896    ,xet.transaction_number
70897    ,xet.event_id
70898    ,xet.event_class_code
70899    ,xet.event_type_code
70900    ,xet.event_number
70901    ,xet.event_date
70902    ,xet.transaction_date
70903    ,xet.reference_num_1
70904    ,xet.reference_num_2
70905    ,xet.reference_num_3
70906    ,xet.reference_num_4
70907    ,xet.reference_char_1
70908    ,xet.reference_char_2
70909    ,xet.reference_char_3
70910    ,xet.reference_char_4
70911    ,xet.reference_date_1
70912    ,xet.reference_date_2
70913    ,xet.reference_date_3
70914    ,xet.reference_date_4
70915    ,xet.event_created_by
70916    ,xet.budgetary_control_flag 
70917   , h2.EXPENDITURE_ITEM_ID    source_32
70918   , h2.GL_DATE    source_87
70919   FROM xla_events_gt     xet 
70920   , PA_XLA_EXP_HEADER_V  h2
70921  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
70922    and xet.event_class_code = C_EVENT_CLASS_CODE
70923    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
70924 
70925  ORDER BY event_id
70926 ;
70927 
70928 
70929 --
70930 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
70931 IS
70932 SELECT  /*+ leading(xet) cardinality(xet,1) */
70933 -- Event Class Code: PRVDR_RECVR_RECLASS_ADJ
70934     xet.entity_id
70935    ,xet.legal_entity_id
70936    ,xet.entity_code
70937    ,xet.transaction_number
70938    ,xet.event_id
70939    ,xet.event_class_code
70940    ,xet.event_type_code
70941    ,xet.event_number
70942    ,xet.event_date
70943    ,xet.transaction_date
70944    ,xet.reference_num_1
70945    ,xet.reference_num_2
70946    ,xet.reference_num_3
70947    ,xet.reference_num_4
70948    ,xet.reference_char_1
70949    ,xet.reference_char_2
70950    ,xet.reference_char_3
70951    ,xet.reference_char_4
70952    ,xet.reference_date_1
70953    ,xet.reference_date_2
70954    ,xet.reference_date_3
70955    ,xet.reference_date_4
70956    ,xet.event_created_by
70957    ,xet.budgetary_control_flag
70958  , l1.LINE_NUMBER  
70959   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
70960   , l1.DESTINATION_CCID    source_11
70961   , l1.ADJ_DESTINATION_CCID    source_12
70962   , l1.SOURCE_CCID    source_13
70963   , l1.ADJ_SOURCE_CCID    source_14
70964   , l1.REVERSING_LINE_FLAG    source_22
70965   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
70966   , l1.ENTERED_CURRENCY_CODE    source_25
70967   , l1.EXCHANGE_RATE_DATE    source_27
70968   , l1.EXCHANGE_RATE    source_28
70969   , l1.EXCHANGE_RATE_TYPE    source_29
70970   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
70971   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
70972   , l1.LINE_NUMBER    source_33
70973   , l1.LINE_TYPE    source_34
70974   , fvl34.meaning   source_34_meaning
70975   , l1.LINE_NUM_REVERSED    source_35
70976   , l1.ENTERED_AMOUNT    source_41
70977   , l1.ACCT_AMOUNT    source_43
70978   FROM xla_events_gt     xet 
70979   , PA_XLA_CCDL_LINES_V  l1
70980   , fnd_lookup_values    fvl34
70981  WHERE xet.event_id between x_first_event_id and x_last_event_id
70982    and xet.event_date between p_pad_start_date and p_pad_end_date
70983    and xet.event_class_code = C_EVENT_CLASS_CODE
70984    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
70985    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
70986   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
70987   AND fvl34.view_application_id(+) = 275
70988   AND fvl34.language(+)            = USERENV('LANG')
70989   ;
70990 
70991 --
70992 BEGIN
70993 IF g_log_enabled THEN
70994    l_log_module := C_DEFAULT_MODULE||'.EventClass_121';
70995 END IF;
70996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70997    trace
70998       (p_msg      => 'BEGIN of EventClass_121'
70999       ,p_level    => C_LEVEL_PROCEDURE
71000       ,p_module   => l_log_module);
71001 END IF;
71002 
71003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71004    trace
71005       (p_msg      => 'p_application_id = '||p_application_id||
71006                      ' - p_base_ledger_id = '||p_base_ledger_id||
71007                      ' - p_target_ledger_id  = '||p_target_ledger_id||
71011       ,p_level    => C_LEVEL_STATEMENT
71008                      ' - p_language = '||p_language||
71009                      ' - p_currency_code = '||p_currency_code||
71010                      ' - p_sla_ledger_id = '||p_sla_ledger_id
71012       ,p_module   => l_log_module);
71013 END IF;
71014 --
71015 -- initialze arrays
71016 --
71017 g_array_event.DELETE;
71018 l_rec_array_event := l_null_rec_array_event;
71019 --
71020 --------------------------------------
71021 -- 4262811 Initialze MPA Line Number
71022 --------------------------------------
71023 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
71024 
71025 --
71026 
71027 --
71028 OPEN header_cur;
71029 --
71030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71031    trace
71032    (p_msg      => 'SQL - FETCH header_cur'
71033    ,p_level    => C_LEVEL_STATEMENT
71034    ,p_module   => l_log_module);
71035 END IF;
71036 --
71037 LOOP
71038 FETCH header_cur BULK COLLECT INTO
71039         l_array_entity_id
71040       , l_array_legal_entity_id
71041       , l_array_entity_code
71042       , l_array_transaction_num
71043       , l_array_event_id
71044       , l_array_class_code
71045       , l_array_event_type
71046       , l_array_event_number
71047       , l_array_event_date
71048       , l_array_transaction_date
71049       , l_array_reference_num_1
71050       , l_array_reference_num_2
71051       , l_array_reference_num_3
71052       , l_array_reference_num_4
71053       , l_array_reference_char_1
71054       , l_array_reference_char_2
71055       , l_array_reference_char_3
71056       , l_array_reference_char_4
71057       , l_array_reference_date_1
71058       , l_array_reference_date_2
71059       , l_array_reference_date_3
71060       , l_array_reference_date_4
71061       , l_array_event_created_by
71062       , l_array_budgetary_control_flag 
71063       , l_array_source_32
71064       , l_array_source_87
71065       LIMIT l_rows;
71066 --
71067 IF (C_LEVEL_EVENT >= g_log_level) THEN
71068    trace
71069    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
71070    ,p_level    => C_LEVEL_EVENT
71071    ,p_module   => l_log_module);
71072 END IF;
71073 --
71074 EXIT WHEN l_array_entity_id.COUNT = 0;
71075 
71076 -- initialize arrays
71077 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
71078 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
71079 
71080 --
71081 -- Bug 4458708
71082 --
71083 XLA_AE_LINES_PKG.g_LineNumber := 0;
71084 
71085 
71086 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
71087 g_last_hdr_idx := l_array_event_id.LAST;
71088 --
71089 -- loop for the headers. Each iteration is for each header extract row
71090 -- fetched in header cursor
71091 --
71092 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
71093 
71094 --
71095 -- set event info as cache for other routines to refer event attributes
71096 --
71097 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71098    (p_application_id           => p_application_id
71099    ,p_primary_ledger_id        => p_primary_ledger_id
71100    ,p_base_ledger_id           => p_base_ledger_id
71101    ,p_target_ledger_id         => p_target_ledger_id
71102    ,p_entity_id                => l_array_entity_id(hdr_idx)
71103    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
71104    ,p_entity_code              => l_array_entity_code(hdr_idx)
71105    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
71106    ,p_event_id                 => l_array_event_id(hdr_idx)
71107    ,p_event_class_code         => l_array_class_code(hdr_idx)
71108    ,p_event_type_code          => l_array_event_type(hdr_idx)
71109    ,p_event_number             => l_array_event_number(hdr_idx)
71110    ,p_event_date               => l_array_event_date(hdr_idx)
71111    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
71112    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
71113    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
71114    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
71115    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
71116    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
71117    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
71118    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
71119    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
71120    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
71121    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
71122    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
71123    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
71124    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
71125    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
71126 
71127 --
71128 -- set the status of entry to C_VALID (0)
71129 --
71130 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71131 
71132 --
71133 -- initialize a row for ae header
71134 --
71135 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
71136 
71137 l_event_id := l_array_event_id(hdr_idx);
71138 
71139 --
71140 -- storing the hdr_idx for event. May be used by line cursor.
71141 --
71145 -- store sources from header extract. This can be improved to
71142 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
71143 
71144 --
71146 -- store only those sources from header extract that may be used in lines
71147 --
71148 
71149 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
71150 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
71151 
71152 --
71153 -- initilaize the status of ae headers for diffrent balance types
71154 -- the status is initialised to C_NOT_CREATED (2)
71155 --
71156 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71157 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71158 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71159 
71160 --
71161 -- call api to validate and store accounting attributes for header
71162 --
71163 
71164 ------------------------------------------------------------
71165 -- Accrual Reversal : to get date for Standard Source (NONE)
71166 ------------------------------------------------------------
71167 l_acc_rev_gl_date_source := NULL;
71168 
71169      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
71170       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
71171 
71172 
71173 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
71174 
71175 XLA_AE_HEADER_PKG.SetJeCategoryName;
71176 
71177 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
71178 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
71179 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
71180 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
71181 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
71182 
71183 
71184 -- No header level analytical criteria
71185 
71186 --
71187 --accounting attribute enhancement, bug 3612931
71188 --
71189 l_trx_reversal_source := SUBSTR(NULL, 1,30);
71190 
71191 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
71192    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71193 
71194    xla_accounting_err_pkg.build_message
71195       (p_appli_s_name            => 'XLA'
71196       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
71197       ,p_token_1                 => 'ACCT_ATTR_NAME'
71198       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
71199       ,p_token_2                 => 'PRODUCT_NAME'
71200       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71201       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71202       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71203       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71204 
71205 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
71206    --
71207    -- following sets the accounting attributes needed to reverse
71208    -- accounting for a distributeion
71209    --
71210    xla_ae_lines_pkg.SetTrxReversalAttrs
71211       (p_event_id              => l_event_id
71212       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
71213       ,p_trx_reversal_source   => l_trx_reversal_source);
71214 
71215 END IF;
71216 
71217 
71218 ----------------------------------------------------------------
71219 -- 4262811 -  update the header statuses to invalid in need be
71220 ----------------------------------------------------------------
71221 --
71222 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
71223 
71224 
71225   -----------------------------------------------
71226   -- No accrual reversal for the event class/type
71227   -----------------------------------------------
71228 ----------------------------------------------------------------
71229 
71230 --
71231 -- this ends the header loop iteration for one bulk fetch
71232 --
71233 END LOOP;
71234 
71235 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
71236 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
71237 
71238 --
71239 -- insert dummy rows into lines gt table that were created due to
71240 -- transaction reversals
71241 --
71242 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
71243    l_result := XLA_AE_LINES_PKG.InsertLines;
71244 END IF;
71245 
71246 --
71247 -- reset the temp_line_num for each set of events fetched from header
71248 -- cursor rather than doing it for each new event in line cursor
71249 -- Bug 3939231
71250 --
71251 xla_ae_lines_pkg.g_temp_line_num := 0;
71252 
71253 
71254 
71255 --
71256 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
71257 --
71258 --
71259 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71260 
71261       trace
71262          (p_msg      => 'SQL - FETCH line_cur'
71263          ,p_level    => C_LEVEL_STATEMENT
71264          ,p_module   => l_log_module);
71265 
71266 END IF;
71267 --
71268 --
71272         l_array_entity_id
71269 LOOP
71270   --
71271   FETCH line_cur BULK COLLECT INTO
71273       , l_array_legal_entity_id
71274       , l_array_entity_code
71275       , l_array_transaction_num
71276       , l_array_event_id
71277       , l_array_class_code
71278       , l_array_event_type
71279       , l_array_event_number
71280       , l_array_event_date
71281       , l_array_transaction_date
71282       , l_array_reference_num_1
71283       , l_array_reference_num_2
71284       , l_array_reference_num_3
71285       , l_array_reference_num_4
71286       , l_array_reference_char_1
71287       , l_array_reference_char_2
71288       , l_array_reference_char_3
71289       , l_array_reference_char_4
71290       , l_array_reference_date_1
71291       , l_array_reference_date_2
71292       , l_array_reference_date_3
71293       , l_array_reference_date_4
71294       , l_array_event_created_by
71295       , l_array_budgetary_control_flag
71296       , l_array_extract_line_num 
71297       , l_array_source_4
71298       , l_array_source_11
71299       , l_array_source_12
71300       , l_array_source_13
71301       , l_array_source_14
71302       , l_array_source_22
71303       , l_array_source_23
71304       , l_array_source_25
71305       , l_array_source_27
71306       , l_array_source_28
71307       , l_array_source_29
71308       , l_array_source_30
71309       , l_array_source_31
71310       , l_array_source_33
71311       , l_array_source_34
71312       , l_array_source_34_meaning
71313       , l_array_source_35
71314       , l_array_source_41
71315       , l_array_source_43
71316       LIMIT l_rows;
71317 
71318   --
71319   IF (C_LEVEL_EVENT >= g_log_level) THEN
71320             trace
71321                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
71322                ,p_level    => C_LEVEL_EVENT
71323                ,p_module   => l_log_module);
71324   END IF;
71325   --
71326   EXIT WHEN l_array_entity_id.count = 0;
71327 
71328   XLA_AE_LINES_PKG.g_rec_lines := null;
71329 
71330 --
71331 -- Bug 4458708
71332 --
71333 XLA_AE_LINES_PKG.g_LineNumber := 0;
71334 --
71335 --
71336 
71337 FOR Idx IN 1..l_array_event_id.count LOOP
71338    --
71339    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
71340    --
71341    l_event_id := l_array_event_id(idx);  -- 5648433
71342 
71343    --
71344    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
71345    --
71346 
71347    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
71348              (g_array_event(l_event_id).array_value_num('header_index'))
71349          ,'N'
71350          ) <> 'Y'
71351    THEN
71352       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71353          trace
71354             (p_msg      => 'Trancaction revesal option is not Y '
71355             ,p_level    => C_LEVEL_STATEMENT
71356             ,p_module   => l_log_module);
71357       END IF;
71358 
71359 --
71360 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
71361 --
71362 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71363 --
71364 -- set event info as cache for other routines to refer event attributes
71365 --
71366 
71367 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
71368    l_previous_event_id := l_event_id;
71369 
71370    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71371       (p_application_id           => p_application_id
71372       ,p_primary_ledger_id        => p_primary_ledger_id
71373       ,p_base_ledger_id           => p_base_ledger_id
71374       ,p_target_ledger_id         => p_target_ledger_id
71375       ,p_entity_id                => l_array_entity_id(Idx)
71376       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
71377       ,p_entity_code              => l_array_entity_code(Idx)
71378       ,p_transaction_num          => l_array_transaction_num(Idx)
71379       ,p_event_id                 => l_array_event_id(Idx)
71380       ,p_event_class_code         => l_array_class_code(Idx)
71381       ,p_event_type_code          => l_array_event_type(Idx)
71382       ,p_event_number             => l_array_event_number(Idx)
71383       ,p_event_date               => l_array_event_date(Idx)
71384       ,p_transaction_date         => l_array_transaction_date(Idx)
71385       ,p_reference_num_1          => l_array_reference_num_1(Idx)
71386       ,p_reference_num_2          => l_array_reference_num_2(Idx)
71387       ,p_reference_num_3          => l_array_reference_num_3(Idx)
71388       ,p_reference_num_4          => l_array_reference_num_4(Idx)
71389       ,p_reference_char_1         => l_array_reference_char_1(Idx)
71390       ,p_reference_char_2         => l_array_reference_char_2(Idx)
71391       ,p_reference_char_3         => l_array_reference_char_3(Idx)
71392       ,p_reference_char_4         => l_array_reference_char_4(Idx)
71393       ,p_reference_date_1         => l_array_reference_date_1(Idx)
71394       ,p_reference_date_2         => l_array_reference_date_2(Idx)
71395       ,p_reference_date_3         => l_array_reference_date_3(Idx)
71396       ,p_reference_date_4         => l_array_reference_date_4(Idx)
71397       ,p_event_created_by         => l_array_event_created_by(Idx)
71398       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
71399        --
71400 END IF;
71404 --
71401 
71402 
71403 
71405 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
71406 
71407 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
71408 
71409 IF l_continue_with_lines THEN
71410    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
71411       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71412 
71413       xla_accounting_err_pkg.build_message
71414          (p_appli_s_name            => 'XLA'
71415          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
71416          ,p_token_1                 => 'LINE_NUMBER'
71417          ,p_value_1                 => l_array_extract_line_num(Idx)
71418          ,p_token_2                 => 'PRODUCT_NAME'
71419          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71420          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71421          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71422          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71423 
71424    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
71425       --
71426       -- following sets the accounting attributes needed to reverse
71427       -- accounting for a distributeion
71428       --
71429 
71430       --
71431       -- 5217187
71432       --
71433       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
71434       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
71435                                        g_array_event(l_event_id).array_value_num('header_index'));
71436       --
71437       --
71438 
71439       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
71440       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
71441       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
71442       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
71443       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
71444       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_13(Idx));
71445       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
71446       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
71447       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
71448       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
71449       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
71450       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
71451       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
71452       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
71453       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
71454       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
71455       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
71456       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
71457       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
71458       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
71459       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
71460       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_11(Idx));
71461       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
71462       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
71463       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
71464       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
71465       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
71466       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
71467       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
71468       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
71469       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
71470       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
71471       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
71472       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
71473       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
71474       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
71475       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
71476       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
71477       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
71478       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
71479       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
71480       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
71481       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
71482       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
71483       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
71484       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
71485       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
71486       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
71487 
71488 
71492          ,p_calculate_acctd_flag => l_calculate_acctd_flag
71489       xla_ae_lines_pkg.SetAcctReversalAttrs
71490          (p_event_id             => l_event_id
71491          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
71493          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
71494    END IF;
71495 
71496    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
71497        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
71498 
71499 --
71500 AcctLineType_74 (
71501  p_application_id  => p_application_id
71502  ,p_event_id     => l_event_id
71503  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71504  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71505  ,p_actual_flag => l_actual_flag
71506  ,p_balance_type_code => l_balance_type_code
71507  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71508  
71509  , p_source_4 => l_array_source_4(Idx)
71510  , p_source_11 => l_array_source_11(Idx)
71511  , p_source_12 => l_array_source_12(Idx)
71512  , p_source_13 => l_array_source_13(Idx)
71513  , p_source_22 => l_array_source_22(Idx)
71514  , p_source_23 => l_array_source_23(Idx)
71515  , p_source_25 => l_array_source_25(Idx)
71516  , p_source_27 => l_array_source_27(Idx)
71517  , p_source_28 => l_array_source_28(Idx)
71518  , p_source_29 => l_array_source_29(Idx)
71519  , p_source_30 => l_array_source_30(Idx)
71520  , p_source_31 => l_array_source_31(Idx)
71521  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
71522  , p_source_33 => l_array_source_33(Idx)
71523  , p_source_34 => l_array_source_34(Idx)
71524  , p_source_34_meaning => l_array_source_34_meaning(Idx)
71525  , p_source_35 => l_array_source_35(Idx)
71526  , p_source_41 => l_array_source_41(Idx)
71527  , p_source_43 => l_array_source_43(Idx)
71528  );
71529 If(l_balance_type_code = 'A') THEN
71530   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71531 END IF;
71532 
71533 --
71534 
71535 
71536 --
71537 AcctLineType_76 (
71538  p_application_id  => p_application_id
71539  ,p_event_id     => l_event_id
71540  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71541  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71542  ,p_actual_flag => l_actual_flag
71543  ,p_balance_type_code => l_balance_type_code
71544  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71545  
71546  , p_source_4 => l_array_source_4(Idx)
71547  , p_source_11 => l_array_source_11(Idx)
71548  , p_source_13 => l_array_source_13(Idx)
71549  , p_source_14 => l_array_source_14(Idx)
71550  , p_source_22 => l_array_source_22(Idx)
71551  , p_source_23 => l_array_source_23(Idx)
71552  , p_source_25 => l_array_source_25(Idx)
71553  , p_source_27 => l_array_source_27(Idx)
71554  , p_source_28 => l_array_source_28(Idx)
71555  , p_source_29 => l_array_source_29(Idx)
71556  , p_source_30 => l_array_source_30(Idx)
71557  , p_source_31 => l_array_source_31(Idx)
71558  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
71559  , p_source_33 => l_array_source_33(Idx)
71560  , p_source_34 => l_array_source_34(Idx)
71561  , p_source_34_meaning => l_array_source_34_meaning(Idx)
71562  , p_source_35 => l_array_source_35(Idx)
71563  , p_source_41 => l_array_source_41(Idx)
71564  , p_source_43 => l_array_source_43(Idx)
71565  );
71566 If(l_balance_type_code = 'A') THEN
71567   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71568 END IF;
71569 
71570 --
71571 
71572       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
71573       -- or secondary ledger that has different currency with primary
71574       -- or alc that is calculated by sla
71575       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
71576             (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'))
71577 
71578 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
71579 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
71580           AND (l_actual_flag = 'A')) THEN
71581         XLA_AE_LINES_PKG.CreateGainOrLossLines(
71582           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
71583          ,p_application_id   => p_application_id
71584          ,p_amb_context_code => 'DEFAULT'
71585          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
71586          ,p_event_class_code => C_EVENT_CLASS_CODE
71587          ,p_event_type_code  => C_EVENT_TYPE_CODE
71588          
71589          ,p_gain_ccid        => -1
71590          ,p_loss_ccid        => -1
71591 
71592          ,p_actual_flag      => l_actual_flag
71593          ,p_enc_flag         => null
71594          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
71595          ,p_enc_g_l_ref      => null
71596          );
71597       END IF;
71598    END IF;
71599 END IF;
71600 
71601    ELSE
71602       --
71603       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
71604       --
71605       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71606          trace
71607             (p_msg      => 'Trancaction revesal option is Y'
71608             ,p_level    => C_LEVEL_STATEMENT
71609             ,p_module   => l_log_module);
71610       END IF;
71611    END IF;
71612 
71613 END LOOP;
71614 l_result := XLA_AE_LINES_PKG.InsertLines ;
71615 end loop;
71616 close line_cur;
71617 
71618 
71619 --
71620 -- insert headers into xla_ae_headers_gt table
71624 -- insert into errors table here.
71621 --
71622 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
71623 
71625 
71626 END LOOP;
71627 
71628 --
71629 -- 4865292
71630 --
71631 -- Compare g_hdr_extract_count with event count in
71632 -- CreateHeadersAndLines.
71633 --
71634 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
71635 
71636 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71637    trace (p_msg     => '# rows extracted from header extract objects '
71638                     || ' (running total): '
71639                     || g_hdr_extract_count
71640          ,p_level   => C_LEVEL_STATEMENT
71641          ,p_module  => l_log_module);
71642 END IF;
71643 
71644 CLOSE header_cur;
71645 --
71646 
71647 --
71648 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71649    trace
71650       (p_msg      => 'END of EventClass_121'
71651       ,p_level    => C_LEVEL_PROCEDURE
71652       ,p_module   => l_log_module);
71653 END IF;
71654 --
71655 RETURN l_result;
71656 EXCEPTION
71657 WHEN xla_exceptions_pkg.application_exception THEN
71658    
71659 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
71660 
71661    
71662 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
71663 
71664    RAISE;
71665 WHEN OTHERS THEN
71666    xla_exceptions_pkg.raise_message
71667       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_121');
71668 END EventClass_121;
71669 --
71670 
71671 ---------------------------------------
71672 --
71673 -- PRIVATE PROCEDURE
71674 --         insert_sources_122
71675 --
71676 ----------------------------------------
71677 --
71678 PROCEDURE insert_sources_122(
71679                                 p_target_ledger_id       IN NUMBER
71680                               , p_language               IN VARCHAR2
71681                               , p_sla_ledger_id          IN NUMBER
71682                               , p_pad_start_date         IN DATE
71683                               , p_pad_end_date           IN DATE
71684                          )
71685 IS
71686 
71687 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ALL';
71688 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS';
71689 p_apps_owner                   VARCHAR2(30);
71690 l_log_module                   VARCHAR2(240);
71691 BEGIN
71692 IF g_log_enabled THEN
71693       l_log_module := C_DEFAULT_MODULE||'.insert_sources_122';
71694 END IF;
71695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71696 
71697       trace
71698          (p_msg      => 'BEGIN of insert_sources_122'
71699          ,p_level    => C_LEVEL_PROCEDURE
71700          ,p_module   => l_log_module);
71701 
71702 END IF;
71703 
71704 -- select APPS owner
71705 SELECT oracle_username
71706   INTO p_apps_owner
71707   FROM fnd_oracle_userid
71708  WHERE read_only_flag = 'U'
71709 ;
71710 
71711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71712       trace
71713          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
71714                         ' - p_language = '||p_language||
71715                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
71716                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
71717                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
71718                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
71719          ,p_level    => C_LEVEL_STATEMENT
71720          ,p_module   => l_log_module);
71721 END IF;
71722 
71723 
71724 --
71725 INSERT INTO xla_diag_sources --hdr2
71726 (
71727         event_id
71728       , ledger_id
71729       , sla_ledger_id
71730       , description_language
71731       , object_name
71732       , object_type_code
71733       , line_number
71734       , source_application_id
71735       , source_type_code
71736       , source_code
71737       , source_value
71738       , source_meaning
71739       , created_by
71740       , creation_date
71741       , last_update_date
71742       , last_updated_by
71743       , last_update_login
71744       , program_update_date
71745       , program_application_id
71746       , program_id
71747       , request_id
71748 )
71749 SELECT
71750         event_id
71751       , p_target_ledger_id
71752       , p_sla_ledger_id
71753       , p_language
71754       , object_name
71755       , object_type_code
71756       , line_number
71757       , source_application_id
71758       , source_type_code
71759       , source_code
71760       , SUBSTR(source_value ,1,1996)
71761       , SUBSTR(source_meaning ,1,200)
71762       , xla_environment_pkg.g_Usr_Id
71763       , TRUNC(SYSDATE)
71764       , TRUNC(SYSDATE)
71765       , xla_environment_pkg.g_Usr_Id
71766       , xla_environment_pkg.g_Login_Id
71767       , TRUNC(SYSDATE)
71768       , xla_environment_pkg.g_Prog_Appl_Id
71769       , xla_environment_pkg.g_Prog_Id
71770       , xla_environment_pkg.g_Req_Id
71771   FROM (
71772        SELECT xet.event_id                  event_id
71773             , 0                          line_number
71774             , CASE r
71775                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
71779               END                           object_name
71776                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
71777                 
71778                ELSE null
71780             , CASE r
71781                 WHEN 1 THEN 'HEADER' 
71782                 WHEN 2 THEN 'HEADER' 
71783                 
71784                 ELSE null
71785               END                           object_type_code
71786             , CASE r
71787                 WHEN 1 THEN '275' 
71788                 WHEN 2 THEN '275' 
71789                 
71790                 ELSE null
71791               END                           source_application_id
71792             , 'S'             source_type_code
71793             , CASE r
71794                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
71795                 WHEN 2 THEN 'GL_DATE' 
71796                 
71797                 ELSE null
71798               END                           source_code
71799             , CASE r
71800                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
71801                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
71802                 
71803                 ELSE null
71804               END                           source_value
71805             , null              source_meaning
71806          FROM xla_events_gt     xet  
71807       , PA_XLA_EXP_HEADER_V  h2
71808              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
71809          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
71810            AND xet.event_class_code = C_EVENT_CLASS_CODE
71811               AND h2.event_id = xet.event_id
71812 
71813 )
71814 ;
71815 --
71816 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71817 
71818       trace
71819          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
71820          ,p_level    => C_LEVEL_STATEMENT
71821          ,p_module   => l_log_module);
71822 
71823 END IF;
71824 --
71825 
71826 
71827 
71828 --
71829 INSERT INTO xla_diag_sources  --line2
71830 (
71831         event_id
71832       , ledger_id
71833       , sla_ledger_id
71834       , description_language
71835       , object_name
71836       , object_type_code
71837       , line_number
71838       , source_application_id
71839       , source_type_code
71840       , source_code
71841       , source_value
71842       , source_meaning
71843       , created_by
71844       , creation_date
71845       , last_update_date
71846       , last_updated_by
71847       , last_update_login
71848       , program_update_date
71849       , program_application_id
71850       , program_id
71851       , request_id
71852 )
71853 SELECT  event_id
71854       , p_target_ledger_id
71855       , p_sla_ledger_id
71856       , p_language
71857       , object_name
71858       , object_type_code
71859       , line_number
71860       , source_application_id
71861       , source_type_code
71862       , source_code
71863       , SUBSTR(source_value,1,1996)
71864       , SUBSTR(source_meaning ,1,200)
71865       , xla_environment_pkg.g_Usr_Id
71866       , TRUNC(SYSDATE)
71867       , TRUNC(SYSDATE)
71868       , xla_environment_pkg.g_Usr_Id
71869       , xla_environment_pkg.g_Login_Id
71870       , TRUNC(SYSDATE)
71871       , xla_environment_pkg.g_Prog_Appl_Id
71872       , xla_environment_pkg.g_Prog_Id
71873       , xla_environment_pkg.g_Req_Id
71874   FROM (
71875        SELECT xet.event_id                  event_id
71876             , l1.line_number                 line_number
71877             , CASE r
71878                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
71879                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
71880                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
71881                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
71882                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
71883                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
71884                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
71885                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
71886                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
71887                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
71888                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
71889                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
71890                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
71891                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
71892                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
71893                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
71894                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
71895                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
71896                 
71897                ELSE null
71898               END                           object_name
71899             , CASE r
71900                 WHEN 1 THEN 'LINE' 
71901                 WHEN 2 THEN 'LINE' 
71902                 WHEN 3 THEN 'LINE' 
71903                 WHEN 4 THEN 'LINE' 
71904                 WHEN 5 THEN 'LINE' 
71905                 WHEN 6 THEN 'LINE' 
71906                 WHEN 7 THEN 'LINE' 
71907                 WHEN 8 THEN 'LINE' 
71908                 WHEN 9 THEN 'LINE' 
71909                 WHEN 10 THEN 'LINE' 
71910                 WHEN 11 THEN 'LINE' 
71911                 WHEN 12 THEN 'LINE' 
71912                 WHEN 13 THEN 'LINE' 
71913                 WHEN 14 THEN 'LINE' 
71917                 WHEN 18 THEN 'LINE' 
71914                 WHEN 15 THEN 'LINE' 
71915                 WHEN 16 THEN 'LINE' 
71916                 WHEN 17 THEN 'LINE' 
71918                 
71919                 ELSE null
71920               END                           object_type_code
71921             , CASE r
71922                 WHEN 1 THEN '275' 
71923                 WHEN 2 THEN '275' 
71924                 WHEN 3 THEN '275' 
71925                 WHEN 4 THEN '275' 
71926                 WHEN 5 THEN '275' 
71927                 WHEN 6 THEN '275' 
71928                 WHEN 7 THEN '275' 
71929                 WHEN 8 THEN '275' 
71930                 WHEN 9 THEN '275' 
71931                 WHEN 10 THEN '275' 
71932                 WHEN 11 THEN '275' 
71933                 WHEN 12 THEN '275' 
71934                 WHEN 13 THEN '275' 
71935                 WHEN 14 THEN '275' 
71936                 WHEN 15 THEN '275' 
71937                 WHEN 16 THEN '275' 
71938                 WHEN 17 THEN '275' 
71939                 WHEN 18 THEN '275' 
71940                 
71941                 ELSE null
71942               END                           source_application_id
71943             , 'S'             source_type_code
71944             , CASE r
71945                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
71946                 WHEN 2 THEN 'DESTINATION_CCID' 
71947                 WHEN 3 THEN 'ADJ_DESTINATION_CCID' 
71948                 WHEN 4 THEN 'SOURCE_CCID' 
71949                 WHEN 5 THEN 'ADJ_SOURCE_CCID' 
71950                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
71951                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
71952                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
71953                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
71954                 WHEN 10 THEN 'EXCHANGE_RATE' 
71955                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
71956                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
71957                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
71958                 WHEN 14 THEN 'LINE_NUMBER' 
71959                 WHEN 15 THEN 'LINE_TYPE' 
71960                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
71961                 WHEN 17 THEN 'ENTERED_AMOUNT' 
71962                 WHEN 18 THEN 'ACCT_AMOUNT' 
71963                 
71964                 ELSE null
71965               END                           source_code
71966             , CASE r
71967                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
71968                 WHEN 2 THEN TO_CHAR(l1.DESTINATION_CCID)
71969                 WHEN 3 THEN TO_CHAR(l1.ADJ_DESTINATION_CCID)
71970                 WHEN 4 THEN TO_CHAR(l1.SOURCE_CCID)
71971                 WHEN 5 THEN TO_CHAR(l1.ADJ_SOURCE_CCID)
71972                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
71973                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
71974                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
71975                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
71976                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
71977                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
71978                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
71979                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
71980                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
71981                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
71982                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
71983                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
71984                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
71985                 
71986                 ELSE null
71987               END                           source_value
71988             , CASE r
71989                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
71990                           103371
71991                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
71992                          ,'ALLOW_OVERRIDE_CCID_FLAG'
71993                          ,'S'
71994                          ,275)
71995                 WHEN 15 THEN fvl34.meaning
71996                 
71997                 ELSE null
71998               END               source_meaning
71999          FROM  xla_events_gt     xet  
72000         , PA_XLA_CCDL_LINES_V  l1
72001   , fnd_lookup_values    fvl34
72002             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
72003         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
72004           AND xet.event_class_code = C_EVENT_CLASS_CODE
72005             AND l1.event_id          = xet.event_id
72006    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
72007   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
72008   AND fvl34.view_application_id(+) = 275
72009   AND fvl34.language(+)            = USERENV('LANG')
72010   
72011 )
72012 ;
72013 --
72014 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72015 
72016       trace
72017          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
72018          ,p_level    => C_LEVEL_STATEMENT
72019          ,p_module   => l_log_module);
72020 
72021 END IF;
72022 
72023 
72024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72025       trace
72026          (p_msg      => 'END of insert_sources_122'
72027          ,p_level    => C_LEVEL_PROCEDURE
72028          ,p_module   => l_log_module);
72029 END IF;
72030 EXCEPTION
72031   WHEN xla_exceptions_pkg.application_exception THEN
72032       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72033             trace
72034                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72038       RAISE;
72035                ,p_level    => C_LEVEL_EXCEPTION
72036                ,p_module   => l_log_module);
72037       END IF;
72039   WHEN OTHERS THEN
72040       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72041             trace
72042                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72043                ,p_level    => C_LEVEL_EXCEPTION
72044                ,p_module   => l_log_module);
72045        END IF;
72046        xla_exceptions_pkg.raise_message
72047            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_122');
72048 END insert_sources_122;
72049 --
72050 
72051 ---------------------------------------
72052 --
72053 -- PRIVATE FUNCTION
72054 --         EventClass_122
72055 --
72056 ----------------------------------------
72057 --
72058 FUNCTION EventClass_122
72059        (p_application_id         IN NUMBER
72060        ,p_base_ledger_id         IN NUMBER
72061        ,p_target_ledger_id       IN NUMBER
72062        ,p_language               IN VARCHAR2
72063        ,p_currency_code          IN VARCHAR2
72064        ,p_sla_ledger_id          IN NUMBER
72065        ,p_pad_start_date         IN DATE
72066        ,p_pad_end_date           IN DATE
72067        ,p_primary_ledger_id      IN NUMBER)
72068 RETURN BOOLEAN IS
72069 --
72070 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ALL';
72071 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS';
72072 
72073 l_calculate_acctd_flag   VARCHAR2(1) :='N';
72074 l_calculate_g_l_flag     VARCHAR2(1) :='N';
72075 --
72076 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72077 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72078 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72079 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72080 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72081 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72082 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72083 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72084 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72085 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72086 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72087 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72088 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72089 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72090 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72091 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72092 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72093 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72094 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72095 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72096 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72097 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72098 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
72099 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72100 
72101 l_event_id                             NUMBER;
72102 l_previous_event_id                    NUMBER;
72103 l_first_event_id                       NUMBER;
72104 l_last_event_id                        NUMBER;
72105 
72106 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
72107 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
72108 --
72109 --
72110 l_result                    BOOLEAN := TRUE;
72111 l_rows                      NUMBER  := 1000;
72112 l_event_type_name           VARCHAR2(80) := 'All';
72113 l_event_class_name          VARCHAR2(80) := 'Provider and Receiver Reclass';
72114 l_description               VARCHAR2(4000);
72115 l_transaction_reversal      NUMBER;
72116 l_ae_header_id              NUMBER;
72117 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
72118 l_log_module                VARCHAR2(240);
72119 --
72120 l_acct_reversal_source      VARCHAR2(30);
72121 l_trx_reversal_source       VARCHAR2(30);
72122 
72123 l_continue_with_lines       BOOLEAN := TRUE;
72124 --
72125 l_acc_rev_gl_date_source    DATE;                      -- 4262811
72126 --
72127 type t_array_event_id is table of number index by binary_integer;
72128 
72129 l_rec_array_event                    t_rec_array_event;
72130 l_null_rec_array_event               t_rec_array_event;
72131 l_array_ae_header_id                 xla_number_array_type;
72132 l_actual_flag                        VARCHAR2(1) := NULL;
72133 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
72134 l_balance_type_code                  VARCHAR2(1) :=NULL;
72135 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
72136 
72137 --
72138 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
72139 --
72140 
72141 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
72142 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
72143 
72147 TYPE t_array_source_13 IS TABLE OF PA_XLA_CCDL_LINES_V.SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
72144 TYPE t_array_source_4 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
72145 TYPE t_array_source_11 IS TABLE OF PA_XLA_CCDL_LINES_V.DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
72146 TYPE t_array_source_12 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
72148 TYPE t_array_source_14 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
72149 TYPE t_array_source_22 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
72150 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
72151 TYPE t_array_source_25 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
72152 TYPE t_array_source_27 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
72153 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
72154 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
72155 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
72156 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
72157 TYPE t_array_source_33 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
72158 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
72159 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
72160 TYPE t_array_source_41 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
72161 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
72162 
72163 l_array_source_32              t_array_source_32;
72164 l_array_source_87              t_array_source_87;
72165 
72166 l_array_source_4      t_array_source_4;
72167 l_array_source_11      t_array_source_11;
72168 l_array_source_12      t_array_source_12;
72169 l_array_source_13      t_array_source_13;
72170 l_array_source_14      t_array_source_14;
72171 l_array_source_22      t_array_source_22;
72172 l_array_source_23      t_array_source_23;
72173 l_array_source_25      t_array_source_25;
72174 l_array_source_27      t_array_source_27;
72175 l_array_source_28      t_array_source_28;
72176 l_array_source_29      t_array_source_29;
72177 l_array_source_30      t_array_source_30;
72178 l_array_source_31      t_array_source_31;
72179 l_array_source_33      t_array_source_33;
72180 l_array_source_34      t_array_source_34;
72181 l_array_source_34_meaning      t_array_lookup_meaning;
72182 l_array_source_35      t_array_source_35;
72183 l_array_source_41      t_array_source_41;
72184 l_array_source_43      t_array_source_43;
72185 
72186 --
72187 CURSOR header_cur
72188 IS
72189 SELECT /*+ leading(xet) cardinality(xet,1) */
72190 -- Event Class Code: PRVDR_RECVR_RECLASS
72191     xet.entity_id
72192    ,xet.legal_entity_id
72193    ,xet.entity_code
72194    ,xet.transaction_number
72195    ,xet.event_id
72196    ,xet.event_class_code
72197    ,xet.event_type_code
72198    ,xet.event_number
72199    ,xet.event_date
72200    ,xet.transaction_date
72201    ,xet.reference_num_1
72202    ,xet.reference_num_2
72203    ,xet.reference_num_3
72204    ,xet.reference_num_4
72205    ,xet.reference_char_1
72206    ,xet.reference_char_2
72207    ,xet.reference_char_3
72208    ,xet.reference_char_4
72209    ,xet.reference_date_1
72210    ,xet.reference_date_2
72211    ,xet.reference_date_3
72212    ,xet.reference_date_4
72213    ,xet.event_created_by
72214    ,xet.budgetary_control_flag 
72215   , h2.EXPENDITURE_ITEM_ID    source_32
72216   , h2.GL_DATE    source_87
72217   FROM xla_events_gt     xet 
72218   , PA_XLA_EXP_HEADER_V  h2
72219  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
72220    and xet.event_class_code = C_EVENT_CLASS_CODE
72221    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
72222 
72223  ORDER BY event_id
72224 ;
72225 
72226 
72227 --
72228 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
72229 IS
72230 SELECT  /*+ leading(xet) cardinality(xet,1) */
72231 -- Event Class Code: PRVDR_RECVR_RECLASS
72232     xet.entity_id
72233    ,xet.legal_entity_id
72234    ,xet.entity_code
72235    ,xet.transaction_number
72236    ,xet.event_id
72237    ,xet.event_class_code
72238    ,xet.event_type_code
72239    ,xet.event_number
72240    ,xet.event_date
72241    ,xet.transaction_date
72242    ,xet.reference_num_1
72243    ,xet.reference_num_2
72244    ,xet.reference_num_3
72245    ,xet.reference_num_4
72246    ,xet.reference_char_1
72247    ,xet.reference_char_2
72248    ,xet.reference_char_3
72249    ,xet.reference_char_4
72250    ,xet.reference_date_1
72251    ,xet.reference_date_2
72252    ,xet.reference_date_3
72253    ,xet.reference_date_4
72254    ,xet.event_created_by
72255    ,xet.budgetary_control_flag
72256  , l1.LINE_NUMBER  
72257   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
72258   , l1.DESTINATION_CCID    source_11
72259   , l1.ADJ_DESTINATION_CCID    source_12
72260   , l1.SOURCE_CCID    source_13
72261   , l1.ADJ_SOURCE_CCID    source_14
72262   , l1.REVERSING_LINE_FLAG    source_22
72266   , l1.EXCHANGE_RATE    source_28
72263   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
72264   , l1.ENTERED_CURRENCY_CODE    source_25
72265   , l1.EXCHANGE_RATE_DATE    source_27
72267   , l1.EXCHANGE_RATE_TYPE    source_29
72268   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
72269   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
72270   , l1.LINE_NUMBER    source_33
72271   , l1.LINE_TYPE    source_34
72272   , fvl34.meaning   source_34_meaning
72273   , l1.LINE_NUM_REVERSED    source_35
72274   , l1.ENTERED_AMOUNT    source_41
72275   , l1.ACCT_AMOUNT    source_43
72276   FROM xla_events_gt     xet 
72277   , PA_XLA_CCDL_LINES_V  l1
72278   , fnd_lookup_values    fvl34
72279  WHERE xet.event_id between x_first_event_id and x_last_event_id
72280    and xet.event_date between p_pad_start_date and p_pad_end_date
72281    and xet.event_class_code = C_EVENT_CLASS_CODE
72282    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
72283    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
72284   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
72285   AND fvl34.view_application_id(+) = 275
72286   AND fvl34.language(+)            = USERENV('LANG')
72287   ;
72288 
72289 --
72290 BEGIN
72291 IF g_log_enabled THEN
72292    l_log_module := C_DEFAULT_MODULE||'.EventClass_122';
72293 END IF;
72294 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72295    trace
72296       (p_msg      => 'BEGIN of EventClass_122'
72297       ,p_level    => C_LEVEL_PROCEDURE
72298       ,p_module   => l_log_module);
72299 END IF;
72300 
72301 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72302    trace
72303       (p_msg      => 'p_application_id = '||p_application_id||
72304                      ' - p_base_ledger_id = '||p_base_ledger_id||
72305                      ' - p_target_ledger_id  = '||p_target_ledger_id||
72306                      ' - p_language = '||p_language||
72307                      ' - p_currency_code = '||p_currency_code||
72308                      ' - p_sla_ledger_id = '||p_sla_ledger_id
72309       ,p_level    => C_LEVEL_STATEMENT
72310       ,p_module   => l_log_module);
72311 END IF;
72312 --
72313 -- initialze arrays
72314 --
72315 g_array_event.DELETE;
72316 l_rec_array_event := l_null_rec_array_event;
72317 --
72318 --------------------------------------
72319 -- 4262811 Initialze MPA Line Number
72320 --------------------------------------
72321 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
72322 
72323 --
72324 
72325 --
72326 OPEN header_cur;
72327 --
72328 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72329    trace
72330    (p_msg      => 'SQL - FETCH header_cur'
72331    ,p_level    => C_LEVEL_STATEMENT
72332    ,p_module   => l_log_module);
72333 END IF;
72334 --
72335 LOOP
72336 FETCH header_cur BULK COLLECT INTO
72337         l_array_entity_id
72338       , l_array_legal_entity_id
72339       , l_array_entity_code
72340       , l_array_transaction_num
72341       , l_array_event_id
72342       , l_array_class_code
72343       , l_array_event_type
72344       , l_array_event_number
72345       , l_array_event_date
72346       , l_array_transaction_date
72347       , l_array_reference_num_1
72348       , l_array_reference_num_2
72349       , l_array_reference_num_3
72350       , l_array_reference_num_4
72351       , l_array_reference_char_1
72352       , l_array_reference_char_2
72353       , l_array_reference_char_3
72354       , l_array_reference_char_4
72355       , l_array_reference_date_1
72356       , l_array_reference_date_2
72357       , l_array_reference_date_3
72358       , l_array_reference_date_4
72359       , l_array_event_created_by
72360       , l_array_budgetary_control_flag 
72361       , l_array_source_32
72362       , l_array_source_87
72363       LIMIT l_rows;
72364 --
72365 IF (C_LEVEL_EVENT >= g_log_level) THEN
72366    trace
72367    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
72368    ,p_level    => C_LEVEL_EVENT
72369    ,p_module   => l_log_module);
72370 END IF;
72371 --
72372 EXIT WHEN l_array_entity_id.COUNT = 0;
72373 
72374 -- initialize arrays
72375 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
72376 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
72377 
72378 --
72379 -- Bug 4458708
72380 --
72381 XLA_AE_LINES_PKG.g_LineNumber := 0;
72382 
72383 
72384 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
72385 g_last_hdr_idx := l_array_event_id.LAST;
72386 --
72387 -- loop for the headers. Each iteration is for each header extract row
72388 -- fetched in header cursor
72389 --
72390 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
72391 
72392 --
72393 -- set event info as cache for other routines to refer event attributes
72394 --
72395 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
72396    (p_application_id           => p_application_id
72397    ,p_primary_ledger_id        => p_primary_ledger_id
72398    ,p_base_ledger_id           => p_base_ledger_id
72399    ,p_target_ledger_id         => p_target_ledger_id
72400    ,p_entity_id                => l_array_entity_id(hdr_idx)
72401    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
72402    ,p_entity_code              => l_array_entity_code(hdr_idx)
72406    ,p_event_type_code          => l_array_event_type(hdr_idx)
72403    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
72404    ,p_event_id                 => l_array_event_id(hdr_idx)
72405    ,p_event_class_code         => l_array_class_code(hdr_idx)
72407    ,p_event_number             => l_array_event_number(hdr_idx)
72408    ,p_event_date               => l_array_event_date(hdr_idx)
72409    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
72410    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
72411    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
72412    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
72413    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
72414    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
72415    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
72416    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
72417    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
72418    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
72419    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
72420    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
72421    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
72422    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
72423    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
72424 
72425 --
72426 -- set the status of entry to C_VALID (0)
72427 --
72428 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
72429 
72430 --
72431 -- initialize a row for ae header
72432 --
72433 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
72434 
72435 l_event_id := l_array_event_id(hdr_idx);
72436 
72437 --
72438 -- storing the hdr_idx for event. May be used by line cursor.
72439 --
72440 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
72441 
72442 --
72443 -- store sources from header extract. This can be improved to
72444 -- store only those sources from header extract that may be used in lines
72445 --
72446 
72447 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
72448 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
72449 
72450 --
72451 -- initilaize the status of ae headers for diffrent balance types
72452 -- the status is initialised to C_NOT_CREATED (2)
72453 --
72454 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72455 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72456 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72457 
72458 --
72459 -- call api to validate and store accounting attributes for header
72460 --
72461 
72462 ------------------------------------------------------------
72463 -- Accrual Reversal : to get date for Standard Source (NONE)
72464 ------------------------------------------------------------
72465 l_acc_rev_gl_date_source := NULL;
72466 
72467      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
72468       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
72469 
72470 
72471 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
72472 
72473 XLA_AE_HEADER_PKG.SetJeCategoryName;
72474 
72475 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
72476 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
72477 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
72478 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
72479 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
72480 
72481 
72482 -- No header level analytical criteria
72483 
72484 --
72485 --accounting attribute enhancement, bug 3612931
72486 --
72487 l_trx_reversal_source := SUBSTR(NULL, 1,30);
72488 
72489 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
72490    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
72491 
72492    xla_accounting_err_pkg.build_message
72493       (p_appli_s_name            => 'XLA'
72494       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
72495       ,p_token_1                 => 'ACCT_ATTR_NAME'
72496       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
72497       ,p_token_2                 => 'PRODUCT_NAME'
72498       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
72499       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
72500       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
72501       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
72502 
72503 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
72504    --
72505    -- following sets the accounting attributes needed to reverse
72506    -- accounting for a distributeion
72507    --
72508    xla_ae_lines_pkg.SetTrxReversalAttrs
72509       (p_event_id              => l_event_id
72510       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
72511       ,p_trx_reversal_source   => l_trx_reversal_source);
72512 
72513 END IF;
72514 
72515 
72519 --
72516 ----------------------------------------------------------------
72517 -- 4262811 -  update the header statuses to invalid in need be
72518 ----------------------------------------------------------------
72520 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
72521 
72522 
72523   -----------------------------------------------
72524   -- No accrual reversal for the event class/type
72525   -----------------------------------------------
72526 ----------------------------------------------------------------
72527 
72528 --
72529 -- this ends the header loop iteration for one bulk fetch
72530 --
72531 END LOOP;
72532 
72533 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
72534 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
72535 
72536 --
72537 -- insert dummy rows into lines gt table that were created due to
72538 -- transaction reversals
72539 --
72540 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
72541    l_result := XLA_AE_LINES_PKG.InsertLines;
72542 END IF;
72543 
72544 --
72545 -- reset the temp_line_num for each set of events fetched from header
72546 -- cursor rather than doing it for each new event in line cursor
72547 -- Bug 3939231
72548 --
72549 xla_ae_lines_pkg.g_temp_line_num := 0;
72550 
72551 
72552 
72553 --
72554 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
72555 --
72556 --
72557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72558 
72559       trace
72560          (p_msg      => 'SQL - FETCH line_cur'
72561          ,p_level    => C_LEVEL_STATEMENT
72562          ,p_module   => l_log_module);
72563 
72564 END IF;
72565 --
72566 --
72567 LOOP
72568   --
72569   FETCH line_cur BULK COLLECT INTO
72570         l_array_entity_id
72571       , l_array_legal_entity_id
72572       , l_array_entity_code
72573       , l_array_transaction_num
72574       , l_array_event_id
72575       , l_array_class_code
72576       , l_array_event_type
72577       , l_array_event_number
72578       , l_array_event_date
72579       , l_array_transaction_date
72580       , l_array_reference_num_1
72581       , l_array_reference_num_2
72582       , l_array_reference_num_3
72583       , l_array_reference_num_4
72584       , l_array_reference_char_1
72585       , l_array_reference_char_2
72586       , l_array_reference_char_3
72587       , l_array_reference_char_4
72588       , l_array_reference_date_1
72589       , l_array_reference_date_2
72590       , l_array_reference_date_3
72591       , l_array_reference_date_4
72592       , l_array_event_created_by
72593       , l_array_budgetary_control_flag
72594       , l_array_extract_line_num 
72595       , l_array_source_4
72596       , l_array_source_11
72597       , l_array_source_12
72598       , l_array_source_13
72599       , l_array_source_14
72600       , l_array_source_22
72601       , l_array_source_23
72602       , l_array_source_25
72603       , l_array_source_27
72604       , l_array_source_28
72605       , l_array_source_29
72606       , l_array_source_30
72607       , l_array_source_31
72608       , l_array_source_33
72609       , l_array_source_34
72610       , l_array_source_34_meaning
72611       , l_array_source_35
72612       , l_array_source_41
72613       , l_array_source_43
72614       LIMIT l_rows;
72615 
72616   --
72617   IF (C_LEVEL_EVENT >= g_log_level) THEN
72618             trace
72619                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
72620                ,p_level    => C_LEVEL_EVENT
72621                ,p_module   => l_log_module);
72622   END IF;
72623   --
72624   EXIT WHEN l_array_entity_id.count = 0;
72625 
72626   XLA_AE_LINES_PKG.g_rec_lines := null;
72627 
72628 --
72629 -- Bug 4458708
72630 --
72631 XLA_AE_LINES_PKG.g_LineNumber := 0;
72632 --
72633 --
72634 
72635 FOR Idx IN 1..l_array_event_id.count LOOP
72636    --
72637    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
72638    --
72639    l_event_id := l_array_event_id(idx);  -- 5648433
72640 
72641    --
72642    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
72643    --
72644 
72645    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
72646              (g_array_event(l_event_id).array_value_num('header_index'))
72647          ,'N'
72648          ) <> 'Y'
72649    THEN
72650       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72651          trace
72652             (p_msg      => 'Trancaction revesal option is not Y '
72653             ,p_level    => C_LEVEL_STATEMENT
72654             ,p_module   => l_log_module);
72655       END IF;
72656 
72657 --
72658 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
72659 --
72660 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
72661 --
72662 -- set event info as cache for other routines to refer event attributes
72663 --
72664 
72665 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
72666    l_previous_event_id := l_event_id;
72667 
72668    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
72669       (p_application_id           => p_application_id
72673       ,p_entity_id                => l_array_entity_id(Idx)
72670       ,p_primary_ledger_id        => p_primary_ledger_id
72671       ,p_base_ledger_id           => p_base_ledger_id
72672       ,p_target_ledger_id         => p_target_ledger_id
72674       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
72675       ,p_entity_code              => l_array_entity_code(Idx)
72676       ,p_transaction_num          => l_array_transaction_num(Idx)
72677       ,p_event_id                 => l_array_event_id(Idx)
72678       ,p_event_class_code         => l_array_class_code(Idx)
72679       ,p_event_type_code          => l_array_event_type(Idx)
72680       ,p_event_number             => l_array_event_number(Idx)
72681       ,p_event_date               => l_array_event_date(Idx)
72682       ,p_transaction_date         => l_array_transaction_date(Idx)
72683       ,p_reference_num_1          => l_array_reference_num_1(Idx)
72684       ,p_reference_num_2          => l_array_reference_num_2(Idx)
72685       ,p_reference_num_3          => l_array_reference_num_3(Idx)
72686       ,p_reference_num_4          => l_array_reference_num_4(Idx)
72687       ,p_reference_char_1         => l_array_reference_char_1(Idx)
72688       ,p_reference_char_2         => l_array_reference_char_2(Idx)
72689       ,p_reference_char_3         => l_array_reference_char_3(Idx)
72690       ,p_reference_char_4         => l_array_reference_char_4(Idx)
72691       ,p_reference_date_1         => l_array_reference_date_1(Idx)
72692       ,p_reference_date_2         => l_array_reference_date_2(Idx)
72693       ,p_reference_date_3         => l_array_reference_date_3(Idx)
72694       ,p_reference_date_4         => l_array_reference_date_4(Idx)
72695       ,p_event_created_by         => l_array_event_created_by(Idx)
72696       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
72697        --
72698 END IF;
72699 
72700 
72701 
72702 --
72703 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
72704 
72705 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
72706 
72707 IF l_continue_with_lines THEN
72708    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
72709       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
72710 
72711       xla_accounting_err_pkg.build_message
72712          (p_appli_s_name            => 'XLA'
72713          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
72714          ,p_token_1                 => 'LINE_NUMBER'
72715          ,p_value_1                 => l_array_extract_line_num(Idx)
72716          ,p_token_2                 => 'PRODUCT_NAME'
72717          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
72718          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
72719          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
72720          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
72721 
72722    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
72723       --
72724       -- following sets the accounting attributes needed to reverse
72725       -- accounting for a distributeion
72726       --
72727 
72728       --
72729       -- 5217187
72730       --
72731       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
72732       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
72733                                        g_array_event(l_event_id).array_value_num('header_index'));
72734       --
72735       --
72736 
72737       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
72738       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
72739       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
72740       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
72741       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
72742       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_13(Idx));
72743       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
72744       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_41(Idx);
72745       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
72746       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
72747       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
72748       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
72749       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
72750       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
72751       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
72752       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
72753       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
72754       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
72755       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
72756       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
72757       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
72758       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_11(Idx));
72759       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
72760       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_41(Idx);
72761       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
72765       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
72762       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
72763       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
72764       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
72766       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
72767       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
72768       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
72769       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
72770       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
72771       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
72772       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
72773       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
72774       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
72775       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
72776       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
72777       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
72778       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
72779       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
72780       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
72781       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
72782       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
72783       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
72784       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
72785 
72786 
72787       xla_ae_lines_pkg.SetAcctReversalAttrs
72788          (p_event_id             => l_event_id
72789          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
72790          ,p_calculate_acctd_flag => l_calculate_acctd_flag
72791          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
72792    END IF;
72793 
72794    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
72795        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
72796 
72797 --
72798 AcctLineType_73 (
72799  p_application_id  => p_application_id
72800  ,p_event_id     => l_event_id
72801  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72802  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72803  ,p_actual_flag => l_actual_flag
72804  ,p_balance_type_code => l_balance_type_code
72805  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72806  
72807  , p_source_4 => l_array_source_4(Idx)
72808  , p_source_11 => l_array_source_11(Idx)
72809  , p_source_12 => l_array_source_12(Idx)
72810  , p_source_13 => l_array_source_13(Idx)
72811  , p_source_22 => l_array_source_22(Idx)
72812  , p_source_23 => l_array_source_23(Idx)
72813  , p_source_25 => l_array_source_25(Idx)
72814  , p_source_27 => l_array_source_27(Idx)
72815  , p_source_28 => l_array_source_28(Idx)
72816  , p_source_29 => l_array_source_29(Idx)
72817  , p_source_30 => l_array_source_30(Idx)
72818  , p_source_31 => l_array_source_31(Idx)
72819  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
72820  , p_source_33 => l_array_source_33(Idx)
72821  , p_source_34 => l_array_source_34(Idx)
72822  , p_source_34_meaning => l_array_source_34_meaning(Idx)
72823  , p_source_35 => l_array_source_35(Idx)
72824  , p_source_41 => l_array_source_41(Idx)
72825  , p_source_43 => l_array_source_43(Idx)
72826  );
72827 If(l_balance_type_code = 'A') THEN
72828   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72829 END IF;
72830 
72831 --
72832 
72833 
72834 --
72835 AcctLineType_75 (
72836  p_application_id  => p_application_id
72837  ,p_event_id     => l_event_id
72838  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72839  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72840  ,p_actual_flag => l_actual_flag
72841  ,p_balance_type_code => l_balance_type_code
72842  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72843  
72844  , p_source_4 => l_array_source_4(Idx)
72845  , p_source_11 => l_array_source_11(Idx)
72846  , p_source_13 => l_array_source_13(Idx)
72847  , p_source_14 => l_array_source_14(Idx)
72848  , p_source_22 => l_array_source_22(Idx)
72849  , p_source_23 => l_array_source_23(Idx)
72850  , p_source_25 => l_array_source_25(Idx)
72851  , p_source_27 => l_array_source_27(Idx)
72852  , p_source_28 => l_array_source_28(Idx)
72853  , p_source_29 => l_array_source_29(Idx)
72854  , p_source_30 => l_array_source_30(Idx)
72855  , p_source_31 => l_array_source_31(Idx)
72856  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
72857  , p_source_33 => l_array_source_33(Idx)
72858  , p_source_34 => l_array_source_34(Idx)
72859  , p_source_34_meaning => l_array_source_34_meaning(Idx)
72860  , p_source_35 => l_array_source_35(Idx)
72861  , p_source_41 => l_array_source_41(Idx)
72862  , p_source_43 => l_array_source_43(Idx)
72863  );
72864 If(l_balance_type_code = 'A') THEN
72865   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72866 END IF;
72867 
72868 --
72869 
72870       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
72871       -- or secondary ledger that has different currency with primary
72875 
72872       -- or alc that is calculated by sla
72873       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
72874             (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'))
72876 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
72877 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
72878           AND (l_actual_flag = 'A')) THEN
72879         XLA_AE_LINES_PKG.CreateGainOrLossLines(
72880           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
72881          ,p_application_id   => p_application_id
72882          ,p_amb_context_code => 'DEFAULT'
72883          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
72884          ,p_event_class_code => C_EVENT_CLASS_CODE
72885          ,p_event_type_code  => C_EVENT_TYPE_CODE
72886          
72887          ,p_gain_ccid        => -1
72888          ,p_loss_ccid        => -1
72889 
72890          ,p_actual_flag      => l_actual_flag
72891          ,p_enc_flag         => null
72892          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
72893          ,p_enc_g_l_ref      => null
72894          );
72895       END IF;
72896    END IF;
72897 END IF;
72898 
72899    ELSE
72900       --
72901       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
72902       --
72903       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72904          trace
72905             (p_msg      => 'Trancaction revesal option is Y'
72906             ,p_level    => C_LEVEL_STATEMENT
72907             ,p_module   => l_log_module);
72908       END IF;
72909    END IF;
72910 
72911 END LOOP;
72912 l_result := XLA_AE_LINES_PKG.InsertLines ;
72913 end loop;
72914 close line_cur;
72915 
72916 
72917 --
72918 -- insert headers into xla_ae_headers_gt table
72919 --
72920 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
72921 
72922 -- insert into errors table here.
72923 
72924 END LOOP;
72925 
72926 --
72927 -- 4865292
72928 --
72929 -- Compare g_hdr_extract_count with event count in
72930 -- CreateHeadersAndLines.
72931 --
72932 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
72933 
72934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72935    trace (p_msg     => '# rows extracted from header extract objects '
72936                     || ' (running total): '
72937                     || g_hdr_extract_count
72938          ,p_level   => C_LEVEL_STATEMENT
72939          ,p_module  => l_log_module);
72940 END IF;
72941 
72942 CLOSE header_cur;
72943 --
72944 
72945 --
72946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72947    trace
72948       (p_msg      => 'END of EventClass_122'
72949       ,p_level    => C_LEVEL_PROCEDURE
72950       ,p_module   => l_log_module);
72951 END IF;
72952 --
72953 RETURN l_result;
72954 EXCEPTION
72955 WHEN xla_exceptions_pkg.application_exception THEN
72956    
72957 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
72958 
72959    
72960 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
72961 
72962    RAISE;
72963 WHEN OTHERS THEN
72964    xla_exceptions_pkg.raise_message
72965       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_122');
72966 END EventClass_122;
72967 --
72968 
72969 ---------------------------------------
72970 --
72971 -- PRIVATE PROCEDURE
72972 --         insert_sources_123
72973 --
72974 ----------------------------------------
72975 --
72976 PROCEDURE insert_sources_123(
72977                                 p_target_ledger_id       IN NUMBER
72978                               , p_language               IN VARCHAR2
72979                               , p_sla_ledger_id          IN NUMBER
72980                               , p_pad_start_date         IN DATE
72981                               , p_pad_end_date           IN DATE
72982                          )
72983 IS
72984 
72985 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ADJ_ALL';
72986 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REVENUE_ADJ';
72987 p_apps_owner                   VARCHAR2(30);
72988 l_log_module                   VARCHAR2(240);
72989 BEGIN
72990 IF g_log_enabled THEN
72991       l_log_module := C_DEFAULT_MODULE||'.insert_sources_123';
72992 END IF;
72993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72994 
72995       trace
72996          (p_msg      => 'BEGIN of insert_sources_123'
72997          ,p_level    => C_LEVEL_PROCEDURE
72998          ,p_module   => l_log_module);
72999 
73000 END IF;
73001 
73002 -- select APPS owner
73003 SELECT oracle_username
73004   INTO p_apps_owner
73005   FROM fnd_oracle_userid
73006  WHERE read_only_flag = 'U'
73007 ;
73008 
73009 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73010       trace
73011          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
73012                         ' - p_language = '||p_language||
73013                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
73014                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
73015                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
73016                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
73020 
73017          ,p_level    => C_LEVEL_STATEMENT
73018          ,p_module   => l_log_module);
73019 END IF;
73021 
73022 --
73023 INSERT INTO xla_diag_sources --hdr2
73024 (
73025         event_id
73026       , ledger_id
73027       , sla_ledger_id
73028       , description_language
73029       , object_name
73030       , object_type_code
73031       , line_number
73032       , source_application_id
73033       , source_type_code
73034       , source_code
73035       , source_value
73036       , source_meaning
73037       , created_by
73038       , creation_date
73039       , last_update_date
73040       , last_updated_by
73041       , last_update_login
73042       , program_update_date
73043       , program_application_id
73044       , program_id
73045       , request_id
73046 )
73047 SELECT
73048         event_id
73049       , p_target_ledger_id
73050       , p_sla_ledger_id
73051       , p_language
73052       , object_name
73053       , object_type_code
73054       , line_number
73055       , source_application_id
73056       , source_type_code
73057       , source_code
73058       , SUBSTR(source_value ,1,1996)
73059       , SUBSTR(source_meaning ,1,200)
73060       , xla_environment_pkg.g_Usr_Id
73061       , TRUNC(SYSDATE)
73062       , TRUNC(SYSDATE)
73063       , xla_environment_pkg.g_Usr_Id
73064       , xla_environment_pkg.g_Login_Id
73065       , TRUNC(SYSDATE)
73066       , xla_environment_pkg.g_Prog_Appl_Id
73067       , xla_environment_pkg.g_Prog_Id
73068       , xla_environment_pkg.g_Req_Id
73069   FROM (
73070        SELECT xet.event_id                  event_id
73071             , 0                          line_number
73072             , CASE r
73073                WHEN 1 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73074                 WHEN 2 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73075                 WHEN 3 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73076                 WHEN 4 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73077                 WHEN 5 THEN 'PA_XLA_REVENUE_HEADERS_V' 
73078                 
73079                ELSE null
73080               END                           object_name
73081             , CASE r
73082                 WHEN 1 THEN 'HEADER' 
73083                 WHEN 2 THEN 'HEADER' 
73084                 WHEN 3 THEN 'HEADER' 
73085                 WHEN 4 THEN 'HEADER' 
73086                 WHEN 5 THEN 'HEADER' 
73087                 
73088                 ELSE null
73089               END                           object_type_code
73090             , CASE r
73091                 WHEN 1 THEN '275' 
73092                 WHEN 2 THEN '275' 
73093                 WHEN 3 THEN '275' 
73094                 WHEN 4 THEN '275' 
73095                 WHEN 5 THEN '275' 
73096                 
73097                 ELSE null
73098               END                           source_application_id
73099             , 'S'             source_type_code
73100             , CASE r
73101                 WHEN 1 THEN 'CREDITING_REVENUE_FLAG' 
73102                 WHEN 2 THEN 'EVENT_ID' 
73103                 WHEN 3 THEN 'GL_DATE' 
73104                 WHEN 4 THEN 'UER_CCID' 
73105                 WHEN 5 THEN 'UBR_CCID' 
73106                 
73107                 ELSE null
73108               END                           source_code
73109             , CASE r
73110                 WHEN 1 THEN TO_CHAR(h2.CREDITING_REVENUE_FLAG)
73111                 WHEN 2 THEN TO_CHAR(h2.EVENT_ID)
73112                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
73113                 WHEN 4 THEN TO_CHAR(h2.UER_CCID)
73114                 WHEN 5 THEN TO_CHAR(h2.UBR_CCID)
73115                 
73116                 ELSE null
73117               END                           source_value
73118             , CASE r
73119                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
73120                           103371
73121                          ,TO_CHAR(h2.CREDITING_REVENUE_FLAG)
73122                          ,'CREDITING_REVENUE_FLAG'
73123                          ,'S'
73124                          ,275)
73125                 
73126                 ELSE null
73127               END               source_meaning
73128          FROM xla_events_gt     xet  
73129       , PA_XLA_REVENUE_HEADERS_V  h2
73130              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
73131          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
73132            AND xet.event_class_code = C_EVENT_CLASS_CODE
73133               AND h2.event_id = xet.event_id
73134 
73135 )
73136 ;
73137 --
73138 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73139 
73140       trace
73141          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
73142          ,p_level    => C_LEVEL_STATEMENT
73143          ,p_module   => l_log_module);
73144 
73145 END IF;
73146 --
73147 
73148 
73149 
73150 --
73151 INSERT INTO xla_diag_sources  --line2
73152 (
73153         event_id
73154       , ledger_id
73155       , sla_ledger_id
73156       , description_language
73157       , object_name
73158       , object_type_code
73159       , line_number
73160       , source_application_id
73161       , source_type_code
73162       , source_code
73163       , source_value
73164       , source_meaning
73165       , created_by
73166       , creation_date
73170       , program_update_date
73167       , last_update_date
73168       , last_updated_by
73169       , last_update_login
73171       , program_application_id
73172       , program_id
73173       , request_id
73174 )
73175 SELECT  event_id
73176       , p_target_ledger_id
73177       , p_sla_ledger_id
73178       , p_language
73179       , object_name
73180       , object_type_code
73181       , line_number
73182       , source_application_id
73183       , source_type_code
73184       , source_code
73185       , SUBSTR(source_value,1,1996)
73186       , SUBSTR(source_meaning ,1,200)
73187       , xla_environment_pkg.g_Usr_Id
73188       , TRUNC(SYSDATE)
73189       , TRUNC(SYSDATE)
73190       , xla_environment_pkg.g_Usr_Id
73191       , xla_environment_pkg.g_Login_Id
73192       , TRUNC(SYSDATE)
73193       , xla_environment_pkg.g_Prog_Appl_Id
73194       , xla_environment_pkg.g_Prog_Id
73195       , xla_environment_pkg.g_Req_Id
73196   FROM (
73197        SELECT xet.event_id                  event_id
73198             , l3.line_number                 line_number
73199             , CASE r
73200                WHEN 1 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73201                 WHEN 2 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73202                 WHEN 3 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73203                 WHEN 4 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73204                 WHEN 5 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73205                 WHEN 6 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73206                 WHEN 7 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73207                 WHEN 8 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73208                 WHEN 9 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73209                 WHEN 10 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73210                 WHEN 11 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73211                 WHEN 12 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73212                 WHEN 13 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73213                 WHEN 14 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73214                 WHEN 15 THEN 'PA_XLA_EVENT_TYPE_REF_V' 
73215                 WHEN 16 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73216                 WHEN 17 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73217                 WHEN 18 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73218                 WHEN 19 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73219                 WHEN 20 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73220                 WHEN 21 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73221                 WHEN 22 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73222                 WHEN 23 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
73223                 
73224                ELSE null
73225               END                           object_name
73226             , CASE r
73227                 WHEN 1 THEN 'LINE' 
73228                 WHEN 2 THEN 'LINE' 
73229                 WHEN 3 THEN 'LINE' 
73230                 WHEN 4 THEN 'LINE' 
73231                 WHEN 5 THEN 'LINE' 
73232                 WHEN 6 THEN 'LINE' 
73233                 WHEN 7 THEN 'LINE' 
73234                 WHEN 8 THEN 'LINE' 
73235                 WHEN 9 THEN 'LINE' 
73236                 WHEN 10 THEN 'LINE' 
73237                 WHEN 11 THEN 'LINE' 
73238                 WHEN 12 THEN 'LINE' 
73239                 WHEN 13 THEN 'LINE' 
73240                 WHEN 14 THEN 'LINE' 
73241                 WHEN 15 THEN 'LINE' 
73242                 WHEN 16 THEN 'LINE' 
73243                 WHEN 17 THEN 'LINE' 
73244                 WHEN 18 THEN 'LINE' 
73245                 WHEN 19 THEN 'LINE' 
73246                 WHEN 20 THEN 'LINE' 
73247                 WHEN 21 THEN 'LINE' 
73248                 WHEN 22 THEN 'LINE' 
73249                 WHEN 23 THEN 'LINE' 
73250                 
73251                 ELSE null
73252               END                           object_type_code
73253             , CASE r
73254                 WHEN 1 THEN '275' 
73255                 WHEN 2 THEN '275' 
73256                 WHEN 3 THEN '275' 
73257                 WHEN 4 THEN '275' 
73258                 WHEN 5 THEN '275' 
73259                 WHEN 6 THEN '275' 
73260                 WHEN 7 THEN '275' 
73261                 WHEN 8 THEN '275' 
73262                 WHEN 9 THEN '275' 
73263                 WHEN 10 THEN '275' 
73264                 WHEN 11 THEN '275' 
73265                 WHEN 12 THEN '275' 
73266                 WHEN 13 THEN '275' 
73267                 WHEN 14 THEN '275' 
73268                 WHEN 15 THEN '275' 
73269                 WHEN 16 THEN '275' 
73270                 WHEN 17 THEN '275' 
73271                 WHEN 18 THEN '275' 
73272                 WHEN 19 THEN '275' 
73273                 WHEN 20 THEN '275' 
73274                 WHEN 21 THEN '275' 
73275                 WHEN 22 THEN '275' 
73276                 WHEN 23 THEN '275' 
73277                 
73278                 ELSE null
73279               END                           source_application_id
73280             , 'S'             source_type_code
73281             , CASE r
73282                 WHEN 1 THEN 'PDR_UBR_CCID' 
73283                 WHEN 2 THEN 'PDR_UER_CCID' 
73284                 WHEN 3 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
73285                 WHEN 4 THEN 'ENTERED_CURRENCY_CODE' 
73286                 WHEN 5 THEN 'EXCHANGE_RATE_DATE' 
73287                 WHEN 6 THEN 'EXCHANGE_RATE' 
73288                 WHEN 7 THEN 'EXCHANGE_RATE_TYPE' 
73289                 WHEN 8 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
73290                 WHEN 9 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
73291                 WHEN 10 THEN 'REVENUE_DISTRIBUTION_TYPE' 
73292                 WHEN 11 THEN 'REVENUE_FIRST_DIST_ID' 
73296                 WHEN 15 THEN 'REV_EVENT_TYPE_CLASSIFICATION' 
73293                 WHEN 12 THEN 'REVENUE_SECOND_DIST_ID' 
73294                 WHEN 13 THEN 'ENTERED_AMOUNT' 
73295                 WHEN 14 THEN 'ACCT_AMOUNT' 
73297                 WHEN 16 THEN 'ACTUAL_UPG_CR_CCID' 
73298                 WHEN 17 THEN 'ACTUAL_UPG_DR_CCID' 
73299                 WHEN 18 THEN 'APPLICATION_ID' 
73300                 WHEN 19 THEN 'REVENUE_ENTITY_CODE' 
73301                 WHEN 20 THEN 'CR_REVENUE_FIRST_DIST_ID' 
73302                 WHEN 21 THEN 'PROJECT_ID' 
73303                 WHEN 22 THEN 'CR_REVENUE_SECOND_DIST_ID' 
73304                 WHEN 23 THEN 'PDR_DRAFT_REV_NUM_CREDITED' 
73305                 
73306                 ELSE null
73307               END                           source_code
73308             , CASE r
73309                 WHEN 1 THEN TO_CHAR(l3.PDR_UBR_CCID)
73310                 WHEN 2 THEN TO_CHAR(l3.PDR_UER_CCID)
73311                 WHEN 3 THEN TO_CHAR(l3.ACTUAL_UPG_CR_ACCT_CLASS)
73312                 WHEN 4 THEN TO_CHAR(l3.ENTERED_CURRENCY_CODE)
73313                 WHEN 5 THEN TO_CHAR(l3.EXCHANGE_RATE_DATE)
73314                 WHEN 6 THEN TO_CHAR(l3.EXCHANGE_RATE)
73315                 WHEN 7 THEN TO_CHAR(l3.EXCHANGE_RATE_TYPE)
73316                 WHEN 8 THEN TO_CHAR(l3.ACTUAL_UPG_DR_ACCT_CLASS)
73317                 WHEN 9 THEN TO_CHAR(l3.USE_ACT_UPG_ATTRIB_FLAG)
73318                 WHEN 10 THEN TO_CHAR(l3.REVENUE_DISTRIBUTION_TYPE)
73319                 WHEN 11 THEN TO_CHAR(l3.REVENUE_FIRST_DIST_ID)
73320                 WHEN 12 THEN TO_CHAR(l3.REVENUE_SECOND_DIST_ID)
73321                 WHEN 13 THEN TO_CHAR(l3.ENTERED_AMOUNT)
73322                 WHEN 14 THEN TO_CHAR(l3.ACCT_AMOUNT)
73323                 WHEN 15 THEN TO_CHAR(l1.REV_EVENT_TYPE_CLASSIFICATION)
73324                 WHEN 16 THEN TO_CHAR(l3.ACTUAL_UPG_CR_CCID)
73325                 WHEN 17 THEN TO_CHAR(l3.ACTUAL_UPG_DR_CCID)
73326                 WHEN 18 THEN TO_CHAR(l3.APPLICATION_ID)
73327                 WHEN 19 THEN TO_CHAR(l3.REVENUE_ENTITY_CODE)
73328                 WHEN 20 THEN TO_CHAR(l3.CR_REVENUE_FIRST_DIST_ID)
73329                 WHEN 21 THEN TO_CHAR(l3.PROJECT_ID)
73330                 WHEN 22 THEN TO_CHAR(l3.CR_REVENUE_SECOND_DIST_ID)
73331                 WHEN 23 THEN TO_CHAR(l3.PDR_DRAFT_REV_NUM_CREDITED)
73332                 
73333                 ELSE null
73334               END                           source_value
73335             , CASE r
73336                 WHEN 15 THEN fvl58.meaning
73337                 
73338                 ELSE null
73339               END               source_meaning
73340          FROM  xla_events_gt     xet  
73341         , PA_XLA_EVENT_TYPE_REF_V  l1
73342         , PA_XLA_REVENUE_LINES_ADJ_V  l3
73343   , fnd_lookup_values    fvl58
73344             , (select rownum r from all_objects where rownum <= 23 and owner = p_apps_owner)
73345         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
73346           AND xet.event_class_code = C_EVENT_CLASS_CODE
73347             AND l3.event_id          = xet.event_id
73348  AND l1.rev_event_type (+) =l3.rev_event_type   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
73349   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
73350   AND fvl58.view_application_id(+) = 275
73351   AND fvl58.language(+)            = USERENV('LANG')
73352   
73353 )
73354 ;
73355 --
73356 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73357 
73358       trace
73359          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
73360          ,p_level    => C_LEVEL_STATEMENT
73361          ,p_module   => l_log_module);
73362 
73363 END IF;
73364 
73365 
73366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73367       trace
73368          (p_msg      => 'END of insert_sources_123'
73369          ,p_level    => C_LEVEL_PROCEDURE
73370          ,p_module   => l_log_module);
73371 END IF;
73372 EXCEPTION
73373   WHEN xla_exceptions_pkg.application_exception THEN
73374       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
73375             trace
73376                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
73377                ,p_level    => C_LEVEL_EXCEPTION
73378                ,p_module   => l_log_module);
73379       END IF;
73380       RAISE;
73381   WHEN OTHERS THEN
73382       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
73383             trace
73384                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
73385                ,p_level    => C_LEVEL_EXCEPTION
73386                ,p_module   => l_log_module);
73387        END IF;
73388        xla_exceptions_pkg.raise_message
73389            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_123');
73390 END insert_sources_123;
73391 --
73392 
73393 ---------------------------------------
73394 --
73395 -- PRIVATE FUNCTION
73396 --         EventClass_123
73397 --
73398 ----------------------------------------
73399 --
73400 FUNCTION EventClass_123
73401        (p_application_id         IN NUMBER
73402        ,p_base_ledger_id         IN NUMBER
73403        ,p_target_ledger_id       IN NUMBER
73404        ,p_language               IN VARCHAR2
73405        ,p_currency_code          IN VARCHAR2
73406        ,p_sla_ledger_id          IN NUMBER
73407        ,p_pad_start_date         IN DATE
73408        ,p_pad_end_date           IN DATE
73409        ,p_primary_ledger_id      IN NUMBER)
73410 RETURN BOOLEAN IS
73411 --
73415 l_calculate_acctd_flag   VARCHAR2(1) :='N';
73412 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ADJ_ALL';
73413 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REVENUE_ADJ';
73414 
73416 l_calculate_g_l_flag     VARCHAR2(1) :='N';
73417 --
73418 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73419 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73420 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73421 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73422 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73423 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73424 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73425 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73426 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73427 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73428 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73429 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73430 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73431 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73432 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73433 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73434 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73435 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73436 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73437 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73438 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73439 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73440 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
73441 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73442 
73443 l_event_id                             NUMBER;
73444 l_previous_event_id                    NUMBER;
73445 l_first_event_id                       NUMBER;
73446 l_last_event_id                        NUMBER;
73447 
73448 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
73449 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
73450 --
73451 --
73452 l_result                    BOOLEAN := TRUE;
73453 l_rows                      NUMBER  := 1000;
73454 l_event_type_name           VARCHAR2(80) := 'All';
73455 l_event_class_name          VARCHAR2(80) := 'Revenue Adjustment';
73456 l_description               VARCHAR2(4000);
73457 l_transaction_reversal      NUMBER;
73458 l_ae_header_id              NUMBER;
73459 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
73460 l_log_module                VARCHAR2(240);
73461 --
73462 l_acct_reversal_source      VARCHAR2(30);
73463 l_trx_reversal_source       VARCHAR2(30);
73464 
73465 l_continue_with_lines       BOOLEAN := TRUE;
73466 --
73467 l_acc_rev_gl_date_source    DATE;                      -- 4262811
73468 --
73469 type t_array_event_id is table of number index by binary_integer;
73470 
73471 l_rec_array_event                    t_rec_array_event;
73472 l_null_rec_array_event               t_rec_array_event;
73473 l_array_ae_header_id                 xla_number_array_type;
73474 l_actual_flag                        VARCHAR2(1) := NULL;
73475 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
73476 l_balance_type_code                  VARCHAR2(1) :=NULL;
73477 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
73478 
73479 --
73480 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
73481 --
73482 
73483 TYPE t_array_source_38 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.CREDITING_REVENUE_FLAG%TYPE INDEX BY BINARY_INTEGER;
73484 TYPE t_array_source_42 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.EVENT_ID%TYPE INDEX BY BINARY_INTEGER;
73485 TYPE t_array_source_87 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
73486 TYPE t_array_source_91 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UER_CCID%TYPE INDEX BY BINARY_INTEGER;
73487 TYPE t_array_source_92 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
73488 
73489 TYPE t_array_source_19 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
73490 TYPE t_array_source_20 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_UER_CCID%TYPE INDEX BY BINARY_INTEGER;
73491 TYPE t_array_source_23 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
73492 TYPE t_array_source_25 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
73493 TYPE t_array_source_27 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
73494 TYPE t_array_source_28 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
73495 TYPE t_array_source_29 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
73496 TYPE t_array_source_30 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
73497 TYPE t_array_source_31 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
73498 TYPE t_array_source_36 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
73502 TYPE t_array_source_43 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
73499 TYPE t_array_source_39 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73500 TYPE t_array_source_40 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73501 TYPE t_array_source_41 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
73503 TYPE t_array_source_58 IS TABLE OF PA_XLA_EVENT_TYPE_REF_V.REV_EVENT_TYPE_CLASSIFICATION%TYPE INDEX BY BINARY_INTEGER;
73504 TYPE t_array_source_59 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_CR_CCID%TYPE INDEX BY BINARY_INTEGER;
73505 TYPE t_array_source_60 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_DR_CCID%TYPE INDEX BY BINARY_INTEGER;
73506 TYPE t_array_source_61 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
73507 TYPE t_array_source_62 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
73508 TYPE t_array_source_63 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.CR_REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73509 TYPE t_array_source_64 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PROJECT_ID%TYPE INDEX BY BINARY_INTEGER;
73510 TYPE t_array_source_65 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.CR_REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73511 TYPE t_array_source_66 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_DRAFT_REV_NUM_CREDITED%TYPE INDEX BY BINARY_INTEGER;
73512 
73513 l_array_source_38              t_array_source_38;
73514 l_array_source_42              t_array_source_42;
73515 l_array_source_87              t_array_source_87;
73516 l_array_source_91              t_array_source_91;
73517 l_array_source_92              t_array_source_92;
73518 
73519 l_array_source_19      t_array_source_19;
73520 l_array_source_20      t_array_source_20;
73521 l_array_source_23      t_array_source_23;
73522 l_array_source_25      t_array_source_25;
73523 l_array_source_27      t_array_source_27;
73524 l_array_source_28      t_array_source_28;
73525 l_array_source_29      t_array_source_29;
73526 l_array_source_30      t_array_source_30;
73527 l_array_source_31      t_array_source_31;
73528 l_array_source_36      t_array_source_36;
73529 l_array_source_39      t_array_source_39;
73530 l_array_source_40      t_array_source_40;
73531 l_array_source_41      t_array_source_41;
73532 l_array_source_43      t_array_source_43;
73533 l_array_source_58      t_array_source_58;
73534 l_array_source_58_meaning      t_array_lookup_meaning;
73535 l_array_source_59      t_array_source_59;
73536 l_array_source_60      t_array_source_60;
73537 l_array_source_61      t_array_source_61;
73538 l_array_source_62      t_array_source_62;
73539 l_array_source_63      t_array_source_63;
73540 l_array_source_64      t_array_source_64;
73541 l_array_source_65      t_array_source_65;
73542 l_array_source_66      t_array_source_66;
73543 
73544 --
73545 CURSOR header_cur
73546 IS
73547 SELECT /*+ leading(xet) cardinality(xet,1) */
73548 -- Event Class Code: REVENUE_ADJ
73549     xet.entity_id
73550    ,xet.legal_entity_id
73551    ,xet.entity_code
73552    ,xet.transaction_number
73553    ,xet.event_id
73554    ,xet.event_class_code
73555    ,xet.event_type_code
73556    ,xet.event_number
73557    ,xet.event_date
73558    ,xet.transaction_date
73559    ,xet.reference_num_1
73560    ,xet.reference_num_2
73561    ,xet.reference_num_3
73562    ,xet.reference_num_4
73563    ,xet.reference_char_1
73564    ,xet.reference_char_2
73565    ,xet.reference_char_3
73566    ,xet.reference_char_4
73567    ,xet.reference_date_1
73568    ,xet.reference_date_2
73569    ,xet.reference_date_3
73570    ,xet.reference_date_4
73571    ,xet.event_created_by
73572    ,xet.budgetary_control_flag 
73573   , h2.CREDITING_REVENUE_FLAG    source_38
73574   , h2.EVENT_ID    source_42
73575   , h2.GL_DATE    source_87
73576   , h2.UER_CCID    source_91
73577   , h2.UBR_CCID    source_92
73578   FROM xla_events_gt     xet 
73579   , PA_XLA_REVENUE_HEADERS_V  h2
73580  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
73581    and xet.event_class_code = C_EVENT_CLASS_CODE
73582    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
73583 
73584  ORDER BY event_id
73585 ;
73586 
73587 
73588 --
73589 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
73590 IS
73591 SELECT  /*+ leading(xet) cardinality(xet,1) */
73592 -- Event Class Code: REVENUE_ADJ
73593     xet.entity_id
73594    ,xet.legal_entity_id
73595    ,xet.entity_code
73596    ,xet.transaction_number
73597    ,xet.event_id
73598    ,xet.event_class_code
73599    ,xet.event_type_code
73600    ,xet.event_number
73601    ,xet.event_date
73602    ,xet.transaction_date
73603    ,xet.reference_num_1
73604    ,xet.reference_num_2
73605    ,xet.reference_num_3
73606    ,xet.reference_num_4
73607    ,xet.reference_char_1
73608    ,xet.reference_char_2
73609    ,xet.reference_char_3
73610    ,xet.reference_char_4
73611    ,xet.reference_date_1
73612    ,xet.reference_date_2
73613    ,xet.reference_date_3
73614    ,xet.reference_date_4
73615    ,xet.event_created_by
73616    ,xet.budgetary_control_flag
73617  , l3.LINE_NUMBER  
73618   , l3.PDR_UBR_CCID    source_19
73619   , l3.PDR_UER_CCID    source_20
73620   , l3.ACTUAL_UPG_CR_ACCT_CLASS    source_23
73621   , l3.ENTERED_CURRENCY_CODE    source_25
73622   , l3.EXCHANGE_RATE_DATE    source_27
73626   , l3.USE_ACT_UPG_ATTRIB_FLAG    source_31
73623   , l3.EXCHANGE_RATE    source_28
73624   , l3.EXCHANGE_RATE_TYPE    source_29
73625   , l3.ACTUAL_UPG_DR_ACCT_CLASS    source_30
73627   , l3.REVENUE_DISTRIBUTION_TYPE    source_36
73628   , l3.REVENUE_FIRST_DIST_ID    source_39
73629   , l3.REVENUE_SECOND_DIST_ID    source_40
73630   , l3.ENTERED_AMOUNT    source_41
73631   , l3.ACCT_AMOUNT    source_43
73632   , l1.REV_EVENT_TYPE_CLASSIFICATION    source_58
73633   , fvl58.meaning   source_58_meaning
73634   , l3.ACTUAL_UPG_CR_CCID    source_59
73635   , l3.ACTUAL_UPG_DR_CCID    source_60
73636   , l3.APPLICATION_ID    source_61
73637   , l3.REVENUE_ENTITY_CODE    source_62
73638   , l3.CR_REVENUE_FIRST_DIST_ID    source_63
73639   , l3.PROJECT_ID    source_64
73640   , l3.CR_REVENUE_SECOND_DIST_ID    source_65
73641   , l3.PDR_DRAFT_REV_NUM_CREDITED    source_66
73642   FROM xla_events_gt     xet 
73643   , PA_XLA_EVENT_TYPE_REF_V  l1
73644   , PA_XLA_REVENUE_LINES_ADJ_V  l3
73645   , fnd_lookup_values    fvl58
73646  WHERE xet.event_id between x_first_event_id and x_last_event_id
73647    and xet.event_date between p_pad_start_date and p_pad_end_date
73648    and xet.event_class_code = C_EVENT_CLASS_CODE
73649    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
73650  AND l1.REV_EVENT_TYPE (+) =l3.REV_EVENT_TYPE   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
73651   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
73652   AND fvl58.view_application_id(+) = 275
73653   AND fvl58.language(+)            = USERENV('LANG')
73654   ;
73655 
73656 --
73657 BEGIN
73658 IF g_log_enabled THEN
73659    l_log_module := C_DEFAULT_MODULE||'.EventClass_123';
73660 END IF;
73661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73662    trace
73663       (p_msg      => 'BEGIN of EventClass_123'
73664       ,p_level    => C_LEVEL_PROCEDURE
73665       ,p_module   => l_log_module);
73666 END IF;
73667 
73668 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73669    trace
73670       (p_msg      => 'p_application_id = '||p_application_id||
73671                      ' - p_base_ledger_id = '||p_base_ledger_id||
73672                      ' - p_target_ledger_id  = '||p_target_ledger_id||
73673                      ' - p_language = '||p_language||
73674                      ' - p_currency_code = '||p_currency_code||
73675                      ' - p_sla_ledger_id = '||p_sla_ledger_id
73676       ,p_level    => C_LEVEL_STATEMENT
73677       ,p_module   => l_log_module);
73678 END IF;
73679 --
73680 -- initialze arrays
73681 --
73682 g_array_event.DELETE;
73683 l_rec_array_event := l_null_rec_array_event;
73684 --
73685 --------------------------------------
73686 -- 4262811 Initialze MPA Line Number
73687 --------------------------------------
73688 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
73689 
73690 --
73691 
73692 --
73693 OPEN header_cur;
73694 --
73695 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73696    trace
73697    (p_msg      => 'SQL - FETCH header_cur'
73698    ,p_level    => C_LEVEL_STATEMENT
73699    ,p_module   => l_log_module);
73700 END IF;
73701 --
73702 LOOP
73703 FETCH header_cur BULK COLLECT INTO
73704         l_array_entity_id
73705       , l_array_legal_entity_id
73706       , l_array_entity_code
73707       , l_array_transaction_num
73708       , l_array_event_id
73709       , l_array_class_code
73710       , l_array_event_type
73711       , l_array_event_number
73712       , l_array_event_date
73713       , l_array_transaction_date
73714       , l_array_reference_num_1
73715       , l_array_reference_num_2
73716       , l_array_reference_num_3
73717       , l_array_reference_num_4
73718       , l_array_reference_char_1
73719       , l_array_reference_char_2
73720       , l_array_reference_char_3
73721       , l_array_reference_char_4
73722       , l_array_reference_date_1
73723       , l_array_reference_date_2
73724       , l_array_reference_date_3
73725       , l_array_reference_date_4
73726       , l_array_event_created_by
73727       , l_array_budgetary_control_flag 
73728       , l_array_source_38
73729       , l_array_source_42
73730       , l_array_source_87
73731       , l_array_source_91
73732       , l_array_source_92
73733       LIMIT l_rows;
73734 --
73735 IF (C_LEVEL_EVENT >= g_log_level) THEN
73736    trace
73737    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
73738    ,p_level    => C_LEVEL_EVENT
73739    ,p_module   => l_log_module);
73740 END IF;
73741 --
73742 EXIT WHEN l_array_entity_id.COUNT = 0;
73743 
73744 -- initialize arrays
73745 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
73746 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
73747 
73748 --
73749 -- Bug 4458708
73750 --
73751 XLA_AE_LINES_PKG.g_LineNumber := 0;
73752 
73753 
73754 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
73755 g_last_hdr_idx := l_array_event_id.LAST;
73756 --
73757 -- loop for the headers. Each iteration is for each header extract row
73758 -- fetched in header cursor
73759 --
73760 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
73761 
73762 --
73763 -- set event info as cache for other routines to refer event attributes
73764 --
73765 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
73769    ,p_target_ledger_id         => p_target_ledger_id
73766    (p_application_id           => p_application_id
73767    ,p_primary_ledger_id        => p_primary_ledger_id
73768    ,p_base_ledger_id           => p_base_ledger_id
73770    ,p_entity_id                => l_array_entity_id(hdr_idx)
73771    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
73772    ,p_entity_code              => l_array_entity_code(hdr_idx)
73773    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
73774    ,p_event_id                 => l_array_event_id(hdr_idx)
73775    ,p_event_class_code         => l_array_class_code(hdr_idx)
73776    ,p_event_type_code          => l_array_event_type(hdr_idx)
73777    ,p_event_number             => l_array_event_number(hdr_idx)
73778    ,p_event_date               => l_array_event_date(hdr_idx)
73779    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
73780    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
73781    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
73782    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
73783    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
73784    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
73785    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
73786    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
73787    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
73788    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
73789    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
73790    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
73791    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
73792    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
73793    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
73794 
73795 --
73796 -- set the status of entry to C_VALID (0)
73797 --
73798 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
73799 
73800 --
73801 -- initialize a row for ae header
73802 --
73803 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
73804 
73805 l_event_id := l_array_event_id(hdr_idx);
73806 
73807 --
73808 -- storing the hdr_idx for event. May be used by line cursor.
73809 --
73810 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
73811 
73812 --
73813 -- store sources from header extract. This can be improved to
73814 -- store only those sources from header extract that may be used in lines
73815 --
73816 
73817 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
73818 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
73819 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
73820 g_array_event(l_event_id).array_value_num('source_91') := l_array_source_91(hdr_idx);
73821 g_array_event(l_event_id).array_value_num('source_92') := l_array_source_92(hdr_idx);
73822 
73823 --
73824 -- initilaize the status of ae headers for diffrent balance types
73825 -- the status is initialised to C_NOT_CREATED (2)
73826 --
73827 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73828 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73829 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73830 
73831 --
73832 -- call api to validate and store accounting attributes for header
73833 --
73834 
73835 ------------------------------------------------------------
73836 -- Accrual Reversal : to get date for Standard Source (NONE)
73837 ------------------------------------------------------------
73838 l_acc_rev_gl_date_source := NULL;
73839 
73840      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
73841       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
73842 
73843 
73844 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
73845 
73846 XLA_AE_HEADER_PKG.SetJeCategoryName;
73847 
73848 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
73849 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
73850 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
73851 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
73852 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
73853 
73854 
73855 -- No header level analytical criteria
73856 
73857 --
73858 --accounting attribute enhancement, bug 3612931
73859 --
73860 l_trx_reversal_source := SUBSTR(NULL, 1,30);
73861 
73862 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
73863    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
73864 
73865    xla_accounting_err_pkg.build_message
73866       (p_appli_s_name            => 'XLA'
73867       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
73868       ,p_token_1                 => 'ACCT_ATTR_NAME'
73869       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
73870       ,p_token_2                 => 'PRODUCT_NAME'
73871       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
73872       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
73873       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
73877    --
73874       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
73875 
73876 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
73878    -- following sets the accounting attributes needed to reverse
73879    -- accounting for a distributeion
73880    --
73881    xla_ae_lines_pkg.SetTrxReversalAttrs
73882       (p_event_id              => l_event_id
73883       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
73884       ,p_trx_reversal_source   => l_trx_reversal_source);
73885 
73886 END IF;
73887 
73888 
73889 ----------------------------------------------------------------
73890 -- 4262811 -  update the header statuses to invalid in need be
73891 ----------------------------------------------------------------
73892 --
73893 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
73894 
73895 
73896   -----------------------------------------------
73897   -- No accrual reversal for the event class/type
73898   -----------------------------------------------
73899 ----------------------------------------------------------------
73900 
73901 --
73902 -- this ends the header loop iteration for one bulk fetch
73903 --
73904 END LOOP;
73905 
73906 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
73907 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
73908 
73909 --
73910 -- insert dummy rows into lines gt table that were created due to
73911 -- transaction reversals
73912 --
73913 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
73914    l_result := XLA_AE_LINES_PKG.InsertLines;
73915 END IF;
73916 
73917 --
73918 -- reset the temp_line_num for each set of events fetched from header
73919 -- cursor rather than doing it for each new event in line cursor
73920 -- Bug 3939231
73921 --
73922 xla_ae_lines_pkg.g_temp_line_num := 0;
73923 
73924 
73925 
73926 --
73927 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
73928 --
73929 --
73930 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73931 
73932       trace
73933          (p_msg      => 'SQL - FETCH line_cur'
73934          ,p_level    => C_LEVEL_STATEMENT
73935          ,p_module   => l_log_module);
73936 
73937 END IF;
73938 --
73939 --
73940 LOOP
73941   --
73942   FETCH line_cur BULK COLLECT INTO
73943         l_array_entity_id
73944       , l_array_legal_entity_id
73945       , l_array_entity_code
73946       , l_array_transaction_num
73947       , l_array_event_id
73948       , l_array_class_code
73949       , l_array_event_type
73950       , l_array_event_number
73951       , l_array_event_date
73952       , l_array_transaction_date
73953       , l_array_reference_num_1
73954       , l_array_reference_num_2
73955       , l_array_reference_num_3
73956       , l_array_reference_num_4
73957       , l_array_reference_char_1
73958       , l_array_reference_char_2
73959       , l_array_reference_char_3
73960       , l_array_reference_char_4
73961       , l_array_reference_date_1
73962       , l_array_reference_date_2
73963       , l_array_reference_date_3
73964       , l_array_reference_date_4
73965       , l_array_event_created_by
73966       , l_array_budgetary_control_flag
73967       , l_array_extract_line_num 
73968       , l_array_source_19
73969       , l_array_source_20
73970       , l_array_source_23
73971       , l_array_source_25
73972       , l_array_source_27
73973       , l_array_source_28
73974       , l_array_source_29
73975       , l_array_source_30
73976       , l_array_source_31
73977       , l_array_source_36
73978       , l_array_source_39
73979       , l_array_source_40
73980       , l_array_source_41
73981       , l_array_source_43
73982       , l_array_source_58
73983       , l_array_source_58_meaning
73984       , l_array_source_59
73985       , l_array_source_60
73986       , l_array_source_61
73987       , l_array_source_62
73988       , l_array_source_63
73989       , l_array_source_64
73990       , l_array_source_65
73991       , l_array_source_66
73992       LIMIT l_rows;
73993 
73994   --
73995   IF (C_LEVEL_EVENT >= g_log_level) THEN
73996             trace
73997                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
73998                ,p_level    => C_LEVEL_EVENT
73999                ,p_module   => l_log_module);
74000   END IF;
74001   --
74002   EXIT WHEN l_array_entity_id.count = 0;
74003 
74004   XLA_AE_LINES_PKG.g_rec_lines := null;
74005 
74006 --
74007 -- Bug 4458708
74008 --
74009 XLA_AE_LINES_PKG.g_LineNumber := 0;
74010 --
74011 --
74012 
74013 FOR Idx IN 1..l_array_event_id.count LOOP
74014    --
74015    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
74016    --
74017    l_event_id := l_array_event_id(idx);  -- 5648433
74018 
74019    --
74020    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74021    --
74022 
74023    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
74024              (g_array_event(l_event_id).array_value_num('header_index'))
74025          ,'N'
74026          ) <> 'Y'
74027    THEN
74031             ,p_level    => C_LEVEL_STATEMENT
74028       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74029          trace
74030             (p_msg      => 'Trancaction revesal option is not Y '
74032             ,p_module   => l_log_module);
74033       END IF;
74034 
74035 --
74036 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
74037 --
74038 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
74039 --
74040 -- set event info as cache for other routines to refer event attributes
74041 --
74042 
74043 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
74044    l_previous_event_id := l_event_id;
74045 
74046    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
74047       (p_application_id           => p_application_id
74048       ,p_primary_ledger_id        => p_primary_ledger_id
74049       ,p_base_ledger_id           => p_base_ledger_id
74050       ,p_target_ledger_id         => p_target_ledger_id
74051       ,p_entity_id                => l_array_entity_id(Idx)
74052       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
74053       ,p_entity_code              => l_array_entity_code(Idx)
74054       ,p_transaction_num          => l_array_transaction_num(Idx)
74055       ,p_event_id                 => l_array_event_id(Idx)
74056       ,p_event_class_code         => l_array_class_code(Idx)
74057       ,p_event_type_code          => l_array_event_type(Idx)
74058       ,p_event_number             => l_array_event_number(Idx)
74059       ,p_event_date               => l_array_event_date(Idx)
74060       ,p_transaction_date         => l_array_transaction_date(Idx)
74061       ,p_reference_num_1          => l_array_reference_num_1(Idx)
74062       ,p_reference_num_2          => l_array_reference_num_2(Idx)
74063       ,p_reference_num_3          => l_array_reference_num_3(Idx)
74064       ,p_reference_num_4          => l_array_reference_num_4(Idx)
74065       ,p_reference_char_1         => l_array_reference_char_1(Idx)
74066       ,p_reference_char_2         => l_array_reference_char_2(Idx)
74067       ,p_reference_char_3         => l_array_reference_char_3(Idx)
74068       ,p_reference_char_4         => l_array_reference_char_4(Idx)
74069       ,p_reference_date_1         => l_array_reference_date_1(Idx)
74070       ,p_reference_date_2         => l_array_reference_date_2(Idx)
74071       ,p_reference_date_3         => l_array_reference_date_3(Idx)
74072       ,p_reference_date_4         => l_array_reference_date_4(Idx)
74073       ,p_event_created_by         => l_array_event_created_by(Idx)
74074       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
74075        --
74076 END IF;
74077 
74078 
74079 
74080 --
74081 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
74082 
74083 l_acct_reversal_source := SUBSTR(NULL, 1,30);
74084 
74085 IF l_continue_with_lines THEN
74086    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
74087       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
74088 
74089       xla_accounting_err_pkg.build_message
74090          (p_appli_s_name            => 'XLA'
74091          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
74092          ,p_token_1                 => 'LINE_NUMBER'
74093          ,p_value_1                 => l_array_extract_line_num(Idx)
74094          ,p_token_2                 => 'PRODUCT_NAME'
74095          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
74096          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
74097          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
74098          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
74099 
74100    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
74101       --
74102       -- following sets the accounting attributes needed to reverse
74103       -- accounting for a distributeion
74104       --
74105 
74106       --
74107       -- 5217187
74108       --
74109       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
74110       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
74111                                        g_array_event(l_event_id).array_value_num('header_index'));
74112       --
74113       --
74114 
74115       -- No reversal code generated
74116 
74117       xla_ae_lines_pkg.SetAcctReversalAttrs
74118          (p_event_id             => l_event_id
74119          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
74120          ,p_calculate_acctd_flag => l_calculate_acctd_flag
74121          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
74122    END IF;
74123 
74124    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
74125        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
74126 
74127 --
74128 AcctLineType_31 (
74129  p_application_id  => p_application_id
74130  ,p_event_id     => l_event_id
74131  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74132  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74133  ,p_actual_flag => l_actual_flag
74134  ,p_balance_type_code => l_balance_type_code
74135  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74136  
74137  , p_source_23 => l_array_source_23(Idx)
74138  , p_source_25 => l_array_source_25(Idx)
74139  , p_source_27 => l_array_source_27(Idx)
74140  , p_source_28 => l_array_source_28(Idx)
74141  , p_source_29 => l_array_source_29(Idx)
74145  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74142  , p_source_30 => l_array_source_30(Idx)
74143  , p_source_31 => l_array_source_31(Idx)
74144  , p_source_36 => l_array_source_36(Idx)
74146  , p_source_39 => l_array_source_39(Idx)
74147  , p_source_40 => l_array_source_40(Idx)
74148  , p_source_41 => l_array_source_41(Idx)
74149  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74150  , p_source_43 => l_array_source_43(Idx)
74151  , p_source_58 => l_array_source_58(Idx)
74152  , p_source_58_meaning => l_array_source_58_meaning(Idx)
74153  , p_source_59 => l_array_source_59(Idx)
74154  , p_source_60 => l_array_source_60(Idx)
74155  , p_source_61 => l_array_source_61(Idx)
74156  , p_source_62 => l_array_source_62(Idx)
74157  , p_source_63 => l_array_source_63(Idx)
74158  , p_source_64 => l_array_source_64(Idx)
74159  , p_source_65 => l_array_source_65(Idx)
74160  , p_source_66 => l_array_source_66(Idx)
74161  );
74162 If(l_balance_type_code = 'A') THEN
74163   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74164 END IF;
74165 
74166 --
74167 
74168 
74169 --
74170 AcctLineType_33 (
74171  p_application_id  => p_application_id
74172  ,p_event_id     => l_event_id
74173  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74174  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74175  ,p_actual_flag => l_actual_flag
74176  ,p_balance_type_code => l_balance_type_code
74177  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74178  
74179  , p_source_23 => l_array_source_23(Idx)
74180  , p_source_25 => l_array_source_25(Idx)
74181  , p_source_27 => l_array_source_27(Idx)
74182  , p_source_28 => l_array_source_28(Idx)
74183  , p_source_29 => l_array_source_29(Idx)
74184  , p_source_30 => l_array_source_30(Idx)
74185  , p_source_31 => l_array_source_31(Idx)
74186  , p_source_36 => l_array_source_36(Idx)
74187  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74188  , p_source_39 => l_array_source_39(Idx)
74189  , p_source_40 => l_array_source_40(Idx)
74190  , p_source_41 => l_array_source_41(Idx)
74191  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74192  , p_source_43 => l_array_source_43(Idx)
74193  , p_source_58 => l_array_source_58(Idx)
74194  , p_source_58_meaning => l_array_source_58_meaning(Idx)
74195  , p_source_59 => l_array_source_59(Idx)
74196  , p_source_60 => l_array_source_60(Idx)
74197  , p_source_61 => l_array_source_61(Idx)
74198  , p_source_62 => l_array_source_62(Idx)
74199  , p_source_63 => l_array_source_63(Idx)
74200  , p_source_64 => l_array_source_64(Idx)
74201  , p_source_65 => l_array_source_65(Idx)
74202  , p_source_66 => l_array_source_66(Idx)
74203  );
74204 If(l_balance_type_code = 'A') THEN
74205   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74206 END IF;
74207 
74208 --
74209 
74210 
74211 --
74212 AcctLineType_66 (
74213  p_application_id  => p_application_id
74214  ,p_event_id     => l_event_id
74215  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74216  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74217  ,p_actual_flag => l_actual_flag
74218  ,p_balance_type_code => l_balance_type_code
74219  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74220  
74221  , p_source_23 => l_array_source_23(Idx)
74222  , p_source_25 => l_array_source_25(Idx)
74223  , p_source_27 => l_array_source_27(Idx)
74224  , p_source_28 => l_array_source_28(Idx)
74225  , p_source_29 => l_array_source_29(Idx)
74226  , p_source_30 => l_array_source_30(Idx)
74227  , p_source_31 => l_array_source_31(Idx)
74228  , p_source_36 => l_array_source_36(Idx)
74229  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74230  , p_source_39 => l_array_source_39(Idx)
74231  , p_source_40 => l_array_source_40(Idx)
74232  , p_source_41 => l_array_source_41(Idx)
74233  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74234  , p_source_43 => l_array_source_43(Idx)
74235  , p_source_59 => l_array_source_59(Idx)
74236  , p_source_60 => l_array_source_60(Idx)
74237  , p_source_61 => l_array_source_61(Idx)
74238  , p_source_62 => l_array_source_62(Idx)
74239  , p_source_63 => l_array_source_63(Idx)
74240  , p_source_64 => l_array_source_64(Idx)
74241  , p_source_65 => l_array_source_65(Idx)
74242  , p_source_66 => l_array_source_66(Idx)
74243  );
74244 If(l_balance_type_code = 'A') THEN
74245   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74246 END IF;
74247 
74248 --
74249 
74250 
74251 --
74252 AcctLineType_68 (
74253  p_application_id  => p_application_id
74254  ,p_event_id     => l_event_id
74255  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74256  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74257  ,p_actual_flag => l_actual_flag
74258  ,p_balance_type_code => l_balance_type_code
74259  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74260  
74261  , p_source_23 => l_array_source_23(Idx)
74262  , p_source_25 => l_array_source_25(Idx)
74263  , p_source_27 => l_array_source_27(Idx)
74264  , p_source_28 => l_array_source_28(Idx)
74265  , p_source_29 => l_array_source_29(Idx)
74266  , p_source_30 => l_array_source_30(Idx)
74267  , p_source_31 => l_array_source_31(Idx)
74268  , p_source_36 => l_array_source_36(Idx)
74269  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74270  , p_source_39 => l_array_source_39(Idx)
74271  , p_source_40 => l_array_source_40(Idx)
74275  , p_source_59 => l_array_source_59(Idx)
74272  , p_source_41 => l_array_source_41(Idx)
74273  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74274  , p_source_43 => l_array_source_43(Idx)
74276  , p_source_60 => l_array_source_60(Idx)
74277  , p_source_61 => l_array_source_61(Idx)
74278  , p_source_62 => l_array_source_62(Idx)
74279  , p_source_63 => l_array_source_63(Idx)
74280  , p_source_64 => l_array_source_64(Idx)
74281  , p_source_65 => l_array_source_65(Idx)
74282  , p_source_66 => l_array_source_66(Idx)
74283  );
74284 If(l_balance_type_code = 'A') THEN
74285   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74286 END IF;
74287 
74288 --
74289 
74290 
74291 --
74292 AcctLineType_77 (
74293  p_application_id  => p_application_id
74294  ,p_event_id     => l_event_id
74295  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74296  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74297  ,p_actual_flag => l_actual_flag
74298  ,p_balance_type_code => l_balance_type_code
74299  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74300  
74301  , p_source_23 => l_array_source_23(Idx)
74302  , p_source_25 => l_array_source_25(Idx)
74303  , p_source_27 => l_array_source_27(Idx)
74304  , p_source_28 => l_array_source_28(Idx)
74305  , p_source_29 => l_array_source_29(Idx)
74306  , p_source_30 => l_array_source_30(Idx)
74307  , p_source_31 => l_array_source_31(Idx)
74308  , p_source_36 => l_array_source_36(Idx)
74309  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74310  , p_source_39 => l_array_source_39(Idx)
74311  , p_source_40 => l_array_source_40(Idx)
74312  , p_source_41 => l_array_source_41(Idx)
74313  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74314  , p_source_43 => l_array_source_43(Idx)
74315  , p_source_59 => l_array_source_59(Idx)
74316  , p_source_60 => l_array_source_60(Idx)
74317  , p_source_61 => l_array_source_61(Idx)
74318  , p_source_62 => l_array_source_62(Idx)
74319  , p_source_63 => l_array_source_63(Idx)
74320  , p_source_64 => l_array_source_64(Idx)
74321  , p_source_65 => l_array_source_65(Idx)
74322  , p_source_66 => l_array_source_66(Idx)
74323  );
74324 If(l_balance_type_code = 'A') THEN
74325   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74326 END IF;
74327 
74328 --
74329 
74330 
74331 --
74332 AcctLineType_83 (
74333  p_application_id  => p_application_id
74334  ,p_event_id     => l_event_id
74335  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74336  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74337  ,p_actual_flag => l_actual_flag
74338  ,p_balance_type_code => l_balance_type_code
74339  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74340  
74341  , p_source_19 => l_array_source_19(Idx)
74342  , p_source_23 => l_array_source_23(Idx)
74343  , p_source_25 => l_array_source_25(Idx)
74344  , p_source_27 => l_array_source_27(Idx)
74345  , p_source_28 => l_array_source_28(Idx)
74346  , p_source_29 => l_array_source_29(Idx)
74347  , p_source_30 => l_array_source_30(Idx)
74348  , p_source_31 => l_array_source_31(Idx)
74349  , p_source_36 => l_array_source_36(Idx)
74350  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74351  , p_source_39 => l_array_source_39(Idx)
74352  , p_source_40 => l_array_source_40(Idx)
74353  , p_source_41 => l_array_source_41(Idx)
74354  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74355  , p_source_43 => l_array_source_43(Idx)
74356  , p_source_59 => l_array_source_59(Idx)
74357  , p_source_60 => l_array_source_60(Idx)
74358  , p_source_61 => l_array_source_61(Idx)
74359  , p_source_62 => l_array_source_62(Idx)
74360  , p_source_63 => l_array_source_63(Idx)
74361  , p_source_64 => l_array_source_64(Idx)
74362  , p_source_65 => l_array_source_65(Idx)
74363  , p_source_66 => l_array_source_66(Idx)
74364  );
74365 If(l_balance_type_code = 'A') THEN
74366   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74367 END IF;
74368 
74369 --
74370 
74371 
74372 --
74373 AcctLineType_85 (
74374  p_application_id  => p_application_id
74375  ,p_event_id     => l_event_id
74376  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74377  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74378  ,p_actual_flag => l_actual_flag
74379  ,p_balance_type_code => l_balance_type_code
74380  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74381  
74382  , p_source_20 => l_array_source_20(Idx)
74383  , p_source_23 => l_array_source_23(Idx)
74384  , p_source_25 => l_array_source_25(Idx)
74385  , p_source_27 => l_array_source_27(Idx)
74386  , p_source_28 => l_array_source_28(Idx)
74387  , p_source_29 => l_array_source_29(Idx)
74388  , p_source_30 => l_array_source_30(Idx)
74389  , p_source_31 => l_array_source_31(Idx)
74390  , p_source_36 => l_array_source_36(Idx)
74391  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
74392  , p_source_39 => l_array_source_39(Idx)
74393  , p_source_40 => l_array_source_40(Idx)
74394  , p_source_41 => l_array_source_41(Idx)
74395  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
74396  , p_source_43 => l_array_source_43(Idx)
74397  , p_source_59 => l_array_source_59(Idx)
74398  , p_source_60 => l_array_source_60(Idx)
74399  , p_source_61 => l_array_source_61(Idx)
74400  , p_source_62 => l_array_source_62(Idx)
74401  , p_source_63 => l_array_source_63(Idx)
74402  , p_source_64 => l_array_source_64(Idx)
74403  , p_source_65 => l_array_source_65(Idx)
74404  , p_source_66 => l_array_source_66(Idx)
74405  );
74409 
74406 If(l_balance_type_code = 'A') THEN
74407   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74408 END IF;
74410 --
74411 
74412       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
74413       -- or secondary ledger that has different currency with primary
74414       -- or alc that is calculated by sla
74415       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
74416             (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'))
74417 
74418 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
74419 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
74420           AND (l_actual_flag = 'A')) THEN
74421         XLA_AE_LINES_PKG.CreateGainOrLossLines(
74422           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
74423          ,p_application_id   => p_application_id
74424          ,p_amb_context_code => 'DEFAULT'
74425          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
74426          ,p_event_class_code => C_EVENT_CLASS_CODE
74427          ,p_event_type_code  => C_EVENT_TYPE_CODE
74428          
74429          ,p_gain_ccid        => g_array_event(l_event_id).array_value_num('source_91')
74430          ,p_loss_ccid        => g_array_event(l_event_id).array_value_num('source_92')
74431 
74432          ,p_actual_flag      => l_actual_flag
74433          ,p_enc_flag         => null
74434          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
74435          ,p_enc_g_l_ref      => null
74436          );
74437       END IF;
74438    END IF;
74439 END IF;
74440 
74441    ELSE
74442       --
74443       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74444       --
74445       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74446          trace
74447             (p_msg      => 'Trancaction revesal option is Y'
74448             ,p_level    => C_LEVEL_STATEMENT
74449             ,p_module   => l_log_module);
74450       END IF;
74451    END IF;
74452 
74453 END LOOP;
74454 l_result := XLA_AE_LINES_PKG.InsertLines ;
74455 end loop;
74456 close line_cur;
74457 
74458 
74459 --
74460 -- insert headers into xla_ae_headers_gt table
74461 --
74462 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
74463 
74464 -- insert into errors table here.
74465 
74466 END LOOP;
74467 
74468 --
74469 -- 4865292
74470 --
74471 -- Compare g_hdr_extract_count with event count in
74472 -- CreateHeadersAndLines.
74473 --
74474 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
74475 
74476 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74477    trace (p_msg     => '# rows extracted from header extract objects '
74478                     || ' (running total): '
74479                     || g_hdr_extract_count
74480          ,p_level   => C_LEVEL_STATEMENT
74481          ,p_module  => l_log_module);
74482 END IF;
74483 
74484 CLOSE header_cur;
74485 --
74486 
74487 --
74488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74489    trace
74490       (p_msg      => 'END of EventClass_123'
74491       ,p_level    => C_LEVEL_PROCEDURE
74492       ,p_module   => l_log_module);
74493 END IF;
74494 --
74495 RETURN l_result;
74496 EXCEPTION
74497 WHEN xla_exceptions_pkg.application_exception THEN
74498    
74499 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
74500 
74501    
74502 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
74503 
74504    RAISE;
74505 WHEN OTHERS THEN
74506    xla_exceptions_pkg.raise_message
74507       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_123');
74508 END EventClass_123;
74509 --
74510 
74511 ---------------------------------------
74512 --
74513 -- PRIVATE PROCEDURE
74514 --         insert_sources_124
74515 --
74516 ----------------------------------------
74517 --
74518 PROCEDURE insert_sources_124(
74519                                 p_target_ledger_id       IN NUMBER
74520                               , p_language               IN VARCHAR2
74521                               , p_sla_ledger_id          IN NUMBER
74522                               , p_pad_start_date         IN DATE
74523                               , p_pad_end_date           IN DATE
74524                          )
74525 IS
74526 
74527 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ALL';
74528 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REVENUE';
74529 p_apps_owner                   VARCHAR2(30);
74530 l_log_module                   VARCHAR2(240);
74531 BEGIN
74532 IF g_log_enabled THEN
74533       l_log_module := C_DEFAULT_MODULE||'.insert_sources_124';
74534 END IF;
74535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74536 
74537       trace
74538          (p_msg      => 'BEGIN of insert_sources_124'
74539          ,p_level    => C_LEVEL_PROCEDURE
74540          ,p_module   => l_log_module);
74541 
74542 END IF;
74543 
74544 -- select APPS owner
74545 SELECT oracle_username
74546   INTO p_apps_owner
74547   FROM fnd_oracle_userid
74548  WHERE read_only_flag = 'U'
74549 ;
74550 
74551 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74552       trace
74556                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
74553          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
74554                         ' - p_language = '||p_language||
74555                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
74557                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
74558                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
74559          ,p_level    => C_LEVEL_STATEMENT
74560          ,p_module   => l_log_module);
74561 END IF;
74562 
74563 
74564 --
74565 INSERT INTO xla_diag_sources --hdr2
74566 (
74567         event_id
74568       , ledger_id
74569       , sla_ledger_id
74570       , description_language
74571       , object_name
74572       , object_type_code
74573       , line_number
74574       , source_application_id
74575       , source_type_code
74576       , source_code
74577       , source_value
74578       , source_meaning
74579       , created_by
74580       , creation_date
74581       , last_update_date
74582       , last_updated_by
74583       , last_update_login
74584       , program_update_date
74585       , program_application_id
74586       , program_id
74587       , request_id
74588 )
74589 SELECT
74590         event_id
74591       , p_target_ledger_id
74592       , p_sla_ledger_id
74593       , p_language
74594       , object_name
74595       , object_type_code
74596       , line_number
74597       , source_application_id
74598       , source_type_code
74599       , source_code
74600       , SUBSTR(source_value ,1,1996)
74601       , SUBSTR(source_meaning ,1,200)
74602       , xla_environment_pkg.g_Usr_Id
74603       , TRUNC(SYSDATE)
74604       , TRUNC(SYSDATE)
74605       , xla_environment_pkg.g_Usr_Id
74606       , xla_environment_pkg.g_Login_Id
74607       , TRUNC(SYSDATE)
74608       , xla_environment_pkg.g_Prog_Appl_Id
74609       , xla_environment_pkg.g_Prog_Id
74610       , xla_environment_pkg.g_Req_Id
74611   FROM (
74612        SELECT xet.event_id                  event_id
74613             , 0                          line_number
74614             , CASE r
74615                WHEN 1 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74616                 WHEN 2 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74617                 WHEN 3 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74618                 WHEN 4 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74619                 WHEN 5 THEN 'PA_XLA_REVENUE_HEADERS_V' 
74620                 
74621                ELSE null
74622               END                           object_name
74623             , CASE r
74624                 WHEN 1 THEN 'HEADER' 
74625                 WHEN 2 THEN 'HEADER' 
74626                 WHEN 3 THEN 'HEADER' 
74627                 WHEN 4 THEN 'HEADER' 
74628                 WHEN 5 THEN 'HEADER' 
74629                 
74630                 ELSE null
74631               END                           object_type_code
74632             , CASE r
74633                 WHEN 1 THEN '275' 
74634                 WHEN 2 THEN '275' 
74635                 WHEN 3 THEN '275' 
74636                 WHEN 4 THEN '275' 
74637                 WHEN 5 THEN '275' 
74638                 
74639                 ELSE null
74640               END                           source_application_id
74641             , 'S'             source_type_code
74642             , CASE r
74643                 WHEN 1 THEN 'CREDITING_REVENUE_FLAG' 
74644                 WHEN 2 THEN 'EVENT_ID' 
74645                 WHEN 3 THEN 'GL_DATE' 
74646                 WHEN 4 THEN 'UER_CCID' 
74647                 WHEN 5 THEN 'UBR_CCID' 
74648                 
74649                 ELSE null
74650               END                           source_code
74651             , CASE r
74652                 WHEN 1 THEN TO_CHAR(h2.CREDITING_REVENUE_FLAG)
74653                 WHEN 2 THEN TO_CHAR(h2.EVENT_ID)
74654                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
74655                 WHEN 4 THEN TO_CHAR(h2.UER_CCID)
74656                 WHEN 5 THEN TO_CHAR(h2.UBR_CCID)
74657                 
74658                 ELSE null
74659               END                           source_value
74660             , CASE r
74661                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
74662                           103371
74663                          ,TO_CHAR(h2.CREDITING_REVENUE_FLAG)
74664                          ,'CREDITING_REVENUE_FLAG'
74665                          ,'S'
74666                          ,275)
74667                 
74668                 ELSE null
74669               END               source_meaning
74670          FROM xla_events_gt     xet  
74671       , PA_XLA_REVENUE_HEADERS_V  h2
74672              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
74673          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74674            AND xet.event_class_code = C_EVENT_CLASS_CODE
74675               AND h2.event_id = xet.event_id
74676 
74677 )
74678 ;
74679 --
74680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74681 
74682       trace
74683          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
74684          ,p_level    => C_LEVEL_STATEMENT
74685          ,p_module   => l_log_module);
74686 
74687 END IF;
74688 --
74689 
74690 
74694 (
74691 
74692 --
74693 INSERT INTO xla_diag_sources  --line2
74695         event_id
74696       , ledger_id
74697       , sla_ledger_id
74698       , description_language
74699       , object_name
74700       , object_type_code
74701       , line_number
74702       , source_application_id
74703       , source_type_code
74704       , source_code
74705       , source_value
74706       , source_meaning
74707       , created_by
74708       , creation_date
74709       , last_update_date
74710       , last_updated_by
74711       , last_update_login
74712       , program_update_date
74713       , program_application_id
74714       , program_id
74715       , request_id
74716 )
74717 SELECT  event_id
74718       , p_target_ledger_id
74719       , p_sla_ledger_id
74720       , p_language
74721       , object_name
74722       , object_type_code
74723       , line_number
74724       , source_application_id
74725       , source_type_code
74726       , source_code
74727       , SUBSTR(source_value,1,1996)
74728       , SUBSTR(source_meaning ,1,200)
74729       , xla_environment_pkg.g_Usr_Id
74730       , TRUNC(SYSDATE)
74731       , TRUNC(SYSDATE)
74732       , xla_environment_pkg.g_Usr_Id
74733       , xla_environment_pkg.g_Login_Id
74734       , TRUNC(SYSDATE)
74735       , xla_environment_pkg.g_Prog_Appl_Id
74736       , xla_environment_pkg.g_Prog_Id
74737       , xla_environment_pkg.g_Req_Id
74738   FROM (
74739        SELECT xet.event_id                  event_id
74740             , l3.line_number                 line_number
74741             , CASE r
74742                WHEN 1 THEN 'PA_XLA_REVENUE_LINES_V' 
74743                 WHEN 2 THEN 'PA_XLA_REVENUE_LINES_V' 
74744                 WHEN 3 THEN 'PA_XLA_REVENUE_LINES_V' 
74745                 WHEN 4 THEN 'PA_XLA_REVENUE_LINES_V' 
74746                 WHEN 5 THEN 'PA_XLA_REVENUE_LINES_V' 
74747                 WHEN 6 THEN 'PA_XLA_REVENUE_LINES_V' 
74748                 WHEN 7 THEN 'PA_XLA_REVENUE_LINES_V' 
74749                 WHEN 8 THEN 'PA_XLA_REVENUE_LINES_V' 
74750                 WHEN 9 THEN 'PA_XLA_REVENUE_LINES_V' 
74751                 WHEN 10 THEN 'PA_XLA_REVENUE_LINES_V' 
74752                 WHEN 11 THEN 'PA_XLA_REVENUE_LINES_V' 
74753                 WHEN 12 THEN 'PA_XLA_REVENUE_LINES_V' 
74754                 WHEN 13 THEN 'PA_XLA_REVENUE_LINES_V' 
74755                 WHEN 14 THEN 'PA_XLA_REVENUE_LINES_V' 
74756                 WHEN 15 THEN 'PA_XLA_REVENUE_LINES_V' 
74757                 WHEN 16 THEN 'PA_XLA_REVENUE_LINES_V' 
74758                 WHEN 17 THEN 'PA_XLA_EVENT_TYPE_REF_V' 
74759                 
74760                ELSE null
74761               END                           object_name
74762             , CASE r
74763                 WHEN 1 THEN 'LINE' 
74764                 WHEN 2 THEN 'LINE' 
74765                 WHEN 3 THEN 'LINE' 
74766                 WHEN 4 THEN 'LINE' 
74767                 WHEN 5 THEN 'LINE' 
74768                 WHEN 6 THEN 'LINE' 
74769                 WHEN 7 THEN 'LINE' 
74770                 WHEN 8 THEN 'LINE' 
74771                 WHEN 9 THEN 'LINE' 
74772                 WHEN 10 THEN 'LINE' 
74773                 WHEN 11 THEN 'LINE' 
74774                 WHEN 12 THEN 'LINE' 
74775                 WHEN 13 THEN 'LINE' 
74776                 WHEN 14 THEN 'LINE' 
74777                 WHEN 15 THEN 'LINE' 
74778                 WHEN 16 THEN 'LINE' 
74779                 WHEN 17 THEN 'LINE' 
74780                 
74781                 ELSE null
74782               END                           object_type_code
74783             , CASE r
74784                 WHEN 1 THEN '275' 
74785                 WHEN 2 THEN '275' 
74786                 WHEN 3 THEN '275' 
74787                 WHEN 4 THEN '275' 
74788                 WHEN 5 THEN '275' 
74789                 WHEN 6 THEN '275' 
74790                 WHEN 7 THEN '275' 
74791                 WHEN 8 THEN '275' 
74792                 WHEN 9 THEN '275' 
74793                 WHEN 10 THEN '275' 
74794                 WHEN 11 THEN '275' 
74795                 WHEN 12 THEN '275' 
74796                 WHEN 13 THEN '275' 
74797                 WHEN 14 THEN '275' 
74798                 WHEN 15 THEN '275' 
74799                 WHEN 16 THEN '275' 
74800                 WHEN 17 THEN '275' 
74801                 
74802                 ELSE null
74803               END                           source_application_id
74804             , 'S'             source_type_code
74805             , CASE r
74806                 WHEN 1 THEN 'PERDL_CODE_COMBINATION_ID' 
74807                 WHEN 2 THEN 'PDR_REALIZED_GAINS_CCID' 
74808                 WHEN 3 THEN 'PDR_REALIZED_LOSSES_CCID' 
74809                 WHEN 4 THEN 'PRDL_CODE_COMBINATION_ID' 
74810                 WHEN 5 THEN 'PDR_UBR_CCID' 
74811                 WHEN 6 THEN 'PDR_UER_CCID' 
74812                 WHEN 7 THEN 'ENTERED_CURRENCY_CODE' 
74813                 WHEN 8 THEN 'EXCHANGE_RATE_DATE' 
74814                 WHEN 9 THEN 'EXCHANGE_RATE' 
74815                 WHEN 10 THEN 'EXCHANGE_RATE_TYPE' 
74816                 WHEN 11 THEN 'REVENUE_DISTRIBUTION_TYPE' 
74817                 WHEN 12 THEN 'SYSTEM_LINKAGE_FUNCTION' 
74818                 WHEN 13 THEN 'REVENUE_FIRST_DIST_ID' 
74819                 WHEN 14 THEN 'REVENUE_SECOND_DIST_ID' 
74820                 WHEN 15 THEN 'ENTERED_AMOUNT' 
74824                 ELSE null
74821                 WHEN 16 THEN 'ACCT_AMOUNT' 
74822                 WHEN 17 THEN 'REV_EVENT_TYPE_CLASSIFICATION' 
74823                 
74825               END                           source_code
74826             , CASE r
74827                 WHEN 1 THEN TO_CHAR(l3.PERDL_CODE_COMBINATION_ID)
74828                 WHEN 2 THEN TO_CHAR(l3.PDR_REALIZED_GAINS_CCID)
74829                 WHEN 3 THEN TO_CHAR(l3.PDR_REALIZED_LOSSES_CCID)
74830                 WHEN 4 THEN TO_CHAR(l3.PRDL_CODE_COMBINATION_ID)
74831                 WHEN 5 THEN TO_CHAR(l3.PDR_UBR_CCID)
74832                 WHEN 6 THEN TO_CHAR(l3.PDR_UER_CCID)
74833                 WHEN 7 THEN TO_CHAR(l3.ENTERED_CURRENCY_CODE)
74834                 WHEN 8 THEN TO_CHAR(l3.EXCHANGE_RATE_DATE)
74835                 WHEN 9 THEN TO_CHAR(l3.EXCHANGE_RATE)
74836                 WHEN 10 THEN TO_CHAR(l3.EXCHANGE_RATE_TYPE)
74837                 WHEN 11 THEN TO_CHAR(l3.REVENUE_DISTRIBUTION_TYPE)
74838                 WHEN 12 THEN TO_CHAR(l3.SYSTEM_LINKAGE_FUNCTION)
74839                 WHEN 13 THEN TO_CHAR(l3.REVENUE_FIRST_DIST_ID)
74840                 WHEN 14 THEN TO_CHAR(l3.REVENUE_SECOND_DIST_ID)
74841                 WHEN 15 THEN TO_CHAR(l3.ENTERED_AMOUNT)
74842                 WHEN 16 THEN TO_CHAR(l3.ACCT_AMOUNT)
74843                 WHEN 17 THEN TO_CHAR(l1.REV_EVENT_TYPE_CLASSIFICATION)
74844                 
74845                 ELSE null
74846               END                           source_value
74847             , CASE r
74848                 WHEN 17 THEN fvl58.meaning
74849                 
74850                 ELSE null
74851               END               source_meaning
74852          FROM  xla_events_gt     xet  
74853         , PA_XLA_EVENT_TYPE_REF_V  l1
74854         , PA_XLA_REVENUE_LINES_V  l3
74855   , fnd_lookup_values    fvl58
74856             , (select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
74857         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74858           AND xet.event_class_code = C_EVENT_CLASS_CODE
74859             AND l3.event_id          = xet.event_id
74860  AND l1.rev_event_type (+) =l3.rev_event_type   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
74861   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
74862   AND fvl58.view_application_id(+) = 275
74863   AND fvl58.language(+)            = USERENV('LANG')
74864   
74865 )
74866 ;
74867 --
74868 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74869 
74870       trace
74871          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
74872          ,p_level    => C_LEVEL_STATEMENT
74873          ,p_module   => l_log_module);
74874 
74875 END IF;
74876 
74877 
74878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74879       trace
74880          (p_msg      => 'END of insert_sources_124'
74881          ,p_level    => C_LEVEL_PROCEDURE
74882          ,p_module   => l_log_module);
74883 END IF;
74884 EXCEPTION
74885   WHEN xla_exceptions_pkg.application_exception THEN
74886       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
74887             trace
74888                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
74889                ,p_level    => C_LEVEL_EXCEPTION
74890                ,p_module   => l_log_module);
74891       END IF;
74892       RAISE;
74893   WHEN OTHERS THEN
74894       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
74895             trace
74896                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
74897                ,p_level    => C_LEVEL_EXCEPTION
74898                ,p_module   => l_log_module);
74899        END IF;
74900        xla_exceptions_pkg.raise_message
74901            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_124');
74902 END insert_sources_124;
74903 --
74904 
74905 ---------------------------------------
74906 --
74907 -- PRIVATE FUNCTION
74908 --         EventClass_124
74909 --
74910 ----------------------------------------
74911 --
74912 FUNCTION EventClass_124
74913        (p_application_id         IN NUMBER
74914        ,p_base_ledger_id         IN NUMBER
74915        ,p_target_ledger_id       IN NUMBER
74916        ,p_language               IN VARCHAR2
74917        ,p_currency_code          IN VARCHAR2
74918        ,p_sla_ledger_id          IN NUMBER
74919        ,p_pad_start_date         IN DATE
74920        ,p_pad_end_date           IN DATE
74921        ,p_primary_ledger_id      IN NUMBER)
74922 RETURN BOOLEAN IS
74923 --
74924 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ALL';
74925 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REVENUE';
74926 
74927 l_calculate_acctd_flag   VARCHAR2(1) :='N';
74928 l_calculate_g_l_flag     VARCHAR2(1) :='N';
74929 --
74930 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74931 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74932 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74933 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74934 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74935 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74936 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74937 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74938 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74939 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74943 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74940 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74941 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74942 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74944 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74945 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74946 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74947 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74948 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74949 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74950 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74951 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74952 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
74953 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74954 
74955 l_event_id                             NUMBER;
74956 l_previous_event_id                    NUMBER;
74957 l_first_event_id                       NUMBER;
74958 l_last_event_id                        NUMBER;
74959 
74960 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
74961 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
74962 --
74963 --
74964 l_result                    BOOLEAN := TRUE;
74965 l_rows                      NUMBER  := 1000;
74966 l_event_type_name           VARCHAR2(80) := 'All';
74967 l_event_class_name          VARCHAR2(80) := 'Revenue';
74968 l_description               VARCHAR2(4000);
74969 l_transaction_reversal      NUMBER;
74970 l_ae_header_id              NUMBER;
74971 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
74972 l_log_module                VARCHAR2(240);
74973 --
74974 l_acct_reversal_source      VARCHAR2(30);
74975 l_trx_reversal_source       VARCHAR2(30);
74976 
74977 l_continue_with_lines       BOOLEAN := TRUE;
74978 --
74979 l_acc_rev_gl_date_source    DATE;                      -- 4262811
74980 --
74981 type t_array_event_id is table of number index by binary_integer;
74982 
74983 l_rec_array_event                    t_rec_array_event;
74984 l_null_rec_array_event               t_rec_array_event;
74985 l_array_ae_header_id                 xla_number_array_type;
74986 l_actual_flag                        VARCHAR2(1) := NULL;
74987 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
74988 l_balance_type_code                  VARCHAR2(1) :=NULL;
74989 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
74990 
74991 --
74992 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
74993 --
74994 
74995 TYPE t_array_source_38 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.CREDITING_REVENUE_FLAG%TYPE INDEX BY BINARY_INTEGER;
74996 TYPE t_array_source_42 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.EVENT_ID%TYPE INDEX BY BINARY_INTEGER;
74997 TYPE t_array_source_87 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
74998 TYPE t_array_source_91 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UER_CCID%TYPE INDEX BY BINARY_INTEGER;
74999 TYPE t_array_source_92 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
75000 
75001 TYPE t_array_source_1 IS TABLE OF PA_XLA_REVENUE_LINES_V.PERDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
75002 TYPE t_array_source_16 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_REALIZED_GAINS_CCID%TYPE INDEX BY BINARY_INTEGER;
75003 TYPE t_array_source_17 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_REALIZED_LOSSES_CCID%TYPE INDEX BY BINARY_INTEGER;
75004 TYPE t_array_source_18 IS TABLE OF PA_XLA_REVENUE_LINES_V.PRDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
75005 TYPE t_array_source_19 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
75006 TYPE t_array_source_20 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_UER_CCID%TYPE INDEX BY BINARY_INTEGER;
75007 TYPE t_array_source_25 IS TABLE OF PA_XLA_REVENUE_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
75008 TYPE t_array_source_27 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
75009 TYPE t_array_source_28 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
75010 TYPE t_array_source_29 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
75011 TYPE t_array_source_36 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
75012 TYPE t_array_source_37 IS TABLE OF PA_XLA_REVENUE_LINES_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
75013 TYPE t_array_source_39 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
75014 TYPE t_array_source_40 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
75015 TYPE t_array_source_41 IS TABLE OF PA_XLA_REVENUE_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
75016 TYPE t_array_source_43 IS TABLE OF PA_XLA_REVENUE_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
75017 TYPE t_array_source_58 IS TABLE OF PA_XLA_EVENT_TYPE_REF_V.REV_EVENT_TYPE_CLASSIFICATION%TYPE INDEX BY BINARY_INTEGER;
75018 
75019 l_array_source_38              t_array_source_38;
75020 l_array_source_42              t_array_source_42;
75021 l_array_source_87              t_array_source_87;
75022 l_array_source_91              t_array_source_91;
75023 l_array_source_92              t_array_source_92;
75024 
75025 l_array_source_1      t_array_source_1;
75026 l_array_source_16      t_array_source_16;
75027 l_array_source_17      t_array_source_17;
75031 l_array_source_25      t_array_source_25;
75028 l_array_source_18      t_array_source_18;
75029 l_array_source_19      t_array_source_19;
75030 l_array_source_20      t_array_source_20;
75032 l_array_source_27      t_array_source_27;
75033 l_array_source_28      t_array_source_28;
75034 l_array_source_29      t_array_source_29;
75035 l_array_source_36      t_array_source_36;
75036 l_array_source_37      t_array_source_37;
75037 l_array_source_39      t_array_source_39;
75038 l_array_source_40      t_array_source_40;
75039 l_array_source_41      t_array_source_41;
75040 l_array_source_43      t_array_source_43;
75041 l_array_source_58      t_array_source_58;
75042 l_array_source_58_meaning      t_array_lookup_meaning;
75043 
75044 --
75045 CURSOR header_cur
75046 IS
75047 SELECT /*+ leading(xet) cardinality(xet,1) */
75048 -- Event Class Code: REVENUE
75049     xet.entity_id
75050    ,xet.legal_entity_id
75051    ,xet.entity_code
75052    ,xet.transaction_number
75053    ,xet.event_id
75054    ,xet.event_class_code
75055    ,xet.event_type_code
75056    ,xet.event_number
75057    ,xet.event_date
75058    ,xet.transaction_date
75059    ,xet.reference_num_1
75060    ,xet.reference_num_2
75061    ,xet.reference_num_3
75062    ,xet.reference_num_4
75063    ,xet.reference_char_1
75064    ,xet.reference_char_2
75065    ,xet.reference_char_3
75066    ,xet.reference_char_4
75067    ,xet.reference_date_1
75068    ,xet.reference_date_2
75069    ,xet.reference_date_3
75070    ,xet.reference_date_4
75071    ,xet.event_created_by
75072    ,xet.budgetary_control_flag 
75073   , h2.CREDITING_REVENUE_FLAG    source_38
75074   , h2.EVENT_ID    source_42
75075   , h2.GL_DATE    source_87
75076   , h2.UER_CCID    source_91
75077   , h2.UBR_CCID    source_92
75078   FROM xla_events_gt     xet 
75079   , PA_XLA_REVENUE_HEADERS_V  h2
75080  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
75081    and xet.event_class_code = C_EVENT_CLASS_CODE
75082    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
75083 
75084  ORDER BY event_id
75085 ;
75086 
75087 
75088 --
75089 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
75090 IS
75091 SELECT  /*+ leading(xet) cardinality(xet,1) */
75092 -- Event Class Code: REVENUE
75093     xet.entity_id
75094    ,xet.legal_entity_id
75095    ,xet.entity_code
75096    ,xet.transaction_number
75097    ,xet.event_id
75098    ,xet.event_class_code
75099    ,xet.event_type_code
75100    ,xet.event_number
75101    ,xet.event_date
75102    ,xet.transaction_date
75103    ,xet.reference_num_1
75104    ,xet.reference_num_2
75105    ,xet.reference_num_3
75106    ,xet.reference_num_4
75107    ,xet.reference_char_1
75108    ,xet.reference_char_2
75109    ,xet.reference_char_3
75110    ,xet.reference_char_4
75111    ,xet.reference_date_1
75112    ,xet.reference_date_2
75113    ,xet.reference_date_3
75114    ,xet.reference_date_4
75115    ,xet.event_created_by
75116    ,xet.budgetary_control_flag
75117  , l3.LINE_NUMBER  
75118   , l3.PERDL_CODE_COMBINATION_ID    source_1
75119   , l3.PDR_REALIZED_GAINS_CCID    source_16
75120   , l3.PDR_REALIZED_LOSSES_CCID    source_17
75121   , l3.PRDL_CODE_COMBINATION_ID    source_18
75122   , l3.PDR_UBR_CCID    source_19
75123   , l3.PDR_UER_CCID    source_20
75124   , l3.ENTERED_CURRENCY_CODE    source_25
75125   , l3.EXCHANGE_RATE_DATE    source_27
75126   , l3.EXCHANGE_RATE    source_28
75127   , l3.EXCHANGE_RATE_TYPE    source_29
75128   , l3.REVENUE_DISTRIBUTION_TYPE    source_36
75129   , l3.SYSTEM_LINKAGE_FUNCTION    source_37
75130   , l3.REVENUE_FIRST_DIST_ID    source_39
75131   , l3.REVENUE_SECOND_DIST_ID    source_40
75132   , l3.ENTERED_AMOUNT    source_41
75133   , l3.ACCT_AMOUNT    source_43
75134   , l1.REV_EVENT_TYPE_CLASSIFICATION    source_58
75135   , fvl58.meaning   source_58_meaning
75136   FROM xla_events_gt     xet 
75137   , PA_XLA_EVENT_TYPE_REF_V  l1
75138   , PA_XLA_REVENUE_LINES_V  l3
75139   , fnd_lookup_values    fvl58
75140  WHERE xet.event_id between x_first_event_id and x_last_event_id
75141    and xet.event_date between p_pad_start_date and p_pad_end_date
75142    and xet.event_class_code = C_EVENT_CLASS_CODE
75143    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
75144  AND l1.REV_EVENT_TYPE (+) =l3.REV_EVENT_TYPE   AND fvl58.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
75145   AND fvl58.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
75146   AND fvl58.view_application_id(+) = 275
75147   AND fvl58.language(+)            = USERENV('LANG')
75148   ;
75149 
75150 --
75151 BEGIN
75152 IF g_log_enabled THEN
75153    l_log_module := C_DEFAULT_MODULE||'.EventClass_124';
75154 END IF;
75155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75156    trace
75157       (p_msg      => 'BEGIN of EventClass_124'
75158       ,p_level    => C_LEVEL_PROCEDURE
75159       ,p_module   => l_log_module);
75160 END IF;
75161 
75162 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75163    trace
75164       (p_msg      => 'p_application_id = '||p_application_id||
75165                      ' - p_base_ledger_id = '||p_base_ledger_id||
75166                      ' - p_target_ledger_id  = '||p_target_ledger_id||
75167                      ' - p_language = '||p_language||
75168                      ' - p_currency_code = '||p_currency_code||
75172 END IF;
75169                      ' - p_sla_ledger_id = '||p_sla_ledger_id
75170       ,p_level    => C_LEVEL_STATEMENT
75171       ,p_module   => l_log_module);
75173 --
75174 -- initialze arrays
75175 --
75176 g_array_event.DELETE;
75177 l_rec_array_event := l_null_rec_array_event;
75178 --
75179 --------------------------------------
75180 -- 4262811 Initialze MPA Line Number
75181 --------------------------------------
75182 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
75183 
75184 --
75185 
75186 --
75187 OPEN header_cur;
75188 --
75189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75190    trace
75191    (p_msg      => 'SQL - FETCH header_cur'
75192    ,p_level    => C_LEVEL_STATEMENT
75193    ,p_module   => l_log_module);
75194 END IF;
75195 --
75196 LOOP
75197 FETCH header_cur BULK COLLECT INTO
75198         l_array_entity_id
75199       , l_array_legal_entity_id
75200       , l_array_entity_code
75201       , l_array_transaction_num
75202       , l_array_event_id
75203       , l_array_class_code
75204       , l_array_event_type
75205       , l_array_event_number
75206       , l_array_event_date
75207       , l_array_transaction_date
75208       , l_array_reference_num_1
75209       , l_array_reference_num_2
75210       , l_array_reference_num_3
75211       , l_array_reference_num_4
75212       , l_array_reference_char_1
75213       , l_array_reference_char_2
75214       , l_array_reference_char_3
75215       , l_array_reference_char_4
75216       , l_array_reference_date_1
75217       , l_array_reference_date_2
75218       , l_array_reference_date_3
75219       , l_array_reference_date_4
75220       , l_array_event_created_by
75221       , l_array_budgetary_control_flag 
75222       , l_array_source_38
75223       , l_array_source_42
75224       , l_array_source_87
75225       , l_array_source_91
75226       , l_array_source_92
75227       LIMIT l_rows;
75228 --
75229 IF (C_LEVEL_EVENT >= g_log_level) THEN
75230    trace
75231    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
75232    ,p_level    => C_LEVEL_EVENT
75233    ,p_module   => l_log_module);
75234 END IF;
75235 --
75236 EXIT WHEN l_array_entity_id.COUNT = 0;
75237 
75238 -- initialize arrays
75239 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
75240 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
75241 
75242 --
75243 -- Bug 4458708
75244 --
75245 XLA_AE_LINES_PKG.g_LineNumber := 0;
75246 
75247 
75248 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
75249 g_last_hdr_idx := l_array_event_id.LAST;
75250 --
75251 -- loop for the headers. Each iteration is for each header extract row
75252 -- fetched in header cursor
75253 --
75254 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
75255 
75256 --
75257 -- set event info as cache for other routines to refer event attributes
75258 --
75259 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
75260    (p_application_id           => p_application_id
75261    ,p_primary_ledger_id        => p_primary_ledger_id
75262    ,p_base_ledger_id           => p_base_ledger_id
75263    ,p_target_ledger_id         => p_target_ledger_id
75264    ,p_entity_id                => l_array_entity_id(hdr_idx)
75265    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
75266    ,p_entity_code              => l_array_entity_code(hdr_idx)
75267    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
75268    ,p_event_id                 => l_array_event_id(hdr_idx)
75269    ,p_event_class_code         => l_array_class_code(hdr_idx)
75270    ,p_event_type_code          => l_array_event_type(hdr_idx)
75271    ,p_event_number             => l_array_event_number(hdr_idx)
75272    ,p_event_date               => l_array_event_date(hdr_idx)
75273    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
75274    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
75275    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
75276    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
75277    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
75278    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
75279    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
75280    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
75281    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
75282    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
75283    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
75284    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
75285    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
75286    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
75287    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
75288 
75289 --
75290 -- set the status of entry to C_VALID (0)
75291 --
75292 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
75293 
75294 --
75295 -- initialize a row for ae header
75296 --
75297 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
75298 
75299 l_event_id := l_array_event_id(hdr_idx);
75300 
75301 --
75302 -- storing the hdr_idx for event. May be used by line cursor.
75303 --
75307 -- store sources from header extract. This can be improved to
75304 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
75305 
75306 --
75308 -- store only those sources from header extract that may be used in lines
75309 --
75310 
75311 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
75312 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
75313 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
75314 g_array_event(l_event_id).array_value_num('source_91') := l_array_source_91(hdr_idx);
75315 g_array_event(l_event_id).array_value_num('source_92') := l_array_source_92(hdr_idx);
75316 
75317 --
75318 -- initilaize the status of ae headers for diffrent balance types
75319 -- the status is initialised to C_NOT_CREATED (2)
75320 --
75321 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75322 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75323 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75324 
75325 --
75326 -- call api to validate and store accounting attributes for header
75327 --
75328 
75329 ------------------------------------------------------------
75330 -- Accrual Reversal : to get date for Standard Source (NONE)
75331 ------------------------------------------------------------
75332 l_acc_rev_gl_date_source := NULL;
75333 
75334      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
75335       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
75336 
75337 
75338 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
75339 
75340 XLA_AE_HEADER_PKG.SetJeCategoryName;
75341 
75342 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
75343 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
75344 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
75345 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
75346 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
75347 
75348 
75349 -- No header level analytical criteria
75350 
75351 --
75352 --accounting attribute enhancement, bug 3612931
75353 --
75354 l_trx_reversal_source := SUBSTR(NULL, 1,30);
75355 
75356 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
75357    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75358 
75359    xla_accounting_err_pkg.build_message
75360       (p_appli_s_name            => 'XLA'
75361       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
75362       ,p_token_1                 => 'ACCT_ATTR_NAME'
75363       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
75364       ,p_token_2                 => 'PRODUCT_NAME'
75365       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75366       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75367       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75368       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75369 
75370 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
75371    --
75372    -- following sets the accounting attributes needed to reverse
75373    -- accounting for a distributeion
75374    --
75375    xla_ae_lines_pkg.SetTrxReversalAttrs
75376       (p_event_id              => l_event_id
75377       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
75378       ,p_trx_reversal_source   => l_trx_reversal_source);
75379 
75380 END IF;
75381 
75382 
75383 ----------------------------------------------------------------
75384 -- 4262811 -  update the header statuses to invalid in need be
75385 ----------------------------------------------------------------
75386 --
75387 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
75388 
75389 
75390   -----------------------------------------------
75391   -- No accrual reversal for the event class/type
75392   -----------------------------------------------
75393 ----------------------------------------------------------------
75394 
75395 --
75396 -- this ends the header loop iteration for one bulk fetch
75397 --
75398 END LOOP;
75399 
75400 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
75401 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
75402 
75403 --
75404 -- insert dummy rows into lines gt table that were created due to
75405 -- transaction reversals
75406 --
75407 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
75408    l_result := XLA_AE_LINES_PKG.InsertLines;
75409 END IF;
75410 
75411 --
75412 -- reset the temp_line_num for each set of events fetched from header
75413 -- cursor rather than doing it for each new event in line cursor
75414 -- Bug 3939231
75415 --
75416 xla_ae_lines_pkg.g_temp_line_num := 0;
75417 
75418 
75419 
75420 --
75421 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
75422 --
75423 --
75424 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75425 
75426       trace
75430 
75427          (p_msg      => 'SQL - FETCH line_cur'
75428          ,p_level    => C_LEVEL_STATEMENT
75429          ,p_module   => l_log_module);
75431 END IF;
75432 --
75433 --
75434 LOOP
75435   --
75436   FETCH line_cur BULK COLLECT INTO
75437         l_array_entity_id
75438       , l_array_legal_entity_id
75439       , l_array_entity_code
75440       , l_array_transaction_num
75441       , l_array_event_id
75442       , l_array_class_code
75443       , l_array_event_type
75444       , l_array_event_number
75445       , l_array_event_date
75446       , l_array_transaction_date
75447       , l_array_reference_num_1
75448       , l_array_reference_num_2
75449       , l_array_reference_num_3
75450       , l_array_reference_num_4
75451       , l_array_reference_char_1
75452       , l_array_reference_char_2
75453       , l_array_reference_char_3
75454       , l_array_reference_char_4
75455       , l_array_reference_date_1
75456       , l_array_reference_date_2
75457       , l_array_reference_date_3
75458       , l_array_reference_date_4
75459       , l_array_event_created_by
75460       , l_array_budgetary_control_flag
75461       , l_array_extract_line_num 
75462       , l_array_source_1
75463       , l_array_source_16
75464       , l_array_source_17
75465       , l_array_source_18
75466       , l_array_source_19
75467       , l_array_source_20
75468       , l_array_source_25
75469       , l_array_source_27
75470       , l_array_source_28
75471       , l_array_source_29
75472       , l_array_source_36
75473       , l_array_source_37
75474       , l_array_source_39
75475       , l_array_source_40
75476       , l_array_source_41
75477       , l_array_source_43
75478       , l_array_source_58
75479       , l_array_source_58_meaning
75480       LIMIT l_rows;
75481 
75482   --
75483   IF (C_LEVEL_EVENT >= g_log_level) THEN
75484             trace
75485                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
75486                ,p_level    => C_LEVEL_EVENT
75487                ,p_module   => l_log_module);
75488   END IF;
75489   --
75490   EXIT WHEN l_array_entity_id.count = 0;
75491 
75492   XLA_AE_LINES_PKG.g_rec_lines := null;
75493 
75494 --
75495 -- Bug 4458708
75496 --
75497 XLA_AE_LINES_PKG.g_LineNumber := 0;
75498 --
75499 --
75500 
75501 FOR Idx IN 1..l_array_event_id.count LOOP
75502    --
75503    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
75504    --
75505    l_event_id := l_array_event_id(idx);  -- 5648433
75506 
75507    --
75508    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
75509    --
75510 
75511    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
75512              (g_array_event(l_event_id).array_value_num('header_index'))
75513          ,'N'
75514          ) <> 'Y'
75515    THEN
75516       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75517          trace
75518             (p_msg      => 'Trancaction revesal option is not Y '
75519             ,p_level    => C_LEVEL_STATEMENT
75520             ,p_module   => l_log_module);
75521       END IF;
75522 
75523 --
75524 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
75525 --
75526 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
75527 --
75528 -- set event info as cache for other routines to refer event attributes
75529 --
75530 
75531 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
75532    l_previous_event_id := l_event_id;
75533 
75534    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
75535       (p_application_id           => p_application_id
75536       ,p_primary_ledger_id        => p_primary_ledger_id
75537       ,p_base_ledger_id           => p_base_ledger_id
75538       ,p_target_ledger_id         => p_target_ledger_id
75539       ,p_entity_id                => l_array_entity_id(Idx)
75540       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
75541       ,p_entity_code              => l_array_entity_code(Idx)
75542       ,p_transaction_num          => l_array_transaction_num(Idx)
75543       ,p_event_id                 => l_array_event_id(Idx)
75544       ,p_event_class_code         => l_array_class_code(Idx)
75545       ,p_event_type_code          => l_array_event_type(Idx)
75546       ,p_event_number             => l_array_event_number(Idx)
75547       ,p_event_date               => l_array_event_date(Idx)
75548       ,p_transaction_date         => l_array_transaction_date(Idx)
75549       ,p_reference_num_1          => l_array_reference_num_1(Idx)
75550       ,p_reference_num_2          => l_array_reference_num_2(Idx)
75551       ,p_reference_num_3          => l_array_reference_num_3(Idx)
75552       ,p_reference_num_4          => l_array_reference_num_4(Idx)
75553       ,p_reference_char_1         => l_array_reference_char_1(Idx)
75554       ,p_reference_char_2         => l_array_reference_char_2(Idx)
75555       ,p_reference_char_3         => l_array_reference_char_3(Idx)
75556       ,p_reference_char_4         => l_array_reference_char_4(Idx)
75557       ,p_reference_date_1         => l_array_reference_date_1(Idx)
75558       ,p_reference_date_2         => l_array_reference_date_2(Idx)
75559       ,p_reference_date_3         => l_array_reference_date_3(Idx)
75560       ,p_reference_date_4         => l_array_reference_date_4(Idx)
75564 END IF;
75561       ,p_event_created_by         => l_array_event_created_by(Idx)
75562       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
75563        --
75565 
75566 
75567 
75568 --
75569 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
75570 
75571 l_acct_reversal_source := SUBSTR(NULL, 1,30);
75572 
75573 IF l_continue_with_lines THEN
75574    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
75575       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75576 
75577       xla_accounting_err_pkg.build_message
75578          (p_appli_s_name            => 'XLA'
75579          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
75580          ,p_token_1                 => 'LINE_NUMBER'
75581          ,p_value_1                 => l_array_extract_line_num(Idx)
75582          ,p_token_2                 => 'PRODUCT_NAME'
75583          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75584          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75585          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75586          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75587 
75588    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
75589       --
75590       -- following sets the accounting attributes needed to reverse
75591       -- accounting for a distributeion
75592       --
75593 
75594       --
75595       -- 5217187
75596       --
75597       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
75598       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
75599                                        g_array_event(l_event_id).array_value_num('header_index'));
75600       --
75601       --
75602 
75603       -- No reversal code generated
75604 
75605       xla_ae_lines_pkg.SetAcctReversalAttrs
75606          (p_event_id             => l_event_id
75607          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
75608          ,p_calculate_acctd_flag => l_calculate_acctd_flag
75609          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
75610    END IF;
75611 
75612    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
75613        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
75614 
75615 --
75616 AcctLineType_24 (
75617  p_application_id  => p_application_id
75618  ,p_event_id     => l_event_id
75619  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75620  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75621  ,p_actual_flag => l_actual_flag
75622  ,p_balance_type_code => l_balance_type_code
75623  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75624  
75625  , p_source_18 => l_array_source_18(Idx)
75626  , p_source_25 => l_array_source_25(Idx)
75627  , p_source_27 => l_array_source_27(Idx)
75628  , p_source_28 => l_array_source_28(Idx)
75629  , p_source_29 => l_array_source_29(Idx)
75630  , p_source_36 => l_array_source_36(Idx)
75631  , p_source_37 => l_array_source_37(Idx)
75632  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75633  , p_source_39 => l_array_source_39(Idx)
75634  , p_source_40 => l_array_source_40(Idx)
75635  , p_source_41 => l_array_source_41(Idx)
75636  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75637  , p_source_43 => l_array_source_43(Idx)
75638  );
75639 If(l_balance_type_code = 'A') THEN
75640   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75641 END IF;
75642 
75643 --
75644 
75645 
75646 --
75647 AcctLineType_29 (
75648  p_application_id  => p_application_id
75649  ,p_event_id     => l_event_id
75650  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75651  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75652  ,p_actual_flag => l_actual_flag
75653  ,p_balance_type_code => l_balance_type_code
75654  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75655  
75656  , p_source_18 => l_array_source_18(Idx)
75657  , p_source_25 => l_array_source_25(Idx)
75658  , p_source_27 => l_array_source_27(Idx)
75659  , p_source_28 => l_array_source_28(Idx)
75660  , p_source_29 => l_array_source_29(Idx)
75661  , p_source_36 => l_array_source_36(Idx)
75662  , p_source_37 => l_array_source_37(Idx)
75663  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75664  , p_source_39 => l_array_source_39(Idx)
75665  , p_source_40 => l_array_source_40(Idx)
75666  , p_source_41 => l_array_source_41(Idx)
75667  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75668  , p_source_43 => l_array_source_43(Idx)
75669  );
75670 If(l_balance_type_code = 'A') THEN
75671   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75672 END IF;
75673 
75674 --
75675 
75676 
75677 --
75678 AcctLineType_30 (
75679  p_application_id  => p_application_id
75680  ,p_event_id     => l_event_id
75681  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75682  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75683  ,p_actual_flag => l_actual_flag
75684  ,p_balance_type_code => l_balance_type_code
75685  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75686  
75687  , p_source_1 => l_array_source_1(Idx)
75688  , p_source_25 => l_array_source_25(Idx)
75689  , p_source_27 => l_array_source_27(Idx)
75690  , p_source_28 => l_array_source_28(Idx)
75691  , p_source_29 => l_array_source_29(Idx)
75692  , p_source_36 => l_array_source_36(Idx)
75696  , p_source_41 => l_array_source_41(Idx)
75693  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75694  , p_source_39 => l_array_source_39(Idx)
75695  , p_source_40 => l_array_source_40(Idx)
75697  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75698  , p_source_43 => l_array_source_43(Idx)
75699  , p_source_58 => l_array_source_58(Idx)
75700  , p_source_58_meaning => l_array_source_58_meaning(Idx)
75701  );
75702 If(l_balance_type_code = 'A') THEN
75703   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75704 END IF;
75705 
75706 --
75707 
75708 
75709 --
75710 AcctLineType_32 (
75711  p_application_id  => p_application_id
75712  ,p_event_id     => l_event_id
75713  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75714  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75715  ,p_actual_flag => l_actual_flag
75716  ,p_balance_type_code => l_balance_type_code
75717  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75718  
75719  , p_source_1 => l_array_source_1(Idx)
75720  , p_source_25 => l_array_source_25(Idx)
75721  , p_source_27 => l_array_source_27(Idx)
75722  , p_source_28 => l_array_source_28(Idx)
75723  , p_source_29 => l_array_source_29(Idx)
75724  , p_source_36 => l_array_source_36(Idx)
75725  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75726  , p_source_39 => l_array_source_39(Idx)
75727  , p_source_40 => l_array_source_40(Idx)
75728  , p_source_41 => l_array_source_41(Idx)
75729  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75730  , p_source_43 => l_array_source_43(Idx)
75731  , p_source_58 => l_array_source_58(Idx)
75732  , p_source_58_meaning => l_array_source_58_meaning(Idx)
75733  );
75734 If(l_balance_type_code = 'A') THEN
75735   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75736 END IF;
75737 
75738 --
75739 
75740 
75741 --
75742 AcctLineType_34 (
75743  p_application_id  => p_application_id
75744  ,p_event_id     => l_event_id
75745  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75746  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75747  ,p_actual_flag => l_actual_flag
75748  ,p_balance_type_code => l_balance_type_code
75749  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75750  
75751  , p_source_18 => l_array_source_18(Idx)
75752  , p_source_25 => l_array_source_25(Idx)
75753  , p_source_27 => l_array_source_27(Idx)
75754  , p_source_28 => l_array_source_28(Idx)
75755  , p_source_29 => l_array_source_29(Idx)
75756  , p_source_36 => l_array_source_36(Idx)
75757  , p_source_37 => l_array_source_37(Idx)
75758  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75759  , p_source_39 => l_array_source_39(Idx)
75760  , p_source_40 => l_array_source_40(Idx)
75761  , p_source_41 => l_array_source_41(Idx)
75762  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75763  , p_source_43 => l_array_source_43(Idx)
75764  );
75765 If(l_balance_type_code = 'A') THEN
75766   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75767 END IF;
75768 
75769 --
75770 
75771 
75772 --
75773 AcctLineType_35 (
75774  p_application_id  => p_application_id
75775  ,p_event_id     => l_event_id
75776  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75777  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75778  ,p_actual_flag => l_actual_flag
75779  ,p_balance_type_code => l_balance_type_code
75780  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75781  
75782  , p_source_18 => l_array_source_18(Idx)
75783  , p_source_25 => l_array_source_25(Idx)
75784  , p_source_27 => l_array_source_27(Idx)
75785  , p_source_28 => l_array_source_28(Idx)
75786  , p_source_29 => l_array_source_29(Idx)
75787  , p_source_36 => l_array_source_36(Idx)
75788  , p_source_37 => l_array_source_37(Idx)
75789  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75790  , p_source_39 => l_array_source_39(Idx)
75791  , p_source_40 => l_array_source_40(Idx)
75792  , p_source_41 => l_array_source_41(Idx)
75793  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75794  , p_source_43 => l_array_source_43(Idx)
75795  );
75796 If(l_balance_type_code = 'A') THEN
75797   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75798 END IF;
75799 
75800 --
75801 
75802 
75803 --
75804 AcctLineType_36 (
75805  p_application_id  => p_application_id
75806  ,p_event_id     => l_event_id
75807  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75808  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75809  ,p_actual_flag => l_actual_flag
75810  ,p_balance_type_code => l_balance_type_code
75811  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75812  
75813  , p_source_18 => l_array_source_18(Idx)
75814  , p_source_25 => l_array_source_25(Idx)
75815  , p_source_27 => l_array_source_27(Idx)
75816  , p_source_28 => l_array_source_28(Idx)
75817  , p_source_29 => l_array_source_29(Idx)
75818  , p_source_36 => l_array_source_36(Idx)
75819  , p_source_37 => l_array_source_37(Idx)
75820  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75821  , p_source_39 => l_array_source_39(Idx)
75822  , p_source_40 => l_array_source_40(Idx)
75823  , p_source_41 => l_array_source_41(Idx)
75824  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75825  , p_source_43 => l_array_source_43(Idx)
75826  );
75827 If(l_balance_type_code = 'A') THEN
75831 --
75828   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75829 END IF;
75830 
75832 
75833 
75834 --
75835 AcctLineType_65 (
75836  p_application_id  => p_application_id
75837  ,p_event_id     => l_event_id
75838  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75839  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75840  ,p_actual_flag => l_actual_flag
75841  ,p_balance_type_code => l_balance_type_code
75842  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75843  
75844  , p_source_16 => l_array_source_16(Idx)
75845  , p_source_25 => l_array_source_25(Idx)
75846  , p_source_27 => l_array_source_27(Idx)
75847  , p_source_28 => l_array_source_28(Idx)
75848  , p_source_29 => l_array_source_29(Idx)
75849  , p_source_36 => l_array_source_36(Idx)
75850  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75851  , p_source_39 => l_array_source_39(Idx)
75852  , p_source_40 => l_array_source_40(Idx)
75853  , p_source_41 => l_array_source_41(Idx)
75854  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75855  , p_source_43 => l_array_source_43(Idx)
75856  );
75857 If(l_balance_type_code = 'A') THEN
75858   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75859 END IF;
75860 
75861 --
75862 
75863 
75864 --
75865 AcctLineType_67 (
75866  p_application_id  => p_application_id
75867  ,p_event_id     => l_event_id
75868  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75869  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75870  ,p_actual_flag => l_actual_flag
75871  ,p_balance_type_code => l_balance_type_code
75872  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75873  
75874  , p_source_17 => l_array_source_17(Idx)
75875  , p_source_25 => l_array_source_25(Idx)
75876  , p_source_27 => l_array_source_27(Idx)
75877  , p_source_28 => l_array_source_28(Idx)
75878  , p_source_29 => l_array_source_29(Idx)
75879  , p_source_36 => l_array_source_36(Idx)
75880  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75881  , p_source_39 => l_array_source_39(Idx)
75882  , p_source_40 => l_array_source_40(Idx)
75883  , p_source_41 => l_array_source_41(Idx)
75884  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75885  , p_source_43 => l_array_source_43(Idx)
75886  );
75887 If(l_balance_type_code = 'A') THEN
75888   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75889 END IF;
75890 
75891 --
75892 
75893 
75894 --
75895 AcctLineType_82 (
75896  p_application_id  => p_application_id
75897  ,p_event_id     => l_event_id
75898  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75899  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75900  ,p_actual_flag => l_actual_flag
75901  ,p_balance_type_code => l_balance_type_code
75902  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75903  
75904  , p_source_19 => l_array_source_19(Idx)
75905  , p_source_25 => l_array_source_25(Idx)
75906  , p_source_27 => l_array_source_27(Idx)
75907  , p_source_28 => l_array_source_28(Idx)
75908  , p_source_29 => l_array_source_29(Idx)
75909  , p_source_36 => l_array_source_36(Idx)
75910  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75911  , p_source_39 => l_array_source_39(Idx)
75912  , p_source_40 => l_array_source_40(Idx)
75913  , p_source_41 => l_array_source_41(Idx)
75914  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75915  , p_source_43 => l_array_source_43(Idx)
75916  );
75917 If(l_balance_type_code = 'A') THEN
75918   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75919 END IF;
75920 
75921 --
75922 
75923 
75924 --
75925 AcctLineType_84 (
75926  p_application_id  => p_application_id
75927  ,p_event_id     => l_event_id
75928  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75929  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75930  ,p_actual_flag => l_actual_flag
75931  ,p_balance_type_code => l_balance_type_code
75932  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75933  
75934  , p_source_20 => l_array_source_20(Idx)
75935  , p_source_25 => l_array_source_25(Idx)
75936  , p_source_27 => l_array_source_27(Idx)
75937  , p_source_28 => l_array_source_28(Idx)
75938  , p_source_29 => l_array_source_29(Idx)
75939  , p_source_36 => l_array_source_36(Idx)
75940  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75941  , p_source_39 => l_array_source_39(Idx)
75942  , p_source_40 => l_array_source_40(Idx)
75943  , p_source_41 => l_array_source_41(Idx)
75944  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75945  , p_source_43 => l_array_source_43(Idx)
75946  );
75947 If(l_balance_type_code = 'A') THEN
75948   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75949 END IF;
75950 
75951 --
75952 
75953 
75954 --
75955 AcctLineType_86 (
75956  p_application_id  => p_application_id
75957  ,p_event_id     => l_event_id
75958  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75959  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75960  ,p_actual_flag => l_actual_flag
75961  ,p_balance_type_code => l_balance_type_code
75962  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75963  
75964  , p_source_18 => l_array_source_18(Idx)
75965  , p_source_25 => l_array_source_25(Idx)
75966  , p_source_27 => l_array_source_27(Idx)
75967  , p_source_28 => l_array_source_28(Idx)
75971  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
75968  , p_source_29 => l_array_source_29(Idx)
75969  , p_source_36 => l_array_source_36(Idx)
75970  , p_source_37 => l_array_source_37(Idx)
75972  , p_source_39 => l_array_source_39(Idx)
75973  , p_source_40 => l_array_source_40(Idx)
75974  , p_source_41 => l_array_source_41(Idx)
75975  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
75976  , p_source_43 => l_array_source_43(Idx)
75977  );
75978 If(l_balance_type_code = 'A') THEN
75979   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75980 END IF;
75981 
75982 --
75983 
75984 
75985 --
75986 AcctLineType_87 (
75987  p_application_id  => p_application_id
75988  ,p_event_id     => l_event_id
75989  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75990  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75991  ,p_actual_flag => l_actual_flag
75992  ,p_balance_type_code => l_balance_type_code
75993  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75994  
75995  , p_source_18 => l_array_source_18(Idx)
75996  , p_source_25 => l_array_source_25(Idx)
75997  , p_source_27 => l_array_source_27(Idx)
75998  , p_source_28 => l_array_source_28(Idx)
75999  , p_source_29 => l_array_source_29(Idx)
76000  , p_source_36 => l_array_source_36(Idx)
76001  , p_source_37 => l_array_source_37(Idx)
76002  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
76003  , p_source_39 => l_array_source_39(Idx)
76004  , p_source_40 => l_array_source_40(Idx)
76005  , p_source_41 => l_array_source_41(Idx)
76006  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
76007  , p_source_43 => l_array_source_43(Idx)
76008  );
76009 If(l_balance_type_code = 'A') THEN
76010   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76011 END IF;
76012 
76013 --
76014 
76015 
76016 --
76017 AcctLineType_88 (
76018  p_application_id  => p_application_id
76019  ,p_event_id     => l_event_id
76020  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76021  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76022  ,p_actual_flag => l_actual_flag
76023  ,p_balance_type_code => l_balance_type_code
76024  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76025  
76026  , p_source_18 => l_array_source_18(Idx)
76027  , p_source_25 => l_array_source_25(Idx)
76028  , p_source_27 => l_array_source_27(Idx)
76029  , p_source_28 => l_array_source_28(Idx)
76030  , p_source_29 => l_array_source_29(Idx)
76031  , p_source_36 => l_array_source_36(Idx)
76032  , p_source_37 => l_array_source_37(Idx)
76033  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
76034  , p_source_39 => l_array_source_39(Idx)
76035  , p_source_40 => l_array_source_40(Idx)
76036  , p_source_41 => l_array_source_41(Idx)
76037  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
76038  , p_source_43 => l_array_source_43(Idx)
76039  );
76040 If(l_balance_type_code = 'A') THEN
76041   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76042 END IF;
76043 
76044 --
76045 
76046       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
76047       -- or secondary ledger that has different currency with primary
76048       -- or alc that is calculated by sla
76049       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
76050             (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'))
76051 
76052 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
76053 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
76054           AND (l_actual_flag = 'A')) THEN
76055         XLA_AE_LINES_PKG.CreateGainOrLossLines(
76056           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
76057          ,p_application_id   => p_application_id
76058          ,p_amb_context_code => 'DEFAULT'
76059          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
76060          ,p_event_class_code => C_EVENT_CLASS_CODE
76061          ,p_event_type_code  => C_EVENT_TYPE_CODE
76062          
76063          ,p_gain_ccid        => g_array_event(l_event_id).array_value_num('source_91')
76064          ,p_loss_ccid        => g_array_event(l_event_id).array_value_num('source_92')
76065 
76066          ,p_actual_flag      => l_actual_flag
76067          ,p_enc_flag         => null
76068          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
76069          ,p_enc_g_l_ref      => null
76070          );
76071       END IF;
76072    END IF;
76073 END IF;
76074 
76075    ELSE
76076       --
76077       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
76078       --
76079       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76080          trace
76081             (p_msg      => 'Trancaction revesal option is Y'
76082             ,p_level    => C_LEVEL_STATEMENT
76083             ,p_module   => l_log_module);
76084       END IF;
76085    END IF;
76086 
76087 END LOOP;
76088 l_result := XLA_AE_LINES_PKG.InsertLines ;
76089 end loop;
76090 close line_cur;
76091 
76092 
76093 --
76094 -- insert headers into xla_ae_headers_gt table
76095 --
76096 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
76097 
76098 -- insert into errors table here.
76099 
76100 END LOOP;
76101 
76102 --
76103 -- 4865292
76107 --
76104 --
76105 -- Compare g_hdr_extract_count with event count in
76106 -- CreateHeadersAndLines.
76108 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
76109 
76110 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76111    trace (p_msg     => '# rows extracted from header extract objects '
76112                     || ' (running total): '
76113                     || g_hdr_extract_count
76114          ,p_level   => C_LEVEL_STATEMENT
76115          ,p_module  => l_log_module);
76116 END IF;
76117 
76118 CLOSE header_cur;
76119 --
76120 
76121 --
76122 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76123    trace
76124       (p_msg      => 'END of EventClass_124'
76125       ,p_level    => C_LEVEL_PROCEDURE
76126       ,p_module   => l_log_module);
76127 END IF;
76128 --
76129 RETURN l_result;
76130 EXCEPTION
76131 WHEN xla_exceptions_pkg.application_exception THEN
76132    
76133 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
76134 
76135    
76136 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
76137 
76138    RAISE;
76139 WHEN OTHERS THEN
76140    xla_exceptions_pkg.raise_message
76141       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_124');
76142 END EventClass_124;
76143 --
76144 
76145 ---------------------------------------
76146 --
76147 -- PRIVATE PROCEDURE
76148 --         insert_sources_125
76149 --
76150 ----------------------------------------
76151 --
76152 PROCEDURE insert_sources_125(
76153                                 p_target_ledger_id       IN NUMBER
76154                               , p_language               IN VARCHAR2
76155                               , p_sla_ledger_id          IN NUMBER
76156                               , p_pad_start_date         IN DATE
76157                               , p_pad_end_date           IN DATE
76158                          )
76159 IS
76160 
76161 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ADJ_ALL';
76162 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST_ADJ';
76163 p_apps_owner                   VARCHAR2(30);
76164 l_log_module                   VARCHAR2(240);
76165 BEGIN
76166 IF g_log_enabled THEN
76167       l_log_module := C_DEFAULT_MODULE||'.insert_sources_125';
76168 END IF;
76169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76170 
76171       trace
76172          (p_msg      => 'BEGIN of insert_sources_125'
76173          ,p_level    => C_LEVEL_PROCEDURE
76174          ,p_module   => l_log_module);
76175 
76176 END IF;
76177 
76178 -- select APPS owner
76179 SELECT oracle_username
76180   INTO p_apps_owner
76181   FROM fnd_oracle_userid
76182  WHERE read_only_flag = 'U'
76183 ;
76184 
76185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76186       trace
76187          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
76188                         ' - p_language = '||p_language||
76189                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
76190                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
76191                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
76192                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
76193          ,p_level    => C_LEVEL_STATEMENT
76194          ,p_module   => l_log_module);
76195 END IF;
76196 
76197 
76198 --
76199 INSERT INTO xla_diag_sources --hdr2
76200 (
76201         event_id
76202       , ledger_id
76203       , sla_ledger_id
76204       , description_language
76205       , object_name
76206       , object_type_code
76207       , line_number
76208       , source_application_id
76209       , source_type_code
76210       , source_code
76211       , source_value
76212       , source_meaning
76213       , created_by
76214       , creation_date
76215       , last_update_date
76216       , last_updated_by
76217       , last_update_login
76218       , program_update_date
76219       , program_application_id
76220       , program_id
76221       , request_id
76222 )
76223 SELECT
76224         event_id
76225       , p_target_ledger_id
76226       , p_sla_ledger_id
76227       , p_language
76228       , object_name
76229       , object_type_code
76230       , line_number
76231       , source_application_id
76232       , source_type_code
76233       , source_code
76234       , SUBSTR(source_value ,1,1996)
76235       , SUBSTR(source_meaning ,1,200)
76236       , xla_environment_pkg.g_Usr_Id
76237       , TRUNC(SYSDATE)
76238       , TRUNC(SYSDATE)
76239       , xla_environment_pkg.g_Usr_Id
76240       , xla_environment_pkg.g_Login_Id
76241       , TRUNC(SYSDATE)
76242       , xla_environment_pkg.g_Prog_Appl_Id
76243       , xla_environment_pkg.g_Prog_Id
76244       , xla_environment_pkg.g_Req_Id
76245   FROM (
76246        SELECT xet.event_id                  event_id
76247             , 0                          line_number
76248             , CASE r
76249                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
76250                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
76251                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
76252                 
76253                ELSE null
76254               END                           object_name
76255             , CASE r
76256                 WHEN 1 THEN 'HEADER' 
76257                 WHEN 2 THEN 'HEADER' 
76261               END                           object_type_code
76258                 WHEN 3 THEN 'HEADER' 
76259                 
76260                 ELSE null
76262             , CASE r
76263                 WHEN 1 THEN '275' 
76264                 WHEN 2 THEN '275' 
76265                 WHEN 3 THEN '275' 
76266                 
76267                 ELSE null
76268               END                           source_application_id
76269             , 'S'             source_type_code
76270             , CASE r
76271                 WHEN 1 THEN 'EXCHANGE_RATE_VARIANCE_FLAG' 
76272                 WHEN 2 THEN 'EXPENDITURE_ITEM_ID' 
76273                 WHEN 3 THEN 'GL_DATE' 
76274                 
76275                 ELSE null
76276               END                           source_code
76277             , CASE r
76278                 WHEN 1 THEN TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
76279                 WHEN 2 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
76280                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
76281                 
76282                 ELSE null
76283               END                           source_value
76284             , CASE r
76285                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
76286                           103371
76287                          ,TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
76288                          ,'EXCHANGE_RATE_VARIANCE_FLAG'
76289                          ,'S'
76290                          ,275)
76291                 
76292                 ELSE null
76293               END               source_meaning
76294          FROM xla_events_gt     xet  
76295       , PA_XLA_EXP_HEADER_V  h2
76296              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
76297          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
76298            AND xet.event_class_code = C_EVENT_CLASS_CODE
76299               AND h2.event_id = xet.event_id
76300 
76301 )
76302 ;
76303 --
76304 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76305 
76306       trace
76307          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
76308          ,p_level    => C_LEVEL_STATEMENT
76309          ,p_module   => l_log_module);
76310 
76311 END IF;
76312 --
76313 
76314 
76315 
76316 --
76317 INSERT INTO xla_diag_sources  --line2
76318 (
76319         event_id
76320       , ledger_id
76321       , sla_ledger_id
76322       , description_language
76323       , object_name
76324       , object_type_code
76325       , line_number
76326       , source_application_id
76327       , source_type_code
76328       , source_code
76329       , source_value
76330       , source_meaning
76331       , created_by
76332       , creation_date
76333       , last_update_date
76334       , last_updated_by
76335       , last_update_login
76336       , program_update_date
76337       , program_application_id
76338       , program_id
76339       , request_id
76340 )
76341 SELECT  event_id
76342       , p_target_ledger_id
76343       , p_sla_ledger_id
76344       , p_language
76345       , object_name
76346       , object_type_code
76347       , line_number
76348       , source_application_id
76349       , source_type_code
76350       , source_code
76351       , SUBSTR(source_value,1,1996)
76352       , SUBSTR(source_meaning ,1,200)
76353       , xla_environment_pkg.g_Usr_Id
76354       , TRUNC(SYSDATE)
76355       , TRUNC(SYSDATE)
76356       , xla_environment_pkg.g_Usr_Id
76357       , xla_environment_pkg.g_Login_Id
76358       , TRUNC(SYSDATE)
76359       , xla_environment_pkg.g_Prog_Appl_Id
76360       , xla_environment_pkg.g_Prog_Id
76361       , xla_environment_pkg.g_Req_Id
76362   FROM (
76363        SELECT xet.event_id                  event_id
76364             , l1.line_number                 line_number
76365             , CASE r
76366                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
76367                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
76368                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
76369                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
76370                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
76371                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
76372                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
76373                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
76374                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
76375                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
76376                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
76377                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
76378                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
76379                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
76380                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
76381                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
76382                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
76383                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
76384                 
76385                ELSE null
76386               END                           object_name
76387             , CASE r
76388                 WHEN 1 THEN 'LINE' 
76389                 WHEN 2 THEN 'LINE' 
76390                 WHEN 3 THEN 'LINE' 
76391                 WHEN 4 THEN 'LINE' 
76392                 WHEN 5 THEN 'LINE' 
76393                 WHEN 6 THEN 'LINE' 
76394                 WHEN 7 THEN 'LINE' 
76395                 WHEN 8 THEN 'LINE' 
76396                 WHEN 9 THEN 'LINE' 
76397                 WHEN 10 THEN 'LINE' 
76401                 WHEN 14 THEN 'LINE' 
76398                 WHEN 11 THEN 'LINE' 
76399                 WHEN 12 THEN 'LINE' 
76400                 WHEN 13 THEN 'LINE' 
76402                 WHEN 15 THEN 'LINE' 
76403                 WHEN 16 THEN 'LINE' 
76404                 WHEN 17 THEN 'LINE' 
76405                 WHEN 18 THEN 'LINE' 
76406                 
76407                 ELSE null
76408               END                           object_type_code
76409             , CASE r
76410                 WHEN 1 THEN '275' 
76411                 WHEN 2 THEN '275' 
76412                 WHEN 3 THEN '275' 
76413                 WHEN 4 THEN '275' 
76414                 WHEN 5 THEN '275' 
76415                 WHEN 6 THEN '275' 
76416                 WHEN 7 THEN '275' 
76417                 WHEN 8 THEN '275' 
76418                 WHEN 9 THEN '275' 
76419                 WHEN 10 THEN '275' 
76420                 WHEN 11 THEN '275' 
76421                 WHEN 12 THEN '275' 
76422                 WHEN 13 THEN '275' 
76423                 WHEN 14 THEN '275' 
76424                 WHEN 15 THEN '275' 
76425                 WHEN 16 THEN '275' 
76426                 WHEN 17 THEN '275' 
76427                 WHEN 18 THEN '275' 
76428                 
76429                 ELSE null
76430               END                           source_application_id
76431             , 'S'             source_type_code
76432             , CASE r
76433                 WHEN 1 THEN 'COST_CCID' 
76434                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
76435                 WHEN 3 THEN 'ADJ_COST_CCID' 
76436                 WHEN 4 THEN 'COST_CLEARING_CCID' 
76437                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
76438                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
76439                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
76440                 WHEN 8 THEN 'ENTERED_RAW_COST' 
76441                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
76442                 WHEN 10 THEN 'ACCT_RAW_COST' 
76443                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
76444                 WHEN 12 THEN 'EXCHANGE_RATE' 
76445                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
76446                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
76447                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
76448                 WHEN 16 THEN 'LINE_NUMBER' 
76449                 WHEN 17 THEN 'LINE_TYPE' 
76450                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
76451                 
76452                 ELSE null
76453               END                           source_code
76454             , CASE r
76455                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
76456                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
76457                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
76458                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
76459                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
76460                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
76461                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
76462                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
76463                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
76464                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
76465                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
76466                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
76467                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
76468                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
76469                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
76470                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
76471                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
76472                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
76473                 
76474                 ELSE null
76475               END                           source_value
76476             , CASE r
76477                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
76478                           103371
76479                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
76480                          ,'ALLOW_OVERRIDE_CCID_FLAG'
76481                          ,'S'
76482                          ,275)
76483                 WHEN 17 THEN fvl34.meaning
76484                 
76485                 ELSE null
76486               END               source_meaning
76487          FROM  xla_events_gt     xet  
76488         , PA_XLA_CDL_LINES_V  l1
76489   , fnd_lookup_values    fvl34
76490             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
76491         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
76492           AND xet.event_class_code = C_EVENT_CLASS_CODE
76493             AND l1.event_id          = xet.event_id
76494    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
76495   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
76496   AND fvl34.view_application_id(+) = 275
76497   AND fvl34.language(+)            = USERENV('LANG')
76498   
76499 )
76500 ;
76501 --
76502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76503 
76504       trace
76505          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
76506          ,p_level    => C_LEVEL_STATEMENT
76507          ,p_module   => l_log_module);
76508 
76509 END IF;
76510 
76511 
76512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76513       trace
76514          (p_msg      => 'END of insert_sources_125'
76515          ,p_level    => C_LEVEL_PROCEDURE
76519   WHEN xla_exceptions_pkg.application_exception THEN
76516          ,p_module   => l_log_module);
76517 END IF;
76518 EXCEPTION
76520       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
76521             trace
76522                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
76523                ,p_level    => C_LEVEL_EXCEPTION
76524                ,p_module   => l_log_module);
76525       END IF;
76526       RAISE;
76527   WHEN OTHERS THEN
76528       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
76529             trace
76530                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
76531                ,p_level    => C_LEVEL_EXCEPTION
76532                ,p_module   => l_log_module);
76533        END IF;
76534        xla_exceptions_pkg.raise_message
76535            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_125');
76536 END insert_sources_125;
76537 --
76538 
76539 ---------------------------------------
76540 --
76541 -- PRIVATE FUNCTION
76542 --         EventClass_125
76543 --
76544 ----------------------------------------
76545 --
76546 FUNCTION EventClass_125
76547        (p_application_id         IN NUMBER
76548        ,p_base_ledger_id         IN NUMBER
76549        ,p_target_ledger_id       IN NUMBER
76550        ,p_language               IN VARCHAR2
76551        ,p_currency_code          IN VARCHAR2
76552        ,p_sla_ledger_id          IN NUMBER
76553        ,p_pad_start_date         IN DATE
76554        ,p_pad_end_date           IN DATE
76555        ,p_primary_ledger_id      IN NUMBER)
76556 RETURN BOOLEAN IS
76557 --
76558 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ADJ_ALL';
76559 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST_ADJ';
76560 
76561 l_calculate_acctd_flag   VARCHAR2(1) :='N';
76562 l_calculate_g_l_flag     VARCHAR2(1) :='N';
76563 --
76564 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76565 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76566 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76567 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76568 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76569 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76570 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76571 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76572 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76573 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76574 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76575 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76576 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76577 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76578 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76579 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76580 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76581 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76582 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76583 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76584 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76585 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76586 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
76587 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76588 
76589 l_event_id                             NUMBER;
76590 l_previous_event_id                    NUMBER;
76591 l_first_event_id                       NUMBER;
76592 l_last_event_id                        NUMBER;
76593 
76594 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
76595 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
76596 --
76597 --
76598 l_result                    BOOLEAN := TRUE;
76599 l_rows                      NUMBER  := 1000;
76600 l_event_type_name           VARCHAR2(80) := 'All';
76601 l_event_class_name          VARCHAR2(80) := 'Supplier Cost Adjustment';
76602 l_description               VARCHAR2(4000);
76603 l_transaction_reversal      NUMBER;
76604 l_ae_header_id              NUMBER;
76605 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
76606 l_log_module                VARCHAR2(240);
76607 --
76608 l_acct_reversal_source      VARCHAR2(30);
76609 l_trx_reversal_source       VARCHAR2(30);
76610 
76611 l_continue_with_lines       BOOLEAN := TRUE;
76612 --
76613 l_acc_rev_gl_date_source    DATE;                      -- 4262811
76614 --
76615 type t_array_event_id is table of number index by binary_integer;
76616 
76617 l_rec_array_event                    t_rec_array_event;
76618 l_null_rec_array_event               t_rec_array_event;
76619 l_array_ae_header_id                 xla_number_array_type;
76620 l_actual_flag                        VARCHAR2(1) := NULL;
76621 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
76622 l_balance_type_code                  VARCHAR2(1) :=NULL;
76623 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
76624 
76625 --
76629 TYPE t_array_source_21 IS TABLE OF PA_XLA_EXP_HEADER_V.EXCHANGE_RATE_VARIANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
76626 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
76627 --
76628 
76630 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
76631 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
76632 
76633 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
76634 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
76635 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
76636 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
76637 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
76638 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
76639 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
76640 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
76641 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
76642 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
76643 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
76644 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
76645 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
76646 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
76647 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
76648 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
76649 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
76650 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
76651 
76652 l_array_source_21              t_array_source_21;
76653 l_array_source_32              t_array_source_32;
76654 l_array_source_87              t_array_source_87;
76655 
76656 l_array_source_3      t_array_source_3;
76657 l_array_source_4      t_array_source_4;
76658 l_array_source_5      t_array_source_5;
76659 l_array_source_6      t_array_source_6;
76660 l_array_source_7      t_array_source_7;
76661 l_array_source_22      t_array_source_22;
76662 l_array_source_23      t_array_source_23;
76663 l_array_source_24      t_array_source_24;
76664 l_array_source_25      t_array_source_25;
76665 l_array_source_26      t_array_source_26;
76666 l_array_source_27      t_array_source_27;
76667 l_array_source_28      t_array_source_28;
76668 l_array_source_29      t_array_source_29;
76669 l_array_source_30      t_array_source_30;
76670 l_array_source_31      t_array_source_31;
76671 l_array_source_33      t_array_source_33;
76672 l_array_source_34      t_array_source_34;
76673 l_array_source_34_meaning      t_array_lookup_meaning;
76674 l_array_source_35      t_array_source_35;
76675 
76676 --
76677 CURSOR header_cur
76678 IS
76679 SELECT /*+ leading(xet) cardinality(xet,1) */
76680 -- Event Class Code: SUPPLIER_COST_ADJ
76681     xet.entity_id
76682    ,xet.legal_entity_id
76683    ,xet.entity_code
76684    ,xet.transaction_number
76685    ,xet.event_id
76686    ,xet.event_class_code
76687    ,xet.event_type_code
76688    ,xet.event_number
76689    ,xet.event_date
76690    ,xet.transaction_date
76691    ,xet.reference_num_1
76692    ,xet.reference_num_2
76693    ,xet.reference_num_3
76694    ,xet.reference_num_4
76695    ,xet.reference_char_1
76696    ,xet.reference_char_2
76697    ,xet.reference_char_3
76698    ,xet.reference_char_4
76699    ,xet.reference_date_1
76700    ,xet.reference_date_2
76701    ,xet.reference_date_3
76702    ,xet.reference_date_4
76703    ,xet.event_created_by
76704    ,xet.budgetary_control_flag 
76705   , h2.EXCHANGE_RATE_VARIANCE_FLAG    source_21
76706   , h2.EXPENDITURE_ITEM_ID    source_32
76707   , h2.GL_DATE    source_87
76708   FROM xla_events_gt     xet 
76709   , PA_XLA_EXP_HEADER_V  h2
76710  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
76711    and xet.event_class_code = C_EVENT_CLASS_CODE
76712    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
76713 
76714  ORDER BY event_id
76715 ;
76716 
76717 
76718 --
76719 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
76720 IS
76721 SELECT  /*+ leading(xet) cardinality(xet,1) */
76722 -- Event Class Code: SUPPLIER_COST_ADJ
76723     xet.entity_id
76724    ,xet.legal_entity_id
76725    ,xet.entity_code
76726    ,xet.transaction_number
76727    ,xet.event_id
76728    ,xet.event_class_code
76729    ,xet.event_type_code
76730    ,xet.event_number
76731    ,xet.event_date
76732    ,xet.transaction_date
76733    ,xet.reference_num_1
76734    ,xet.reference_num_2
76735    ,xet.reference_num_3
76736    ,xet.reference_num_4
76737    ,xet.reference_char_1
76738    ,xet.reference_char_2
76739    ,xet.reference_char_3
76740    ,xet.reference_char_4
76741    ,xet.reference_date_1
76742    ,xet.reference_date_2
76743    ,xet.reference_date_3
76744    ,xet.reference_date_4
76745    ,xet.event_created_by
76749   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
76746    ,xet.budgetary_control_flag
76747  , l1.LINE_NUMBER  
76748   , l1.COST_CCID    source_3
76750   , l1.ADJ_COST_CCID    source_5
76751   , l1.COST_CLEARING_CCID    source_6
76752   , l1.ADJ_COST_CLEARING_CCID    source_7
76753   , l1.REVERSING_LINE_FLAG    source_22
76754   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
76755   , l1.ENTERED_RAW_COST    source_24
76756   , l1.ENTERED_CURRENCY_CODE    source_25
76757   , l1.ACCT_RAW_COST    source_26
76758   , l1.EXCHANGE_RATE_DATE    source_27
76759   , l1.EXCHANGE_RATE    source_28
76760   , l1.EXCHANGE_RATE_TYPE    source_29
76761   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
76762   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
76763   , l1.LINE_NUMBER    source_33
76764   , l1.LINE_TYPE    source_34
76765   , fvl34.meaning   source_34_meaning
76766   , l1.LINE_NUM_REVERSED    source_35
76767   FROM xla_events_gt     xet 
76768   , PA_XLA_CDL_LINES_V  l1
76769   , fnd_lookup_values    fvl34
76770  WHERE xet.event_id between x_first_event_id and x_last_event_id
76771    and xet.event_date between p_pad_start_date and p_pad_end_date
76772    and xet.event_class_code = C_EVENT_CLASS_CODE
76773    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
76774    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
76775   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
76776   AND fvl34.view_application_id(+) = 275
76777   AND fvl34.language(+)            = USERENV('LANG')
76778   ;
76779 
76780 --
76781 BEGIN
76782 IF g_log_enabled THEN
76783    l_log_module := C_DEFAULT_MODULE||'.EventClass_125';
76784 END IF;
76785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76786    trace
76787       (p_msg      => 'BEGIN of EventClass_125'
76788       ,p_level    => C_LEVEL_PROCEDURE
76789       ,p_module   => l_log_module);
76790 END IF;
76791 
76792 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76793    trace
76794       (p_msg      => 'p_application_id = '||p_application_id||
76795                      ' - p_base_ledger_id = '||p_base_ledger_id||
76796                      ' - p_target_ledger_id  = '||p_target_ledger_id||
76797                      ' - p_language = '||p_language||
76798                      ' - p_currency_code = '||p_currency_code||
76799                      ' - p_sla_ledger_id = '||p_sla_ledger_id
76800       ,p_level    => C_LEVEL_STATEMENT
76801       ,p_module   => l_log_module);
76802 END IF;
76803 --
76804 -- initialze arrays
76805 --
76806 g_array_event.DELETE;
76807 l_rec_array_event := l_null_rec_array_event;
76808 --
76809 --------------------------------------
76810 -- 4262811 Initialze MPA Line Number
76811 --------------------------------------
76812 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
76813 
76814 --
76815 
76816 --
76817 OPEN header_cur;
76818 --
76819 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76820    trace
76821    (p_msg      => 'SQL - FETCH header_cur'
76822    ,p_level    => C_LEVEL_STATEMENT
76823    ,p_module   => l_log_module);
76824 END IF;
76825 --
76826 LOOP
76827 FETCH header_cur BULK COLLECT INTO
76828         l_array_entity_id
76829       , l_array_legal_entity_id
76830       , l_array_entity_code
76831       , l_array_transaction_num
76832       , l_array_event_id
76833       , l_array_class_code
76834       , l_array_event_type
76835       , l_array_event_number
76836       , l_array_event_date
76837       , l_array_transaction_date
76838       , l_array_reference_num_1
76839       , l_array_reference_num_2
76840       , l_array_reference_num_3
76841       , l_array_reference_num_4
76842       , l_array_reference_char_1
76843       , l_array_reference_char_2
76844       , l_array_reference_char_3
76845       , l_array_reference_char_4
76846       , l_array_reference_date_1
76847       , l_array_reference_date_2
76848       , l_array_reference_date_3
76849       , l_array_reference_date_4
76850       , l_array_event_created_by
76851       , l_array_budgetary_control_flag 
76852       , l_array_source_21
76853       , l_array_source_32
76854       , l_array_source_87
76855       LIMIT l_rows;
76856 --
76857 IF (C_LEVEL_EVENT >= g_log_level) THEN
76858    trace
76859    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
76860    ,p_level    => C_LEVEL_EVENT
76861    ,p_module   => l_log_module);
76862 END IF;
76863 --
76864 EXIT WHEN l_array_entity_id.COUNT = 0;
76865 
76866 -- initialize arrays
76867 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
76868 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
76869 
76870 --
76871 -- Bug 4458708
76872 --
76873 XLA_AE_LINES_PKG.g_LineNumber := 0;
76874 
76875 
76876 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
76877 g_last_hdr_idx := l_array_event_id.LAST;
76878 --
76879 -- loop for the headers. Each iteration is for each header extract row
76880 -- fetched in header cursor
76881 --
76882 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
76883 
76884 --
76885 -- set event info as cache for other routines to refer event attributes
76886 --
76887 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
76888    (p_application_id           => p_application_id
76889    ,p_primary_ledger_id        => p_primary_ledger_id
76893    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
76890    ,p_base_ledger_id           => p_base_ledger_id
76891    ,p_target_ledger_id         => p_target_ledger_id
76892    ,p_entity_id                => l_array_entity_id(hdr_idx)
76894    ,p_entity_code              => l_array_entity_code(hdr_idx)
76895    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
76896    ,p_event_id                 => l_array_event_id(hdr_idx)
76897    ,p_event_class_code         => l_array_class_code(hdr_idx)
76898    ,p_event_type_code          => l_array_event_type(hdr_idx)
76899    ,p_event_number             => l_array_event_number(hdr_idx)
76900    ,p_event_date               => l_array_event_date(hdr_idx)
76901    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
76902    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
76903    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
76904    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
76905    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
76906    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
76907    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
76908    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
76909    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
76910    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
76911    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
76912    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
76913    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
76914    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
76915    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
76916 
76917 --
76918 -- set the status of entry to C_VALID (0)
76919 --
76920 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
76921 
76922 --
76923 -- initialize a row for ae header
76924 --
76925 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
76926 
76927 l_event_id := l_array_event_id(hdr_idx);
76928 
76929 --
76930 -- storing the hdr_idx for event. May be used by line cursor.
76931 --
76932 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
76933 
76934 --
76935 -- store sources from header extract. This can be improved to
76936 -- store only those sources from header extract that may be used in lines
76937 --
76938 
76939 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
76940 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
76941 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
76942 
76943 --
76944 -- initilaize the status of ae headers for diffrent balance types
76945 -- the status is initialised to C_NOT_CREATED (2)
76946 --
76947 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76948 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76949 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76950 
76951 --
76952 -- call api to validate and store accounting attributes for header
76953 --
76954 
76955 ------------------------------------------------------------
76956 -- Accrual Reversal : to get date for Standard Source (NONE)
76957 ------------------------------------------------------------
76958 l_acc_rev_gl_date_source := NULL;
76959 
76960      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
76961       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
76962 
76963 
76964 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
76965 
76966 XLA_AE_HEADER_PKG.SetJeCategoryName;
76967 
76968 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
76969 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
76970 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
76971 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
76972 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
76973 
76974 
76975 -- No header level analytical criteria
76976 
76977 --
76978 --accounting attribute enhancement, bug 3612931
76979 --
76980 l_trx_reversal_source := SUBSTR(NULL, 1,30);
76981 
76982 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
76983    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
76984 
76985    xla_accounting_err_pkg.build_message
76986       (p_appli_s_name            => 'XLA'
76987       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
76988       ,p_token_1                 => 'ACCT_ATTR_NAME'
76989       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
76990       ,p_token_2                 => 'PRODUCT_NAME'
76991       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
76992       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
76993       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
76994       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
76995 
76996 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
76997    --
77001    xla_ae_lines_pkg.SetTrxReversalAttrs
76998    -- following sets the accounting attributes needed to reverse
76999    -- accounting for a distributeion
77000    --
77002       (p_event_id              => l_event_id
77003       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
77004       ,p_trx_reversal_source   => l_trx_reversal_source);
77005 
77006 END IF;
77007 
77008 
77009 ----------------------------------------------------------------
77010 -- 4262811 -  update the header statuses to invalid in need be
77011 ----------------------------------------------------------------
77012 --
77013 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
77014 
77015 
77016   -----------------------------------------------
77017   -- No accrual reversal for the event class/type
77018   -----------------------------------------------
77019 ----------------------------------------------------------------
77020 
77021 --
77022 -- this ends the header loop iteration for one bulk fetch
77023 --
77024 END LOOP;
77025 
77026 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
77027 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
77028 
77029 --
77030 -- insert dummy rows into lines gt table that were created due to
77031 -- transaction reversals
77032 --
77033 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
77034    l_result := XLA_AE_LINES_PKG.InsertLines;
77035 END IF;
77036 
77037 --
77038 -- reset the temp_line_num for each set of events fetched from header
77039 -- cursor rather than doing it for each new event in line cursor
77040 -- Bug 3939231
77041 --
77042 xla_ae_lines_pkg.g_temp_line_num := 0;
77043 
77044 
77045 
77046 --
77047 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
77048 --
77049 --
77050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77051 
77052       trace
77053          (p_msg      => 'SQL - FETCH line_cur'
77054          ,p_level    => C_LEVEL_STATEMENT
77055          ,p_module   => l_log_module);
77056 
77057 END IF;
77058 --
77059 --
77060 LOOP
77061   --
77062   FETCH line_cur BULK COLLECT INTO
77063         l_array_entity_id
77064       , l_array_legal_entity_id
77065       , l_array_entity_code
77066       , l_array_transaction_num
77067       , l_array_event_id
77068       , l_array_class_code
77069       , l_array_event_type
77070       , l_array_event_number
77071       , l_array_event_date
77072       , l_array_transaction_date
77073       , l_array_reference_num_1
77074       , l_array_reference_num_2
77075       , l_array_reference_num_3
77076       , l_array_reference_num_4
77077       , l_array_reference_char_1
77078       , l_array_reference_char_2
77079       , l_array_reference_char_3
77080       , l_array_reference_char_4
77081       , l_array_reference_date_1
77082       , l_array_reference_date_2
77083       , l_array_reference_date_3
77084       , l_array_reference_date_4
77085       , l_array_event_created_by
77086       , l_array_budgetary_control_flag
77087       , l_array_extract_line_num 
77088       , l_array_source_3
77089       , l_array_source_4
77090       , l_array_source_5
77091       , l_array_source_6
77092       , l_array_source_7
77093       , l_array_source_22
77094       , l_array_source_23
77095       , l_array_source_24
77096       , l_array_source_25
77097       , l_array_source_26
77098       , l_array_source_27
77099       , l_array_source_28
77100       , l_array_source_29
77101       , l_array_source_30
77102       , l_array_source_31
77103       , l_array_source_33
77104       , l_array_source_34
77105       , l_array_source_34_meaning
77106       , l_array_source_35
77107       LIMIT l_rows;
77108 
77109   --
77110   IF (C_LEVEL_EVENT >= g_log_level) THEN
77111             trace
77112                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
77113                ,p_level    => C_LEVEL_EVENT
77114                ,p_module   => l_log_module);
77115   END IF;
77116   --
77117   EXIT WHEN l_array_entity_id.count = 0;
77118 
77119   XLA_AE_LINES_PKG.g_rec_lines := null;
77120 
77121 --
77122 -- Bug 4458708
77123 --
77124 XLA_AE_LINES_PKG.g_LineNumber := 0;
77125 --
77126 --
77127 
77128 FOR Idx IN 1..l_array_event_id.count LOOP
77129    --
77130    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
77131    --
77132    l_event_id := l_array_event_id(idx);  -- 5648433
77133 
77134    --
77135    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
77136    --
77137 
77138    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
77139              (g_array_event(l_event_id).array_value_num('header_index'))
77140          ,'N'
77141          ) <> 'Y'
77142    THEN
77143       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77144          trace
77145             (p_msg      => 'Trancaction revesal option is not Y '
77146             ,p_level    => C_LEVEL_STATEMENT
77147             ,p_module   => l_log_module);
77148       END IF;
77149 
77150 --
77154 --
77151 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
77152 --
77153 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
77155 -- set event info as cache for other routines to refer event attributes
77156 --
77157 
77158 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
77159    l_previous_event_id := l_event_id;
77160 
77161    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
77162       (p_application_id           => p_application_id
77163       ,p_primary_ledger_id        => p_primary_ledger_id
77164       ,p_base_ledger_id           => p_base_ledger_id
77165       ,p_target_ledger_id         => p_target_ledger_id
77166       ,p_entity_id                => l_array_entity_id(Idx)
77167       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
77168       ,p_entity_code              => l_array_entity_code(Idx)
77169       ,p_transaction_num          => l_array_transaction_num(Idx)
77170       ,p_event_id                 => l_array_event_id(Idx)
77171       ,p_event_class_code         => l_array_class_code(Idx)
77172       ,p_event_type_code          => l_array_event_type(Idx)
77173       ,p_event_number             => l_array_event_number(Idx)
77174       ,p_event_date               => l_array_event_date(Idx)
77175       ,p_transaction_date         => l_array_transaction_date(Idx)
77176       ,p_reference_num_1          => l_array_reference_num_1(Idx)
77177       ,p_reference_num_2          => l_array_reference_num_2(Idx)
77178       ,p_reference_num_3          => l_array_reference_num_3(Idx)
77179       ,p_reference_num_4          => l_array_reference_num_4(Idx)
77180       ,p_reference_char_1         => l_array_reference_char_1(Idx)
77181       ,p_reference_char_2         => l_array_reference_char_2(Idx)
77182       ,p_reference_char_3         => l_array_reference_char_3(Idx)
77183       ,p_reference_char_4         => l_array_reference_char_4(Idx)
77184       ,p_reference_date_1         => l_array_reference_date_1(Idx)
77185       ,p_reference_date_2         => l_array_reference_date_2(Idx)
77186       ,p_reference_date_3         => l_array_reference_date_3(Idx)
77187       ,p_reference_date_4         => l_array_reference_date_4(Idx)
77188       ,p_event_created_by         => l_array_event_created_by(Idx)
77189       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
77190        --
77191 END IF;
77192 
77193 
77194 
77195 --
77196 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
77197 
77198 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
77199 
77200 IF l_continue_with_lines THEN
77201    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
77202       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
77203 
77204       xla_accounting_err_pkg.build_message
77205          (p_appli_s_name            => 'XLA'
77206          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
77207          ,p_token_1                 => 'LINE_NUMBER'
77208          ,p_value_1                 => l_array_extract_line_num(Idx)
77209          ,p_token_2                 => 'PRODUCT_NAME'
77210          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
77211          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
77212          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
77213          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
77214 
77215    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
77216       --
77217       -- following sets the accounting attributes needed to reverse
77218       -- accounting for a distributeion
77219       --
77220 
77221       --
77222       -- 5217187
77223       --
77224       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
77225       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
77226                                        g_array_event(l_event_id).array_value_num('header_index'));
77227       --
77228       --
77229 
77230       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
77231       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
77232       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
77233       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
77234       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
77235       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
77236       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
77237       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
77238       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
77239       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
77240       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
77241       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
77242       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
77243       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
77244       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
77245       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
77246       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
77247       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
77251       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
77248       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
77249       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
77250       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
77252       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
77253       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
77254       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
77255       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
77256       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
77257       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
77258       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
77259       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
77260       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
77261       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
77262       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
77263       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
77264       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
77265       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
77266       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
77267       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
77268       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
77269       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
77270       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
77271       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
77272       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
77273       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
77274       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
77275       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
77276       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
77277       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
77278 
77279 
77280       xla_ae_lines_pkg.SetAcctReversalAttrs
77281          (p_event_id             => l_event_id
77282          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
77283          ,p_calculate_acctd_flag => l_calculate_acctd_flag
77284          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
77285    END IF;
77286 
77287    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
77288        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
77289 
77290 --
77291 AcctLineType_21 (
77292  p_application_id  => p_application_id
77293  ,p_event_id     => l_event_id
77294  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77295  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77296  ,p_actual_flag => l_actual_flag
77297  ,p_balance_type_code => l_balance_type_code
77298  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77299  
77300  , p_source_3 => l_array_source_3(Idx)
77301  , p_source_4 => l_array_source_4(Idx)
77302  , p_source_5 => l_array_source_5(Idx)
77303  , p_source_6 => l_array_source_6(Idx)
77304  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77305  , p_source_22 => l_array_source_22(Idx)
77306  , p_source_23 => l_array_source_23(Idx)
77307  , p_source_24 => l_array_source_24(Idx)
77308  , p_source_25 => l_array_source_25(Idx)
77309  , p_source_26 => l_array_source_26(Idx)
77310  , p_source_27 => l_array_source_27(Idx)
77311  , p_source_28 => l_array_source_28(Idx)
77312  , p_source_29 => l_array_source_29(Idx)
77313  , p_source_30 => l_array_source_30(Idx)
77314  , p_source_31 => l_array_source_31(Idx)
77315  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77316  , p_source_33 => l_array_source_33(Idx)
77317  , p_source_34 => l_array_source_34(Idx)
77318  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77319  , p_source_35 => l_array_source_35(Idx)
77320  );
77321 If(l_balance_type_code = 'A') THEN
77322   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77323 END IF;
77324 
77325 --
77326 
77327 
77328 --
77329 AcctLineType_22 (
77330  p_application_id  => p_application_id
77331  ,p_event_id     => l_event_id
77332  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77333  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77334  ,p_actual_flag => l_actual_flag
77335  ,p_balance_type_code => l_balance_type_code
77336  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77337  
77338  , p_source_3 => l_array_source_3(Idx)
77339  , p_source_4 => l_array_source_4(Idx)
77340  , p_source_6 => l_array_source_6(Idx)
77341  , p_source_7 => l_array_source_7(Idx)
77342  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77343  , p_source_22 => l_array_source_22(Idx)
77344  , p_source_23 => l_array_source_23(Idx)
77345  , p_source_24 => l_array_source_24(Idx)
77346  , p_source_25 => l_array_source_25(Idx)
77347  , p_source_26 => l_array_source_26(Idx)
77348  , p_source_27 => l_array_source_27(Idx)
77349  , p_source_28 => l_array_source_28(Idx)
77350  , p_source_29 => l_array_source_29(Idx)
77351  , p_source_30 => l_array_source_30(Idx)
77352  , p_source_31 => l_array_source_31(Idx)
77356  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77353  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77354  , p_source_33 => l_array_source_33(Idx)
77355  , p_source_34 => l_array_source_34(Idx)
77357  , p_source_35 => l_array_source_35(Idx)
77358  );
77359 If(l_balance_type_code = 'A') THEN
77360   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77361 END IF;
77362 
77363 --
77364 
77365 
77366 --
77367 AcctLineType_48 (
77368  p_application_id  => p_application_id
77369  ,p_event_id     => l_event_id
77370  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77371  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77372  ,p_actual_flag => l_actual_flag
77373  ,p_balance_type_code => l_balance_type_code
77374  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77375  
77376  , p_source_3 => l_array_source_3(Idx)
77377  , p_source_4 => l_array_source_4(Idx)
77378  , p_source_5 => l_array_source_5(Idx)
77379  , p_source_6 => l_array_source_6(Idx)
77380  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77381  , p_source_22 => l_array_source_22(Idx)
77382  , p_source_23 => l_array_source_23(Idx)
77383  , p_source_24 => l_array_source_24(Idx)
77384  , p_source_25 => l_array_source_25(Idx)
77385  , p_source_26 => l_array_source_26(Idx)
77386  , p_source_27 => l_array_source_27(Idx)
77387  , p_source_28 => l_array_source_28(Idx)
77388  , p_source_29 => l_array_source_29(Idx)
77389  , p_source_30 => l_array_source_30(Idx)
77390  , p_source_31 => l_array_source_31(Idx)
77391  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77392  , p_source_33 => l_array_source_33(Idx)
77393  , p_source_34 => l_array_source_34(Idx)
77394  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77395  , p_source_35 => l_array_source_35(Idx)
77396  );
77397 If(l_balance_type_code = 'A') THEN
77398   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77399 END IF;
77400 
77401 --
77402 
77403 
77404 --
77405 AcctLineType_59 (
77406  p_application_id  => p_application_id
77407  ,p_event_id     => l_event_id
77408  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77409  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77410  ,p_actual_flag => l_actual_flag
77411  ,p_balance_type_code => l_balance_type_code
77412  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77413  
77414  , p_source_3 => l_array_source_3(Idx)
77415  , p_source_4 => l_array_source_4(Idx)
77416  , p_source_6 => l_array_source_6(Idx)
77417  , p_source_7 => l_array_source_7(Idx)
77418  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
77419  , p_source_22 => l_array_source_22(Idx)
77420  , p_source_23 => l_array_source_23(Idx)
77421  , p_source_24 => l_array_source_24(Idx)
77422  , p_source_25 => l_array_source_25(Idx)
77423  , p_source_26 => l_array_source_26(Idx)
77424  , p_source_27 => l_array_source_27(Idx)
77425  , p_source_28 => l_array_source_28(Idx)
77426  , p_source_29 => l_array_source_29(Idx)
77427  , p_source_30 => l_array_source_30(Idx)
77428  , p_source_31 => l_array_source_31(Idx)
77429  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
77430  , p_source_33 => l_array_source_33(Idx)
77431  , p_source_34 => l_array_source_34(Idx)
77432  , p_source_34_meaning => l_array_source_34_meaning(Idx)
77433  , p_source_35 => l_array_source_35(Idx)
77434  );
77435 If(l_balance_type_code = 'A') THEN
77436   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77437 END IF;
77438 
77439 --
77440 
77441       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
77442       -- or secondary ledger that has different currency with primary
77443       -- or alc that is calculated by sla
77444       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
77445             (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'))
77446 
77447 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
77448 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
77449           AND (l_actual_flag = 'A')) THEN
77450         XLA_AE_LINES_PKG.CreateGainOrLossLines(
77451           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
77452          ,p_application_id   => p_application_id
77453          ,p_amb_context_code => 'DEFAULT'
77454          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
77455          ,p_event_class_code => C_EVENT_CLASS_CODE
77456          ,p_event_type_code  => C_EVENT_TYPE_CODE
77457          
77458          ,p_gain_ccid        => -1
77459          ,p_loss_ccid        => -1
77460 
77461          ,p_actual_flag      => l_actual_flag
77462          ,p_enc_flag         => null
77463          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
77464          ,p_enc_g_l_ref      => null
77465          );
77466       END IF;
77467    END IF;
77468 END IF;
77469 
77470    ELSE
77471       --
77472       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
77473       --
77474       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77475          trace
77476             (p_msg      => 'Trancaction revesal option is Y'
77477             ,p_level    => C_LEVEL_STATEMENT
77478             ,p_module   => l_log_module);
77479       END IF;
77480    END IF;
77481 
77485 close line_cur;
77482 END LOOP;
77483 l_result := XLA_AE_LINES_PKG.InsertLines ;
77484 end loop;
77486 
77487 
77488 --
77489 -- insert headers into xla_ae_headers_gt table
77490 --
77491 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
77492 
77493 -- insert into errors table here.
77494 
77495 END LOOP;
77496 
77497 --
77498 -- 4865292
77499 --
77500 -- Compare g_hdr_extract_count with event count in
77501 -- CreateHeadersAndLines.
77502 --
77503 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
77504 
77505 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77506    trace (p_msg     => '# rows extracted from header extract objects '
77507                     || ' (running total): '
77508                     || g_hdr_extract_count
77509          ,p_level   => C_LEVEL_STATEMENT
77510          ,p_module  => l_log_module);
77511 END IF;
77512 
77513 CLOSE header_cur;
77514 --
77515 
77516 --
77517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77518    trace
77519       (p_msg      => 'END of EventClass_125'
77520       ,p_level    => C_LEVEL_PROCEDURE
77521       ,p_module   => l_log_module);
77522 END IF;
77523 --
77524 RETURN l_result;
77525 EXCEPTION
77526 WHEN xla_exceptions_pkg.application_exception THEN
77527    
77528 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
77529 
77530    
77531 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
77532 
77533    RAISE;
77534 WHEN OTHERS THEN
77535    xla_exceptions_pkg.raise_message
77536       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_125');
77537 END EventClass_125;
77538 --
77539 
77540 ---------------------------------------
77541 --
77542 -- PRIVATE PROCEDURE
77543 --         insert_sources_126
77544 --
77545 ----------------------------------------
77546 --
77547 PROCEDURE insert_sources_126(
77548                                 p_target_ledger_id       IN NUMBER
77549                               , p_language               IN VARCHAR2
77550                               , p_sla_ledger_id          IN NUMBER
77551                               , p_pad_start_date         IN DATE
77552                               , p_pad_end_date           IN DATE
77553                          )
77554 IS
77555 
77556 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ALL';
77557 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST';
77558 p_apps_owner                   VARCHAR2(30);
77559 l_log_module                   VARCHAR2(240);
77560 BEGIN
77561 IF g_log_enabled THEN
77562       l_log_module := C_DEFAULT_MODULE||'.insert_sources_126';
77563 END IF;
77564 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77565 
77566       trace
77567          (p_msg      => 'BEGIN of insert_sources_126'
77568          ,p_level    => C_LEVEL_PROCEDURE
77569          ,p_module   => l_log_module);
77570 
77571 END IF;
77572 
77573 -- select APPS owner
77574 SELECT oracle_username
77575   INTO p_apps_owner
77576   FROM fnd_oracle_userid
77577  WHERE read_only_flag = 'U'
77578 ;
77579 
77580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77581       trace
77582          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
77583                         ' - p_language = '||p_language||
77584                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
77585                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
77586                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
77587                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
77588          ,p_level    => C_LEVEL_STATEMENT
77589          ,p_module   => l_log_module);
77590 END IF;
77591 
77592 
77593 --
77594 INSERT INTO xla_diag_sources --hdr2
77595 (
77596         event_id
77597       , ledger_id
77598       , sla_ledger_id
77599       , description_language
77600       , object_name
77601       , object_type_code
77602       , line_number
77603       , source_application_id
77604       , source_type_code
77605       , source_code
77606       , source_value
77607       , source_meaning
77608       , created_by
77609       , creation_date
77610       , last_update_date
77611       , last_updated_by
77612       , last_update_login
77613       , program_update_date
77614       , program_application_id
77615       , program_id
77616       , request_id
77617 )
77618 SELECT
77619         event_id
77620       , p_target_ledger_id
77621       , p_sla_ledger_id
77622       , p_language
77623       , object_name
77624       , object_type_code
77625       , line_number
77626       , source_application_id
77627       , source_type_code
77628       , source_code
77629       , SUBSTR(source_value ,1,1996)
77630       , SUBSTR(source_meaning ,1,200)
77631       , xla_environment_pkg.g_Usr_Id
77632       , TRUNC(SYSDATE)
77633       , TRUNC(SYSDATE)
77634       , xla_environment_pkg.g_Usr_Id
77635       , xla_environment_pkg.g_Login_Id
77636       , TRUNC(SYSDATE)
77637       , xla_environment_pkg.g_Prog_Appl_Id
77638       , xla_environment_pkg.g_Prog_Id
77639       , xla_environment_pkg.g_Req_Id
77640   FROM (
77641        SELECT xet.event_id                  event_id
77645                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
77642             , 0                          line_number
77643             , CASE r
77644                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
77646                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
77647                 
77648                ELSE null
77649               END                           object_name
77650             , CASE r
77651                 WHEN 1 THEN 'HEADER' 
77652                 WHEN 2 THEN 'HEADER' 
77653                 WHEN 3 THEN 'HEADER' 
77654                 
77655                 ELSE null
77656               END                           object_type_code
77657             , CASE r
77658                 WHEN 1 THEN '275' 
77659                 WHEN 2 THEN '275' 
77660                 WHEN 3 THEN '275' 
77661                 
77662                 ELSE null
77663               END                           source_application_id
77664             , 'S'             source_type_code
77665             , CASE r
77666                 WHEN 1 THEN 'EXCHANGE_RATE_VARIANCE_FLAG' 
77667                 WHEN 2 THEN 'EXPENDITURE_ITEM_ID' 
77668                 WHEN 3 THEN 'GL_DATE' 
77669                 
77670                 ELSE null
77671               END                           source_code
77672             , CASE r
77673                 WHEN 1 THEN TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
77674                 WHEN 2 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
77675                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
77676                 
77677                 ELSE null
77678               END                           source_value
77679             , CASE r
77680                 WHEN 1 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
77681                           103371
77682                          ,TO_CHAR(h2.EXCHANGE_RATE_VARIANCE_FLAG)
77683                          ,'EXCHANGE_RATE_VARIANCE_FLAG'
77684                          ,'S'
77685                          ,275)
77686                 
77687                 ELSE null
77688               END               source_meaning
77689          FROM xla_events_gt     xet  
77690       , PA_XLA_EXP_HEADER_V  h2
77691              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
77692          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77693            AND xet.event_class_code = C_EVENT_CLASS_CODE
77694               AND h2.event_id = xet.event_id
77695 
77696 )
77697 ;
77698 --
77699 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77700 
77701       trace
77702          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
77703          ,p_level    => C_LEVEL_STATEMENT
77704          ,p_module   => l_log_module);
77705 
77706 END IF;
77707 --
77708 
77709 
77710 
77711 --
77712 INSERT INTO xla_diag_sources  --line2
77713 (
77714         event_id
77715       , ledger_id
77716       , sla_ledger_id
77717       , description_language
77718       , object_name
77719       , object_type_code
77720       , line_number
77721       , source_application_id
77722       , source_type_code
77723       , source_code
77724       , source_value
77725       , source_meaning
77726       , created_by
77727       , creation_date
77728       , last_update_date
77729       , last_updated_by
77730       , last_update_login
77731       , program_update_date
77732       , program_application_id
77733       , program_id
77734       , request_id
77735 )
77736 SELECT  event_id
77737       , p_target_ledger_id
77738       , p_sla_ledger_id
77739       , p_language
77740       , object_name
77741       , object_type_code
77742       , line_number
77743       , source_application_id
77744       , source_type_code
77745       , source_code
77746       , SUBSTR(source_value,1,1996)
77747       , SUBSTR(source_meaning ,1,200)
77748       , xla_environment_pkg.g_Usr_Id
77749       , TRUNC(SYSDATE)
77750       , TRUNC(SYSDATE)
77751       , xla_environment_pkg.g_Usr_Id
77752       , xla_environment_pkg.g_Login_Id
77753       , TRUNC(SYSDATE)
77754       , xla_environment_pkg.g_Prog_Appl_Id
77755       , xla_environment_pkg.g_Prog_Id
77756       , xla_environment_pkg.g_Req_Id
77757   FROM (
77758        SELECT xet.event_id                  event_id
77759             , l1.line_number                 line_number
77760             , CASE r
77761                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
77762                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
77763                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
77764                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
77765                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
77766                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
77767                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
77768                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
77769                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
77770                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
77771                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
77772                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
77773                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
77774                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
77775                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
77776                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
77777                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
77781               END                           object_name
77778                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
77779                 
77780                ELSE null
77782             , CASE r
77783                 WHEN 1 THEN 'LINE' 
77784                 WHEN 2 THEN 'LINE' 
77785                 WHEN 3 THEN 'LINE' 
77786                 WHEN 4 THEN 'LINE' 
77787                 WHEN 5 THEN 'LINE' 
77788                 WHEN 6 THEN 'LINE' 
77789                 WHEN 7 THEN 'LINE' 
77790                 WHEN 8 THEN 'LINE' 
77791                 WHEN 9 THEN 'LINE' 
77792                 WHEN 10 THEN 'LINE' 
77793                 WHEN 11 THEN 'LINE' 
77794                 WHEN 12 THEN 'LINE' 
77795                 WHEN 13 THEN 'LINE' 
77796                 WHEN 14 THEN 'LINE' 
77797                 WHEN 15 THEN 'LINE' 
77798                 WHEN 16 THEN 'LINE' 
77799                 WHEN 17 THEN 'LINE' 
77800                 WHEN 18 THEN 'LINE' 
77801                 
77802                 ELSE null
77803               END                           object_type_code
77804             , CASE r
77805                 WHEN 1 THEN '275' 
77806                 WHEN 2 THEN '275' 
77807                 WHEN 3 THEN '275' 
77808                 WHEN 4 THEN '275' 
77809                 WHEN 5 THEN '275' 
77810                 WHEN 6 THEN '275' 
77811                 WHEN 7 THEN '275' 
77812                 WHEN 8 THEN '275' 
77813                 WHEN 9 THEN '275' 
77814                 WHEN 10 THEN '275' 
77815                 WHEN 11 THEN '275' 
77816                 WHEN 12 THEN '275' 
77817                 WHEN 13 THEN '275' 
77818                 WHEN 14 THEN '275' 
77819                 WHEN 15 THEN '275' 
77820                 WHEN 16 THEN '275' 
77821                 WHEN 17 THEN '275' 
77822                 WHEN 18 THEN '275' 
77823                 
77824                 ELSE null
77825               END                           source_application_id
77826             , 'S'             source_type_code
77827             , CASE r
77828                 WHEN 1 THEN 'COST_CCID' 
77829                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
77830                 WHEN 3 THEN 'ADJ_COST_CCID' 
77831                 WHEN 4 THEN 'COST_CLEARING_CCID' 
77832                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
77833                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
77834                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
77835                 WHEN 8 THEN 'ENTERED_RAW_COST' 
77836                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
77837                 WHEN 10 THEN 'ACCT_RAW_COST' 
77838                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
77839                 WHEN 12 THEN 'EXCHANGE_RATE' 
77840                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
77841                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
77842                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
77843                 WHEN 16 THEN 'LINE_NUMBER' 
77844                 WHEN 17 THEN 'LINE_TYPE' 
77845                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
77846                 
77847                 ELSE null
77848               END                           source_code
77849             , CASE r
77850                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
77851                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
77852                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
77853                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
77854                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
77855                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
77856                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
77857                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
77858                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
77859                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
77860                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
77861                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
77862                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
77863                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
77864                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
77865                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
77866                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
77867                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
77868                 
77869                 ELSE null
77870               END                           source_value
77871             , CASE r
77872                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
77873                           103371
77874                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
77875                          ,'ALLOW_OVERRIDE_CCID_FLAG'
77876                          ,'S'
77877                          ,275)
77878                 WHEN 17 THEN fvl34.meaning
77879                 
77880                 ELSE null
77881               END               source_meaning
77882          FROM  xla_events_gt     xet  
77883         , PA_XLA_CDL_LINES_V  l1
77884   , fnd_lookup_values    fvl34
77885             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
77886         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77887           AND xet.event_class_code = C_EVENT_CLASS_CODE
77888             AND l1.event_id          = xet.event_id
77889    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
77890   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
77891   AND fvl34.view_application_id(+) = 275
77895 ;
77892   AND fvl34.language(+)            = USERENV('LANG')
77893   
77894 )
77896 --
77897 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77898 
77899       trace
77900          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
77901          ,p_level    => C_LEVEL_STATEMENT
77902          ,p_module   => l_log_module);
77903 
77904 END IF;
77905 
77906 
77907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77908       trace
77909          (p_msg      => 'END of insert_sources_126'
77910          ,p_level    => C_LEVEL_PROCEDURE
77911          ,p_module   => l_log_module);
77912 END IF;
77913 EXCEPTION
77914   WHEN xla_exceptions_pkg.application_exception THEN
77915       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
77916             trace
77917                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
77918                ,p_level    => C_LEVEL_EXCEPTION
77919                ,p_module   => l_log_module);
77920       END IF;
77921       RAISE;
77922   WHEN OTHERS THEN
77923       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
77924             trace
77925                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
77926                ,p_level    => C_LEVEL_EXCEPTION
77927                ,p_module   => l_log_module);
77928        END IF;
77929        xla_exceptions_pkg.raise_message
77930            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_126');
77931 END insert_sources_126;
77932 --
77933 
77934 ---------------------------------------
77935 --
77936 -- PRIVATE FUNCTION
77937 --         EventClass_126
77938 --
77939 ----------------------------------------
77940 --
77941 FUNCTION EventClass_126
77942        (p_application_id         IN NUMBER
77943        ,p_base_ledger_id         IN NUMBER
77944        ,p_target_ledger_id       IN NUMBER
77945        ,p_language               IN VARCHAR2
77946        ,p_currency_code          IN VARCHAR2
77947        ,p_sla_ledger_id          IN NUMBER
77948        ,p_pad_start_date         IN DATE
77949        ,p_pad_end_date           IN DATE
77950        ,p_primary_ledger_id      IN NUMBER)
77951 RETURN BOOLEAN IS
77952 --
77953 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ALL';
77954 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST';
77955 
77956 l_calculate_acctd_flag   VARCHAR2(1) :='N';
77957 l_calculate_g_l_flag     VARCHAR2(1) :='N';
77958 --
77959 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77960 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77961 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77962 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77963 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77964 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77965 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77966 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77967 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77968 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77969 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77970 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77971 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77972 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77973 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77974 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77975 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77976 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77977 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77978 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77979 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77980 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77981 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
77982 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77983 
77984 l_event_id                             NUMBER;
77985 l_previous_event_id                    NUMBER;
77986 l_first_event_id                       NUMBER;
77987 l_last_event_id                        NUMBER;
77988 
77989 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
77990 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
77991 --
77992 --
77993 l_result                    BOOLEAN := TRUE;
77994 l_rows                      NUMBER  := 1000;
77995 l_event_type_name           VARCHAR2(80) := 'All';
77996 l_event_class_name          VARCHAR2(80) := 'Supplier Cost';
77997 l_description               VARCHAR2(4000);
77998 l_transaction_reversal      NUMBER;
77999 l_ae_header_id              NUMBER;
78000 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
78001 l_log_module                VARCHAR2(240);
78002 --
78003 l_acct_reversal_source      VARCHAR2(30);
78004 l_trx_reversal_source       VARCHAR2(30);
78005 
78006 l_continue_with_lines       BOOLEAN := TRUE;
78007 --
78008 l_acc_rev_gl_date_source    DATE;                      -- 4262811
78009 --
78013 l_null_rec_array_event               t_rec_array_event;
78010 type t_array_event_id is table of number index by binary_integer;
78011 
78012 l_rec_array_event                    t_rec_array_event;
78014 l_array_ae_header_id                 xla_number_array_type;
78015 l_actual_flag                        VARCHAR2(1) := NULL;
78016 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
78017 l_balance_type_code                  VARCHAR2(1) :=NULL;
78018 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
78019 
78020 --
78021 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
78022 --
78023 
78024 TYPE t_array_source_21 IS TABLE OF PA_XLA_EXP_HEADER_V.EXCHANGE_RATE_VARIANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
78025 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
78026 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
78027 
78028 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
78029 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
78030 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
78031 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
78032 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
78033 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
78034 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78035 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
78036 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
78037 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
78038 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
78039 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
78040 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
78041 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78042 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
78043 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
78044 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
78045 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
78046 
78047 l_array_source_21              t_array_source_21;
78048 l_array_source_32              t_array_source_32;
78049 l_array_source_87              t_array_source_87;
78050 
78051 l_array_source_3      t_array_source_3;
78052 l_array_source_4      t_array_source_4;
78053 l_array_source_5      t_array_source_5;
78054 l_array_source_6      t_array_source_6;
78055 l_array_source_7      t_array_source_7;
78056 l_array_source_22      t_array_source_22;
78057 l_array_source_23      t_array_source_23;
78058 l_array_source_24      t_array_source_24;
78059 l_array_source_25      t_array_source_25;
78060 l_array_source_26      t_array_source_26;
78061 l_array_source_27      t_array_source_27;
78062 l_array_source_28      t_array_source_28;
78063 l_array_source_29      t_array_source_29;
78064 l_array_source_30      t_array_source_30;
78065 l_array_source_31      t_array_source_31;
78066 l_array_source_33      t_array_source_33;
78067 l_array_source_34      t_array_source_34;
78068 l_array_source_34_meaning      t_array_lookup_meaning;
78069 l_array_source_35      t_array_source_35;
78070 
78071 --
78072 CURSOR header_cur
78073 IS
78074 SELECT /*+ leading(xet) cardinality(xet,1) */
78075 -- Event Class Code: SUPPLIER_COST
78076     xet.entity_id
78077    ,xet.legal_entity_id
78078    ,xet.entity_code
78079    ,xet.transaction_number
78080    ,xet.event_id
78081    ,xet.event_class_code
78082    ,xet.event_type_code
78083    ,xet.event_number
78084    ,xet.event_date
78085    ,xet.transaction_date
78086    ,xet.reference_num_1
78087    ,xet.reference_num_2
78088    ,xet.reference_num_3
78089    ,xet.reference_num_4
78090    ,xet.reference_char_1
78091    ,xet.reference_char_2
78092    ,xet.reference_char_3
78093    ,xet.reference_char_4
78094    ,xet.reference_date_1
78095    ,xet.reference_date_2
78096    ,xet.reference_date_3
78097    ,xet.reference_date_4
78098    ,xet.event_created_by
78099    ,xet.budgetary_control_flag 
78100   , h2.EXCHANGE_RATE_VARIANCE_FLAG    source_21
78101   , h2.EXPENDITURE_ITEM_ID    source_32
78102   , h2.GL_DATE    source_87
78103   FROM xla_events_gt     xet 
78104   , PA_XLA_EXP_HEADER_V  h2
78105  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
78106    and xet.event_class_code = C_EVENT_CLASS_CODE
78107    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
78108 
78109  ORDER BY event_id
78110 ;
78111 
78112 
78113 --
78114 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
78115 IS
78116 SELECT  /*+ leading(xet) cardinality(xet,1) */
78117 -- Event Class Code: SUPPLIER_COST
78118     xet.entity_id
78119    ,xet.legal_entity_id
78120    ,xet.entity_code
78121    ,xet.transaction_number
78125    ,xet.event_number
78122    ,xet.event_id
78123    ,xet.event_class_code
78124    ,xet.event_type_code
78126    ,xet.event_date
78127    ,xet.transaction_date
78128    ,xet.reference_num_1
78129    ,xet.reference_num_2
78130    ,xet.reference_num_3
78131    ,xet.reference_num_4
78132    ,xet.reference_char_1
78133    ,xet.reference_char_2
78134    ,xet.reference_char_3
78135    ,xet.reference_char_4
78136    ,xet.reference_date_1
78137    ,xet.reference_date_2
78138    ,xet.reference_date_3
78139    ,xet.reference_date_4
78140    ,xet.event_created_by
78141    ,xet.budgetary_control_flag
78142  , l1.LINE_NUMBER  
78143   , l1.COST_CCID    source_3
78144   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
78145   , l1.ADJ_COST_CCID    source_5
78146   , l1.COST_CLEARING_CCID    source_6
78147   , l1.ADJ_COST_CLEARING_CCID    source_7
78148   , l1.REVERSING_LINE_FLAG    source_22
78149   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
78150   , l1.ENTERED_RAW_COST    source_24
78151   , l1.ENTERED_CURRENCY_CODE    source_25
78152   , l1.ACCT_RAW_COST    source_26
78153   , l1.EXCHANGE_RATE_DATE    source_27
78154   , l1.EXCHANGE_RATE    source_28
78155   , l1.EXCHANGE_RATE_TYPE    source_29
78156   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
78157   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
78158   , l1.LINE_NUMBER    source_33
78159   , l1.LINE_TYPE    source_34
78160   , fvl34.meaning   source_34_meaning
78161   , l1.LINE_NUM_REVERSED    source_35
78162   FROM xla_events_gt     xet 
78163   , PA_XLA_CDL_LINES_V  l1
78164   , fnd_lookup_values    fvl34
78165  WHERE xet.event_id between x_first_event_id and x_last_event_id
78166    and xet.event_date between p_pad_start_date and p_pad_end_date
78167    and xet.event_class_code = C_EVENT_CLASS_CODE
78168    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
78169    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
78170   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
78171   AND fvl34.view_application_id(+) = 275
78172   AND fvl34.language(+)            = USERENV('LANG')
78173   ;
78174 
78175 --
78176 BEGIN
78177 IF g_log_enabled THEN
78178    l_log_module := C_DEFAULT_MODULE||'.EventClass_126';
78179 END IF;
78180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78181    trace
78182       (p_msg      => 'BEGIN of EventClass_126'
78183       ,p_level    => C_LEVEL_PROCEDURE
78184       ,p_module   => l_log_module);
78185 END IF;
78186 
78187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78188    trace
78189       (p_msg      => 'p_application_id = '||p_application_id||
78190                      ' - p_base_ledger_id = '||p_base_ledger_id||
78191                      ' - p_target_ledger_id  = '||p_target_ledger_id||
78192                      ' - p_language = '||p_language||
78193                      ' - p_currency_code = '||p_currency_code||
78194                      ' - p_sla_ledger_id = '||p_sla_ledger_id
78195       ,p_level    => C_LEVEL_STATEMENT
78196       ,p_module   => l_log_module);
78197 END IF;
78198 --
78199 -- initialze arrays
78200 --
78201 g_array_event.DELETE;
78202 l_rec_array_event := l_null_rec_array_event;
78203 --
78204 --------------------------------------
78205 -- 4262811 Initialze MPA Line Number
78206 --------------------------------------
78207 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
78208 
78209 --
78210 
78211 --
78212 OPEN header_cur;
78213 --
78214 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78215    trace
78216    (p_msg      => 'SQL - FETCH header_cur'
78217    ,p_level    => C_LEVEL_STATEMENT
78218    ,p_module   => l_log_module);
78219 END IF;
78220 --
78221 LOOP
78222 FETCH header_cur BULK COLLECT INTO
78223         l_array_entity_id
78224       , l_array_legal_entity_id
78225       , l_array_entity_code
78226       , l_array_transaction_num
78227       , l_array_event_id
78228       , l_array_class_code
78229       , l_array_event_type
78230       , l_array_event_number
78231       , l_array_event_date
78232       , l_array_transaction_date
78233       , l_array_reference_num_1
78234       , l_array_reference_num_2
78235       , l_array_reference_num_3
78236       , l_array_reference_num_4
78237       , l_array_reference_char_1
78238       , l_array_reference_char_2
78239       , l_array_reference_char_3
78240       , l_array_reference_char_4
78241       , l_array_reference_date_1
78242       , l_array_reference_date_2
78243       , l_array_reference_date_3
78244       , l_array_reference_date_4
78245       , l_array_event_created_by
78246       , l_array_budgetary_control_flag 
78247       , l_array_source_21
78248       , l_array_source_32
78249       , l_array_source_87
78250       LIMIT l_rows;
78251 --
78252 IF (C_LEVEL_EVENT >= g_log_level) THEN
78253    trace
78254    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
78255    ,p_level    => C_LEVEL_EVENT
78256    ,p_module   => l_log_module);
78257 END IF;
78258 --
78259 EXIT WHEN l_array_entity_id.COUNT = 0;
78260 
78261 -- initialize arrays
78262 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
78263 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
78264 
78265 --
78266 -- Bug 4458708
78267 --
78268 XLA_AE_LINES_PKG.g_LineNumber := 0;
78269 
78270 
78274 -- loop for the headers. Each iteration is for each header extract row
78271 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
78272 g_last_hdr_idx := l_array_event_id.LAST;
78273 --
78275 -- fetched in header cursor
78276 --
78277 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
78278 
78279 --
78280 -- set event info as cache for other routines to refer event attributes
78281 --
78282 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78283    (p_application_id           => p_application_id
78284    ,p_primary_ledger_id        => p_primary_ledger_id
78285    ,p_base_ledger_id           => p_base_ledger_id
78286    ,p_target_ledger_id         => p_target_ledger_id
78287    ,p_entity_id                => l_array_entity_id(hdr_idx)
78288    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
78289    ,p_entity_code              => l_array_entity_code(hdr_idx)
78290    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
78291    ,p_event_id                 => l_array_event_id(hdr_idx)
78292    ,p_event_class_code         => l_array_class_code(hdr_idx)
78293    ,p_event_type_code          => l_array_event_type(hdr_idx)
78294    ,p_event_number             => l_array_event_number(hdr_idx)
78295    ,p_event_date               => l_array_event_date(hdr_idx)
78296    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
78297    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
78298    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
78299    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
78300    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
78301    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
78302    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
78303    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
78304    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
78305    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
78306    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
78307    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
78308    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
78309    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
78310    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
78311 
78312 --
78313 -- set the status of entry to C_VALID (0)
78314 --
78315 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78316 
78317 --
78318 -- initialize a row for ae header
78319 --
78320 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
78321 
78322 l_event_id := l_array_event_id(hdr_idx);
78323 
78324 --
78325 -- storing the hdr_idx for event. May be used by line cursor.
78326 --
78327 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
78328 
78329 --
78330 -- store sources from header extract. This can be improved to
78331 -- store only those sources from header extract that may be used in lines
78332 --
78333 
78334 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
78335 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
78336 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
78337 
78338 --
78339 -- initilaize the status of ae headers for diffrent balance types
78340 -- the status is initialised to C_NOT_CREATED (2)
78341 --
78342 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78343 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78344 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78345 
78346 --
78347 -- call api to validate and store accounting attributes for header
78348 --
78349 
78350 ------------------------------------------------------------
78351 -- Accrual Reversal : to get date for Standard Source (NONE)
78352 ------------------------------------------------------------
78353 l_acc_rev_gl_date_source := NULL;
78354 
78355      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
78356       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
78357 
78358 
78359 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
78360 
78361 XLA_AE_HEADER_PKG.SetJeCategoryName;
78362 
78363 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
78364 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
78365 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
78366 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
78367 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
78368 
78369 
78370 -- No header level analytical criteria
78371 
78372 --
78373 --accounting attribute enhancement, bug 3612931
78374 --
78375 l_trx_reversal_source := SUBSTR(NULL, 1,30);
78376 
78377 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
78378    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78379 
78380    xla_accounting_err_pkg.build_message
78381       (p_appli_s_name            => 'XLA'
78382       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
78386       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78383       ,p_token_1                 => 'ACCT_ATTR_NAME'
78384       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
78385       ,p_token_2                 => 'PRODUCT_NAME'
78387       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78388       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78389       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78390 
78391 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
78392    --
78393    -- following sets the accounting attributes needed to reverse
78394    -- accounting for a distributeion
78395    --
78396    xla_ae_lines_pkg.SetTrxReversalAttrs
78397       (p_event_id              => l_event_id
78398       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
78399       ,p_trx_reversal_source   => l_trx_reversal_source);
78400 
78401 END IF;
78402 
78403 
78404 ----------------------------------------------------------------
78405 -- 4262811 -  update the header statuses to invalid in need be
78406 ----------------------------------------------------------------
78407 --
78408 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
78409 
78410 
78411   -----------------------------------------------
78412   -- No accrual reversal for the event class/type
78413   -----------------------------------------------
78414 ----------------------------------------------------------------
78415 
78416 --
78417 -- this ends the header loop iteration for one bulk fetch
78418 --
78419 END LOOP;
78420 
78421 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
78422 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
78423 
78424 --
78425 -- insert dummy rows into lines gt table that were created due to
78426 -- transaction reversals
78427 --
78428 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
78429    l_result := XLA_AE_LINES_PKG.InsertLines;
78430 END IF;
78431 
78432 --
78433 -- reset the temp_line_num for each set of events fetched from header
78434 -- cursor rather than doing it for each new event in line cursor
78435 -- Bug 3939231
78436 --
78437 xla_ae_lines_pkg.g_temp_line_num := 0;
78438 
78439 
78440 
78441 --
78442 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
78443 --
78444 --
78445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78446 
78447       trace
78448          (p_msg      => 'SQL - FETCH line_cur'
78449          ,p_level    => C_LEVEL_STATEMENT
78450          ,p_module   => l_log_module);
78451 
78452 END IF;
78453 --
78454 --
78455 LOOP
78456   --
78457   FETCH line_cur BULK COLLECT INTO
78458         l_array_entity_id
78459       , l_array_legal_entity_id
78460       , l_array_entity_code
78461       , l_array_transaction_num
78462       , l_array_event_id
78463       , l_array_class_code
78464       , l_array_event_type
78465       , l_array_event_number
78466       , l_array_event_date
78467       , l_array_transaction_date
78468       , l_array_reference_num_1
78469       , l_array_reference_num_2
78470       , l_array_reference_num_3
78471       , l_array_reference_num_4
78472       , l_array_reference_char_1
78473       , l_array_reference_char_2
78474       , l_array_reference_char_3
78475       , l_array_reference_char_4
78476       , l_array_reference_date_1
78477       , l_array_reference_date_2
78478       , l_array_reference_date_3
78479       , l_array_reference_date_4
78480       , l_array_event_created_by
78481       , l_array_budgetary_control_flag
78482       , l_array_extract_line_num 
78483       , l_array_source_3
78484       , l_array_source_4
78485       , l_array_source_5
78486       , l_array_source_6
78487       , l_array_source_7
78488       , l_array_source_22
78489       , l_array_source_23
78490       , l_array_source_24
78491       , l_array_source_25
78492       , l_array_source_26
78493       , l_array_source_27
78494       , l_array_source_28
78495       , l_array_source_29
78496       , l_array_source_30
78497       , l_array_source_31
78498       , l_array_source_33
78499       , l_array_source_34
78500       , l_array_source_34_meaning
78501       , l_array_source_35
78502       LIMIT l_rows;
78503 
78504   --
78505   IF (C_LEVEL_EVENT >= g_log_level) THEN
78506             trace
78507                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
78508                ,p_level    => C_LEVEL_EVENT
78509                ,p_module   => l_log_module);
78510   END IF;
78511   --
78512   EXIT WHEN l_array_entity_id.count = 0;
78513 
78514   XLA_AE_LINES_PKG.g_rec_lines := null;
78515 
78516 --
78517 -- Bug 4458708
78518 --
78519 XLA_AE_LINES_PKG.g_LineNumber := 0;
78520 --
78521 --
78522 
78523 FOR Idx IN 1..l_array_event_id.count LOOP
78524    --
78525    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
78526    --
78527    l_event_id := l_array_event_id(idx);  -- 5648433
78528 
78529    --
78533    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
78530    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78531    --
78532 
78534              (g_array_event(l_event_id).array_value_num('header_index'))
78535          ,'N'
78536          ) <> 'Y'
78537    THEN
78538       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78539          trace
78540             (p_msg      => 'Trancaction revesal option is not Y '
78541             ,p_level    => C_LEVEL_STATEMENT
78542             ,p_module   => l_log_module);
78543       END IF;
78544 
78545 --
78546 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
78547 --
78548 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78549 --
78550 -- set event info as cache for other routines to refer event attributes
78551 --
78552 
78553 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
78554    l_previous_event_id := l_event_id;
78555 
78556    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78557       (p_application_id           => p_application_id
78558       ,p_primary_ledger_id        => p_primary_ledger_id
78559       ,p_base_ledger_id           => p_base_ledger_id
78560       ,p_target_ledger_id         => p_target_ledger_id
78561       ,p_entity_id                => l_array_entity_id(Idx)
78562       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
78563       ,p_entity_code              => l_array_entity_code(Idx)
78564       ,p_transaction_num          => l_array_transaction_num(Idx)
78565       ,p_event_id                 => l_array_event_id(Idx)
78566       ,p_event_class_code         => l_array_class_code(Idx)
78567       ,p_event_type_code          => l_array_event_type(Idx)
78568       ,p_event_number             => l_array_event_number(Idx)
78569       ,p_event_date               => l_array_event_date(Idx)
78570       ,p_transaction_date         => l_array_transaction_date(Idx)
78571       ,p_reference_num_1          => l_array_reference_num_1(Idx)
78572       ,p_reference_num_2          => l_array_reference_num_2(Idx)
78573       ,p_reference_num_3          => l_array_reference_num_3(Idx)
78574       ,p_reference_num_4          => l_array_reference_num_4(Idx)
78575       ,p_reference_char_1         => l_array_reference_char_1(Idx)
78576       ,p_reference_char_2         => l_array_reference_char_2(Idx)
78577       ,p_reference_char_3         => l_array_reference_char_3(Idx)
78578       ,p_reference_char_4         => l_array_reference_char_4(Idx)
78579       ,p_reference_date_1         => l_array_reference_date_1(Idx)
78580       ,p_reference_date_2         => l_array_reference_date_2(Idx)
78581       ,p_reference_date_3         => l_array_reference_date_3(Idx)
78582       ,p_reference_date_4         => l_array_reference_date_4(Idx)
78583       ,p_event_created_by         => l_array_event_created_by(Idx)
78584       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
78585        --
78586 END IF;
78587 
78588 
78589 
78590 --
78591 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
78592 
78593 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
78594 
78595 IF l_continue_with_lines THEN
78596    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
78597       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78598 
78599       xla_accounting_err_pkg.build_message
78600          (p_appli_s_name            => 'XLA'
78601          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
78602          ,p_token_1                 => 'LINE_NUMBER'
78603          ,p_value_1                 => l_array_extract_line_num(Idx)
78604          ,p_token_2                 => 'PRODUCT_NAME'
78605          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78606          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78607          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78608          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78609 
78610    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
78611       --
78612       -- following sets the accounting attributes needed to reverse
78613       -- accounting for a distributeion
78614       --
78615 
78616       --
78617       -- 5217187
78618       --
78619       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
78620       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
78621                                        g_array_event(l_event_id).array_value_num('header_index'));
78622       --
78623       --
78624 
78625       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
78626       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
78627       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
78628       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
78629       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
78630       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
78631       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
78632       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
78633       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
78634       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
78638       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
78635       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
78636       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
78637       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
78639       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
78640       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
78641       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
78642       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
78643       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
78644       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
78645       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
78646       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
78647       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
78648       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
78649       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
78650       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
78651       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
78652       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
78653       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
78654       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
78655       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
78656       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
78657       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
78658       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
78659       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
78660       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
78661       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
78662       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
78663       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
78664       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
78665       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
78666       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
78667       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
78668       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
78669       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
78670       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
78671       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
78672       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
78673 
78674 
78675       xla_ae_lines_pkg.SetAcctReversalAttrs
78676          (p_event_id             => l_event_id
78677          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
78678          ,p_calculate_acctd_flag => l_calculate_acctd_flag
78679          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
78680    END IF;
78681 
78682    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
78683        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
78684 
78685 --
78686 AcctLineType_20 (
78687  p_application_id  => p_application_id
78688  ,p_event_id     => l_event_id
78689  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78690  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78691  ,p_actual_flag => l_actual_flag
78692  ,p_balance_type_code => l_balance_type_code
78693  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78694  
78695  , p_source_3 => l_array_source_3(Idx)
78696  , p_source_4 => l_array_source_4(Idx)
78697  , p_source_5 => l_array_source_5(Idx)
78698  , p_source_6 => l_array_source_6(Idx)
78699  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78700  , p_source_22 => l_array_source_22(Idx)
78701  , p_source_23 => l_array_source_23(Idx)
78702  , p_source_24 => l_array_source_24(Idx)
78703  , p_source_25 => l_array_source_25(Idx)
78704  , p_source_26 => l_array_source_26(Idx)
78705  , p_source_27 => l_array_source_27(Idx)
78706  , p_source_28 => l_array_source_28(Idx)
78707  , p_source_29 => l_array_source_29(Idx)
78708  , p_source_30 => l_array_source_30(Idx)
78709  , p_source_31 => l_array_source_31(Idx)
78710  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78711  , p_source_33 => l_array_source_33(Idx)
78712  , p_source_34 => l_array_source_34(Idx)
78713  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78714  , p_source_35 => l_array_source_35(Idx)
78715  );
78716 If(l_balance_type_code = 'A') THEN
78717   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78718 END IF;
78719 
78720 --
78721 
78722 
78723 --
78724 AcctLineType_23 (
78725  p_application_id  => p_application_id
78726  ,p_event_id     => l_event_id
78727  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78728  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78729  ,p_actual_flag => l_actual_flag
78730  ,p_balance_type_code => l_balance_type_code
78731  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78732  
78733  , p_source_3 => l_array_source_3(Idx)
78737  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78734  , p_source_4 => l_array_source_4(Idx)
78735  , p_source_6 => l_array_source_6(Idx)
78736  , p_source_7 => l_array_source_7(Idx)
78738  , p_source_22 => l_array_source_22(Idx)
78739  , p_source_23 => l_array_source_23(Idx)
78740  , p_source_24 => l_array_source_24(Idx)
78741  , p_source_25 => l_array_source_25(Idx)
78742  , p_source_26 => l_array_source_26(Idx)
78743  , p_source_27 => l_array_source_27(Idx)
78744  , p_source_28 => l_array_source_28(Idx)
78745  , p_source_29 => l_array_source_29(Idx)
78746  , p_source_30 => l_array_source_30(Idx)
78747  , p_source_31 => l_array_source_31(Idx)
78748  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78749  , p_source_33 => l_array_source_33(Idx)
78750  , p_source_34 => l_array_source_34(Idx)
78751  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78752  , p_source_35 => l_array_source_35(Idx)
78753  );
78754 If(l_balance_type_code = 'A') THEN
78755   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78756 END IF;
78757 
78758 --
78759 
78760 
78761 --
78762 AcctLineType_44 (
78763  p_application_id  => p_application_id
78764  ,p_event_id     => l_event_id
78765  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78766  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78767  ,p_actual_flag => l_actual_flag
78768  ,p_balance_type_code => l_balance_type_code
78769  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78770  
78771  , p_source_3 => l_array_source_3(Idx)
78772  , p_source_4 => l_array_source_4(Idx)
78773  , p_source_5 => l_array_source_5(Idx)
78774  , p_source_6 => l_array_source_6(Idx)
78775  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78776  , p_source_22 => l_array_source_22(Idx)
78777  , p_source_23 => l_array_source_23(Idx)
78778  , p_source_24 => l_array_source_24(Idx)
78779  , p_source_25 => l_array_source_25(Idx)
78780  , p_source_26 => l_array_source_26(Idx)
78781  , p_source_27 => l_array_source_27(Idx)
78782  , p_source_28 => l_array_source_28(Idx)
78783  , p_source_29 => l_array_source_29(Idx)
78784  , p_source_30 => l_array_source_30(Idx)
78785  , p_source_31 => l_array_source_31(Idx)
78786  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78787  , p_source_33 => l_array_source_33(Idx)
78788  , p_source_34 => l_array_source_34(Idx)
78789  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78790  , p_source_35 => l_array_source_35(Idx)
78791  );
78792 If(l_balance_type_code = 'A') THEN
78793   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78794 END IF;
78795 
78796 --
78797 
78798 
78799 --
78800 AcctLineType_56 (
78801  p_application_id  => p_application_id
78802  ,p_event_id     => l_event_id
78803  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78804  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78805  ,p_actual_flag => l_actual_flag
78806  ,p_balance_type_code => l_balance_type_code
78807  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78808  
78809  , p_source_3 => l_array_source_3(Idx)
78810  , p_source_4 => l_array_source_4(Idx)
78811  , p_source_6 => l_array_source_6(Idx)
78812  , p_source_7 => l_array_source_7(Idx)
78813  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
78814  , p_source_22 => l_array_source_22(Idx)
78815  , p_source_23 => l_array_source_23(Idx)
78816  , p_source_24 => l_array_source_24(Idx)
78817  , p_source_25 => l_array_source_25(Idx)
78818  , p_source_26 => l_array_source_26(Idx)
78819  , p_source_27 => l_array_source_27(Idx)
78820  , p_source_28 => l_array_source_28(Idx)
78821  , p_source_29 => l_array_source_29(Idx)
78822  , p_source_30 => l_array_source_30(Idx)
78823  , p_source_31 => l_array_source_31(Idx)
78824  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
78825  , p_source_33 => l_array_source_33(Idx)
78826  , p_source_34 => l_array_source_34(Idx)
78827  , p_source_34_meaning => l_array_source_34_meaning(Idx)
78828  , p_source_35 => l_array_source_35(Idx)
78829  );
78830 If(l_balance_type_code = 'A') THEN
78831   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78832 END IF;
78833 
78834 --
78835 
78836       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
78837       -- or secondary ledger that has different currency with primary
78838       -- or alc that is calculated by sla
78839       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
78840             (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'))
78841 
78842 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
78843 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
78844           AND (l_actual_flag = 'A')) THEN
78845         XLA_AE_LINES_PKG.CreateGainOrLossLines(
78846           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
78847          ,p_application_id   => p_application_id
78848          ,p_amb_context_code => 'DEFAULT'
78849          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
78850          ,p_event_class_code => C_EVENT_CLASS_CODE
78851          ,p_event_type_code  => C_EVENT_TYPE_CODE
78852          
78853          ,p_gain_ccid        => -1
78854          ,p_loss_ccid        => -1
78855 
78856          ,p_actual_flag      => l_actual_flag
78860          );
78857          ,p_enc_flag         => null
78858          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
78859          ,p_enc_g_l_ref      => null
78861       END IF;
78862    END IF;
78863 END IF;
78864 
78865    ELSE
78866       --
78867       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78868       --
78869       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78870          trace
78871             (p_msg      => 'Trancaction revesal option is Y'
78872             ,p_level    => C_LEVEL_STATEMENT
78873             ,p_module   => l_log_module);
78874       END IF;
78875    END IF;
78876 
78877 END LOOP;
78878 l_result := XLA_AE_LINES_PKG.InsertLines ;
78879 end loop;
78880 close line_cur;
78881 
78882 
78883 --
78884 -- insert headers into xla_ae_headers_gt table
78885 --
78886 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
78887 
78888 -- insert into errors table here.
78889 
78890 END LOOP;
78891 
78892 --
78893 -- 4865292
78894 --
78895 -- Compare g_hdr_extract_count with event count in
78896 -- CreateHeadersAndLines.
78897 --
78898 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
78899 
78900 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78901    trace (p_msg     => '# rows extracted from header extract objects '
78902                     || ' (running total): '
78903                     || g_hdr_extract_count
78904          ,p_level   => C_LEVEL_STATEMENT
78905          ,p_module  => l_log_module);
78906 END IF;
78907 
78908 CLOSE header_cur;
78909 --
78910 
78911 --
78912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78913    trace
78914       (p_msg      => 'END of EventClass_126'
78915       ,p_level    => C_LEVEL_PROCEDURE
78916       ,p_module   => l_log_module);
78917 END IF;
78918 --
78919 RETURN l_result;
78920 EXCEPTION
78921 WHEN xla_exceptions_pkg.application_exception THEN
78922    
78923 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
78924 
78925    
78926 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
78927 
78928    RAISE;
78929 WHEN OTHERS THEN
78930    xla_exceptions_pkg.raise_message
78931       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_126');
78932 END EventClass_126;
78933 --
78934 
78935 ---------------------------------------
78936 --
78937 -- PRIVATE PROCEDURE
78938 --         insert_sources_127
78939 --
78940 ----------------------------------------
78941 --
78942 PROCEDURE insert_sources_127(
78943                                 p_target_ledger_id       IN NUMBER
78944                               , p_language               IN VARCHAR2
78945                               , p_sla_ledger_id          IN NUMBER
78946                               , p_pad_start_date         IN DATE
78947                               , p_pad_end_date           IN DATE
78948                          )
78949 IS
78950 
78951 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ADJ_ALL';
78952 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST_ADJ';
78953 p_apps_owner                   VARCHAR2(30);
78954 l_log_module                   VARCHAR2(240);
78955 BEGIN
78956 IF g_log_enabled THEN
78957       l_log_module := C_DEFAULT_MODULE||'.insert_sources_127';
78958 END IF;
78959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78960 
78961       trace
78962          (p_msg      => 'BEGIN of insert_sources_127'
78963          ,p_level    => C_LEVEL_PROCEDURE
78964          ,p_module   => l_log_module);
78965 
78966 END IF;
78967 
78968 -- select APPS owner
78969 SELECT oracle_username
78970   INTO p_apps_owner
78971   FROM fnd_oracle_userid
78972  WHERE read_only_flag = 'U'
78973 ;
78974 
78975 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78976       trace
78977          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
78978                         ' - p_language = '||p_language||
78979                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
78980                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
78981                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
78982                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
78983          ,p_level    => C_LEVEL_STATEMENT
78984          ,p_module   => l_log_module);
78985 END IF;
78986 
78987 
78988 --
78989 INSERT INTO xla_diag_sources --hdr2
78990 (
78991         event_id
78992       , ledger_id
78993       , sla_ledger_id
78994       , description_language
78995       , object_name
78996       , object_type_code
78997       , line_number
78998       , source_application_id
78999       , source_type_code
79000       , source_code
79001       , source_value
79002       , source_meaning
79003       , created_by
79004       , creation_date
79005       , last_update_date
79006       , last_updated_by
79007       , last_update_login
79008       , program_update_date
79009       , program_application_id
79010       , program_id
79011       , request_id
79012 )
79013 SELECT
79014         event_id
79015       , p_target_ledger_id
79016       , p_sla_ledger_id
79017       , p_language
79018       , object_name
79022       , source_type_code
79019       , object_type_code
79020       , line_number
79021       , source_application_id
79023       , source_code
79024       , SUBSTR(source_value ,1,1996)
79025       , SUBSTR(source_meaning ,1,200)
79026       , xla_environment_pkg.g_Usr_Id
79027       , TRUNC(SYSDATE)
79028       , TRUNC(SYSDATE)
79029       , xla_environment_pkg.g_Usr_Id
79030       , xla_environment_pkg.g_Login_Id
79031       , TRUNC(SYSDATE)
79032       , xla_environment_pkg.g_Prog_Appl_Id
79033       , xla_environment_pkg.g_Prog_Id
79034       , xla_environment_pkg.g_Req_Id
79035   FROM (
79036        SELECT xet.event_id                  event_id
79037             , 0                          line_number
79038             , CASE r
79039                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
79040                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
79041                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
79042                 
79043                ELSE null
79044               END                           object_name
79045             , CASE r
79046                 WHEN 1 THEN 'HEADER' 
79047                 WHEN 2 THEN 'HEADER' 
79048                 WHEN 3 THEN 'HEADER' 
79049                 
79050                 ELSE null
79051               END                           object_type_code
79052             , CASE r
79053                 WHEN 1 THEN '275' 
79054                 WHEN 2 THEN '275' 
79055                 WHEN 3 THEN '275' 
79056                 
79057                 ELSE null
79058               END                           source_application_id
79059             , 'S'             source_type_code
79060             , CASE r
79061                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
79062                 WHEN 2 THEN 'SYSTEM_LINKAGE_FUNCTION' 
79063                 WHEN 3 THEN 'GL_DATE' 
79064                 
79065                 ELSE null
79066               END                           source_code
79067             , CASE r
79068                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
79069                 WHEN 2 THEN TO_CHAR(h2.SYSTEM_LINKAGE_FUNCTION)
79070                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
79071                 
79072                 ELSE null
79073               END                           source_value
79074             , null              source_meaning
79075          FROM xla_events_gt     xet  
79076       , PA_XLA_EXP_HEADER_V  h2
79077              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
79078          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79079            AND xet.event_class_code = C_EVENT_CLASS_CODE
79080               AND h2.event_id = xet.event_id
79081 
79082 )
79083 ;
79084 --
79085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79086 
79087       trace
79088          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
79089          ,p_level    => C_LEVEL_STATEMENT
79090          ,p_module   => l_log_module);
79091 
79092 END IF;
79093 --
79094 
79095 
79096 
79097 --
79098 INSERT INTO xla_diag_sources  --line2
79099 (
79100         event_id
79101       , ledger_id
79102       , sla_ledger_id
79103       , description_language
79104       , object_name
79105       , object_type_code
79106       , line_number
79107       , source_application_id
79108       , source_type_code
79109       , source_code
79110       , source_value
79111       , source_meaning
79112       , created_by
79113       , creation_date
79114       , last_update_date
79115       , last_updated_by
79116       , last_update_login
79117       , program_update_date
79118       , program_application_id
79119       , program_id
79120       , request_id
79121 )
79122 SELECT  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             , l1.line_number                 line_number
79146             , CASE r
79147                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
79148                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
79149                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
79150                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
79151                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
79152                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
79153                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
79154                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
79155                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
79156                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
79157                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
79158                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
79159                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
79163                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
79160                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
79161                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
79162                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
79164                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
79165                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
79166                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
79167                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
79168                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
79169                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
79170                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
79171                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
79172                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
79173                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
79174                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
79175                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
79176                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
79177                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
79178                 WHEN 32 THEN 'PA_XLA_CDL_LINES_V' 
79179                 WHEN 33 THEN 'PA_XLA_CDL_LINES_V' 
79180                 WHEN 34 THEN 'PA_XLA_CDL_LINES_V' 
79181                 WHEN 35 THEN 'PA_XLA_CDL_LINES_V' 
79182                 WHEN 36 THEN 'PA_XLA_CDL_LINES_V' 
79183                 WHEN 37 THEN 'PA_XLA_CDL_LINES_V' 
79184                 WHEN 38 THEN 'PA_XLA_CDL_LINES_V' 
79185                 WHEN 39 THEN 'PA_XLA_CDL_LINES_V' 
79186                 WHEN 40 THEN 'PA_XLA_CDL_LINES_V' 
79187                 WHEN 41 THEN 'PA_XLA_CDL_LINES_V' 
79188                 WHEN 42 THEN 'PA_XLA_CDL_LINES_V' 
79189                 WHEN 43 THEN 'PA_XLA_CDL_LINES_V' 
79190                 WHEN 44 THEN 'PA_XLA_CDL_LINES_V' 
79191                 WHEN 45 THEN 'PA_XLA_CDL_LINES_V' 
79192                 WHEN 46 THEN 'PA_XLA_CDL_LINES_V' 
79193                 WHEN 47 THEN 'PA_XLA_CDL_LINES_V' 
79194                 WHEN 48 THEN 'PA_XLA_CDL_LINES_V' 
79195                 
79196                ELSE null
79197               END                           object_name
79198             , CASE r
79199                 WHEN 1 THEN 'LINE' 
79200                 WHEN 2 THEN 'LINE' 
79201                 WHEN 3 THEN 'LINE' 
79202                 WHEN 4 THEN 'LINE' 
79203                 WHEN 5 THEN 'LINE' 
79204                 WHEN 6 THEN 'LINE' 
79205                 WHEN 7 THEN 'LINE' 
79206                 WHEN 8 THEN 'LINE' 
79207                 WHEN 9 THEN 'LINE' 
79208                 WHEN 10 THEN 'LINE' 
79209                 WHEN 11 THEN 'LINE' 
79210                 WHEN 12 THEN 'LINE' 
79211                 WHEN 13 THEN 'LINE' 
79212                 WHEN 14 THEN 'LINE' 
79213                 WHEN 15 THEN 'LINE' 
79214                 WHEN 16 THEN 'LINE' 
79215                 WHEN 17 THEN 'LINE' 
79216                 WHEN 18 THEN 'LINE' 
79217                 WHEN 19 THEN 'LINE' 
79218                 WHEN 20 THEN 'LINE' 
79219                 WHEN 21 THEN 'LINE' 
79220                 WHEN 22 THEN 'LINE' 
79221                 WHEN 23 THEN 'LINE' 
79222                 WHEN 24 THEN 'LINE' 
79223                 WHEN 25 THEN 'LINE' 
79224                 WHEN 26 THEN 'LINE' 
79225                 WHEN 27 THEN 'LINE' 
79226                 WHEN 28 THEN 'LINE' 
79227                 WHEN 29 THEN 'LINE' 
79228                 WHEN 30 THEN 'LINE' 
79229                 WHEN 31 THEN 'LINE' 
79230                 WHEN 32 THEN 'LINE' 
79231                 WHEN 33 THEN 'LINE' 
79232                 WHEN 34 THEN 'LINE' 
79233                 WHEN 35 THEN 'LINE' 
79234                 WHEN 36 THEN 'LINE' 
79235                 WHEN 37 THEN 'LINE' 
79236                 WHEN 38 THEN 'LINE' 
79237                 WHEN 39 THEN 'LINE' 
79238                 WHEN 40 THEN 'LINE' 
79239                 WHEN 41 THEN 'LINE' 
79240                 WHEN 42 THEN 'LINE' 
79241                 WHEN 43 THEN 'LINE' 
79242                 WHEN 44 THEN 'LINE' 
79243                 WHEN 45 THEN 'LINE' 
79244                 WHEN 46 THEN 'LINE' 
79245                 WHEN 47 THEN 'LINE' 
79246                 WHEN 48 THEN 'LINE' 
79247                 
79248                 ELSE null
79249               END                           object_type_code
79250             , CASE r
79251                 WHEN 1 THEN '275' 
79252                 WHEN 2 THEN '275' 
79253                 WHEN 3 THEN '275' 
79254                 WHEN 4 THEN '275' 
79255                 WHEN 5 THEN '275' 
79256                 WHEN 6 THEN '275' 
79257                 WHEN 7 THEN '275' 
79258                 WHEN 8 THEN '275' 
79259                 WHEN 9 THEN '275' 
79260                 WHEN 10 THEN '275' 
79261                 WHEN 11 THEN '275' 
79262                 WHEN 12 THEN '275' 
79263                 WHEN 13 THEN '275' 
79264                 WHEN 14 THEN '275' 
79265                 WHEN 15 THEN '275' 
79266                 WHEN 16 THEN '275' 
79267                 WHEN 17 THEN '275' 
79268                 WHEN 18 THEN '275' 
79269                 WHEN 19 THEN '275' 
79270                 WHEN 20 THEN '275' 
79271                 WHEN 21 THEN '275' 
79272                 WHEN 22 THEN '275' 
79273                 WHEN 23 THEN '275' 
79274                 WHEN 24 THEN '275' 
79275                 WHEN 25 THEN '275' 
79276                 WHEN 26 THEN '275' 
79277                 WHEN 27 THEN '275' 
79278                 WHEN 28 THEN '275' 
79279                 WHEN 29 THEN '275' 
79283                 WHEN 33 THEN '275' 
79280                 WHEN 30 THEN '275' 
79281                 WHEN 31 THEN '275' 
79282                 WHEN 32 THEN '275' 
79284                 WHEN 34 THEN '275' 
79285                 WHEN 35 THEN '275' 
79286                 WHEN 36 THEN '275' 
79287                 WHEN 37 THEN '275' 
79288                 WHEN 38 THEN '275' 
79289                 WHEN 39 THEN '275' 
79290                 WHEN 40 THEN '275' 
79291                 WHEN 41 THEN '275' 
79292                 WHEN 42 THEN '275' 
79293                 WHEN 43 THEN '275' 
79294                 WHEN 44 THEN '275' 
79295                 WHEN 45 THEN '275' 
79296                 WHEN 46 THEN '275' 
79297                 WHEN 47 THEN '275' 
79298                 WHEN 48 THEN '275' 
79299                 
79300                 ELSE null
79301               END                           source_application_id
79302             , 'S'             source_type_code
79303             , CASE r
79304                 WHEN 1 THEN 'BUDGET_CCID' 
79305                 WHEN 2 THEN 'COST_CCID' 
79306                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
79307                 WHEN 4 THEN 'ADJ_COST_CCID' 
79308                 WHEN 5 THEN 'COST_CLEARING_CCID' 
79309                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
79310                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
79311                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
79312                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
79313                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
79314                 WHEN 11 THEN 'EXCHANGE_RATE' 
79315                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
79316                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
79317                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
79318                 WHEN 15 THEN 'LINE_NUMBER' 
79319                 WHEN 16 THEN 'LINE_TYPE' 
79320                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
79321                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
79322                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
79323                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
79324                 WHEN 21 THEN 'PA_APPLICATION_ID' 
79325                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
79326                 WHEN 23 THEN 'PA_ENTITY_CODE' 
79327                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
79328                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
79329                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
79330                 WHEN 27 THEN 'ENC_UPG_CR_ACCT_CLASS' 
79331                 WHEN 28 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
79332                 WHEN 29 THEN 'ENCUMBRANCE_TYPE_ID' 
79333                 WHEN 30 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
79334                 WHEN 31 THEN 'DOCUMENT_TYPE' 
79335                 WHEN 32 THEN 'ENC_JE_LINES_REVERSED_FLAG' 
79336                 WHEN 33 THEN 'PO_RELEASE_ID' 
79337                 WHEN 34 THEN 'CWK_RATE_BASED_TC_FLAG' 
79338                 WHEN 35 THEN 'INVOICE_APPLICATION_ID' 
79339                 WHEN 36 THEN 'INVOICE_DISTRIBUTION_TYPE' 
79340                 WHEN 37 THEN 'INVOICE_ENTITY_CODE' 
79341                 WHEN 38 THEN 'INVOICE_FIRST_DIST_ID' 
79342                 WHEN 39 THEN 'INVOICE_FIRST_SYS_TRANS_ID' 
79343                 WHEN 40 THEN 'INVOICE_SECOND_DIST_ID' 
79344                 WHEN 41 THEN 'PO_APPLICATION_ID' 
79345                 WHEN 42 THEN 'PO_DISTRIBUTION_TYPE' 
79346                 WHEN 43 THEN 'PO_ENTITY_CODE' 
79347                 WHEN 44 THEN 'PO_FIRST_DIST_ID' 
79348                 WHEN 45 THEN 'PO_FIRST_SYS_TRANS_ID' 
79349                 WHEN 46 THEN 'PO_SECOND_DIST_ID' 
79350                 WHEN 47 THEN 'ENC_ACCT_ENABLED' 
79351                 WHEN 48 THEN 'LIQUIDATE_ENCUM_FLAG' 
79352                 
79353                 ELSE null
79354               END                           source_code
79355             , CASE r
79356                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
79357                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
79358                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
79359                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
79360                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
79361                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
79362                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
79363                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
79364                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
79365                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
79366                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
79367                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
79368                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
79369                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
79370                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
79371                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
79372                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
79373                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
79374                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
79375                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
79376                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
79377                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
79378                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
79379                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
79380                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
79381                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
79385                 WHEN 30 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
79382                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
79383                 WHEN 28 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
79384                 WHEN 29 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
79386                 WHEN 31 THEN TO_CHAR(l1.DOCUMENT_TYPE)
79387                 WHEN 32 THEN TO_CHAR(l1.ENC_JE_LINES_REVERSED_FLAG)
79388                 WHEN 33 THEN TO_CHAR(l1.PO_RELEASE_ID)
79389                 WHEN 34 THEN TO_CHAR(l1.CWK_RATE_BASED_TC_FLAG)
79390                 WHEN 35 THEN TO_CHAR(l1.INVOICE_APPLICATION_ID)
79391                 WHEN 36 THEN TO_CHAR(l1.INVOICE_DISTRIBUTION_TYPE)
79392                 WHEN 37 THEN TO_CHAR(l1.INVOICE_ENTITY_CODE)
79393                 WHEN 38 THEN TO_CHAR(l1.INVOICE_FIRST_DIST_ID)
79394                 WHEN 39 THEN TO_CHAR(l1.INVOICE_FIRST_SYS_TRANS_ID)
79395                 WHEN 40 THEN TO_CHAR(l1.INVOICE_SECOND_DIST_ID)
79396                 WHEN 41 THEN TO_CHAR(l1.PO_APPLICATION_ID)
79397                 WHEN 42 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
79398                 WHEN 43 THEN TO_CHAR(l1.PO_ENTITY_CODE)
79399                 WHEN 44 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
79400                 WHEN 45 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
79401                 WHEN 46 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
79402                 WHEN 47 THEN TO_CHAR(l1.ENC_ACCT_ENABLED)
79403                 WHEN 48 THEN TO_CHAR(l1.LIQUIDATE_ENCUM_FLAG)
79404                 
79405                 ELSE null
79406               END                           source_value
79407             , CASE r
79408                 WHEN 3 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
79409                           103371
79410                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
79411                          ,'ALLOW_OVERRIDE_CCID_FLAG'
79412                          ,'S'
79413                          ,275)
79414                 WHEN 16 THEN fvl34.meaning
79415                 WHEN 31 THEN fvl69.meaning
79416                 
79417                 ELSE null
79418               END               source_meaning
79419          FROM  xla_events_gt     xet  
79420         , PA_XLA_CDL_LINES_V  l1
79421   , fnd_lookup_values    fvl34
79422   , fnd_lookup_values    fvl69
79423             , (select rownum r from all_objects where rownum <= 48 and owner = p_apps_owner)
79424         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79425           AND xet.event_class_code = C_EVENT_CLASS_CODE
79426             AND l1.event_id          = xet.event_id
79427    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
79428   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
79429   AND fvl34.view_application_id(+) = 275
79430   AND fvl34.language(+)            = USERENV('LANG')
79431      AND fvl69.lookup_type(+)         = 'FC_DOC_TYPE'
79432   AND fvl69.lookup_code(+)         = l1.DOCUMENT_TYPE
79433   AND fvl69.view_application_id(+) = 275
79434   AND fvl69.language(+)            = USERENV('LANG')
79435   
79436 )
79437 ;
79438 --
79439 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79440 
79441       trace
79442          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
79443          ,p_level    => C_LEVEL_STATEMENT
79444          ,p_module   => l_log_module);
79445 
79446 END IF;
79447 
79448 
79449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79450       trace
79451          (p_msg      => 'END of insert_sources_127'
79452          ,p_level    => C_LEVEL_PROCEDURE
79453          ,p_module   => l_log_module);
79454 END IF;
79455 EXCEPTION
79456   WHEN xla_exceptions_pkg.application_exception THEN
79457       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79458             trace
79459                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79460                ,p_level    => C_LEVEL_EXCEPTION
79461                ,p_module   => l_log_module);
79462       END IF;
79463       RAISE;
79464   WHEN OTHERS THEN
79465       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79466             trace
79467                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79468                ,p_level    => C_LEVEL_EXCEPTION
79469                ,p_module   => l_log_module);
79470        END IF;
79471        xla_exceptions_pkg.raise_message
79472            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_127');
79473 END insert_sources_127;
79474 --
79475 
79476 ---------------------------------------
79477 --
79478 -- PRIVATE FUNCTION
79479 --         EventClass_127
79480 --
79481 ----------------------------------------
79482 --
79483 FUNCTION EventClass_127
79484        (p_application_id         IN NUMBER
79485        ,p_base_ledger_id         IN NUMBER
79486        ,p_target_ledger_id       IN NUMBER
79487        ,p_language               IN VARCHAR2
79488        ,p_currency_code          IN VARCHAR2
79489        ,p_sla_ledger_id          IN NUMBER
79490        ,p_pad_start_date         IN DATE
79491        ,p_pad_end_date           IN DATE
79492        ,p_primary_ledger_id      IN NUMBER)
79493 RETURN BOOLEAN IS
79494 --
79495 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ADJ_ALL';
79496 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST_ADJ';
79497 
79498 l_calculate_acctd_flag   VARCHAR2(1) :='N';
79499 l_calculate_g_l_flag     VARCHAR2(1) :='N';
79500 --
79501 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79505 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79502 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79503 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79504 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79506 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79507 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79508 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79509 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79510 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79511 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79512 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79513 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79514 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79515 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79516 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79517 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79518 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79519 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79520 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79521 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79522 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79523 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
79524 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79525 
79526 l_event_id                             NUMBER;
79527 l_previous_event_id                    NUMBER;
79528 l_first_event_id                       NUMBER;
79529 l_last_event_id                        NUMBER;
79530 
79531 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
79532 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
79533 --
79534 --
79535 l_result                    BOOLEAN := TRUE;
79536 l_rows                      NUMBER  := 1000;
79537 l_event_type_name           VARCHAR2(80) := 'All';
79538 l_event_class_name          VARCHAR2(80) := 'Total Burdened Cost Adjustment';
79539 l_description               VARCHAR2(4000);
79540 l_transaction_reversal      NUMBER;
79541 l_ae_header_id              NUMBER;
79542 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
79543 l_log_module                VARCHAR2(240);
79544 --
79545 l_acct_reversal_source      VARCHAR2(30);
79546 l_trx_reversal_source       VARCHAR2(30);
79547 
79548 l_continue_with_lines       BOOLEAN := TRUE;
79549 --
79550 l_acc_rev_gl_date_source    DATE;                      -- 4262811
79551 --
79552 type t_array_event_id is table of number index by binary_integer;
79553 
79554 l_rec_array_event                    t_rec_array_event;
79555 l_null_rec_array_event               t_rec_array_event;
79556 l_array_ae_header_id                 xla_number_array_type;
79557 l_actual_flag                        VARCHAR2(1) := NULL;
79558 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
79559 l_balance_type_code                  VARCHAR2(1) :=NULL;
79560 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
79561 
79562 --
79563 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
79564 --
79565 
79566 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
79567 TYPE t_array_source_37 IS TABLE OF PA_XLA_EXP_HEADER_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
79568 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
79569 
79570 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
79571 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
79572 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
79573 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
79574 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
79575 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
79576 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
79577 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
79578 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
79579 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
79580 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
79581 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
79582 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
79583 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
79584 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
79585 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
79586 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
79587 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
79591 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79588 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
79589 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
79590 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
79592 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
79593 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79594 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
79595 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79596 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
79597 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
79598 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
79599 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
79600 TYPE t_array_source_69 IS TABLE OF PA_XLA_CDL_LINES_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
79601 TYPE t_array_source_70 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_JE_LINES_REVERSED_FLAG%TYPE INDEX BY BINARY_INTEGER;
79602 TYPE t_array_source_71 IS TABLE OF PA_XLA_CDL_LINES_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
79603 TYPE t_array_source_72 IS TABLE OF PA_XLA_CDL_LINES_V.CWK_RATE_BASED_TC_FLAG%TYPE INDEX BY BINARY_INTEGER;
79604 TYPE t_array_source_73 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
79605 TYPE t_array_source_74 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79606 TYPE t_array_source_75 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
79607 TYPE t_array_source_76 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79608 TYPE t_array_source_77 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
79609 TYPE t_array_source_78 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79610 TYPE t_array_source_79 IS TABLE OF PA_XLA_CDL_LINES_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
79611 TYPE t_array_source_80 IS TABLE OF PA_XLA_CDL_LINES_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79612 TYPE t_array_source_81 IS TABLE OF PA_XLA_CDL_LINES_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
79613 TYPE t_array_source_82 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79614 TYPE t_array_source_83 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
79615 TYPE t_array_source_84 IS TABLE OF PA_XLA_CDL_LINES_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79616 TYPE t_array_source_85 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_ACCT_ENABLED%TYPE INDEX BY BINARY_INTEGER;
79617 TYPE t_array_source_86 IS TABLE OF PA_XLA_CDL_LINES_V.LIQUIDATE_ENCUM_FLAG%TYPE INDEX BY BINARY_INTEGER;
79618 
79619 l_array_source_32              t_array_source_32;
79620 l_array_source_37              t_array_source_37;
79621 l_array_source_87              t_array_source_87;
79622 
79623 l_array_source_2      t_array_source_2;
79624 l_array_source_3      t_array_source_3;
79625 l_array_source_4      t_array_source_4;
79626 l_array_source_5      t_array_source_5;
79627 l_array_source_6      t_array_source_6;
79628 l_array_source_7      t_array_source_7;
79629 l_array_source_22      t_array_source_22;
79630 l_array_source_23      t_array_source_23;
79631 l_array_source_25      t_array_source_25;
79632 l_array_source_27      t_array_source_27;
79633 l_array_source_28      t_array_source_28;
79634 l_array_source_29      t_array_source_29;
79635 l_array_source_30      t_array_source_30;
79636 l_array_source_31      t_array_source_31;
79637 l_array_source_33      t_array_source_33;
79638 l_array_source_34      t_array_source_34;
79639 l_array_source_34_meaning      t_array_lookup_meaning;
79640 l_array_source_35      t_array_source_35;
79641 l_array_source_44      t_array_source_44;
79642 l_array_source_45      t_array_source_45;
79643 l_array_source_46      t_array_source_46;
79644 l_array_source_47      t_array_source_47;
79645 l_array_source_48      t_array_source_48;
79646 l_array_source_49      t_array_source_49;
79647 l_array_source_50      t_array_source_50;
79648 l_array_source_51      t_array_source_51;
79649 l_array_source_52      t_array_source_52;
79650 l_array_source_54      t_array_source_54;
79651 l_array_source_55      t_array_source_55;
79652 l_array_source_56      t_array_source_56;
79653 l_array_source_57      t_array_source_57;
79654 l_array_source_69      t_array_source_69;
79655 l_array_source_69_meaning      t_array_lookup_meaning;
79656 l_array_source_70      t_array_source_70;
79657 l_array_source_71      t_array_source_71;
79658 l_array_source_72      t_array_source_72;
79659 l_array_source_73      t_array_source_73;
79660 l_array_source_74      t_array_source_74;
79661 l_array_source_75      t_array_source_75;
79662 l_array_source_76      t_array_source_76;
79666 l_array_source_80      t_array_source_80;
79663 l_array_source_77      t_array_source_77;
79664 l_array_source_78      t_array_source_78;
79665 l_array_source_79      t_array_source_79;
79667 l_array_source_81      t_array_source_81;
79668 l_array_source_82      t_array_source_82;
79669 l_array_source_83      t_array_source_83;
79670 l_array_source_84      t_array_source_84;
79671 l_array_source_85      t_array_source_85;
79672 l_array_source_86      t_array_source_86;
79673 
79674 --
79675 CURSOR header_cur
79676 IS
79677 SELECT /*+ leading(xet) cardinality(xet,1) */
79678 -- Event Class Code: TOT_BURDENED_COST_ADJ
79679     xet.entity_id
79680    ,xet.legal_entity_id
79681    ,xet.entity_code
79682    ,xet.transaction_number
79683    ,xet.event_id
79684    ,xet.event_class_code
79685    ,xet.event_type_code
79686    ,xet.event_number
79687    ,xet.event_date
79688    ,xet.transaction_date
79689    ,xet.reference_num_1
79690    ,xet.reference_num_2
79691    ,xet.reference_num_3
79692    ,xet.reference_num_4
79693    ,xet.reference_char_1
79694    ,xet.reference_char_2
79695    ,xet.reference_char_3
79696    ,xet.reference_char_4
79697    ,xet.reference_date_1
79698    ,xet.reference_date_2
79699    ,xet.reference_date_3
79700    ,xet.reference_date_4
79701    ,xet.event_created_by
79702    ,xet.budgetary_control_flag 
79703   , h2.EXPENDITURE_ITEM_ID    source_32
79704   , h2.SYSTEM_LINKAGE_FUNCTION    source_37
79705   , h2.GL_DATE    source_87
79706   FROM xla_events_gt     xet 
79707   , PA_XLA_EXP_HEADER_V  h2
79708  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
79709    and xet.event_class_code = C_EVENT_CLASS_CODE
79710    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
79711 
79712  ORDER BY event_id
79713 ;
79714 
79715 
79716 --
79717 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
79718 IS
79719 SELECT  /*+ leading(xet) cardinality(xet,1) */
79720 -- Event Class Code: TOT_BURDENED_COST_ADJ
79721     xet.entity_id
79722    ,xet.legal_entity_id
79723    ,xet.entity_code
79724    ,xet.transaction_number
79725    ,xet.event_id
79726    ,xet.event_class_code
79727    ,xet.event_type_code
79728    ,xet.event_number
79729    ,xet.event_date
79730    ,xet.transaction_date
79731    ,xet.reference_num_1
79732    ,xet.reference_num_2
79733    ,xet.reference_num_3
79734    ,xet.reference_num_4
79735    ,xet.reference_char_1
79736    ,xet.reference_char_2
79737    ,xet.reference_char_3
79738    ,xet.reference_char_4
79739    ,xet.reference_date_1
79740    ,xet.reference_date_2
79741    ,xet.reference_date_3
79742    ,xet.reference_date_4
79743    ,xet.event_created_by
79744    ,xet.budgetary_control_flag
79745  , l1.LINE_NUMBER  
79746   , l1.BUDGET_CCID    source_2
79747   , l1.COST_CCID    source_3
79748   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
79749   , l1.ADJ_COST_CCID    source_5
79750   , l1.COST_CLEARING_CCID    source_6
79751   , l1.ADJ_COST_CLEARING_CCID    source_7
79752   , l1.REVERSING_LINE_FLAG    source_22
79753   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
79754   , l1.ENTERED_CURRENCY_CODE    source_25
79755   , l1.EXCHANGE_RATE_DATE    source_27
79756   , l1.EXCHANGE_RATE    source_28
79757   , l1.EXCHANGE_RATE_TYPE    source_29
79758   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
79759   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
79760   , l1.LINE_NUMBER    source_33
79761   , l1.LINE_TYPE    source_34
79762   , fvl34.meaning   source_34_meaning
79763   , l1.LINE_NUM_REVERSED    source_35
79764   , l1.ENTERED_BURDENED_COST    source_44
79765   , l1.ACCT_BURDENED_COST    source_45
79766   , l1.ENCUMBRANCE_AMOUNT    source_46
79767   , l1.PA_APPLICATION_ID    source_47
79768   , l1.PA_DISTRIBUTION_TYPE    source_48
79769   , l1.PA_ENTITY_CODE    source_49
79770   , l1.PA_FIRST_DIST_ID    source_50
79771   , l1.PA_FIRST_SYS_TRANS_ID    source_51
79772   , l1.PA_SECOND_DIST_ID    source_52
79773   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
79774   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
79775   , l1.ENCUMBRANCE_TYPE_ID    source_56
79776   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
79777   , l1.DOCUMENT_TYPE    source_69
79778   , fvl69.meaning   source_69_meaning
79779   , l1.ENC_JE_LINES_REVERSED_FLAG    source_70
79780   , l1.PO_RELEASE_ID    source_71
79781   , l1.CWK_RATE_BASED_TC_FLAG    source_72
79782   , l1.INVOICE_APPLICATION_ID    source_73
79783   , l1.INVOICE_DISTRIBUTION_TYPE    source_74
79784   , l1.INVOICE_ENTITY_CODE    source_75
79785   , l1.INVOICE_FIRST_DIST_ID    source_76
79786   , l1.INVOICE_FIRST_SYS_TRANS_ID    source_77
79787   , l1.INVOICE_SECOND_DIST_ID    source_78
79788   , l1.PO_APPLICATION_ID    source_79
79789   , l1.PO_DISTRIBUTION_TYPE    source_80
79790   , l1.PO_ENTITY_CODE    source_81
79791   , l1.PO_FIRST_DIST_ID    source_82
79792   , l1.PO_FIRST_SYS_TRANS_ID    source_83
79793   , l1.PO_SECOND_DIST_ID    source_84
79794   , l1.ENC_ACCT_ENABLED    source_85
79795   , l1.LIQUIDATE_ENCUM_FLAG    source_86
79796   FROM xla_events_gt     xet 
79797   , PA_XLA_CDL_LINES_V  l1
79798   , fnd_lookup_values    fvl34
79799   , fnd_lookup_values    fvl69
79800  WHERE xet.event_id between x_first_event_id and x_last_event_id
79801    and xet.event_date between p_pad_start_date and p_pad_end_date
79802    and xet.event_class_code = C_EVENT_CLASS_CODE
79803    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
79804    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
79805   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
79806   AND fvl34.view_application_id(+) = 275
79807   AND fvl34.language(+)            = USERENV('LANG')
79808      AND fvl69.lookup_type(+)         = 'FC_DOC_TYPE'
79809   AND fvl69.lookup_code(+)         = l1.DOCUMENT_TYPE
79813 
79810   AND fvl69.view_application_id(+) = 275
79811   AND fvl69.language(+)            = USERENV('LANG')
79812   ;
79814 --
79815 BEGIN
79816 IF g_log_enabled THEN
79817    l_log_module := C_DEFAULT_MODULE||'.EventClass_127';
79818 END IF;
79819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79820    trace
79821       (p_msg      => 'BEGIN of EventClass_127'
79822       ,p_level    => C_LEVEL_PROCEDURE
79823       ,p_module   => l_log_module);
79824 END IF;
79825 
79826 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79827    trace
79828       (p_msg      => 'p_application_id = '||p_application_id||
79829                      ' - p_base_ledger_id = '||p_base_ledger_id||
79830                      ' - p_target_ledger_id  = '||p_target_ledger_id||
79831                      ' - p_language = '||p_language||
79832                      ' - p_currency_code = '||p_currency_code||
79833                      ' - p_sla_ledger_id = '||p_sla_ledger_id
79834       ,p_level    => C_LEVEL_STATEMENT
79835       ,p_module   => l_log_module);
79836 END IF;
79837 --
79838 -- initialze arrays
79839 --
79840 g_array_event.DELETE;
79841 l_rec_array_event := l_null_rec_array_event;
79842 --
79843 --------------------------------------
79844 -- 4262811 Initialze MPA Line Number
79845 --------------------------------------
79846 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
79847 
79848 --
79849 
79850 --
79851 OPEN header_cur;
79852 --
79853 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79854    trace
79855    (p_msg      => 'SQL - FETCH header_cur'
79856    ,p_level    => C_LEVEL_STATEMENT
79857    ,p_module   => l_log_module);
79858 END IF;
79859 --
79860 LOOP
79861 FETCH header_cur BULK COLLECT INTO
79862         l_array_entity_id
79863       , l_array_legal_entity_id
79864       , l_array_entity_code
79865       , l_array_transaction_num
79866       , l_array_event_id
79867       , l_array_class_code
79868       , l_array_event_type
79869       , l_array_event_number
79870       , l_array_event_date
79871       , l_array_transaction_date
79872       , l_array_reference_num_1
79873       , l_array_reference_num_2
79874       , l_array_reference_num_3
79875       , l_array_reference_num_4
79876       , l_array_reference_char_1
79877       , l_array_reference_char_2
79878       , l_array_reference_char_3
79879       , l_array_reference_char_4
79880       , l_array_reference_date_1
79881       , l_array_reference_date_2
79882       , l_array_reference_date_3
79883       , l_array_reference_date_4
79884       , l_array_event_created_by
79885       , l_array_budgetary_control_flag 
79886       , l_array_source_32
79887       , l_array_source_37
79888       , l_array_source_87
79889       LIMIT l_rows;
79890 --
79891 IF (C_LEVEL_EVENT >= g_log_level) THEN
79892    trace
79893    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
79894    ,p_level    => C_LEVEL_EVENT
79895    ,p_module   => l_log_module);
79896 END IF;
79897 --
79898 EXIT WHEN l_array_entity_id.COUNT = 0;
79899 
79900 -- initialize arrays
79901 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
79902 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
79903 
79904 --
79905 -- Bug 4458708
79906 --
79907 XLA_AE_LINES_PKG.g_LineNumber := 0;
79908 
79909 
79910 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
79911 g_last_hdr_idx := l_array_event_id.LAST;
79912 --
79913 -- loop for the headers. Each iteration is for each header extract row
79914 -- fetched in header cursor
79915 --
79916 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
79917 
79918 --
79919 -- set event info as cache for other routines to refer event attributes
79920 --
79921 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
79922    (p_application_id           => p_application_id
79923    ,p_primary_ledger_id        => p_primary_ledger_id
79924    ,p_base_ledger_id           => p_base_ledger_id
79925    ,p_target_ledger_id         => p_target_ledger_id
79926    ,p_entity_id                => l_array_entity_id(hdr_idx)
79927    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
79928    ,p_entity_code              => l_array_entity_code(hdr_idx)
79929    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
79930    ,p_event_id                 => l_array_event_id(hdr_idx)
79931    ,p_event_class_code         => l_array_class_code(hdr_idx)
79932    ,p_event_type_code          => l_array_event_type(hdr_idx)
79933    ,p_event_number             => l_array_event_number(hdr_idx)
79934    ,p_event_date               => l_array_event_date(hdr_idx)
79935    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
79936    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
79937    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
79938    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
79939    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
79940    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
79941    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
79942    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
79943    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
79944    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
79945    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
79946    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
79947    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
79948    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
79949    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
79950 
79951 --
79952 -- set the status of entry to C_VALID (0)
79953 --
79957 -- initialize a row for ae header
79954 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
79955 
79956 --
79958 --
79959 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
79960 
79961 l_event_id := l_array_event_id(hdr_idx);
79962 
79963 --
79964 -- storing the hdr_idx for event. May be used by line cursor.
79965 --
79966 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
79967 
79968 --
79969 -- store sources from header extract. This can be improved to
79970 -- store only those sources from header extract that may be used in lines
79971 --
79972 
79973 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
79974 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
79975 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
79976 
79977 --
79978 -- initilaize the status of ae headers for diffrent balance types
79979 -- the status is initialised to C_NOT_CREATED (2)
79980 --
79981 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
79982 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
79983 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
79984 
79985 --
79986 -- call api to validate and store accounting attributes for header
79987 --
79988 
79989 ------------------------------------------------------------
79990 -- Accrual Reversal : to get date for Standard Source (NONE)
79991 ------------------------------------------------------------
79992 l_acc_rev_gl_date_source := NULL;
79993 
79994      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
79995       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
79996 
79997 
79998 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
79999 
80000 XLA_AE_HEADER_PKG.SetJeCategoryName;
80001 
80002 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
80003 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
80004 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
80005 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
80006 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
80007 
80008 
80009 -- No header level analytical criteria
80010 
80011 --
80012 --accounting attribute enhancement, bug 3612931
80013 --
80014 l_trx_reversal_source := SUBSTR(NULL, 1,30);
80015 
80016 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
80017    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80018 
80019    xla_accounting_err_pkg.build_message
80020       (p_appli_s_name            => 'XLA'
80021       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
80022       ,p_token_1                 => 'ACCT_ATTR_NAME'
80023       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
80024       ,p_token_2                 => 'PRODUCT_NAME'
80025       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80026       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80027       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80028       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80029 
80030 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
80031    --
80032    -- following sets the accounting attributes needed to reverse
80033    -- accounting for a distributeion
80034    --
80035    xla_ae_lines_pkg.SetTrxReversalAttrs
80036       (p_event_id              => l_event_id
80037       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
80038       ,p_trx_reversal_source   => l_trx_reversal_source);
80039 
80040 END IF;
80041 
80042 
80043 ----------------------------------------------------------------
80044 -- 4262811 -  update the header statuses to invalid in need be
80045 ----------------------------------------------------------------
80046 --
80047 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
80048 
80049 
80050   -----------------------------------------------
80051   -- No accrual reversal for the event class/type
80052   -----------------------------------------------
80053 ----------------------------------------------------------------
80054 
80055 --
80056 -- this ends the header loop iteration for one bulk fetch
80057 --
80058 END LOOP;
80059 
80060 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
80061 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
80062 
80063 --
80064 -- insert dummy rows into lines gt table that were created due to
80065 -- transaction reversals
80066 --
80067 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
80068    l_result := XLA_AE_LINES_PKG.InsertLines;
80069 END IF;
80070 
80071 --
80072 -- reset the temp_line_num for each set of events fetched from header
80073 -- cursor rather than doing it for each new event in line cursor
80074 -- Bug 3939231
80075 --
80076 xla_ae_lines_pkg.g_temp_line_num := 0;
80077 
80078 
80079 
80080 --
80081 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
80082 --
80083 --
80084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80085 
80086       trace
80087          (p_msg      => 'SQL - FETCH line_cur'
80088          ,p_level    => C_LEVEL_STATEMENT
80089          ,p_module   => l_log_module);
80090 
80091 END IF;
80092 --
80093 --
80097         l_array_entity_id
80094 LOOP
80095   --
80096   FETCH line_cur BULK COLLECT INTO
80098       , l_array_legal_entity_id
80099       , l_array_entity_code
80100       , l_array_transaction_num
80101       , l_array_event_id
80102       , l_array_class_code
80103       , l_array_event_type
80104       , l_array_event_number
80105       , l_array_event_date
80106       , l_array_transaction_date
80107       , l_array_reference_num_1
80108       , l_array_reference_num_2
80109       , l_array_reference_num_3
80110       , l_array_reference_num_4
80111       , l_array_reference_char_1
80112       , l_array_reference_char_2
80113       , l_array_reference_char_3
80114       , l_array_reference_char_4
80115       , l_array_reference_date_1
80116       , l_array_reference_date_2
80117       , l_array_reference_date_3
80118       , l_array_reference_date_4
80119       , l_array_event_created_by
80120       , l_array_budgetary_control_flag
80121       , l_array_extract_line_num 
80122       , l_array_source_2
80123       , l_array_source_3
80124       , l_array_source_4
80125       , l_array_source_5
80126       , l_array_source_6
80127       , l_array_source_7
80128       , l_array_source_22
80129       , l_array_source_23
80130       , l_array_source_25
80131       , l_array_source_27
80132       , l_array_source_28
80133       , l_array_source_29
80134       , l_array_source_30
80135       , l_array_source_31
80136       , l_array_source_33
80137       , l_array_source_34
80138       , l_array_source_34_meaning
80139       , l_array_source_35
80140       , l_array_source_44
80141       , l_array_source_45
80142       , l_array_source_46
80143       , l_array_source_47
80144       , l_array_source_48
80145       , l_array_source_49
80146       , l_array_source_50
80147       , l_array_source_51
80148       , l_array_source_52
80149       , l_array_source_54
80150       , l_array_source_55
80151       , l_array_source_56
80152       , l_array_source_57
80153       , l_array_source_69
80154       , l_array_source_69_meaning
80155       , l_array_source_70
80156       , l_array_source_71
80157       , l_array_source_72
80158       , l_array_source_73
80159       , l_array_source_74
80160       , l_array_source_75
80161       , l_array_source_76
80162       , l_array_source_77
80163       , l_array_source_78
80164       , l_array_source_79
80165       , l_array_source_80
80166       , l_array_source_81
80167       , l_array_source_82
80168       , l_array_source_83
80169       , l_array_source_84
80170       , l_array_source_85
80171       , l_array_source_86
80172       LIMIT l_rows;
80173 
80174   --
80175   IF (C_LEVEL_EVENT >= g_log_level) THEN
80176             trace
80177                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
80178                ,p_level    => C_LEVEL_EVENT
80179                ,p_module   => l_log_module);
80180   END IF;
80181   --
80182   EXIT WHEN l_array_entity_id.count = 0;
80183 
80184   XLA_AE_LINES_PKG.g_rec_lines := null;
80185 
80186 --
80187 -- Bug 4458708
80188 --
80189 XLA_AE_LINES_PKG.g_LineNumber := 0;
80190 --
80191 --
80192 
80193 FOR Idx IN 1..l_array_event_id.count LOOP
80194    --
80195    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
80196    --
80197    l_event_id := l_array_event_id(idx);  -- 5648433
80198 
80199    --
80200    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
80201    --
80202 
80203    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
80204              (g_array_event(l_event_id).array_value_num('header_index'))
80205          ,'N'
80206          ) <> 'Y'
80207    THEN
80208       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80209          trace
80210             (p_msg      => 'Trancaction revesal option is not Y '
80211             ,p_level    => C_LEVEL_STATEMENT
80212             ,p_module   => l_log_module);
80213       END IF;
80214 
80215 --
80216 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
80217 --
80218 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80219 --
80220 -- set event info as cache for other routines to refer event attributes
80221 --
80222 
80223 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
80224    l_previous_event_id := l_event_id;
80225 
80226    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80227       (p_application_id           => p_application_id
80228       ,p_primary_ledger_id        => p_primary_ledger_id
80229       ,p_base_ledger_id           => p_base_ledger_id
80230       ,p_target_ledger_id         => p_target_ledger_id
80231       ,p_entity_id                => l_array_entity_id(Idx)
80232       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
80233       ,p_entity_code              => l_array_entity_code(Idx)
80234       ,p_transaction_num          => l_array_transaction_num(Idx)
80235       ,p_event_id                 => l_array_event_id(Idx)
80236       ,p_event_class_code         => l_array_class_code(Idx)
80237       ,p_event_type_code          => l_array_event_type(Idx)
80238       ,p_event_number             => l_array_event_number(Idx)
80239       ,p_event_date               => l_array_event_date(Idx)
80240       ,p_transaction_date         => l_array_transaction_date(Idx)
80241       ,p_reference_num_1          => l_array_reference_num_1(Idx)
80242       ,p_reference_num_2          => l_array_reference_num_2(Idx)
80243       ,p_reference_num_3          => l_array_reference_num_3(Idx)
80244       ,p_reference_num_4          => l_array_reference_num_4(Idx)
80245       ,p_reference_char_1         => l_array_reference_char_1(Idx)
80249       ,p_reference_date_1         => l_array_reference_date_1(Idx)
80246       ,p_reference_char_2         => l_array_reference_char_2(Idx)
80247       ,p_reference_char_3         => l_array_reference_char_3(Idx)
80248       ,p_reference_char_4         => l_array_reference_char_4(Idx)
80250       ,p_reference_date_2         => l_array_reference_date_2(Idx)
80251       ,p_reference_date_3         => l_array_reference_date_3(Idx)
80252       ,p_reference_date_4         => l_array_reference_date_4(Idx)
80253       ,p_event_created_by         => l_array_event_created_by(Idx)
80254       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
80255        --
80256 END IF;
80257 
80258 
80259 
80260 --
80261 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
80262 
80263 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
80264 
80265 IF l_continue_with_lines THEN
80266    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
80267       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80268 
80269       xla_accounting_err_pkg.build_message
80270          (p_appli_s_name            => 'XLA'
80271          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
80272          ,p_token_1                 => 'LINE_NUMBER'
80273          ,p_value_1                 => l_array_extract_line_num(Idx)
80274          ,p_token_2                 => 'PRODUCT_NAME'
80275          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80276          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80277          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80278          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80279 
80280    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
80281       --
80282       -- following sets the accounting attributes needed to reverse
80283       -- accounting for a distributeion
80284       --
80285 
80286       --
80287       -- 5217187
80288       --
80289       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
80290       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
80291                                        g_array_event(l_event_id).array_value_num('header_index'));
80292       --
80293       --
80294 
80295       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
80296       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
80297       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
80298       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
80299       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
80300       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
80301       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
80302       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
80303       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
80304       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
80305       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
80306       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
80307       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
80308       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
80309       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
80310       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
80311       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
80312       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
80313       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
80314       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
80315       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
80316       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
80317       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
80318       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
80319       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
80320       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
80321       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
80322       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
80323       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
80324       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
80325       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
80326       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
80327       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
80328       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
80329       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
80330       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
80331       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
80332       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
80333       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
80334       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
80335       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
80336       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
80337       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ACCT_CLASS';
80338       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_54(Idx);
80339       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_CCID';
80343       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_ENTERED_CURR';
80340       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
80341       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_AMT';
80342       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
80344       l_rec_rev_acct_attrs.array_char_value(26)  := 
80345 xla_ae_sources_pkg.GetSystemSourceChar(
80346    p_source_code           => 'XLA_CURRENCY_CODE'
80347  , p_source_type_code      => 'Y'
80348  , p_source_application_id =>  602
80349 );
80350       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_DR_LEDGER_AMT';
80351       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
80352       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_OPTION';
80353       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_55(Idx);
80354       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
80355       l_rec_rev_acct_attrs.array_num_value(29)  := g_array_event(l_event_id).array_value_num('source_32');
80356       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID2';
80357       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_35(Idx);
80358       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
80359       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_34(Idx);
80360       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'UPG_CR_ENC_TYPE_ID';
80361       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_56(Idx);
80362       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'UPG_DR_ENC_TYPE_ID';
80363       l_rec_rev_acct_attrs.array_num_value(33)  := l_array_source_57(Idx);
80364 
80365 
80366       xla_ae_lines_pkg.SetAcctReversalAttrs
80367          (p_event_id             => l_event_id
80368          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
80369          ,p_calculate_acctd_flag => l_calculate_acctd_flag
80370          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
80371    END IF;
80372 
80373    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
80374        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
80375 
80376 --
80377 AcctLineType_79 (
80378  p_application_id  => p_application_id
80379  ,p_event_id     => l_event_id
80380  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80381  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80382  ,p_actual_flag => l_actual_flag
80383  ,p_balance_type_code => l_balance_type_code
80384  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80385  
80386  , p_source_2 => l_array_source_2(Idx)
80387  , p_source_3 => l_array_source_3(Idx)
80388  , p_source_4 => l_array_source_4(Idx)
80389  , p_source_5 => l_array_source_5(Idx)
80390  , p_source_6 => l_array_source_6(Idx)
80391  , p_source_22 => l_array_source_22(Idx)
80392  , p_source_23 => l_array_source_23(Idx)
80393  , p_source_25 => l_array_source_25(Idx)
80394  , p_source_27 => l_array_source_27(Idx)
80395  , p_source_28 => l_array_source_28(Idx)
80396  , p_source_29 => l_array_source_29(Idx)
80397  , p_source_30 => l_array_source_30(Idx)
80398  , p_source_31 => l_array_source_31(Idx)
80399  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80400  , p_source_33 => l_array_source_33(Idx)
80401  , p_source_34 => l_array_source_34(Idx)
80402  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80403  , p_source_35 => l_array_source_35(Idx)
80404  , p_source_44 => l_array_source_44(Idx)
80405  , p_source_45 => l_array_source_45(Idx)
80406  , p_source_46 => l_array_source_46(Idx)
80407  , p_source_47 => l_array_source_47(Idx)
80408  , p_source_48 => l_array_source_48(Idx)
80409  , p_source_49 => l_array_source_49(Idx)
80410  , p_source_50 => l_array_source_50(Idx)
80411  , p_source_51 => l_array_source_51(Idx)
80412  , p_source_52 => l_array_source_52(Idx)
80413  , p_source_54 => l_array_source_54(Idx)
80414  , p_source_55 => l_array_source_55(Idx)
80415  , p_source_56 => l_array_source_56(Idx)
80416  , p_source_57 => l_array_source_57(Idx)
80417  );
80418 If(l_balance_type_code = 'A') THEN
80419   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80420 END IF;
80421 
80422 --
80423 
80424 
80425 --
80426 AcctLineType_81 (
80427  p_application_id  => p_application_id
80428  ,p_event_id     => l_event_id
80429  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80430  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80431  ,p_actual_flag => l_actual_flag
80432  ,p_balance_type_code => l_balance_type_code
80433  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80434  
80435  , p_source_2 => l_array_source_2(Idx)
80436  , p_source_3 => l_array_source_3(Idx)
80437  , p_source_4 => l_array_source_4(Idx)
80438  , p_source_6 => l_array_source_6(Idx)
80439  , p_source_7 => l_array_source_7(Idx)
80440  , p_source_22 => l_array_source_22(Idx)
80441  , p_source_23 => l_array_source_23(Idx)
80442  , p_source_25 => l_array_source_25(Idx)
80443  , p_source_27 => l_array_source_27(Idx)
80444  , p_source_28 => l_array_source_28(Idx)
80445  , p_source_29 => l_array_source_29(Idx)
80446  , p_source_30 => l_array_source_30(Idx)
80447  , p_source_31 => l_array_source_31(Idx)
80448  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80449  , p_source_33 => l_array_source_33(Idx)
80450  , p_source_34 => l_array_source_34(Idx)
80451  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80452  , p_source_35 => l_array_source_35(Idx)
80453  , p_source_44 => l_array_source_44(Idx)
80454  , p_source_45 => l_array_source_45(Idx)
80455  , p_source_46 => l_array_source_46(Idx)
80456  , p_source_47 => l_array_source_47(Idx)
80457  , p_source_48 => l_array_source_48(Idx)
80458  , p_source_49 => l_array_source_49(Idx)
80459  , p_source_50 => l_array_source_50(Idx)
80460  , p_source_51 => l_array_source_51(Idx)
80461  , p_source_52 => l_array_source_52(Idx)
80462  , p_source_54 => l_array_source_54(Idx)
80463  , p_source_55 => l_array_source_55(Idx)
80467 If(l_balance_type_code = 'A') THEN
80464  , p_source_56 => l_array_source_56(Idx)
80465  , p_source_57 => l_array_source_57(Idx)
80466  );
80468   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80469 END IF;
80470 
80471 --
80472 
80473 
80474 --
80475 AcctLineType_89 (
80476  p_application_id  => p_application_id
80477  ,p_event_id     => l_event_id
80478  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80479  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80480  ,p_actual_flag => l_actual_flag
80481  ,p_balance_type_code => l_balance_type_code
80482  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80483  
80484  , p_source_2 => l_array_source_2(Idx)
80485  , p_source_3 => l_array_source_3(Idx)
80486  , p_source_6 => l_array_source_6(Idx)
80487  , p_source_22 => l_array_source_22(Idx)
80488  , p_source_23 => l_array_source_23(Idx)
80489  , p_source_25 => l_array_source_25(Idx)
80490  , p_source_27 => l_array_source_27(Idx)
80491  , p_source_28 => l_array_source_28(Idx)
80492  , p_source_29 => l_array_source_29(Idx)
80493  , p_source_30 => l_array_source_30(Idx)
80494  , p_source_31 => l_array_source_31(Idx)
80495  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80496  , p_source_33 => l_array_source_33(Idx)
80497  , p_source_34 => l_array_source_34(Idx)
80498  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80499  , p_source_35 => l_array_source_35(Idx)
80500  , p_source_44 => l_array_source_44(Idx)
80501  , p_source_45 => l_array_source_45(Idx)
80502  , p_source_46 => l_array_source_46(Idx)
80503  , p_source_47 => l_array_source_47(Idx)
80504  , p_source_48 => l_array_source_48(Idx)
80505  , p_source_49 => l_array_source_49(Idx)
80506  , p_source_50 => l_array_source_50(Idx)
80507  , p_source_51 => l_array_source_51(Idx)
80508  , p_source_52 => l_array_source_52(Idx)
80509  , p_source_54 => l_array_source_54(Idx)
80510  , p_source_55 => l_array_source_55(Idx)
80511  , p_source_56 => l_array_source_56(Idx)
80512  , p_source_57 => l_array_source_57(Idx)
80513  );
80514 If(l_balance_type_code = 'A') THEN
80515   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80516 END IF;
80517 
80518 --
80519 
80520 
80521 --
80522 AcctLineType_92 (
80523  p_application_id  => p_application_id
80524  ,p_event_id     => l_event_id
80525  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80526  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80527  ,p_actual_flag => l_actual_flag
80528  ,p_balance_type_code => l_balance_type_code
80529  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80530  
80531  , p_source_2 => l_array_source_2(Idx)
80532  , p_source_3 => l_array_source_3(Idx)
80533  , p_source_6 => l_array_source_6(Idx)
80534  , p_source_22 => l_array_source_22(Idx)
80535  , p_source_23 => l_array_source_23(Idx)
80536  , p_source_25 => l_array_source_25(Idx)
80537  , p_source_27 => l_array_source_27(Idx)
80538  , p_source_28 => l_array_source_28(Idx)
80539  , p_source_29 => l_array_source_29(Idx)
80540  , p_source_30 => l_array_source_30(Idx)
80541  , p_source_31 => l_array_source_31(Idx)
80542  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80543  , p_source_33 => l_array_source_33(Idx)
80544  , p_source_34 => l_array_source_34(Idx)
80545  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80546  , p_source_35 => l_array_source_35(Idx)
80547  , p_source_44 => l_array_source_44(Idx)
80548  , p_source_45 => l_array_source_45(Idx)
80549  , p_source_46 => l_array_source_46(Idx)
80550  , p_source_47 => l_array_source_47(Idx)
80551  , p_source_48 => l_array_source_48(Idx)
80552  , p_source_49 => l_array_source_49(Idx)
80553  , p_source_50 => l_array_source_50(Idx)
80554  , p_source_51 => l_array_source_51(Idx)
80555  , p_source_52 => l_array_source_52(Idx)
80556  , p_source_54 => l_array_source_54(Idx)
80557  , p_source_55 => l_array_source_55(Idx)
80558  , p_source_56 => l_array_source_56(Idx)
80559  , p_source_57 => l_array_source_57(Idx)
80560  , p_source_69 => l_array_source_69(Idx)
80561  , p_source_69_meaning => l_array_source_69_meaning(Idx)
80562  , p_source_70 => l_array_source_70(Idx)
80563  );
80564 If(l_balance_type_code = 'A') THEN
80565   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80566 END IF;
80567 
80568 --
80569 
80570 
80571 --
80572 AcctLineType_95 (
80573  p_application_id  => p_application_id
80574  ,p_event_id     => l_event_id
80575  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80576  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80577  ,p_actual_flag => l_actual_flag
80578  ,p_balance_type_code => l_balance_type_code
80579  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80580  
80581  , p_source_2 => l_array_source_2(Idx)
80582  , p_source_3 => l_array_source_3(Idx)
80583  , p_source_6 => l_array_source_6(Idx)
80584  , p_source_22 => l_array_source_22(Idx)
80585  , p_source_23 => l_array_source_23(Idx)
80586  , p_source_25 => l_array_source_25(Idx)
80587  , p_source_27 => l_array_source_27(Idx)
80588  , p_source_28 => l_array_source_28(Idx)
80589  , p_source_29 => l_array_source_29(Idx)
80590  , p_source_30 => l_array_source_30(Idx)
80591  , p_source_31 => l_array_source_31(Idx)
80592  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80593  , p_source_33 => l_array_source_33(Idx)
80594  , p_source_34 => l_array_source_34(Idx)
80595  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80596  , p_source_35 => l_array_source_35(Idx)
80597  , p_source_44 => l_array_source_44(Idx)
80598  , p_source_45 => l_array_source_45(Idx)
80599  , p_source_46 => l_array_source_46(Idx)
80600  , p_source_47 => l_array_source_47(Idx)
80601  , p_source_48 => l_array_source_48(Idx)
80602  , p_source_49 => l_array_source_49(Idx)
80603  , p_source_50 => l_array_source_50(Idx)
80604  , p_source_51 => l_array_source_51(Idx)
80605  , p_source_52 => l_array_source_52(Idx)
80609  , p_source_57 => l_array_source_57(Idx)
80606  , p_source_54 => l_array_source_54(Idx)
80607  , p_source_55 => l_array_source_55(Idx)
80608  , p_source_56 => l_array_source_56(Idx)
80610  , p_source_69 => l_array_source_69(Idx)
80611  , p_source_69_meaning => l_array_source_69_meaning(Idx)
80612  , p_source_71 => l_array_source_71(Idx)
80613  , p_source_72 => l_array_source_72(Idx)
80614  );
80615 If(l_balance_type_code = 'A') THEN
80616   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80617 END IF;
80618 
80619 --
80620 
80621 
80622 --
80623 AcctLineType_99 (
80624  p_application_id  => p_application_id
80625  ,p_event_id     => l_event_id
80626  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80627  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80628  ,p_actual_flag => l_actual_flag
80629  ,p_balance_type_code => l_balance_type_code
80630  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80631  
80632  , p_source_2 => l_array_source_2(Idx)
80633  , p_source_3 => l_array_source_3(Idx)
80634  , p_source_6 => l_array_source_6(Idx)
80635  , p_source_22 => l_array_source_22(Idx)
80636  , p_source_23 => l_array_source_23(Idx)
80637  , p_source_25 => l_array_source_25(Idx)
80638  , p_source_27 => l_array_source_27(Idx)
80639  , p_source_28 => l_array_source_28(Idx)
80640  , p_source_29 => l_array_source_29(Idx)
80641  , p_source_30 => l_array_source_30(Idx)
80642  , p_source_31 => l_array_source_31(Idx)
80643  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80644  , p_source_33 => l_array_source_33(Idx)
80645  , p_source_34 => l_array_source_34(Idx)
80646  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80647  , p_source_35 => l_array_source_35(Idx)
80648  , p_source_44 => l_array_source_44(Idx)
80649  , p_source_45 => l_array_source_45(Idx)
80650  , p_source_46 => l_array_source_46(Idx)
80651  , p_source_54 => l_array_source_54(Idx)
80652  , p_source_55 => l_array_source_55(Idx)
80653  , p_source_56 => l_array_source_56(Idx)
80654  , p_source_57 => l_array_source_57(Idx)
80655  , p_source_69 => l_array_source_69(Idx)
80656  , p_source_69_meaning => l_array_source_69_meaning(Idx)
80657  , p_source_70 => l_array_source_70(Idx)
80658  , p_source_73 => l_array_source_73(Idx)
80659  , p_source_74 => l_array_source_74(Idx)
80660  , p_source_75 => l_array_source_75(Idx)
80661  , p_source_76 => l_array_source_76(Idx)
80662  , p_source_77 => l_array_source_77(Idx)
80663  , p_source_78 => l_array_source_78(Idx)
80664  );
80665 If(l_balance_type_code = 'A') THEN
80666   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80667 END IF;
80668 
80669 --
80670 
80671 
80672 --
80673 AcctLineType_101 (
80674  p_application_id  => p_application_id
80675  ,p_event_id     => l_event_id
80676  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80677  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80678  ,p_actual_flag => l_actual_flag
80679  ,p_balance_type_code => l_balance_type_code
80680  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80681  
80682  , p_source_2 => l_array_source_2(Idx)
80683  , p_source_3 => l_array_source_3(Idx)
80684  , p_source_6 => l_array_source_6(Idx)
80685  , p_source_22 => l_array_source_22(Idx)
80686  , p_source_23 => l_array_source_23(Idx)
80687  , p_source_25 => l_array_source_25(Idx)
80688  , p_source_27 => l_array_source_27(Idx)
80689  , p_source_28 => l_array_source_28(Idx)
80690  , p_source_29 => l_array_source_29(Idx)
80691  , p_source_30 => l_array_source_30(Idx)
80692  , p_source_31 => l_array_source_31(Idx)
80693  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80694  , p_source_33 => l_array_source_33(Idx)
80695  , p_source_34 => l_array_source_34(Idx)
80696  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80697  , p_source_35 => l_array_source_35(Idx)
80698  , p_source_44 => l_array_source_44(Idx)
80699  , p_source_45 => l_array_source_45(Idx)
80700  , p_source_46 => l_array_source_46(Idx)
80701  , p_source_54 => l_array_source_54(Idx)
80702  , p_source_55 => l_array_source_55(Idx)
80703  , p_source_56 => l_array_source_56(Idx)
80704  , p_source_57 => l_array_source_57(Idx)
80705  , p_source_69 => l_array_source_69(Idx)
80706  , p_source_69_meaning => l_array_source_69_meaning(Idx)
80707  , p_source_71 => l_array_source_71(Idx)
80708  , p_source_72 => l_array_source_72(Idx)
80709  , p_source_79 => l_array_source_79(Idx)
80710  , p_source_80 => l_array_source_80(Idx)
80711  , p_source_81 => l_array_source_81(Idx)
80712  , p_source_82 => l_array_source_82(Idx)
80713  , p_source_83 => l_array_source_83(Idx)
80714  , p_source_84 => l_array_source_84(Idx)
80715  );
80716 If(l_balance_type_code = 'A') THEN
80717   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80718 END IF;
80719 
80720 --
80721 
80722 
80723 --
80724 AcctLineType_104 (
80725  p_application_id  => p_application_id
80726  ,p_event_id     => l_event_id
80727  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80728  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80729  ,p_actual_flag => l_actual_flag
80730  ,p_balance_type_code => l_balance_type_code
80731  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80732  
80733  , p_source_2 => l_array_source_2(Idx)
80734  , p_source_3 => l_array_source_3(Idx)
80735  , p_source_6 => l_array_source_6(Idx)
80736  , p_source_22 => l_array_source_22(Idx)
80737  , p_source_23 => l_array_source_23(Idx)
80738  , p_source_25 => l_array_source_25(Idx)
80739  , p_source_27 => l_array_source_27(Idx)
80740  , p_source_28 => l_array_source_28(Idx)
80741  , p_source_29 => l_array_source_29(Idx)
80742  , p_source_30 => l_array_source_30(Idx)
80743  , p_source_31 => l_array_source_31(Idx)
80744  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80745  , p_source_33 => l_array_source_33(Idx)
80746  , p_source_34 => l_array_source_34(Idx)
80747  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80751  , p_source_45 => l_array_source_45(Idx)
80748  , p_source_35 => l_array_source_35(Idx)
80749  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
80750  , p_source_44 => l_array_source_44(Idx)
80752  , p_source_46 => l_array_source_46(Idx)
80753  , p_source_47 => l_array_source_47(Idx)
80754  , p_source_48 => l_array_source_48(Idx)
80755  , p_source_49 => l_array_source_49(Idx)
80756  , p_source_50 => l_array_source_50(Idx)
80757  , p_source_51 => l_array_source_51(Idx)
80758  , p_source_52 => l_array_source_52(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_72 => l_array_source_72(Idx)
80764  , p_source_85 => l_array_source_85(Idx)
80765  , p_source_86 => l_array_source_86(Idx)
80766  );
80767 If(l_balance_type_code = 'A') THEN
80768   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80769 END IF;
80770 
80771 --
80772 
80773 
80774 --
80775 AcctLineType_108 (
80776  p_application_id  => p_application_id
80777  ,p_event_id     => l_event_id
80778  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80779  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80780  ,p_actual_flag => l_actual_flag
80781  ,p_balance_type_code => l_balance_type_code
80782  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80783  
80784  , p_source_2 => l_array_source_2(Idx)
80785  , p_source_3 => l_array_source_3(Idx)
80786  , p_source_6 => l_array_source_6(Idx)
80787  , p_source_22 => l_array_source_22(Idx)
80788  , p_source_23 => l_array_source_23(Idx)
80789  , p_source_25 => l_array_source_25(Idx)
80790  , p_source_27 => l_array_source_27(Idx)
80791  , p_source_28 => l_array_source_28(Idx)
80792  , p_source_29 => l_array_source_29(Idx)
80793  , p_source_30 => l_array_source_30(Idx)
80794  , p_source_31 => l_array_source_31(Idx)
80795  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
80796  , p_source_33 => l_array_source_33(Idx)
80797  , p_source_34 => l_array_source_34(Idx)
80798  , p_source_34_meaning => l_array_source_34_meaning(Idx)
80799  , p_source_35 => l_array_source_35(Idx)
80800  , p_source_44 => l_array_source_44(Idx)
80801  , p_source_45 => l_array_source_45(Idx)
80802  , p_source_46 => l_array_source_46(Idx)
80803  , p_source_54 => l_array_source_54(Idx)
80804  , p_source_55 => l_array_source_55(Idx)
80805  , p_source_56 => l_array_source_56(Idx)
80806  , p_source_57 => l_array_source_57(Idx)
80807  , p_source_69 => l_array_source_69(Idx)
80808  , p_source_69_meaning => l_array_source_69_meaning(Idx)
80809  , p_source_71 => l_array_source_71(Idx)
80810  , p_source_72 => l_array_source_72(Idx)
80811  , p_source_79 => l_array_source_79(Idx)
80812  , p_source_80 => l_array_source_80(Idx)
80813  , p_source_81 => l_array_source_81(Idx)
80814  , p_source_82 => l_array_source_82(Idx)
80815  , p_source_83 => l_array_source_83(Idx)
80816  , p_source_84 => l_array_source_84(Idx)
80817  );
80818 If(l_balance_type_code = 'A') THEN
80819   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80820 END IF;
80821 
80822 --
80823 
80824       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
80825       -- or secondary ledger that has different currency with primary
80826       -- or alc that is calculated by sla
80827       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
80828             (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'))
80829 
80830 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
80831 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
80832           AND (l_actual_flag = 'A')) THEN
80833         XLA_AE_LINES_PKG.CreateGainOrLossLines(
80834           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
80835          ,p_application_id   => p_application_id
80836          ,p_amb_context_code => 'DEFAULT'
80837          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
80838          ,p_event_class_code => C_EVENT_CLASS_CODE
80839          ,p_event_type_code  => C_EVENT_TYPE_CODE
80840          
80841          ,p_gain_ccid        => -1
80842          ,p_loss_ccid        => -1
80843 
80844          ,p_actual_flag      => l_actual_flag
80845          ,p_enc_flag         => null
80846          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
80847          ,p_enc_g_l_ref      => null
80848          );
80849       END IF;
80850    END IF;
80851 END IF;
80852 
80853    ELSE
80854       --
80855       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
80856       --
80857       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80858          trace
80859             (p_msg      => 'Trancaction revesal option is Y'
80860             ,p_level    => C_LEVEL_STATEMENT
80861             ,p_module   => l_log_module);
80862       END IF;
80863    END IF;
80864 
80865 END LOOP;
80866 l_result := XLA_AE_LINES_PKG.InsertLines ;
80867 end loop;
80868 close line_cur;
80869 
80870 
80871 --
80872 -- insert headers into xla_ae_headers_gt table
80873 --
80874 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
80875 
80876 -- insert into errors table here.
80877 
80878 END LOOP;
80879 
80880 --
80881 -- 4865292
80882 --
80883 -- Compare g_hdr_extract_count with event count in
80884 -- CreateHeadersAndLines.
80885 --
80886 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
80887 
80888 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80889    trace (p_msg     => '# rows extracted from header extract objects '
80893          ,p_module  => l_log_module);
80890                     || ' (running total): '
80891                     || g_hdr_extract_count
80892          ,p_level   => C_LEVEL_STATEMENT
80894 END IF;
80895 
80896 CLOSE header_cur;
80897 --
80898 
80899 --
80900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80901    trace
80902       (p_msg      => 'END of EventClass_127'
80903       ,p_level    => C_LEVEL_PROCEDURE
80904       ,p_module   => l_log_module);
80905 END IF;
80906 --
80907 RETURN l_result;
80908 EXCEPTION
80909 WHEN xla_exceptions_pkg.application_exception THEN
80910    
80911 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
80912 
80913    
80914 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
80915 
80916    RAISE;
80917 WHEN OTHERS THEN
80918    xla_exceptions_pkg.raise_message
80919       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_127');
80920 END EventClass_127;
80921 --
80922 
80923 ---------------------------------------
80924 --
80925 -- PRIVATE PROCEDURE
80926 --         insert_sources_128
80927 --
80928 ----------------------------------------
80929 --
80930 PROCEDURE insert_sources_128(
80931                                 p_target_ledger_id       IN NUMBER
80932                               , p_language               IN VARCHAR2
80933                               , p_sla_ledger_id          IN NUMBER
80934                               , p_pad_start_date         IN DATE
80935                               , p_pad_end_date           IN DATE
80936                          )
80937 IS
80938 
80939 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ALL';
80940 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST';
80941 p_apps_owner                   VARCHAR2(30);
80942 l_log_module                   VARCHAR2(240);
80943 BEGIN
80944 IF g_log_enabled THEN
80945       l_log_module := C_DEFAULT_MODULE||'.insert_sources_128';
80946 END IF;
80947 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80948 
80949       trace
80950          (p_msg      => 'BEGIN of insert_sources_128'
80951          ,p_level    => C_LEVEL_PROCEDURE
80952          ,p_module   => l_log_module);
80953 
80954 END IF;
80955 
80956 -- select APPS owner
80957 SELECT oracle_username
80958   INTO p_apps_owner
80959   FROM fnd_oracle_userid
80960  WHERE read_only_flag = 'U'
80961 ;
80962 
80963 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80964       trace
80965          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
80966                         ' - p_language = '||p_language||
80967                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
80968                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
80969                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
80970                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
80971          ,p_level    => C_LEVEL_STATEMENT
80972          ,p_module   => l_log_module);
80973 END IF;
80974 
80975 
80976 --
80977 INSERT INTO xla_diag_sources --hdr2
80978 (
80979         event_id
80980       , ledger_id
80981       , sla_ledger_id
80982       , description_language
80983       , object_name
80984       , object_type_code
80985       , line_number
80986       , source_application_id
80987       , source_type_code
80988       , source_code
80989       , source_value
80990       , source_meaning
80991       , created_by
80992       , creation_date
80993       , last_update_date
80994       , last_updated_by
80995       , last_update_login
80996       , program_update_date
80997       , program_application_id
80998       , program_id
80999       , request_id
81000 )
81001 SELECT
81002         event_id
81003       , p_target_ledger_id
81004       , p_sla_ledger_id
81005       , p_language
81006       , object_name
81007       , object_type_code
81008       , line_number
81009       , source_application_id
81010       , source_type_code
81011       , source_code
81012       , SUBSTR(source_value ,1,1996)
81013       , SUBSTR(source_meaning ,1,200)
81014       , xla_environment_pkg.g_Usr_Id
81015       , TRUNC(SYSDATE)
81016       , TRUNC(SYSDATE)
81017       , xla_environment_pkg.g_Usr_Id
81018       , xla_environment_pkg.g_Login_Id
81019       , TRUNC(SYSDATE)
81020       , xla_environment_pkg.g_Prog_Appl_Id
81021       , xla_environment_pkg.g_Prog_Id
81022       , xla_environment_pkg.g_Req_Id
81023   FROM (
81024        SELECT xet.event_id                  event_id
81025             , 0                          line_number
81026             , CASE r
81027                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
81028                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
81029                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
81030                 
81031                ELSE null
81032               END                           object_name
81033             , CASE r
81034                 WHEN 1 THEN 'HEADER' 
81035                 WHEN 2 THEN 'HEADER' 
81036                 WHEN 3 THEN 'HEADER' 
81037                 
81038                 ELSE null
81039               END                           object_type_code
81040             , CASE r
81041                 WHEN 1 THEN '275' 
81042                 WHEN 2 THEN '275' 
81043                 WHEN 3 THEN '275' 
81044                 
81045                 ELSE null
81046               END                           source_application_id
81047             , 'S'             source_type_code
81048             , CASE r
81049                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
81050                 WHEN 2 THEN 'SYSTEM_LINKAGE_FUNCTION' 
81051                 WHEN 3 THEN 'GL_DATE' 
81055             , CASE r
81052                 
81053                 ELSE null
81054               END                           source_code
81056                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
81057                 WHEN 2 THEN TO_CHAR(h2.SYSTEM_LINKAGE_FUNCTION)
81058                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
81059                 
81060                 ELSE null
81061               END                           source_value
81062             , null              source_meaning
81063          FROM xla_events_gt     xet  
81064       , PA_XLA_EXP_HEADER_V  h2
81065              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
81066          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81067            AND xet.event_class_code = C_EVENT_CLASS_CODE
81068               AND h2.event_id = xet.event_id
81069 
81070 )
81071 ;
81072 --
81073 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81074 
81075       trace
81076          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
81077          ,p_level    => C_LEVEL_STATEMENT
81078          ,p_module   => l_log_module);
81079 
81080 END IF;
81081 --
81082 
81083 
81084 
81085 --
81086 INSERT INTO xla_diag_sources  --line2
81087 (
81088         event_id
81089       , ledger_id
81090       , sla_ledger_id
81091       , description_language
81092       , object_name
81093       , object_type_code
81094       , line_number
81095       , source_application_id
81096       , source_type_code
81097       , source_code
81098       , source_value
81099       , source_meaning
81100       , created_by
81101       , creation_date
81102       , last_update_date
81103       , last_updated_by
81104       , last_update_login
81105       , program_update_date
81106       , program_application_id
81107       , program_id
81108       , request_id
81109 )
81110 SELECT  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             , l1.line_number                 line_number
81134             , CASE r
81135                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
81136                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
81137                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
81138                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
81139                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
81140                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
81141                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
81142                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
81143                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
81144                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
81145                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
81146                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
81147                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
81148                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
81149                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
81150                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
81151                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
81152                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
81153                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
81154                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
81155                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
81156                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
81157                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
81158                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
81159                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
81160                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
81161                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
81162                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
81163                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
81164                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
81165                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
81166                 WHEN 32 THEN 'PA_XLA_CDL_LINES_V' 
81167                 WHEN 33 THEN 'PA_XLA_CDL_LINES_V' 
81168                 WHEN 34 THEN 'PA_XLA_CDL_LINES_V' 
81169                 WHEN 35 THEN 'PA_XLA_CDL_LINES_V' 
81170                 WHEN 36 THEN 'PA_XLA_CDL_LINES_V' 
81171                 WHEN 37 THEN 'PA_XLA_CDL_LINES_V' 
81172                 WHEN 38 THEN 'PA_XLA_CDL_LINES_V' 
81173                 WHEN 39 THEN 'PA_XLA_CDL_LINES_V' 
81174                 WHEN 40 THEN 'PA_XLA_CDL_LINES_V' 
81175                 WHEN 41 THEN 'PA_XLA_CDL_LINES_V' 
81176                 WHEN 42 THEN 'PA_XLA_CDL_LINES_V' 
81177                 WHEN 43 THEN 'PA_XLA_CDL_LINES_V' 
81178                 WHEN 44 THEN 'PA_XLA_CDL_LINES_V' 
81179                 WHEN 45 THEN 'PA_XLA_CDL_LINES_V' 
81180                 WHEN 46 THEN 'PA_XLA_CDL_LINES_V' 
81181                 WHEN 47 THEN 'PA_XLA_CDL_LINES_V' 
81182                 WHEN 48 THEN 'PA_XLA_CDL_LINES_V' 
81183                 WHEN 49 THEN 'PA_XLA_CDL_LINES_V' 
81184                 
81185                ELSE null
81186               END                           object_name
81187             , CASE r
81188                 WHEN 1 THEN 'LINE' 
81189                 WHEN 2 THEN 'LINE' 
81190                 WHEN 3 THEN 'LINE' 
81191                 WHEN 4 THEN 'LINE' 
81195                 WHEN 8 THEN 'LINE' 
81192                 WHEN 5 THEN 'LINE' 
81193                 WHEN 6 THEN 'LINE' 
81194                 WHEN 7 THEN 'LINE' 
81196                 WHEN 9 THEN 'LINE' 
81197                 WHEN 10 THEN 'LINE' 
81198                 WHEN 11 THEN 'LINE' 
81199                 WHEN 12 THEN 'LINE' 
81200                 WHEN 13 THEN 'LINE' 
81201                 WHEN 14 THEN 'LINE' 
81202                 WHEN 15 THEN 'LINE' 
81203                 WHEN 16 THEN 'LINE' 
81204                 WHEN 17 THEN 'LINE' 
81205                 WHEN 18 THEN 'LINE' 
81206                 WHEN 19 THEN 'LINE' 
81207                 WHEN 20 THEN 'LINE' 
81208                 WHEN 21 THEN 'LINE' 
81209                 WHEN 22 THEN 'LINE' 
81210                 WHEN 23 THEN 'LINE' 
81211                 WHEN 24 THEN 'LINE' 
81212                 WHEN 25 THEN 'LINE' 
81213                 WHEN 26 THEN 'LINE' 
81214                 WHEN 27 THEN 'LINE' 
81215                 WHEN 28 THEN 'LINE' 
81216                 WHEN 29 THEN 'LINE' 
81217                 WHEN 30 THEN 'LINE' 
81218                 WHEN 31 THEN 'LINE' 
81219                 WHEN 32 THEN 'LINE' 
81220                 WHEN 33 THEN 'LINE' 
81221                 WHEN 34 THEN 'LINE' 
81222                 WHEN 35 THEN 'LINE' 
81223                 WHEN 36 THEN 'LINE' 
81224                 WHEN 37 THEN 'LINE' 
81225                 WHEN 38 THEN 'LINE' 
81226                 WHEN 39 THEN 'LINE' 
81227                 WHEN 40 THEN 'LINE' 
81228                 WHEN 41 THEN 'LINE' 
81229                 WHEN 42 THEN 'LINE' 
81230                 WHEN 43 THEN 'LINE' 
81231                 WHEN 44 THEN 'LINE' 
81232                 WHEN 45 THEN 'LINE' 
81233                 WHEN 46 THEN 'LINE' 
81234                 WHEN 47 THEN 'LINE' 
81235                 WHEN 48 THEN 'LINE' 
81236                 WHEN 49 THEN 'LINE' 
81237                 
81238                 ELSE null
81239               END                           object_type_code
81240             , CASE r
81241                 WHEN 1 THEN '275' 
81242                 WHEN 2 THEN '275' 
81243                 WHEN 3 THEN '275' 
81244                 WHEN 4 THEN '275' 
81245                 WHEN 5 THEN '275' 
81246                 WHEN 6 THEN '275' 
81247                 WHEN 7 THEN '275' 
81248                 WHEN 8 THEN '275' 
81249                 WHEN 9 THEN '275' 
81250                 WHEN 10 THEN '275' 
81251                 WHEN 11 THEN '275' 
81252                 WHEN 12 THEN '275' 
81253                 WHEN 13 THEN '275' 
81254                 WHEN 14 THEN '275' 
81255                 WHEN 15 THEN '275' 
81256                 WHEN 16 THEN '275' 
81257                 WHEN 17 THEN '275' 
81258                 WHEN 18 THEN '275' 
81259                 WHEN 19 THEN '275' 
81260                 WHEN 20 THEN '275' 
81261                 WHEN 21 THEN '275' 
81262                 WHEN 22 THEN '275' 
81263                 WHEN 23 THEN '275' 
81264                 WHEN 24 THEN '275' 
81265                 WHEN 25 THEN '275' 
81266                 WHEN 26 THEN '275' 
81267                 WHEN 27 THEN '275' 
81268                 WHEN 28 THEN '275' 
81269                 WHEN 29 THEN '275' 
81270                 WHEN 30 THEN '275' 
81271                 WHEN 31 THEN '275' 
81272                 WHEN 32 THEN '275' 
81273                 WHEN 33 THEN '275' 
81274                 WHEN 34 THEN '275' 
81275                 WHEN 35 THEN '275' 
81276                 WHEN 36 THEN '275' 
81277                 WHEN 37 THEN '275' 
81278                 WHEN 38 THEN '275' 
81279                 WHEN 39 THEN '275' 
81280                 WHEN 40 THEN '275' 
81281                 WHEN 41 THEN '275' 
81282                 WHEN 42 THEN '275' 
81283                 WHEN 43 THEN '275' 
81284                 WHEN 44 THEN '275' 
81285                 WHEN 45 THEN '275' 
81286                 WHEN 46 THEN '275' 
81287                 WHEN 47 THEN '275' 
81288                 WHEN 48 THEN '275' 
81289                 WHEN 49 THEN '275' 
81290                 
81291                 ELSE null
81292               END                           source_application_id
81293             , 'S'             source_type_code
81294             , CASE r
81295                 WHEN 1 THEN 'BUDGET_CCID' 
81296                 WHEN 2 THEN 'COST_CCID' 
81297                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
81298                 WHEN 4 THEN 'ADJ_COST_CCID' 
81299                 WHEN 5 THEN 'COST_CLEARING_CCID' 
81300                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
81301                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
81302                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
81303                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
81304                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
81305                 WHEN 11 THEN 'EXCHANGE_RATE' 
81306                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
81307                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
81308                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
81309                 WHEN 15 THEN 'LINE_NUMBER' 
81310                 WHEN 16 THEN 'LINE_TYPE' 
81311                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
81312                 WHEN 18 THEN 'ENTERED_BURDENED_COST' 
81313                 WHEN 19 THEN 'ACCT_BURDENED_COST' 
81314                 WHEN 20 THEN 'ENCUMBRANCE_AMOUNT' 
81315                 WHEN 21 THEN 'PA_APPLICATION_ID' 
81316                 WHEN 22 THEN 'PA_DISTRIBUTION_TYPE' 
81317                 WHEN 23 THEN 'PA_ENTITY_CODE' 
81318                 WHEN 24 THEN 'PA_FIRST_DIST_ID' 
81319                 WHEN 25 THEN 'PA_FIRST_SYS_TRANS_ID' 
81320                 WHEN 26 THEN 'PA_SECOND_DIST_ID' 
81321                 WHEN 27 THEN 'ENC_UPG_DR_ACCT_CLASS' 
81322                 WHEN 28 THEN 'ENC_UPG_CR_ACCT_CLASS' 
81326                 WHEN 32 THEN 'DOCUMENT_TYPE' 
81323                 WHEN 29 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
81324                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
81325                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
81327                 WHEN 33 THEN 'ENC_JE_LINES_REVERSED_FLAG' 
81328                 WHEN 34 THEN 'PO_RELEASE_ID' 
81329                 WHEN 35 THEN 'CWK_RATE_BASED_TC_FLAG' 
81330                 WHEN 36 THEN 'INVOICE_APPLICATION_ID' 
81331                 WHEN 37 THEN 'INVOICE_DISTRIBUTION_TYPE' 
81332                 WHEN 38 THEN 'INVOICE_ENTITY_CODE' 
81333                 WHEN 39 THEN 'INVOICE_FIRST_DIST_ID' 
81334                 WHEN 40 THEN 'INVOICE_FIRST_SYS_TRANS_ID' 
81335                 WHEN 41 THEN 'INVOICE_SECOND_DIST_ID' 
81336                 WHEN 42 THEN 'PO_APPLICATION_ID' 
81337                 WHEN 43 THEN 'PO_DISTRIBUTION_TYPE' 
81338                 WHEN 44 THEN 'PO_ENTITY_CODE' 
81339                 WHEN 45 THEN 'PO_FIRST_DIST_ID' 
81340                 WHEN 46 THEN 'PO_FIRST_SYS_TRANS_ID' 
81341                 WHEN 47 THEN 'PO_SECOND_DIST_ID' 
81342                 WHEN 48 THEN 'ENC_ACCT_ENABLED' 
81343                 WHEN 49 THEN 'LIQUIDATE_ENCUM_FLAG' 
81344                 
81345                 ELSE null
81346               END                           source_code
81347             , CASE r
81348                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
81349                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
81350                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
81351                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
81352                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
81353                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
81354                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
81355                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
81356                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
81357                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
81358                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
81359                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
81360                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
81361                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
81362                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
81363                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
81364                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
81365                 WHEN 18 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
81366                 WHEN 19 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
81367                 WHEN 20 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
81368                 WHEN 21 THEN TO_CHAR(l1.PA_APPLICATION_ID)
81369                 WHEN 22 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
81370                 WHEN 23 THEN TO_CHAR(l1.PA_ENTITY_CODE)
81371                 WHEN 24 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
81372                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
81373                 WHEN 26 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
81374                 WHEN 27 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
81375                 WHEN 28 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
81376                 WHEN 29 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
81377                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
81378                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
81379                 WHEN 32 THEN TO_CHAR(l1.DOCUMENT_TYPE)
81380                 WHEN 33 THEN TO_CHAR(l1.ENC_JE_LINES_REVERSED_FLAG)
81381                 WHEN 34 THEN TO_CHAR(l1.PO_RELEASE_ID)
81382                 WHEN 35 THEN TO_CHAR(l1.CWK_RATE_BASED_TC_FLAG)
81383                 WHEN 36 THEN TO_CHAR(l1.INVOICE_APPLICATION_ID)
81384                 WHEN 37 THEN TO_CHAR(l1.INVOICE_DISTRIBUTION_TYPE)
81385                 WHEN 38 THEN TO_CHAR(l1.INVOICE_ENTITY_CODE)
81386                 WHEN 39 THEN TO_CHAR(l1.INVOICE_FIRST_DIST_ID)
81387                 WHEN 40 THEN TO_CHAR(l1.INVOICE_FIRST_SYS_TRANS_ID)
81388                 WHEN 41 THEN TO_CHAR(l1.INVOICE_SECOND_DIST_ID)
81389                 WHEN 42 THEN TO_CHAR(l1.PO_APPLICATION_ID)
81390                 WHEN 43 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
81391                 WHEN 44 THEN TO_CHAR(l1.PO_ENTITY_CODE)
81392                 WHEN 45 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
81393                 WHEN 46 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
81394                 WHEN 47 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
81395                 WHEN 48 THEN TO_CHAR(l1.ENC_ACCT_ENABLED)
81396                 WHEN 49 THEN TO_CHAR(l1.LIQUIDATE_ENCUM_FLAG)
81397                 
81398                 ELSE null
81399               END                           source_value
81400             , CASE r
81401                 WHEN 3 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
81402                           103371
81403                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
81404                          ,'ALLOW_OVERRIDE_CCID_FLAG'
81405                          ,'S'
81406                          ,275)
81407                 WHEN 16 THEN fvl34.meaning
81408                 WHEN 32 THEN fvl69.meaning
81409                 
81410                 ELSE null
81411               END               source_meaning
81412          FROM  xla_events_gt     xet  
81413         , PA_XLA_CDL_LINES_V  l1
81414   , fnd_lookup_values    fvl34
81415   , fnd_lookup_values    fvl69
81416             , (select rownum r from all_objects where rownum <= 49 and owner = p_apps_owner)
81417         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81418           AND xet.event_class_code = C_EVENT_CLASS_CODE
81419             AND l1.event_id          = xet.event_id
81420    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
81421   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
81422   AND fvl34.view_application_id(+) = 275
81423   AND fvl34.language(+)            = USERENV('LANG')
81424      AND fvl69.lookup_type(+)         = 'FC_DOC_TYPE'
81425   AND fvl69.lookup_code(+)         = l1.DOCUMENT_TYPE
81426   AND fvl69.view_application_id(+) = 275
81427   AND fvl69.language(+)            = USERENV('LANG')
81428   
81432 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81429 )
81430 ;
81431 --
81433 
81434       trace
81435          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
81436          ,p_level    => C_LEVEL_STATEMENT
81437          ,p_module   => l_log_module);
81438 
81439 END IF;
81440 
81441 
81442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81443       trace
81444          (p_msg      => 'END of insert_sources_128'
81445          ,p_level    => C_LEVEL_PROCEDURE
81446          ,p_module   => l_log_module);
81447 END IF;
81448 EXCEPTION
81449   WHEN xla_exceptions_pkg.application_exception THEN
81450       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81451             trace
81452                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81453                ,p_level    => C_LEVEL_EXCEPTION
81454                ,p_module   => l_log_module);
81455       END IF;
81456       RAISE;
81457   WHEN OTHERS THEN
81458       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81459             trace
81460                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81461                ,p_level    => C_LEVEL_EXCEPTION
81462                ,p_module   => l_log_module);
81463        END IF;
81464        xla_exceptions_pkg.raise_message
81465            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_128');
81466 END insert_sources_128;
81467 --
81468 
81469 ---------------------------------------
81470 --
81471 -- PRIVATE FUNCTION
81472 --         EventClass_128
81473 --
81474 ----------------------------------------
81475 --
81476 FUNCTION EventClass_128
81477        (p_application_id         IN NUMBER
81478        ,p_base_ledger_id         IN NUMBER
81479        ,p_target_ledger_id       IN NUMBER
81480        ,p_language               IN VARCHAR2
81481        ,p_currency_code          IN VARCHAR2
81482        ,p_sla_ledger_id          IN NUMBER
81483        ,p_pad_start_date         IN DATE
81484        ,p_pad_end_date           IN DATE
81485        ,p_primary_ledger_id      IN NUMBER)
81486 RETURN BOOLEAN IS
81487 --
81488 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ALL';
81489 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST';
81490 
81491 l_calculate_acctd_flag   VARCHAR2(1) :='N';
81492 l_calculate_g_l_flag     VARCHAR2(1) :='N';
81493 --
81494 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81495 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81496 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81497 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81498 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81499 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81500 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81501 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81502 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81503 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81504 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81505 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81506 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81507 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81508 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81509 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81510 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81511 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81512 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81513 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81514 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81515 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81516 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
81517 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81518 
81519 l_event_id                             NUMBER;
81520 l_previous_event_id                    NUMBER;
81521 l_first_event_id                       NUMBER;
81522 l_last_event_id                        NUMBER;
81523 
81524 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
81525 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
81526 --
81527 --
81528 l_result                    BOOLEAN := TRUE;
81529 l_rows                      NUMBER  := 1000;
81530 l_event_type_name           VARCHAR2(80) := 'All';
81531 l_event_class_name          VARCHAR2(80) := 'Total Burdened Cost';
81532 l_description               VARCHAR2(4000);
81533 l_transaction_reversal      NUMBER;
81534 l_ae_header_id              NUMBER;
81535 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
81536 l_log_module                VARCHAR2(240);
81537 --
81538 l_acct_reversal_source      VARCHAR2(30);
81539 l_trx_reversal_source       VARCHAR2(30);
81540 
81541 l_continue_with_lines       BOOLEAN := TRUE;
81542 --
81543 l_acc_rev_gl_date_source    DATE;                      -- 4262811
81544 --
81545 type t_array_event_id is table of number index by binary_integer;
81546 
81547 l_rec_array_event                    t_rec_array_event;
81548 l_null_rec_array_event               t_rec_array_event;
81549 l_array_ae_header_id                 xla_number_array_type;
81550 l_actual_flag                        VARCHAR2(1) := NULL;
81551 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
81552 l_balance_type_code                  VARCHAR2(1) :=NULL;
81553 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
81557 --
81554 
81555 --
81556 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
81558 
81559 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
81560 TYPE t_array_source_37 IS TABLE OF PA_XLA_EXP_HEADER_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
81561 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
81562 
81563 TYPE t_array_source_2 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
81564 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
81565 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
81566 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
81567 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
81568 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
81569 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
81570 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81571 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
81572 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
81573 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
81574 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
81575 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81576 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
81577 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
81578 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
81579 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
81580 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
81581 TYPE t_array_source_45 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
81582 TYPE t_array_source_46 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
81583 TYPE t_array_source_47 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
81584 TYPE t_array_source_48 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
81585 TYPE t_array_source_49 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
81586 TYPE t_array_source_50 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81587 TYPE t_array_source_51 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
81588 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81589 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81590 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81591 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
81592 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
81593 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
81594 TYPE t_array_source_69 IS TABLE OF PA_XLA_CDL_LINES_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
81595 TYPE t_array_source_70 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_JE_LINES_REVERSED_FLAG%TYPE INDEX BY BINARY_INTEGER;
81596 TYPE t_array_source_71 IS TABLE OF PA_XLA_CDL_LINES_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
81597 TYPE t_array_source_72 IS TABLE OF PA_XLA_CDL_LINES_V.CWK_RATE_BASED_TC_FLAG%TYPE INDEX BY BINARY_INTEGER;
81598 TYPE t_array_source_73 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
81599 TYPE t_array_source_74 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
81600 TYPE t_array_source_75 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
81601 TYPE t_array_source_76 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81602 TYPE t_array_source_77 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
81603 TYPE t_array_source_78 IS TABLE OF PA_XLA_CDL_LINES_V.INVOICE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81604 TYPE t_array_source_79 IS TABLE OF PA_XLA_CDL_LINES_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
81605 TYPE t_array_source_80 IS TABLE OF PA_XLA_CDL_LINES_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
81606 TYPE t_array_source_81 IS TABLE OF PA_XLA_CDL_LINES_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
81607 TYPE t_array_source_82 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81608 TYPE t_array_source_83 IS TABLE OF PA_XLA_CDL_LINES_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
81609 TYPE t_array_source_84 IS TABLE OF PA_XLA_CDL_LINES_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
81610 TYPE t_array_source_85 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_ACCT_ENABLED%TYPE INDEX BY BINARY_INTEGER;
81611 TYPE t_array_source_86 IS TABLE OF PA_XLA_CDL_LINES_V.LIQUIDATE_ENCUM_FLAG%TYPE INDEX BY BINARY_INTEGER;
81612 
81613 l_array_source_32              t_array_source_32;
81614 l_array_source_37              t_array_source_37;
81615 l_array_source_87              t_array_source_87;
81616 
81617 l_array_source_2      t_array_source_2;
81618 l_array_source_3      t_array_source_3;
81619 l_array_source_4      t_array_source_4;
81620 l_array_source_5      t_array_source_5;
81621 l_array_source_6      t_array_source_6;
81622 l_array_source_7      t_array_source_7;
81623 l_array_source_22      t_array_source_22;
81624 l_array_source_23      t_array_source_23;
81625 l_array_source_25      t_array_source_25;
81626 l_array_source_27      t_array_source_27;
81627 l_array_source_28      t_array_source_28;
81631 l_array_source_33      t_array_source_33;
81628 l_array_source_29      t_array_source_29;
81629 l_array_source_30      t_array_source_30;
81630 l_array_source_31      t_array_source_31;
81632 l_array_source_34      t_array_source_34;
81633 l_array_source_34_meaning      t_array_lookup_meaning;
81634 l_array_source_35      t_array_source_35;
81635 l_array_source_44      t_array_source_44;
81636 l_array_source_45      t_array_source_45;
81637 l_array_source_46      t_array_source_46;
81638 l_array_source_47      t_array_source_47;
81639 l_array_source_48      t_array_source_48;
81640 l_array_source_49      t_array_source_49;
81641 l_array_source_50      t_array_source_50;
81642 l_array_source_51      t_array_source_51;
81643 l_array_source_52      t_array_source_52;
81644 l_array_source_53      t_array_source_53;
81645 l_array_source_54      t_array_source_54;
81646 l_array_source_55      t_array_source_55;
81647 l_array_source_56      t_array_source_56;
81648 l_array_source_57      t_array_source_57;
81649 l_array_source_69      t_array_source_69;
81650 l_array_source_69_meaning      t_array_lookup_meaning;
81651 l_array_source_70      t_array_source_70;
81652 l_array_source_71      t_array_source_71;
81653 l_array_source_72      t_array_source_72;
81654 l_array_source_73      t_array_source_73;
81655 l_array_source_74      t_array_source_74;
81656 l_array_source_75      t_array_source_75;
81657 l_array_source_76      t_array_source_76;
81658 l_array_source_77      t_array_source_77;
81659 l_array_source_78      t_array_source_78;
81660 l_array_source_79      t_array_source_79;
81661 l_array_source_80      t_array_source_80;
81662 l_array_source_81      t_array_source_81;
81663 l_array_source_82      t_array_source_82;
81664 l_array_source_83      t_array_source_83;
81665 l_array_source_84      t_array_source_84;
81666 l_array_source_85      t_array_source_85;
81667 l_array_source_86      t_array_source_86;
81668 
81669 --
81670 CURSOR header_cur
81671 IS
81672 SELECT /*+ leading(xet) cardinality(xet,1) */
81673 -- Event Class Code: TOT_BURDENED_COST
81674     xet.entity_id
81675    ,xet.legal_entity_id
81676    ,xet.entity_code
81677    ,xet.transaction_number
81678    ,xet.event_id
81679    ,xet.event_class_code
81680    ,xet.event_type_code
81681    ,xet.event_number
81682    ,xet.event_date
81683    ,xet.transaction_date
81684    ,xet.reference_num_1
81685    ,xet.reference_num_2
81686    ,xet.reference_num_3
81687    ,xet.reference_num_4
81688    ,xet.reference_char_1
81689    ,xet.reference_char_2
81690    ,xet.reference_char_3
81691    ,xet.reference_char_4
81692    ,xet.reference_date_1
81693    ,xet.reference_date_2
81694    ,xet.reference_date_3
81695    ,xet.reference_date_4
81696    ,xet.event_created_by
81697    ,xet.budgetary_control_flag 
81698   , h2.EXPENDITURE_ITEM_ID    source_32
81699   , h2.SYSTEM_LINKAGE_FUNCTION    source_37
81700   , h2.GL_DATE    source_87
81701   FROM xla_events_gt     xet 
81702   , PA_XLA_EXP_HEADER_V  h2
81703  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
81704    and xet.event_class_code = C_EVENT_CLASS_CODE
81705    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
81706 
81707  ORDER BY event_id
81708 ;
81709 
81710 
81711 --
81712 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
81713 IS
81714 SELECT  /*+ leading(xet) cardinality(xet,1) */
81715 -- Event Class Code: TOT_BURDENED_COST
81716     xet.entity_id
81717    ,xet.legal_entity_id
81718    ,xet.entity_code
81719    ,xet.transaction_number
81720    ,xet.event_id
81721    ,xet.event_class_code
81722    ,xet.event_type_code
81723    ,xet.event_number
81724    ,xet.event_date
81725    ,xet.transaction_date
81726    ,xet.reference_num_1
81727    ,xet.reference_num_2
81728    ,xet.reference_num_3
81729    ,xet.reference_num_4
81730    ,xet.reference_char_1
81731    ,xet.reference_char_2
81732    ,xet.reference_char_3
81733    ,xet.reference_char_4
81734    ,xet.reference_date_1
81735    ,xet.reference_date_2
81736    ,xet.reference_date_3
81737    ,xet.reference_date_4
81738    ,xet.event_created_by
81739    ,xet.budgetary_control_flag
81740  , l1.LINE_NUMBER  
81741   , l1.BUDGET_CCID    source_2
81742   , l1.COST_CCID    source_3
81743   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
81744   , l1.ADJ_COST_CCID    source_5
81745   , l1.COST_CLEARING_CCID    source_6
81746   , l1.ADJ_COST_CLEARING_CCID    source_7
81747   , l1.REVERSING_LINE_FLAG    source_22
81748   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
81749   , l1.ENTERED_CURRENCY_CODE    source_25
81750   , l1.EXCHANGE_RATE_DATE    source_27
81751   , l1.EXCHANGE_RATE    source_28
81752   , l1.EXCHANGE_RATE_TYPE    source_29
81753   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
81754   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
81755   , l1.LINE_NUMBER    source_33
81756   , l1.LINE_TYPE    source_34
81757   , fvl34.meaning   source_34_meaning
81758   , l1.LINE_NUM_REVERSED    source_35
81759   , l1.ENTERED_BURDENED_COST    source_44
81760   , l1.ACCT_BURDENED_COST    source_45
81761   , l1.ENCUMBRANCE_AMOUNT    source_46
81762   , l1.PA_APPLICATION_ID    source_47
81763   , l1.PA_DISTRIBUTION_TYPE    source_48
81764   , l1.PA_ENTITY_CODE    source_49
81765   , l1.PA_FIRST_DIST_ID    source_50
81766   , l1.PA_FIRST_SYS_TRANS_ID    source_51
81767   , l1.PA_SECOND_DIST_ID    source_52
81768   , l1.ENC_UPG_DR_ACCT_CLASS    source_53
81769   , l1.ENC_UPG_CR_ACCT_CLASS    source_54
81770   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_55
81771   , l1.ENCUMBRANCE_TYPE_ID    source_56
81772   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_57
81773   , l1.DOCUMENT_TYPE    source_69
81774   , fvl69.meaning   source_69_meaning
81775   , l1.ENC_JE_LINES_REVERSED_FLAG    source_70
81779   , l1.INVOICE_DISTRIBUTION_TYPE    source_74
81776   , l1.PO_RELEASE_ID    source_71
81777   , l1.CWK_RATE_BASED_TC_FLAG    source_72
81778   , l1.INVOICE_APPLICATION_ID    source_73
81780   , l1.INVOICE_ENTITY_CODE    source_75
81781   , l1.INVOICE_FIRST_DIST_ID    source_76
81782   , l1.INVOICE_FIRST_SYS_TRANS_ID    source_77
81783   , l1.INVOICE_SECOND_DIST_ID    source_78
81784   , l1.PO_APPLICATION_ID    source_79
81785   , l1.PO_DISTRIBUTION_TYPE    source_80
81786   , l1.PO_ENTITY_CODE    source_81
81787   , l1.PO_FIRST_DIST_ID    source_82
81788   , l1.PO_FIRST_SYS_TRANS_ID    source_83
81789   , l1.PO_SECOND_DIST_ID    source_84
81790   , l1.ENC_ACCT_ENABLED    source_85
81791   , l1.LIQUIDATE_ENCUM_FLAG    source_86
81792   FROM xla_events_gt     xet 
81793   , PA_XLA_CDL_LINES_V  l1
81794   , fnd_lookup_values    fvl34
81795   , fnd_lookup_values    fvl69
81796  WHERE xet.event_id between x_first_event_id and x_last_event_id
81797    and xet.event_date between p_pad_start_date and p_pad_end_date
81798    and xet.event_class_code = C_EVENT_CLASS_CODE
81799    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
81800    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
81801   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
81802   AND fvl34.view_application_id(+) = 275
81803   AND fvl34.language(+)            = USERENV('LANG')
81804      AND fvl69.lookup_type(+)         = 'FC_DOC_TYPE'
81805   AND fvl69.lookup_code(+)         = l1.DOCUMENT_TYPE
81806   AND fvl69.view_application_id(+) = 275
81807   AND fvl69.language(+)            = USERENV('LANG')
81808   ;
81809 
81810 --
81811 BEGIN
81812 IF g_log_enabled THEN
81813    l_log_module := C_DEFAULT_MODULE||'.EventClass_128';
81814 END IF;
81815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81816    trace
81817       (p_msg      => 'BEGIN of EventClass_128'
81818       ,p_level    => C_LEVEL_PROCEDURE
81819       ,p_module   => l_log_module);
81820 END IF;
81821 
81822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81823    trace
81824       (p_msg      => 'p_application_id = '||p_application_id||
81825                      ' - p_base_ledger_id = '||p_base_ledger_id||
81826                      ' - p_target_ledger_id  = '||p_target_ledger_id||
81827                      ' - p_language = '||p_language||
81828                      ' - p_currency_code = '||p_currency_code||
81829                      ' - p_sla_ledger_id = '||p_sla_ledger_id
81830       ,p_level    => C_LEVEL_STATEMENT
81831       ,p_module   => l_log_module);
81832 END IF;
81833 --
81834 -- initialze arrays
81835 --
81836 g_array_event.DELETE;
81837 l_rec_array_event := l_null_rec_array_event;
81838 --
81839 --------------------------------------
81840 -- 4262811 Initialze MPA Line Number
81841 --------------------------------------
81842 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
81843 
81844 --
81845 
81846 --
81847 OPEN header_cur;
81848 --
81849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81850    trace
81851    (p_msg      => 'SQL - FETCH header_cur'
81852    ,p_level    => C_LEVEL_STATEMENT
81853    ,p_module   => l_log_module);
81854 END IF;
81855 --
81856 LOOP
81857 FETCH header_cur BULK COLLECT INTO
81858         l_array_entity_id
81859       , l_array_legal_entity_id
81860       , l_array_entity_code
81861       , l_array_transaction_num
81862       , l_array_event_id
81863       , l_array_class_code
81864       , l_array_event_type
81865       , l_array_event_number
81866       , l_array_event_date
81867       , l_array_transaction_date
81868       , l_array_reference_num_1
81869       , l_array_reference_num_2
81870       , l_array_reference_num_3
81871       , l_array_reference_num_4
81872       , l_array_reference_char_1
81873       , l_array_reference_char_2
81874       , l_array_reference_char_3
81875       , l_array_reference_char_4
81876       , l_array_reference_date_1
81877       , l_array_reference_date_2
81878       , l_array_reference_date_3
81879       , l_array_reference_date_4
81880       , l_array_event_created_by
81881       , l_array_budgetary_control_flag 
81882       , l_array_source_32
81883       , l_array_source_37
81884       , l_array_source_87
81885       LIMIT l_rows;
81886 --
81887 IF (C_LEVEL_EVENT >= g_log_level) THEN
81888    trace
81889    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
81890    ,p_level    => C_LEVEL_EVENT
81891    ,p_module   => l_log_module);
81892 END IF;
81893 --
81894 EXIT WHEN l_array_entity_id.COUNT = 0;
81895 
81896 -- initialize arrays
81897 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
81898 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
81899 
81900 --
81901 -- Bug 4458708
81902 --
81903 XLA_AE_LINES_PKG.g_LineNumber := 0;
81904 
81905 
81906 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
81907 g_last_hdr_idx := l_array_event_id.LAST;
81908 --
81909 -- loop for the headers. Each iteration is for each header extract row
81910 -- fetched in header cursor
81911 --
81912 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
81913 
81914 --
81915 -- set event info as cache for other routines to refer event attributes
81916 --
81917 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
81918    (p_application_id           => p_application_id
81919    ,p_primary_ledger_id        => p_primary_ledger_id
81920    ,p_base_ledger_id           => p_base_ledger_id
81921    ,p_target_ledger_id         => p_target_ledger_id
81922    ,p_entity_id                => l_array_entity_id(hdr_idx)
81923    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
81924    ,p_entity_code              => l_array_entity_code(hdr_idx)
81928    ,p_event_type_code          => l_array_event_type(hdr_idx)
81925    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
81926    ,p_event_id                 => l_array_event_id(hdr_idx)
81927    ,p_event_class_code         => l_array_class_code(hdr_idx)
81929    ,p_event_number             => l_array_event_number(hdr_idx)
81930    ,p_event_date               => l_array_event_date(hdr_idx)
81931    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
81932    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
81933    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
81934    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
81935    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
81936    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
81937    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
81938    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
81939    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
81940    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
81941    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
81942    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
81943    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
81944    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
81945    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
81946 
81947 --
81948 -- set the status of entry to C_VALID (0)
81949 --
81950 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
81951 
81952 --
81953 -- initialize a row for ae header
81954 --
81955 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
81956 
81957 l_event_id := l_array_event_id(hdr_idx);
81958 
81959 --
81960 -- storing the hdr_idx for event. May be used by line cursor.
81961 --
81962 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
81963 
81964 --
81965 -- store sources from header extract. This can be improved to
81966 -- store only those sources from header extract that may be used in lines
81967 --
81968 
81969 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
81970 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
81971 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
81972 
81973 --
81974 -- initilaize the status of ae headers for diffrent balance types
81975 -- the status is initialised to C_NOT_CREATED (2)
81976 --
81977 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
81978 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
81979 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
81980 
81981 --
81982 -- call api to validate and store accounting attributes for header
81983 --
81984 
81985 ------------------------------------------------------------
81986 -- Accrual Reversal : to get date for Standard Source (NONE)
81987 ------------------------------------------------------------
81988 l_acc_rev_gl_date_source := NULL;
81989 
81990      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
81991       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
81992 
81993 
81994 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
81995 
81996 XLA_AE_HEADER_PKG.SetJeCategoryName;
81997 
81998 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
81999 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
82000 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
82001 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
82002 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
82003 
82004 
82005 -- No header level analytical criteria
82006 
82007 --
82008 --accounting attribute enhancement, bug 3612931
82009 --
82010 l_trx_reversal_source := SUBSTR(NULL, 1,30);
82011 
82012 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
82013    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82014 
82015    xla_accounting_err_pkg.build_message
82016       (p_appli_s_name            => 'XLA'
82017       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
82018       ,p_token_1                 => 'ACCT_ATTR_NAME'
82019       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
82020       ,p_token_2                 => 'PRODUCT_NAME'
82021       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82022       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82023       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82024       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82025 
82026 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
82027    --
82028    -- following sets the accounting attributes needed to reverse
82029    -- accounting for a distributeion
82030    --
82031    xla_ae_lines_pkg.SetTrxReversalAttrs
82032       (p_event_id              => l_event_id
82033       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
82034       ,p_trx_reversal_source   => l_trx_reversal_source);
82035 
82036 END IF;
82037 
82038 
82039 ----------------------------------------------------------------
82040 -- 4262811 -  update the header statuses to invalid in need be
82041 ----------------------------------------------------------------
82042 --
82043 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
82044 
82048   -----------------------------------------------
82045 
82046   -----------------------------------------------
82047   -- No accrual reversal for the event class/type
82049 ----------------------------------------------------------------
82050 
82051 --
82052 -- this ends the header loop iteration for one bulk fetch
82053 --
82054 END LOOP;
82055 
82056 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
82057 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
82058 
82059 --
82060 -- insert dummy rows into lines gt table that were created due to
82061 -- transaction reversals
82062 --
82063 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
82064    l_result := XLA_AE_LINES_PKG.InsertLines;
82065 END IF;
82066 
82067 --
82068 -- reset the temp_line_num for each set of events fetched from header
82069 -- cursor rather than doing it for each new event in line cursor
82070 -- Bug 3939231
82071 --
82072 xla_ae_lines_pkg.g_temp_line_num := 0;
82073 
82074 
82075 
82076 --
82077 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
82078 --
82079 --
82080 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82081 
82082       trace
82083          (p_msg      => 'SQL - FETCH line_cur'
82084          ,p_level    => C_LEVEL_STATEMENT
82085          ,p_module   => l_log_module);
82086 
82087 END IF;
82088 --
82089 --
82090 LOOP
82091   --
82092   FETCH line_cur BULK COLLECT INTO
82093         l_array_entity_id
82094       , l_array_legal_entity_id
82095       , l_array_entity_code
82096       , l_array_transaction_num
82097       , l_array_event_id
82098       , l_array_class_code
82099       , l_array_event_type
82100       , l_array_event_number
82101       , l_array_event_date
82102       , l_array_transaction_date
82103       , l_array_reference_num_1
82104       , l_array_reference_num_2
82105       , l_array_reference_num_3
82106       , l_array_reference_num_4
82107       , l_array_reference_char_1
82108       , l_array_reference_char_2
82109       , l_array_reference_char_3
82110       , l_array_reference_char_4
82111       , l_array_reference_date_1
82112       , l_array_reference_date_2
82113       , l_array_reference_date_3
82114       , l_array_reference_date_4
82115       , l_array_event_created_by
82116       , l_array_budgetary_control_flag
82117       , l_array_extract_line_num 
82118       , l_array_source_2
82119       , l_array_source_3
82120       , l_array_source_4
82121       , l_array_source_5
82122       , l_array_source_6
82123       , l_array_source_7
82124       , l_array_source_22
82125       , l_array_source_23
82126       , l_array_source_25
82127       , l_array_source_27
82128       , l_array_source_28
82129       , l_array_source_29
82130       , l_array_source_30
82131       , l_array_source_31
82132       , l_array_source_33
82133       , l_array_source_34
82134       , l_array_source_34_meaning
82135       , l_array_source_35
82136       , l_array_source_44
82137       , l_array_source_45
82138       , l_array_source_46
82139       , l_array_source_47
82140       , l_array_source_48
82141       , l_array_source_49
82142       , l_array_source_50
82143       , l_array_source_51
82144       , l_array_source_52
82145       , l_array_source_53
82146       , l_array_source_54
82147       , l_array_source_55
82148       , l_array_source_56
82149       , l_array_source_57
82150       , l_array_source_69
82151       , l_array_source_69_meaning
82152       , l_array_source_70
82153       , l_array_source_71
82154       , l_array_source_72
82155       , l_array_source_73
82156       , l_array_source_74
82157       , l_array_source_75
82158       , l_array_source_76
82159       , l_array_source_77
82160       , l_array_source_78
82161       , l_array_source_79
82162       , l_array_source_80
82163       , l_array_source_81
82164       , l_array_source_82
82165       , l_array_source_83
82166       , l_array_source_84
82167       , l_array_source_85
82168       , l_array_source_86
82169       LIMIT l_rows;
82170 
82171   --
82172   IF (C_LEVEL_EVENT >= g_log_level) THEN
82173             trace
82174                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
82175                ,p_level    => C_LEVEL_EVENT
82176                ,p_module   => l_log_module);
82177   END IF;
82178   --
82179   EXIT WHEN l_array_entity_id.count = 0;
82180 
82181   XLA_AE_LINES_PKG.g_rec_lines := null;
82182 
82183 --
82184 -- Bug 4458708
82185 --
82186 XLA_AE_LINES_PKG.g_LineNumber := 0;
82187 --
82188 --
82189 
82190 FOR Idx IN 1..l_array_event_id.count LOOP
82191    --
82192    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
82193    --
82194    l_event_id := l_array_event_id(idx);  -- 5648433
82195 
82196    --
82197    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82198    --
82199 
82200    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
82201              (g_array_event(l_event_id).array_value_num('header_index'))
82202          ,'N'
82203          ) <> 'Y'
82204    THEN
82205       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82206          trace
82207             (p_msg      => 'Trancaction revesal option is not Y '
82208             ,p_level    => C_LEVEL_STATEMENT
82209             ,p_module   => l_log_module);
82210       END IF;
82211 
82212 --
82213 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
82214 --
82218 --
82215 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
82216 --
82217 -- set event info as cache for other routines to refer event attributes
82219 
82220 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
82221    l_previous_event_id := l_event_id;
82222 
82223    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
82224       (p_application_id           => p_application_id
82225       ,p_primary_ledger_id        => p_primary_ledger_id
82226       ,p_base_ledger_id           => p_base_ledger_id
82227       ,p_target_ledger_id         => p_target_ledger_id
82228       ,p_entity_id                => l_array_entity_id(Idx)
82229       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
82230       ,p_entity_code              => l_array_entity_code(Idx)
82231       ,p_transaction_num          => l_array_transaction_num(Idx)
82232       ,p_event_id                 => l_array_event_id(Idx)
82233       ,p_event_class_code         => l_array_class_code(Idx)
82234       ,p_event_type_code          => l_array_event_type(Idx)
82235       ,p_event_number             => l_array_event_number(Idx)
82236       ,p_event_date               => l_array_event_date(Idx)
82237       ,p_transaction_date         => l_array_transaction_date(Idx)
82238       ,p_reference_num_1          => l_array_reference_num_1(Idx)
82239       ,p_reference_num_2          => l_array_reference_num_2(Idx)
82240       ,p_reference_num_3          => l_array_reference_num_3(Idx)
82241       ,p_reference_num_4          => l_array_reference_num_4(Idx)
82242       ,p_reference_char_1         => l_array_reference_char_1(Idx)
82243       ,p_reference_char_2         => l_array_reference_char_2(Idx)
82244       ,p_reference_char_3         => l_array_reference_char_3(Idx)
82245       ,p_reference_char_4         => l_array_reference_char_4(Idx)
82246       ,p_reference_date_1         => l_array_reference_date_1(Idx)
82247       ,p_reference_date_2         => l_array_reference_date_2(Idx)
82248       ,p_reference_date_3         => l_array_reference_date_3(Idx)
82249       ,p_reference_date_4         => l_array_reference_date_4(Idx)
82250       ,p_event_created_by         => l_array_event_created_by(Idx)
82251       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
82252        --
82253 END IF;
82254 
82255 
82256 
82257 --
82258 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
82259 
82260 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
82261 
82262 IF l_continue_with_lines THEN
82263    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
82264       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82265 
82266       xla_accounting_err_pkg.build_message
82267          (p_appli_s_name            => 'XLA'
82268          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
82269          ,p_token_1                 => 'LINE_NUMBER'
82270          ,p_value_1                 => l_array_extract_line_num(Idx)
82271          ,p_token_2                 => 'PRODUCT_NAME'
82272          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82273          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82274          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82275          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82276 
82277    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
82278       --
82279       -- following sets the accounting attributes needed to reverse
82280       -- accounting for a distributeion
82281       --
82282 
82283       --
82284       -- 5217187
82285       --
82286       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
82287       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
82288                                        g_array_event(l_event_id).array_value_num('header_index'));
82289       --
82290       --
82291 
82292       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
82293       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
82294       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
82295       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
82296       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
82297       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
82298       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
82299       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_44(Idx);
82300       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
82301       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
82302       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
82303       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_45(Idx);
82304       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
82305       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
82306       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
82307       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
82308       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
82309       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
82310       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
82311       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
82312       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
82313       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
82314       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
82315       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_44(Idx);
82316       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
82320       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
82317       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
82318       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
82319       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_45(Idx);
82321       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
82322       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
82323       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
82324       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
82325       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
82326       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
82327       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
82328       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
82329       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
82330       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
82331       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
82332       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
82333       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
82334       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
82335       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_53(Idx);
82336       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
82337       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_2(Idx);
82338       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
82339       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_46(Idx);
82340       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
82341       l_rec_rev_acct_attrs.array_char_value(26)  := 
82342 xla_ae_sources_pkg.GetSystemSourceChar(
82343    p_source_code           => 'XLA_CURRENCY_CODE'
82344  , p_source_type_code      => 'Y'
82345  , p_source_application_id =>  602
82346 );
82347       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
82348       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_46(Idx);
82349       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
82350       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_54(Idx);
82351       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
82352       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_2(Idx);
82353       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
82354       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_46(Idx);
82355       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
82356       l_rec_rev_acct_attrs.array_char_value(31)  := 
82357 xla_ae_sources_pkg.GetSystemSourceChar(
82358    p_source_code           => 'XLA_CURRENCY_CODE'
82359  , p_source_type_code      => 'Y'
82360  , p_source_application_id =>  602
82361 );
82362       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
82363       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_46(Idx);
82364       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
82365       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_55(Idx);
82366       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'GAIN_LOSS_REFERENCE';
82367       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_32');
82368       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID1';
82369       l_rec_rev_acct_attrs.array_num_value(35)  := g_array_event(l_event_id).array_value_num('source_32');
82370       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID2';
82371       l_rec_rev_acct_attrs.array_num_value(36)  := l_array_source_35(Idx);
82372       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
82373       l_rec_rev_acct_attrs.array_char_value(37)  := l_array_source_34(Idx);
82374       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_CR_ENC_TYPE_ID';
82375       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_56(Idx);
82376       l_rec_rev_acct_attrs.array_acct_attr_code(39) := 'UPG_DR_ENC_TYPE_ID';
82377       l_rec_rev_acct_attrs.array_num_value(39)  := l_array_source_57(Idx);
82378 
82379 
82380       xla_ae_lines_pkg.SetAcctReversalAttrs
82381          (p_event_id             => l_event_id
82382          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
82383          ,p_calculate_acctd_flag => l_calculate_acctd_flag
82384          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
82385    END IF;
82386 
82387    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
82388        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
82389 
82390 --
82391 AcctLineType_78 (
82392  p_application_id  => p_application_id
82393  ,p_event_id     => l_event_id
82394  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82395  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82396  ,p_actual_flag => l_actual_flag
82397  ,p_balance_type_code => l_balance_type_code
82398  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82399  
82400  , p_source_2 => l_array_source_2(Idx)
82401  , p_source_3 => l_array_source_3(Idx)
82402  , p_source_4 => l_array_source_4(Idx)
82403  , p_source_5 => l_array_source_5(Idx)
82404  , p_source_6 => l_array_source_6(Idx)
82405  , p_source_22 => l_array_source_22(Idx)
82406  , p_source_23 => l_array_source_23(Idx)
82407  , p_source_25 => l_array_source_25(Idx)
82408  , p_source_27 => l_array_source_27(Idx)
82409  , p_source_28 => l_array_source_28(Idx)
82410  , p_source_29 => l_array_source_29(Idx)
82411  , p_source_30 => l_array_source_30(Idx)
82412  , p_source_31 => l_array_source_31(Idx)
82413  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82414  , p_source_33 => l_array_source_33(Idx)
82418  , p_source_44 => l_array_source_44(Idx)
82415  , p_source_34 => l_array_source_34(Idx)
82416  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82417  , p_source_35 => l_array_source_35(Idx)
82419  , p_source_45 => l_array_source_45(Idx)
82420  , p_source_46 => l_array_source_46(Idx)
82421  , p_source_47 => l_array_source_47(Idx)
82422  , p_source_48 => l_array_source_48(Idx)
82423  , p_source_49 => l_array_source_49(Idx)
82424  , p_source_50 => l_array_source_50(Idx)
82425  , p_source_51 => l_array_source_51(Idx)
82426  , p_source_52 => l_array_source_52(Idx)
82427  , p_source_53 => l_array_source_53(Idx)
82428  , p_source_54 => l_array_source_54(Idx)
82429  , p_source_55 => l_array_source_55(Idx)
82430  , p_source_56 => l_array_source_56(Idx)
82431  , p_source_57 => l_array_source_57(Idx)
82432  );
82433 If(l_balance_type_code = 'A') THEN
82434   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82435 END IF;
82436 
82437 --
82438 
82439 
82440 --
82441 AcctLineType_80 (
82442  p_application_id  => p_application_id
82443  ,p_event_id     => l_event_id
82444  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82445  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82446  ,p_actual_flag => l_actual_flag
82447  ,p_balance_type_code => l_balance_type_code
82448  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82449  
82450  , p_source_2 => l_array_source_2(Idx)
82451  , p_source_3 => l_array_source_3(Idx)
82452  , p_source_4 => l_array_source_4(Idx)
82453  , p_source_6 => l_array_source_6(Idx)
82454  , p_source_7 => l_array_source_7(Idx)
82455  , p_source_22 => l_array_source_22(Idx)
82456  , p_source_23 => l_array_source_23(Idx)
82457  , p_source_25 => l_array_source_25(Idx)
82458  , p_source_27 => l_array_source_27(Idx)
82459  , p_source_28 => l_array_source_28(Idx)
82460  , p_source_29 => l_array_source_29(Idx)
82461  , p_source_30 => l_array_source_30(Idx)
82462  , p_source_31 => l_array_source_31(Idx)
82463  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82464  , p_source_33 => l_array_source_33(Idx)
82465  , p_source_34 => l_array_source_34(Idx)
82466  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82467  , p_source_35 => l_array_source_35(Idx)
82468  , p_source_44 => l_array_source_44(Idx)
82469  , p_source_45 => l_array_source_45(Idx)
82470  , p_source_46 => l_array_source_46(Idx)
82471  , p_source_47 => l_array_source_47(Idx)
82472  , p_source_48 => l_array_source_48(Idx)
82473  , p_source_49 => l_array_source_49(Idx)
82474  , p_source_50 => l_array_source_50(Idx)
82475  , p_source_51 => l_array_source_51(Idx)
82476  , p_source_52 => l_array_source_52(Idx)
82477  , p_source_53 => l_array_source_53(Idx)
82478  , p_source_54 => l_array_source_54(Idx)
82479  , p_source_55 => l_array_source_55(Idx)
82480  , p_source_56 => l_array_source_56(Idx)
82481  , p_source_57 => l_array_source_57(Idx)
82482  );
82483 If(l_balance_type_code = 'A') THEN
82484   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82485 END IF;
82486 
82487 --
82488 
82489 
82490 --
82491 AcctLineType_91 (
82492  p_application_id  => p_application_id
82493  ,p_event_id     => l_event_id
82494  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82495  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82496  ,p_actual_flag => l_actual_flag
82497  ,p_balance_type_code => l_balance_type_code
82498  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82499  
82500  , p_source_2 => l_array_source_2(Idx)
82501  , p_source_3 => l_array_source_3(Idx)
82502  , p_source_6 => l_array_source_6(Idx)
82503  , p_source_22 => l_array_source_22(Idx)
82504  , p_source_23 => l_array_source_23(Idx)
82505  , p_source_25 => l_array_source_25(Idx)
82506  , p_source_27 => l_array_source_27(Idx)
82507  , p_source_28 => l_array_source_28(Idx)
82508  , p_source_29 => l_array_source_29(Idx)
82509  , p_source_30 => l_array_source_30(Idx)
82510  , p_source_31 => l_array_source_31(Idx)
82511  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82512  , p_source_33 => l_array_source_33(Idx)
82513  , p_source_34 => l_array_source_34(Idx)
82514  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82515  , p_source_35 => l_array_source_35(Idx)
82516  , p_source_44 => l_array_source_44(Idx)
82517  , p_source_45 => l_array_source_45(Idx)
82518  , p_source_46 => l_array_source_46(Idx)
82519  , p_source_47 => l_array_source_47(Idx)
82520  , p_source_48 => l_array_source_48(Idx)
82521  , p_source_49 => l_array_source_49(Idx)
82522  , p_source_50 => l_array_source_50(Idx)
82523  , p_source_51 => l_array_source_51(Idx)
82524  , p_source_52 => l_array_source_52(Idx)
82525  , p_source_53 => l_array_source_53(Idx)
82526  , p_source_54 => l_array_source_54(Idx)
82527  , p_source_55 => l_array_source_55(Idx)
82528  , p_source_56 => l_array_source_56(Idx)
82529  , p_source_57 => l_array_source_57(Idx)
82530  );
82531 If(l_balance_type_code = 'A') THEN
82532   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82533 END IF;
82534 
82535 --
82536 
82537 
82538 --
82539 AcctLineType_93 (
82540  p_application_id  => p_application_id
82541  ,p_event_id     => l_event_id
82542  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82543  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82544  ,p_actual_flag => l_actual_flag
82545  ,p_balance_type_code => l_balance_type_code
82546  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82547  
82548  , p_source_2 => l_array_source_2(Idx)
82549  , p_source_3 => l_array_source_3(Idx)
82550  , p_source_6 => l_array_source_6(Idx)
82551  , p_source_22 => l_array_source_22(Idx)
82552  , p_source_23 => l_array_source_23(Idx)
82553  , p_source_25 => l_array_source_25(Idx)
82554  , p_source_27 => l_array_source_27(Idx)
82555  , p_source_28 => l_array_source_28(Idx)
82556  , p_source_29 => l_array_source_29(Idx)
82557  , p_source_30 => l_array_source_30(Idx)
82561  , p_source_34 => l_array_source_34(Idx)
82558  , p_source_31 => l_array_source_31(Idx)
82559  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82560  , p_source_33 => l_array_source_33(Idx)
82562  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82563  , p_source_35 => l_array_source_35(Idx)
82564  , p_source_44 => l_array_source_44(Idx)
82565  , p_source_45 => l_array_source_45(Idx)
82566  , p_source_46 => l_array_source_46(Idx)
82567  , p_source_47 => l_array_source_47(Idx)
82568  , p_source_48 => l_array_source_48(Idx)
82569  , p_source_49 => l_array_source_49(Idx)
82570  , p_source_50 => l_array_source_50(Idx)
82571  , p_source_51 => l_array_source_51(Idx)
82572  , p_source_52 => l_array_source_52(Idx)
82573  , p_source_53 => l_array_source_53(Idx)
82574  , p_source_54 => l_array_source_54(Idx)
82575  , p_source_55 => l_array_source_55(Idx)
82576  , p_source_56 => l_array_source_56(Idx)
82577  , p_source_57 => l_array_source_57(Idx)
82578  , p_source_69 => l_array_source_69(Idx)
82579  , p_source_69_meaning => l_array_source_69_meaning(Idx)
82580  , p_source_70 => l_array_source_70(Idx)
82581  );
82582 If(l_balance_type_code = 'A') THEN
82583   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82584 END IF;
82585 
82586 --
82587 
82588 
82589 --
82590 AcctLineType_96 (
82591  p_application_id  => p_application_id
82592  ,p_event_id     => l_event_id
82593  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82594  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82595  ,p_actual_flag => l_actual_flag
82596  ,p_balance_type_code => l_balance_type_code
82597  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82598  
82599  , p_source_2 => l_array_source_2(Idx)
82600  , p_source_3 => l_array_source_3(Idx)
82601  , p_source_6 => l_array_source_6(Idx)
82602  , p_source_22 => l_array_source_22(Idx)
82603  , p_source_23 => l_array_source_23(Idx)
82604  , p_source_25 => l_array_source_25(Idx)
82605  , p_source_27 => l_array_source_27(Idx)
82606  , p_source_28 => l_array_source_28(Idx)
82607  , p_source_29 => l_array_source_29(Idx)
82608  , p_source_30 => l_array_source_30(Idx)
82609  , p_source_31 => l_array_source_31(Idx)
82610  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82611  , p_source_33 => l_array_source_33(Idx)
82612  , p_source_34 => l_array_source_34(Idx)
82613  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82614  , p_source_35 => l_array_source_35(Idx)
82615  , p_source_44 => l_array_source_44(Idx)
82616  , p_source_45 => l_array_source_45(Idx)
82617  , p_source_46 => l_array_source_46(Idx)
82618  , p_source_47 => l_array_source_47(Idx)
82619  , p_source_48 => l_array_source_48(Idx)
82620  , p_source_49 => l_array_source_49(Idx)
82621  , p_source_50 => l_array_source_50(Idx)
82622  , p_source_51 => l_array_source_51(Idx)
82623  , p_source_52 => l_array_source_52(Idx)
82624  , p_source_53 => l_array_source_53(Idx)
82625  , p_source_54 => l_array_source_54(Idx)
82626  , p_source_55 => l_array_source_55(Idx)
82627  , p_source_56 => l_array_source_56(Idx)
82628  , p_source_57 => l_array_source_57(Idx)
82629  , p_source_69 => l_array_source_69(Idx)
82630  , p_source_69_meaning => l_array_source_69_meaning(Idx)
82631  , p_source_71 => l_array_source_71(Idx)
82632  , p_source_72 => l_array_source_72(Idx)
82633  );
82634 If(l_balance_type_code = 'A') THEN
82635   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82636 END IF;
82637 
82638 --
82639 
82640 
82641 --
82642 AcctLineType_98 (
82643  p_application_id  => p_application_id
82644  ,p_event_id     => l_event_id
82645  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82646  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82647  ,p_actual_flag => l_actual_flag
82648  ,p_balance_type_code => l_balance_type_code
82649  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82650  
82651  , p_source_2 => l_array_source_2(Idx)
82652  , p_source_3 => l_array_source_3(Idx)
82653  , p_source_6 => l_array_source_6(Idx)
82654  , p_source_22 => l_array_source_22(Idx)
82655  , p_source_23 => l_array_source_23(Idx)
82656  , p_source_25 => l_array_source_25(Idx)
82657  , p_source_27 => l_array_source_27(Idx)
82658  , p_source_28 => l_array_source_28(Idx)
82659  , p_source_29 => l_array_source_29(Idx)
82660  , p_source_30 => l_array_source_30(Idx)
82661  , p_source_31 => l_array_source_31(Idx)
82662  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82663  , p_source_33 => l_array_source_33(Idx)
82664  , p_source_34 => l_array_source_34(Idx)
82665  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82666  , p_source_35 => l_array_source_35(Idx)
82667  , p_source_44 => l_array_source_44(Idx)
82668  , p_source_45 => l_array_source_45(Idx)
82669  , p_source_46 => l_array_source_46(Idx)
82670  , p_source_53 => l_array_source_53(Idx)
82671  , p_source_54 => l_array_source_54(Idx)
82672  , p_source_55 => l_array_source_55(Idx)
82673  , p_source_56 => l_array_source_56(Idx)
82674  , p_source_57 => l_array_source_57(Idx)
82675  , p_source_69 => l_array_source_69(Idx)
82676  , p_source_69_meaning => l_array_source_69_meaning(Idx)
82677  , p_source_70 => l_array_source_70(Idx)
82678  , p_source_73 => l_array_source_73(Idx)
82679  , p_source_74 => l_array_source_74(Idx)
82680  , p_source_75 => l_array_source_75(Idx)
82681  , p_source_76 => l_array_source_76(Idx)
82682  , p_source_77 => l_array_source_77(Idx)
82683  , p_source_78 => l_array_source_78(Idx)
82684  );
82685 If(l_balance_type_code = 'A') THEN
82686   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82687 END IF;
82688 
82689 --
82690 
82691 
82692 --
82693 AcctLineType_102 (
82694  p_application_id  => p_application_id
82695  ,p_event_id     => l_event_id
82696  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82697  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82698  ,p_actual_flag => l_actual_flag
82702  , p_source_2 => l_array_source_2(Idx)
82699  ,p_balance_type_code => l_balance_type_code
82700  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82701  
82703  , p_source_3 => l_array_source_3(Idx)
82704  , p_source_6 => l_array_source_6(Idx)
82705  , p_source_22 => l_array_source_22(Idx)
82706  , p_source_23 => l_array_source_23(Idx)
82707  , p_source_25 => l_array_source_25(Idx)
82708  , p_source_27 => l_array_source_27(Idx)
82709  , p_source_28 => l_array_source_28(Idx)
82710  , p_source_29 => l_array_source_29(Idx)
82711  , p_source_30 => l_array_source_30(Idx)
82712  , p_source_31 => l_array_source_31(Idx)
82713  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82714  , p_source_33 => l_array_source_33(Idx)
82715  , p_source_34 => l_array_source_34(Idx)
82716  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82717  , p_source_35 => l_array_source_35(Idx)
82718  , p_source_44 => l_array_source_44(Idx)
82719  , p_source_45 => l_array_source_45(Idx)
82720  , p_source_46 => l_array_source_46(Idx)
82721  , p_source_53 => l_array_source_53(Idx)
82722  , p_source_54 => l_array_source_54(Idx)
82723  , p_source_55 => l_array_source_55(Idx)
82724  , p_source_56 => l_array_source_56(Idx)
82725  , p_source_57 => l_array_source_57(Idx)
82726  , p_source_69 => l_array_source_69(Idx)
82727  , p_source_69_meaning => l_array_source_69_meaning(Idx)
82728  , p_source_71 => l_array_source_71(Idx)
82729  , p_source_72 => l_array_source_72(Idx)
82730  , p_source_79 => l_array_source_79(Idx)
82731  , p_source_80 => l_array_source_80(Idx)
82732  , p_source_81 => l_array_source_81(Idx)
82733  , p_source_82 => l_array_source_82(Idx)
82734  , p_source_83 => l_array_source_83(Idx)
82735  , p_source_84 => l_array_source_84(Idx)
82736  );
82737 If(l_balance_type_code = 'A') THEN
82738   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82739 END IF;
82740 
82741 --
82742 
82743 
82744 --
82745 AcctLineType_106 (
82746  p_application_id  => p_application_id
82747  ,p_event_id     => l_event_id
82748  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82749  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82750  ,p_actual_flag => l_actual_flag
82751  ,p_balance_type_code => l_balance_type_code
82752  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82753  
82754  , p_source_2 => l_array_source_2(Idx)
82755  , p_source_3 => l_array_source_3(Idx)
82756  , p_source_6 => l_array_source_6(Idx)
82757  , p_source_22 => l_array_source_22(Idx)
82758  , p_source_23 => l_array_source_23(Idx)
82759  , p_source_25 => l_array_source_25(Idx)
82760  , p_source_27 => l_array_source_27(Idx)
82761  , p_source_28 => l_array_source_28(Idx)
82762  , p_source_29 => l_array_source_29(Idx)
82763  , p_source_30 => l_array_source_30(Idx)
82764  , p_source_31 => l_array_source_31(Idx)
82765  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82766  , p_source_33 => l_array_source_33(Idx)
82767  , p_source_34 => l_array_source_34(Idx)
82768  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82769  , p_source_35 => l_array_source_35(Idx)
82770  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
82771  , p_source_44 => l_array_source_44(Idx)
82772  , p_source_45 => l_array_source_45(Idx)
82773  , p_source_46 => l_array_source_46(Idx)
82774  , p_source_47 => l_array_source_47(Idx)
82775  , p_source_48 => l_array_source_48(Idx)
82776  , p_source_49 => l_array_source_49(Idx)
82777  , p_source_50 => l_array_source_50(Idx)
82778  , p_source_51 => l_array_source_51(Idx)
82779  , p_source_52 => l_array_source_52(Idx)
82780  , p_source_53 => l_array_source_53(Idx)
82781  , p_source_54 => l_array_source_54(Idx)
82782  , p_source_55 => l_array_source_55(Idx)
82783  , p_source_56 => l_array_source_56(Idx)
82784  , p_source_57 => l_array_source_57(Idx)
82785  , p_source_72 => l_array_source_72(Idx)
82786  , p_source_85 => l_array_source_85(Idx)
82787  , p_source_86 => l_array_source_86(Idx)
82788  );
82789 If(l_balance_type_code = 'A') THEN
82790   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82791 END IF;
82792 
82793 --
82794 
82795 
82796 --
82797 AcctLineType_107 (
82798  p_application_id  => p_application_id
82799  ,p_event_id     => l_event_id
82800  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82801  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82802  ,p_actual_flag => l_actual_flag
82803  ,p_balance_type_code => l_balance_type_code
82804  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82805  
82806  , p_source_2 => l_array_source_2(Idx)
82807  , p_source_3 => l_array_source_3(Idx)
82808  , p_source_6 => l_array_source_6(Idx)
82809  , p_source_22 => l_array_source_22(Idx)
82810  , p_source_23 => l_array_source_23(Idx)
82811  , p_source_25 => l_array_source_25(Idx)
82812  , p_source_27 => l_array_source_27(Idx)
82813  , p_source_28 => l_array_source_28(Idx)
82814  , p_source_29 => l_array_source_29(Idx)
82815  , p_source_30 => l_array_source_30(Idx)
82816  , p_source_31 => l_array_source_31(Idx)
82817  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
82818  , p_source_33 => l_array_source_33(Idx)
82819  , p_source_34 => l_array_source_34(Idx)
82820  , p_source_34_meaning => l_array_source_34_meaning(Idx)
82821  , p_source_35 => l_array_source_35(Idx)
82822  , p_source_44 => l_array_source_44(Idx)
82823  , p_source_45 => l_array_source_45(Idx)
82824  , p_source_46 => l_array_source_46(Idx)
82825  , p_source_53 => l_array_source_53(Idx)
82826  , p_source_54 => l_array_source_54(Idx)
82827  , p_source_55 => l_array_source_55(Idx)
82828  , p_source_56 => l_array_source_56(Idx)
82829  , p_source_57 => l_array_source_57(Idx)
82830  , p_source_69 => l_array_source_69(Idx)
82831  , p_source_69_meaning => l_array_source_69_meaning(Idx)
82832  , p_source_71 => l_array_source_71(Idx)
82833  , p_source_72 => l_array_source_72(Idx)
82834  , p_source_79 => l_array_source_79(Idx)
82838  , p_source_83 => l_array_source_83(Idx)
82835  , p_source_80 => l_array_source_80(Idx)
82836  , p_source_81 => l_array_source_81(Idx)
82837  , p_source_82 => l_array_source_82(Idx)
82839  , p_source_84 => l_array_source_84(Idx)
82840  );
82841 If(l_balance_type_code = 'A') THEN
82842   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82843 END IF;
82844 
82845 --
82846 
82847       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
82848       -- or secondary ledger that has different currency with primary
82849       -- or alc that is calculated by sla
82850       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
82851             (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'))
82852 
82853 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
82854 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
82855           AND (l_actual_flag = 'A')) THEN
82856         XLA_AE_LINES_PKG.CreateGainOrLossLines(
82857           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
82858          ,p_application_id   => p_application_id
82859          ,p_amb_context_code => 'DEFAULT'
82860          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
82861          ,p_event_class_code => C_EVENT_CLASS_CODE
82862          ,p_event_type_code  => C_EVENT_TYPE_CODE
82863          
82864          ,p_gain_ccid        => -1
82865          ,p_loss_ccid        => -1
82866 
82867          ,p_actual_flag      => l_actual_flag
82868          ,p_enc_flag         => null
82869          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
82870          ,p_enc_g_l_ref      => null
82871          );
82872       END IF;
82873    END IF;
82874 END IF;
82875 
82876    ELSE
82877       --
82878       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82879       --
82880       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82881          trace
82882             (p_msg      => 'Trancaction revesal option is Y'
82883             ,p_level    => C_LEVEL_STATEMENT
82884             ,p_module   => l_log_module);
82885       END IF;
82886    END IF;
82887 
82888 END LOOP;
82889 l_result := XLA_AE_LINES_PKG.InsertLines ;
82890 end loop;
82891 close line_cur;
82892 
82893 
82894 --
82895 -- insert headers into xla_ae_headers_gt table
82896 --
82897 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
82898 
82899 -- insert into errors table here.
82900 
82901 END LOOP;
82902 
82903 --
82904 -- 4865292
82905 --
82906 -- Compare g_hdr_extract_count with event count in
82907 -- CreateHeadersAndLines.
82908 --
82909 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
82910 
82911 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82912    trace (p_msg     => '# rows extracted from header extract objects '
82913                     || ' (running total): '
82914                     || g_hdr_extract_count
82915          ,p_level   => C_LEVEL_STATEMENT
82916          ,p_module  => l_log_module);
82917 END IF;
82918 
82919 CLOSE header_cur;
82920 --
82921 
82922 --
82923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82924    trace
82925       (p_msg      => 'END of EventClass_128'
82926       ,p_level    => C_LEVEL_PROCEDURE
82927       ,p_module   => l_log_module);
82928 END IF;
82929 --
82930 RETURN l_result;
82931 EXCEPTION
82932 WHEN xla_exceptions_pkg.application_exception THEN
82933    
82934 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
82935 
82936    
82937 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
82938 
82939    RAISE;
82940 WHEN OTHERS THEN
82941    xla_exceptions_pkg.raise_message
82942       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_128');
82943 END EventClass_128;
82944 --
82945 
82946 ---------------------------------------
82947 --
82948 -- PRIVATE PROCEDURE
82949 --         insert_sources_129
82950 --
82951 ----------------------------------------
82952 --
82953 PROCEDURE insert_sources_129(
82954                                 p_target_ledger_id       IN NUMBER
82955                               , p_language               IN VARCHAR2
82956                               , p_sla_ledger_id          IN NUMBER
82957                               , p_pad_start_date         IN DATE
82958                               , p_pad_end_date           IN DATE
82959                          )
82960 IS
82961 
82962 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ADJ_ALL';
82963 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USG_COST_ADJ';
82964 p_apps_owner                   VARCHAR2(30);
82965 l_log_module                   VARCHAR2(240);
82966 BEGIN
82967 IF g_log_enabled THEN
82968       l_log_module := C_DEFAULT_MODULE||'.insert_sources_129';
82969 END IF;
82970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82971 
82972       trace
82973          (p_msg      => 'BEGIN of insert_sources_129'
82974          ,p_level    => C_LEVEL_PROCEDURE
82975          ,p_module   => l_log_module);
82976 
82977 END IF;
82978 
82979 -- select APPS owner
82980 SELECT oracle_username
82981   INTO p_apps_owner
82982   FROM fnd_oracle_userid
82983  WHERE read_only_flag = 'U'
82984 ;
82985 
82986 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82987       trace
82988          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
82989                         ' - p_language = '||p_language||
82990                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
82994          ,p_level    => C_LEVEL_STATEMENT
82991                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
82992                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
82993                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
82995          ,p_module   => l_log_module);
82996 END IF;
82997 
82998 
82999 --
83000 INSERT INTO xla_diag_sources --hdr2
83001 (
83002         event_id
83003       , ledger_id
83004       , sla_ledger_id
83005       , description_language
83006       , object_name
83007       , object_type_code
83008       , line_number
83009       , source_application_id
83010       , source_type_code
83011       , source_code
83012       , source_value
83013       , source_meaning
83014       , created_by
83015       , creation_date
83016       , last_update_date
83017       , last_updated_by
83018       , last_update_login
83019       , program_update_date
83020       , program_application_id
83021       , program_id
83022       , request_id
83023 )
83024 SELECT
83025         event_id
83026       , p_target_ledger_id
83027       , p_sla_ledger_id
83028       , p_language
83029       , object_name
83030       , object_type_code
83031       , line_number
83032       , source_application_id
83033       , source_type_code
83034       , source_code
83035       , SUBSTR(source_value ,1,1996)
83036       , SUBSTR(source_meaning ,1,200)
83037       , xla_environment_pkg.g_Usr_Id
83038       , TRUNC(SYSDATE)
83039       , TRUNC(SYSDATE)
83040       , xla_environment_pkg.g_Usr_Id
83041       , xla_environment_pkg.g_Login_Id
83042       , TRUNC(SYSDATE)
83043       , xla_environment_pkg.g_Prog_Appl_Id
83044       , xla_environment_pkg.g_Prog_Id
83045       , xla_environment_pkg.g_Req_Id
83046   FROM (
83047        SELECT xet.event_id                  event_id
83048             , 0                          line_number
83049             , CASE r
83050                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
83051                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
83052                 
83053                ELSE null
83054               END                           object_name
83055             , CASE r
83056                 WHEN 1 THEN 'HEADER' 
83057                 WHEN 2 THEN 'HEADER' 
83058                 
83059                 ELSE null
83060               END                           object_type_code
83061             , CASE r
83062                 WHEN 1 THEN '275' 
83063                 WHEN 2 THEN '275' 
83064                 
83065                 ELSE null
83066               END                           source_application_id
83067             , 'S'             source_type_code
83068             , CASE r
83069                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
83070                 WHEN 2 THEN 'GL_DATE' 
83071                 
83072                 ELSE null
83073               END                           source_code
83074             , CASE r
83075                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
83076                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
83077                 
83078                 ELSE null
83079               END                           source_value
83080             , null              source_meaning
83081          FROM xla_events_gt     xet  
83082       , PA_XLA_EXP_HEADER_V  h2
83083              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
83084          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
83085            AND xet.event_class_code = C_EVENT_CLASS_CODE
83086               AND h2.event_id = xet.event_id
83087 
83088 )
83089 ;
83090 --
83091 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83092 
83093       trace
83094          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
83095          ,p_level    => C_LEVEL_STATEMENT
83096          ,p_module   => l_log_module);
83097 
83098 END IF;
83099 --
83100 
83101 
83102 
83103 --
83104 INSERT INTO xla_diag_sources  --line2
83105 (
83106         event_id
83107       , ledger_id
83108       , sla_ledger_id
83109       , description_language
83110       , object_name
83111       , object_type_code
83112       , line_number
83113       , source_application_id
83114       , source_type_code
83115       , source_code
83116       , source_value
83117       , source_meaning
83118       , created_by
83119       , creation_date
83120       , last_update_date
83121       , last_updated_by
83122       , last_update_login
83123       , program_update_date
83124       , program_application_id
83125       , program_id
83126       , request_id
83127 )
83128 SELECT  event_id
83129       , p_target_ledger_id
83130       , p_sla_ledger_id
83131       , p_language
83132       , object_name
83133       , object_type_code
83134       , line_number
83135       , source_application_id
83136       , source_type_code
83137       , source_code
83138       , SUBSTR(source_value,1,1996)
83139       , SUBSTR(source_meaning ,1,200)
83140       , xla_environment_pkg.g_Usr_Id
83141       , TRUNC(SYSDATE)
83142       , TRUNC(SYSDATE)
83143       , xla_environment_pkg.g_Usr_Id
83144       , xla_environment_pkg.g_Login_Id
83145       , TRUNC(SYSDATE)
83146       , xla_environment_pkg.g_Prog_Appl_Id
83147       , xla_environment_pkg.g_Prog_Id
83148       , xla_environment_pkg.g_Req_Id
83149   FROM (
83150        SELECT xet.event_id                  event_id
83151             , l1.line_number                 line_number
83152             , CASE r
83153                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
83154                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
83158                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
83155                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
83156                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
83157                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
83159                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
83160                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
83161                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
83162                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
83163                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
83164                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
83165                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
83166                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
83167                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
83168                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
83169                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
83170                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
83171                 
83172                ELSE null
83173               END                           object_name
83174             , CASE r
83175                 WHEN 1 THEN 'LINE' 
83176                 WHEN 2 THEN 'LINE' 
83177                 WHEN 3 THEN 'LINE' 
83178                 WHEN 4 THEN 'LINE' 
83179                 WHEN 5 THEN 'LINE' 
83180                 WHEN 6 THEN 'LINE' 
83181                 WHEN 7 THEN 'LINE' 
83182                 WHEN 8 THEN 'LINE' 
83183                 WHEN 9 THEN 'LINE' 
83184                 WHEN 10 THEN 'LINE' 
83185                 WHEN 11 THEN 'LINE' 
83186                 WHEN 12 THEN 'LINE' 
83187                 WHEN 13 THEN 'LINE' 
83188                 WHEN 14 THEN 'LINE' 
83189                 WHEN 15 THEN 'LINE' 
83190                 WHEN 16 THEN 'LINE' 
83191                 WHEN 17 THEN 'LINE' 
83192                 WHEN 18 THEN 'LINE' 
83193                 
83194                 ELSE null
83195               END                           object_type_code
83196             , CASE r
83197                 WHEN 1 THEN '275' 
83198                 WHEN 2 THEN '275' 
83199                 WHEN 3 THEN '275' 
83200                 WHEN 4 THEN '275' 
83201                 WHEN 5 THEN '275' 
83202                 WHEN 6 THEN '275' 
83203                 WHEN 7 THEN '275' 
83204                 WHEN 8 THEN '275' 
83205                 WHEN 9 THEN '275' 
83206                 WHEN 10 THEN '275' 
83207                 WHEN 11 THEN '275' 
83208                 WHEN 12 THEN '275' 
83209                 WHEN 13 THEN '275' 
83210                 WHEN 14 THEN '275' 
83211                 WHEN 15 THEN '275' 
83212                 WHEN 16 THEN '275' 
83213                 WHEN 17 THEN '275' 
83214                 WHEN 18 THEN '275' 
83215                 
83216                 ELSE null
83217               END                           source_application_id
83218             , 'S'             source_type_code
83219             , CASE r
83220                 WHEN 1 THEN 'COST_CCID' 
83221                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
83222                 WHEN 3 THEN 'ADJ_COST_CCID' 
83223                 WHEN 4 THEN 'COST_CLEARING_CCID' 
83224                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
83225                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
83226                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
83227                 WHEN 8 THEN 'ENTERED_RAW_COST' 
83228                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
83229                 WHEN 10 THEN 'ACCT_RAW_COST' 
83230                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
83231                 WHEN 12 THEN 'EXCHANGE_RATE' 
83232                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
83233                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
83234                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
83235                 WHEN 16 THEN 'LINE_NUMBER' 
83236                 WHEN 17 THEN 'LINE_TYPE' 
83237                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
83238                 
83239                 ELSE null
83240               END                           source_code
83241             , CASE r
83242                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
83243                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
83244                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
83245                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
83246                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
83247                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
83248                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
83249                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
83250                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
83251                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
83252                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
83253                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
83254                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
83255                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
83256                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
83257                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
83258                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
83259                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
83260                 
83261                 ELSE null
83262               END                           source_value
83263             , CASE r
83264                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
83265                           103371
83266                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
83267                          ,'ALLOW_OVERRIDE_CCID_FLAG'
83268                          ,'S'
83269                          ,275)
83270                 WHEN 17 THEN fvl34.meaning
83271                 
83272                 ELSE null
83273               END               source_meaning
83274          FROM  xla_events_gt     xet  
83275         , PA_XLA_CDL_LINES_V  l1
83276   , fnd_lookup_values    fvl34
83280             AND l1.event_id          = xet.event_id
83277             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
83278         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
83279           AND xet.event_class_code = C_EVENT_CLASS_CODE
83281    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
83282   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
83283   AND fvl34.view_application_id(+) = 275
83284   AND fvl34.language(+)            = USERENV('LANG')
83285   
83286 )
83287 ;
83288 --
83289 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83290 
83291       trace
83292          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
83293          ,p_level    => C_LEVEL_STATEMENT
83294          ,p_module   => l_log_module);
83295 
83296 END IF;
83297 
83298 
83299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83300       trace
83301          (p_msg      => 'END of insert_sources_129'
83302          ,p_level    => C_LEVEL_PROCEDURE
83303          ,p_module   => l_log_module);
83304 END IF;
83305 EXCEPTION
83306   WHEN xla_exceptions_pkg.application_exception THEN
83307       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
83308             trace
83309                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
83310                ,p_level    => C_LEVEL_EXCEPTION
83311                ,p_module   => l_log_module);
83312       END IF;
83313       RAISE;
83314   WHEN OTHERS THEN
83315       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
83316             trace
83317                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
83318                ,p_level    => C_LEVEL_EXCEPTION
83319                ,p_module   => l_log_module);
83320        END IF;
83321        xla_exceptions_pkg.raise_message
83322            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_129');
83323 END insert_sources_129;
83324 --
83325 
83326 ---------------------------------------
83327 --
83328 -- PRIVATE FUNCTION
83329 --         EventClass_129
83330 --
83331 ----------------------------------------
83332 --
83333 FUNCTION EventClass_129
83334        (p_application_id         IN NUMBER
83335        ,p_base_ledger_id         IN NUMBER
83336        ,p_target_ledger_id       IN NUMBER
83337        ,p_language               IN VARCHAR2
83338        ,p_currency_code          IN VARCHAR2
83339        ,p_sla_ledger_id          IN NUMBER
83340        ,p_pad_start_date         IN DATE
83341        ,p_pad_end_date           IN DATE
83342        ,p_primary_ledger_id      IN NUMBER)
83343 RETURN BOOLEAN IS
83344 --
83345 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ADJ_ALL';
83346 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USG_COST_ADJ';
83347 
83348 l_calculate_acctd_flag   VARCHAR2(1) :='N';
83349 l_calculate_g_l_flag     VARCHAR2(1) :='N';
83350 --
83351 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83352 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83353 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83354 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83355 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83356 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83357 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83358 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83359 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83360 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83361 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83362 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83363 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83364 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83365 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83366 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83367 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83368 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83369 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83370 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83371 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83372 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83373 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
83374 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83375 
83376 l_event_id                             NUMBER;
83377 l_previous_event_id                    NUMBER;
83378 l_first_event_id                       NUMBER;
83379 l_last_event_id                        NUMBER;
83380 
83381 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
83382 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
83383 --
83384 --
83385 l_result                    BOOLEAN := TRUE;
83386 l_rows                      NUMBER  := 1000;
83387 l_event_type_name           VARCHAR2(80) := 'All';
83388 l_event_class_name          VARCHAR2(80) := 'Usage Cost Adjustment';
83389 l_description               VARCHAR2(4000);
83390 l_transaction_reversal      NUMBER;
83391 l_ae_header_id              NUMBER;
83392 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
83393 l_log_module                VARCHAR2(240);
83394 --
83395 l_acct_reversal_source      VARCHAR2(30);
83396 l_trx_reversal_source       VARCHAR2(30);
83397 
83398 l_continue_with_lines       BOOLEAN := TRUE;
83399 --
83400 l_acc_rev_gl_date_source    DATE;                      -- 4262811
83404 l_rec_array_event                    t_rec_array_event;
83401 --
83402 type t_array_event_id is table of number index by binary_integer;
83403 
83405 l_null_rec_array_event               t_rec_array_event;
83406 l_array_ae_header_id                 xla_number_array_type;
83407 l_actual_flag                        VARCHAR2(1) := NULL;
83408 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
83409 l_balance_type_code                  VARCHAR2(1) :=NULL;
83410 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
83411 
83412 --
83413 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
83414 --
83415 
83416 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
83417 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
83418 
83419 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
83420 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
83421 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
83422 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
83423 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
83424 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
83425 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
83426 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
83427 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
83428 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
83429 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
83430 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
83431 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
83432 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
83433 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
83434 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
83435 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
83436 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
83437 
83438 l_array_source_32              t_array_source_32;
83439 l_array_source_87              t_array_source_87;
83440 
83441 l_array_source_3      t_array_source_3;
83442 l_array_source_4      t_array_source_4;
83443 l_array_source_5      t_array_source_5;
83444 l_array_source_6      t_array_source_6;
83445 l_array_source_7      t_array_source_7;
83446 l_array_source_22      t_array_source_22;
83447 l_array_source_23      t_array_source_23;
83448 l_array_source_24      t_array_source_24;
83449 l_array_source_25      t_array_source_25;
83450 l_array_source_26      t_array_source_26;
83451 l_array_source_27      t_array_source_27;
83452 l_array_source_28      t_array_source_28;
83453 l_array_source_29      t_array_source_29;
83454 l_array_source_30      t_array_source_30;
83455 l_array_source_31      t_array_source_31;
83456 l_array_source_33      t_array_source_33;
83457 l_array_source_34      t_array_source_34;
83458 l_array_source_34_meaning      t_array_lookup_meaning;
83459 l_array_source_35      t_array_source_35;
83460 
83461 --
83462 CURSOR header_cur
83463 IS
83464 SELECT /*+ leading(xet) cardinality(xet,1) */
83465 -- Event Class Code: USG_COST_ADJ
83466     xet.entity_id
83467    ,xet.legal_entity_id
83468    ,xet.entity_code
83469    ,xet.transaction_number
83470    ,xet.event_id
83471    ,xet.event_class_code
83472    ,xet.event_type_code
83473    ,xet.event_number
83474    ,xet.event_date
83475    ,xet.transaction_date
83476    ,xet.reference_num_1
83477    ,xet.reference_num_2
83478    ,xet.reference_num_3
83479    ,xet.reference_num_4
83480    ,xet.reference_char_1
83481    ,xet.reference_char_2
83482    ,xet.reference_char_3
83483    ,xet.reference_char_4
83484    ,xet.reference_date_1
83485    ,xet.reference_date_2
83486    ,xet.reference_date_3
83487    ,xet.reference_date_4
83488    ,xet.event_created_by
83489    ,xet.budgetary_control_flag 
83490   , h2.EXPENDITURE_ITEM_ID    source_32
83491   , h2.GL_DATE    source_87
83492   FROM xla_events_gt     xet 
83493   , PA_XLA_EXP_HEADER_V  h2
83494  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
83495    and xet.event_class_code = C_EVENT_CLASS_CODE
83496    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
83497 
83498  ORDER BY event_id
83499 ;
83500 
83501 
83502 --
83503 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
83504 IS
83505 SELECT  /*+ leading(xet) cardinality(xet,1) */
83506 -- Event Class Code: USG_COST_ADJ
83507     xet.entity_id
83508    ,xet.legal_entity_id
83509    ,xet.entity_code
83510    ,xet.transaction_number
83511    ,xet.event_id
83512    ,xet.event_class_code
83513    ,xet.event_type_code
83514    ,xet.event_number
83515    ,xet.event_date
83516    ,xet.transaction_date
83517    ,xet.reference_num_1
83518    ,xet.reference_num_2
83519    ,xet.reference_num_3
83520    ,xet.reference_num_4
83521    ,xet.reference_char_1
83522    ,xet.reference_char_2
83523    ,xet.reference_char_3
83524    ,xet.reference_char_4
83525    ,xet.reference_date_1
83526    ,xet.reference_date_2
83527    ,xet.reference_date_3
83528    ,xet.reference_date_4
83532   , l1.COST_CCID    source_3
83529    ,xet.event_created_by
83530    ,xet.budgetary_control_flag
83531  , l1.LINE_NUMBER  
83533   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
83534   , l1.ADJ_COST_CCID    source_5
83535   , l1.COST_CLEARING_CCID    source_6
83536   , l1.ADJ_COST_CLEARING_CCID    source_7
83537   , l1.REVERSING_LINE_FLAG    source_22
83538   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
83539   , l1.ENTERED_RAW_COST    source_24
83540   , l1.ENTERED_CURRENCY_CODE    source_25
83541   , l1.ACCT_RAW_COST    source_26
83542   , l1.EXCHANGE_RATE_DATE    source_27
83543   , l1.EXCHANGE_RATE    source_28
83544   , l1.EXCHANGE_RATE_TYPE    source_29
83545   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
83546   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
83547   , l1.LINE_NUMBER    source_33
83548   , l1.LINE_TYPE    source_34
83549   , fvl34.meaning   source_34_meaning
83550   , l1.LINE_NUM_REVERSED    source_35
83551   FROM xla_events_gt     xet 
83552   , PA_XLA_CDL_LINES_V  l1
83553   , fnd_lookup_values    fvl34
83554  WHERE xet.event_id between x_first_event_id and x_last_event_id
83555    and xet.event_date between p_pad_start_date and p_pad_end_date
83556    and xet.event_class_code = C_EVENT_CLASS_CODE
83557    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
83558    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
83559   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
83560   AND fvl34.view_application_id(+) = 275
83561   AND fvl34.language(+)            = USERENV('LANG')
83562   ;
83563 
83564 --
83565 BEGIN
83566 IF g_log_enabled THEN
83567    l_log_module := C_DEFAULT_MODULE||'.EventClass_129';
83568 END IF;
83569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83570    trace
83571       (p_msg      => 'BEGIN of EventClass_129'
83572       ,p_level    => C_LEVEL_PROCEDURE
83573       ,p_module   => l_log_module);
83574 END IF;
83575 
83576 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83577    trace
83578       (p_msg      => 'p_application_id = '||p_application_id||
83579                      ' - p_base_ledger_id = '||p_base_ledger_id||
83580                      ' - p_target_ledger_id  = '||p_target_ledger_id||
83581                      ' - p_language = '||p_language||
83582                      ' - p_currency_code = '||p_currency_code||
83583                      ' - p_sla_ledger_id = '||p_sla_ledger_id
83584       ,p_level    => C_LEVEL_STATEMENT
83585       ,p_module   => l_log_module);
83586 END IF;
83587 --
83588 -- initialze arrays
83589 --
83590 g_array_event.DELETE;
83591 l_rec_array_event := l_null_rec_array_event;
83592 --
83593 --------------------------------------
83594 -- 4262811 Initialze MPA Line Number
83595 --------------------------------------
83596 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
83597 
83598 --
83599 
83600 --
83601 OPEN header_cur;
83602 --
83603 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83604    trace
83605    (p_msg      => 'SQL - FETCH header_cur'
83606    ,p_level    => C_LEVEL_STATEMENT
83607    ,p_module   => l_log_module);
83608 END IF;
83609 --
83610 LOOP
83611 FETCH header_cur BULK COLLECT INTO
83612         l_array_entity_id
83613       , l_array_legal_entity_id
83614       , l_array_entity_code
83615       , l_array_transaction_num
83616       , l_array_event_id
83617       , l_array_class_code
83618       , l_array_event_type
83619       , l_array_event_number
83620       , l_array_event_date
83621       , l_array_transaction_date
83622       , l_array_reference_num_1
83623       , l_array_reference_num_2
83624       , l_array_reference_num_3
83625       , l_array_reference_num_4
83626       , l_array_reference_char_1
83627       , l_array_reference_char_2
83628       , l_array_reference_char_3
83629       , l_array_reference_char_4
83630       , l_array_reference_date_1
83631       , l_array_reference_date_2
83632       , l_array_reference_date_3
83633       , l_array_reference_date_4
83634       , l_array_event_created_by
83635       , l_array_budgetary_control_flag 
83636       , l_array_source_32
83637       , l_array_source_87
83638       LIMIT l_rows;
83639 --
83640 IF (C_LEVEL_EVENT >= g_log_level) THEN
83641    trace
83642    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
83643    ,p_level    => C_LEVEL_EVENT
83644    ,p_module   => l_log_module);
83645 END IF;
83646 --
83647 EXIT WHEN l_array_entity_id.COUNT = 0;
83648 
83649 -- initialize arrays
83650 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
83651 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
83652 
83653 --
83654 -- Bug 4458708
83655 --
83656 XLA_AE_LINES_PKG.g_LineNumber := 0;
83657 
83658 
83659 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
83660 g_last_hdr_idx := l_array_event_id.LAST;
83661 --
83662 -- loop for the headers. Each iteration is for each header extract row
83663 -- fetched in header cursor
83664 --
83665 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
83666 
83667 --
83668 -- set event info as cache for other routines to refer event attributes
83669 --
83670 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
83671    (p_application_id           => p_application_id
83672    ,p_primary_ledger_id        => p_primary_ledger_id
83673    ,p_base_ledger_id           => p_base_ledger_id
83674    ,p_target_ledger_id         => p_target_ledger_id
83675    ,p_entity_id                => l_array_entity_id(hdr_idx)
83676    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
83677    ,p_entity_code              => l_array_entity_code(hdr_idx)
83678    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
83682    ,p_event_number             => l_array_event_number(hdr_idx)
83679    ,p_event_id                 => l_array_event_id(hdr_idx)
83680    ,p_event_class_code         => l_array_class_code(hdr_idx)
83681    ,p_event_type_code          => l_array_event_type(hdr_idx)
83683    ,p_event_date               => l_array_event_date(hdr_idx)
83684    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
83685    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
83686    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
83687    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
83688    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
83689    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
83690    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
83691    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
83692    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
83693    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
83694    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
83695    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
83696    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
83697    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
83698    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
83699 
83700 --
83701 -- set the status of entry to C_VALID (0)
83702 --
83703 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
83704 
83705 --
83706 -- initialize a row for ae header
83707 --
83708 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
83709 
83710 l_event_id := l_array_event_id(hdr_idx);
83711 
83712 --
83713 -- storing the hdr_idx for event. May be used by line cursor.
83714 --
83715 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
83716 
83717 --
83718 -- store sources from header extract. This can be improved to
83719 -- store only those sources from header extract that may be used in lines
83720 --
83721 
83722 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
83723 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
83724 
83725 --
83726 -- initilaize the status of ae headers for diffrent balance types
83727 -- the status is initialised to C_NOT_CREATED (2)
83728 --
83729 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83730 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83731 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83732 
83733 --
83734 -- call api to validate and store accounting attributes for header
83735 --
83736 
83737 ------------------------------------------------------------
83738 -- Accrual Reversal : to get date for Standard Source (NONE)
83739 ------------------------------------------------------------
83740 l_acc_rev_gl_date_source := NULL;
83741 
83742      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
83743       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
83744 
83745 
83746 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
83747 
83748 XLA_AE_HEADER_PKG.SetJeCategoryName;
83749 
83750 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
83751 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
83752 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
83753 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
83754 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
83755 
83756 
83757 -- No header level analytical criteria
83758 
83759 --
83760 --accounting attribute enhancement, bug 3612931
83761 --
83762 l_trx_reversal_source := SUBSTR(NULL, 1,30);
83763 
83764 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
83765    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
83766 
83767    xla_accounting_err_pkg.build_message
83768       (p_appli_s_name            => 'XLA'
83769       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
83770       ,p_token_1                 => 'ACCT_ATTR_NAME'
83771       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
83772       ,p_token_2                 => 'PRODUCT_NAME'
83773       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
83774       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
83775       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
83776       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
83777 
83778 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
83779    --
83780    -- following sets the accounting attributes needed to reverse
83781    -- accounting for a distributeion
83782    --
83783    xla_ae_lines_pkg.SetTrxReversalAttrs
83784       (p_event_id              => l_event_id
83785       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
83786       ,p_trx_reversal_source   => l_trx_reversal_source);
83787 
83788 END IF;
83789 
83790 
83791 ----------------------------------------------------------------
83792 -- 4262811 -  update the header statuses to invalid in need be
83793 ----------------------------------------------------------------
83794 --
83795 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
83796 
83797 
83798   -----------------------------------------------
83799   -- No accrual reversal for the event class/type
83803 --
83800   -----------------------------------------------
83801 ----------------------------------------------------------------
83802 
83804 -- this ends the header loop iteration for one bulk fetch
83805 --
83806 END LOOP;
83807 
83808 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
83809 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
83810 
83811 --
83812 -- insert dummy rows into lines gt table that were created due to
83813 -- transaction reversals
83814 --
83815 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
83816    l_result := XLA_AE_LINES_PKG.InsertLines;
83817 END IF;
83818 
83819 --
83820 -- reset the temp_line_num for each set of events fetched from header
83821 -- cursor rather than doing it for each new event in line cursor
83822 -- Bug 3939231
83823 --
83824 xla_ae_lines_pkg.g_temp_line_num := 0;
83825 
83826 
83827 
83828 --
83829 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
83830 --
83831 --
83832 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83833 
83834       trace
83835          (p_msg      => 'SQL - FETCH line_cur'
83836          ,p_level    => C_LEVEL_STATEMENT
83837          ,p_module   => l_log_module);
83838 
83839 END IF;
83840 --
83841 --
83842 LOOP
83843   --
83844   FETCH line_cur BULK COLLECT INTO
83845         l_array_entity_id
83846       , l_array_legal_entity_id
83847       , l_array_entity_code
83848       , l_array_transaction_num
83849       , l_array_event_id
83850       , l_array_class_code
83851       , l_array_event_type
83852       , l_array_event_number
83853       , l_array_event_date
83854       , l_array_transaction_date
83855       , l_array_reference_num_1
83856       , l_array_reference_num_2
83857       , l_array_reference_num_3
83858       , l_array_reference_num_4
83859       , l_array_reference_char_1
83860       , l_array_reference_char_2
83861       , l_array_reference_char_3
83862       , l_array_reference_char_4
83863       , l_array_reference_date_1
83864       , l_array_reference_date_2
83865       , l_array_reference_date_3
83866       , l_array_reference_date_4
83867       , l_array_event_created_by
83868       , l_array_budgetary_control_flag
83869       , l_array_extract_line_num 
83870       , l_array_source_3
83871       , l_array_source_4
83872       , l_array_source_5
83873       , l_array_source_6
83874       , l_array_source_7
83875       , l_array_source_22
83876       , l_array_source_23
83877       , l_array_source_24
83878       , l_array_source_25
83879       , l_array_source_26
83880       , l_array_source_27
83881       , l_array_source_28
83882       , l_array_source_29
83883       , l_array_source_30
83884       , l_array_source_31
83885       , l_array_source_33
83886       , l_array_source_34
83887       , l_array_source_34_meaning
83888       , l_array_source_35
83889       LIMIT l_rows;
83890 
83891   --
83892   IF (C_LEVEL_EVENT >= g_log_level) THEN
83893             trace
83894                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
83895                ,p_level    => C_LEVEL_EVENT
83896                ,p_module   => l_log_module);
83897   END IF;
83898   --
83899   EXIT WHEN l_array_entity_id.count = 0;
83900 
83901   XLA_AE_LINES_PKG.g_rec_lines := null;
83902 
83903 --
83904 -- Bug 4458708
83905 --
83906 XLA_AE_LINES_PKG.g_LineNumber := 0;
83907 --
83908 --
83909 
83910 FOR Idx IN 1..l_array_event_id.count LOOP
83911    --
83912    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
83913    --
83914    l_event_id := l_array_event_id(idx);  -- 5648433
83915 
83916    --
83917    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
83918    --
83919 
83920    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
83921              (g_array_event(l_event_id).array_value_num('header_index'))
83922          ,'N'
83923          ) <> 'Y'
83924    THEN
83925       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83926          trace
83927             (p_msg      => 'Trancaction revesal option is not Y '
83928             ,p_level    => C_LEVEL_STATEMENT
83929             ,p_module   => l_log_module);
83930       END IF;
83931 
83932 --
83933 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
83934 --
83935 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
83936 --
83937 -- set event info as cache for other routines to refer event attributes
83938 --
83939 
83940 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
83941    l_previous_event_id := l_event_id;
83942 
83943    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
83944       (p_application_id           => p_application_id
83945       ,p_primary_ledger_id        => p_primary_ledger_id
83946       ,p_base_ledger_id           => p_base_ledger_id
83947       ,p_target_ledger_id         => p_target_ledger_id
83948       ,p_entity_id                => l_array_entity_id(Idx)
83949       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
83950       ,p_entity_code              => l_array_entity_code(Idx)
83951       ,p_transaction_num          => l_array_transaction_num(Idx)
83952       ,p_event_id                 => l_array_event_id(Idx)
83953       ,p_event_class_code         => l_array_class_code(Idx)
83954       ,p_event_type_code          => l_array_event_type(Idx)
83955       ,p_event_number             => l_array_event_number(Idx)
83956       ,p_event_date               => l_array_event_date(Idx)
83957       ,p_transaction_date         => l_array_transaction_date(Idx)
83961       ,p_reference_num_4          => l_array_reference_num_4(Idx)
83958       ,p_reference_num_1          => l_array_reference_num_1(Idx)
83959       ,p_reference_num_2          => l_array_reference_num_2(Idx)
83960       ,p_reference_num_3          => l_array_reference_num_3(Idx)
83962       ,p_reference_char_1         => l_array_reference_char_1(Idx)
83963       ,p_reference_char_2         => l_array_reference_char_2(Idx)
83964       ,p_reference_char_3         => l_array_reference_char_3(Idx)
83965       ,p_reference_char_4         => l_array_reference_char_4(Idx)
83966       ,p_reference_date_1         => l_array_reference_date_1(Idx)
83967       ,p_reference_date_2         => l_array_reference_date_2(Idx)
83968       ,p_reference_date_3         => l_array_reference_date_3(Idx)
83969       ,p_reference_date_4         => l_array_reference_date_4(Idx)
83970       ,p_event_created_by         => l_array_event_created_by(Idx)
83971       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
83972        --
83973 END IF;
83974 
83975 
83976 
83977 --
83978 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
83979 
83980 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
83981 
83982 IF l_continue_with_lines THEN
83983    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
83984       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
83985 
83986       xla_accounting_err_pkg.build_message
83987          (p_appli_s_name            => 'XLA'
83988          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
83989          ,p_token_1                 => 'LINE_NUMBER'
83990          ,p_value_1                 => l_array_extract_line_num(Idx)
83991          ,p_token_2                 => 'PRODUCT_NAME'
83992          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
83993          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
83994          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
83995          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
83996 
83997    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
83998       --
83999       -- following sets the accounting attributes needed to reverse
84000       -- accounting for a distributeion
84001       --
84002 
84003       --
84004       -- 5217187
84005       --
84006       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
84007       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
84008                                        g_array_event(l_event_id).array_value_num('header_index'));
84009       --
84010       --
84011 
84012       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
84013       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
84014       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
84015       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
84016       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
84017       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
84018       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
84019       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
84020       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
84021       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
84022       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
84023       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
84024       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
84025       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
84026       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
84027       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
84028       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
84029       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
84030       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
84031       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
84032       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
84033       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
84034       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
84035       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
84036       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
84037       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
84038       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
84039       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
84040       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
84041       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
84042       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
84043       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
84044       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
84045       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
84046       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
84047       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
84048       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
84049       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
84050       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
84051       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
84052       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
84056       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
84053       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
84054       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
84055       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
84057       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
84058       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
84059       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
84060 
84061 
84062       xla_ae_lines_pkg.SetAcctReversalAttrs
84063          (p_event_id             => l_event_id
84064          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
84065          ,p_calculate_acctd_flag => l_calculate_acctd_flag
84066          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
84067    END IF;
84068 
84069    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
84070        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
84071 
84072 --
84073 AcctLineType_47 (
84074  p_application_id  => p_application_id
84075  ,p_event_id     => l_event_id
84076  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84077  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84078  ,p_actual_flag => l_actual_flag
84079  ,p_balance_type_code => l_balance_type_code
84080  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84081  
84082  , p_source_3 => l_array_source_3(Idx)
84083  , p_source_4 => l_array_source_4(Idx)
84084  , p_source_5 => l_array_source_5(Idx)
84085  , p_source_6 => l_array_source_6(Idx)
84086  , p_source_22 => l_array_source_22(Idx)
84087  , p_source_23 => l_array_source_23(Idx)
84088  , p_source_24 => l_array_source_24(Idx)
84089  , p_source_25 => l_array_source_25(Idx)
84090  , p_source_26 => l_array_source_26(Idx)
84091  , p_source_27 => l_array_source_27(Idx)
84092  , p_source_28 => l_array_source_28(Idx)
84093  , p_source_29 => l_array_source_29(Idx)
84094  , p_source_30 => l_array_source_30(Idx)
84095  , p_source_31 => l_array_source_31(Idx)
84096  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
84097  , p_source_33 => l_array_source_33(Idx)
84098  , p_source_34 => l_array_source_34(Idx)
84099  , p_source_34_meaning => l_array_source_34_meaning(Idx)
84100  , p_source_35 => l_array_source_35(Idx)
84101  );
84102 If(l_balance_type_code = 'A') THEN
84103   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84104 END IF;
84105 
84106 --
84107 
84108 
84109 --
84110 AcctLineType_63 (
84111  p_application_id  => p_application_id
84112  ,p_event_id     => l_event_id
84113  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84114  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84115  ,p_actual_flag => l_actual_flag
84116  ,p_balance_type_code => l_balance_type_code
84117  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84118  
84119  , p_source_3 => l_array_source_3(Idx)
84120  , p_source_4 => l_array_source_4(Idx)
84121  , p_source_6 => l_array_source_6(Idx)
84122  , p_source_7 => l_array_source_7(Idx)
84123  , p_source_22 => l_array_source_22(Idx)
84124  , p_source_23 => l_array_source_23(Idx)
84125  , p_source_24 => l_array_source_24(Idx)
84126  , p_source_25 => l_array_source_25(Idx)
84127  , p_source_26 => l_array_source_26(Idx)
84128  , p_source_27 => l_array_source_27(Idx)
84129  , p_source_28 => l_array_source_28(Idx)
84130  , p_source_29 => l_array_source_29(Idx)
84131  , p_source_30 => l_array_source_30(Idx)
84132  , p_source_31 => l_array_source_31(Idx)
84133  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
84134  , p_source_33 => l_array_source_33(Idx)
84135  , p_source_34 => l_array_source_34(Idx)
84136  , p_source_34_meaning => l_array_source_34_meaning(Idx)
84137  , p_source_35 => l_array_source_35(Idx)
84138  );
84139 If(l_balance_type_code = 'A') THEN
84140   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84141 END IF;
84142 
84143 --
84144 
84145       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
84146       -- or secondary ledger that has different currency with primary
84147       -- or alc that is calculated by sla
84148       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
84149             (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'))
84150 
84151 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
84152 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
84153           AND (l_actual_flag = 'A')) THEN
84154         XLA_AE_LINES_PKG.CreateGainOrLossLines(
84155           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
84156          ,p_application_id   => p_application_id
84157          ,p_amb_context_code => 'DEFAULT'
84158          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
84159          ,p_event_class_code => C_EVENT_CLASS_CODE
84160          ,p_event_type_code  => C_EVENT_TYPE_CODE
84161          
84162          ,p_gain_ccid        => -1
84163          ,p_loss_ccid        => -1
84164 
84165          ,p_actual_flag      => l_actual_flag
84166          ,p_enc_flag         => null
84167          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
84168          ,p_enc_g_l_ref      => null
84169          );
84170       END IF;
84171    END IF;
84172 END IF;
84173 
84174    ELSE
84175       --
84176       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
84177       --
84178       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84179          trace
84180             (p_msg      => 'Trancaction revesal option is Y'
84181             ,p_level    => C_LEVEL_STATEMENT
84182             ,p_module   => l_log_module);
84186 END LOOP;
84183       END IF;
84184    END IF;
84185 
84187 l_result := XLA_AE_LINES_PKG.InsertLines ;
84188 end loop;
84189 close line_cur;
84190 
84191 
84192 --
84193 -- insert headers into xla_ae_headers_gt table
84194 --
84195 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
84196 
84197 -- insert into errors table here.
84198 
84199 END LOOP;
84200 
84201 --
84202 -- 4865292
84203 --
84204 -- Compare g_hdr_extract_count with event count in
84205 -- CreateHeadersAndLines.
84206 --
84207 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
84208 
84209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84210    trace (p_msg     => '# rows extracted from header extract objects '
84211                     || ' (running total): '
84212                     || g_hdr_extract_count
84213          ,p_level   => C_LEVEL_STATEMENT
84214          ,p_module  => l_log_module);
84215 END IF;
84216 
84217 CLOSE header_cur;
84218 --
84219 
84220 --
84221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84222    trace
84223       (p_msg      => 'END of EventClass_129'
84224       ,p_level    => C_LEVEL_PROCEDURE
84225       ,p_module   => l_log_module);
84226 END IF;
84227 --
84228 RETURN l_result;
84229 EXCEPTION
84230 WHEN xla_exceptions_pkg.application_exception THEN
84231    
84232 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
84233 
84234    
84235 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
84236 
84237    RAISE;
84238 WHEN OTHERS THEN
84239    xla_exceptions_pkg.raise_message
84240       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_129');
84241 END EventClass_129;
84242 --
84243 
84244 ---------------------------------------
84245 --
84246 -- PRIVATE PROCEDURE
84247 --         insert_sources_130
84248 --
84249 ----------------------------------------
84250 --
84251 PROCEDURE insert_sources_130(
84252                                 p_target_ledger_id       IN NUMBER
84253                               , p_language               IN VARCHAR2
84254                               , p_sla_ledger_id          IN NUMBER
84255                               , p_pad_start_date         IN DATE
84256                               , p_pad_end_date           IN DATE
84257                          )
84258 IS
84259 
84260 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ALL';
84261 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USG_COST';
84262 p_apps_owner                   VARCHAR2(30);
84263 l_log_module                   VARCHAR2(240);
84264 BEGIN
84265 IF g_log_enabled THEN
84266       l_log_module := C_DEFAULT_MODULE||'.insert_sources_130';
84267 END IF;
84268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84269 
84270       trace
84271          (p_msg      => 'BEGIN of insert_sources_130'
84272          ,p_level    => C_LEVEL_PROCEDURE
84273          ,p_module   => l_log_module);
84274 
84275 END IF;
84276 
84277 -- select APPS owner
84278 SELECT oracle_username
84279   INTO p_apps_owner
84280   FROM fnd_oracle_userid
84281  WHERE read_only_flag = 'U'
84282 ;
84283 
84284 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84285       trace
84286          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
84287                         ' - p_language = '||p_language||
84288                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
84289                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
84290                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
84291                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
84292          ,p_level    => C_LEVEL_STATEMENT
84293          ,p_module   => l_log_module);
84294 END IF;
84295 
84296 
84297 --
84298 INSERT INTO xla_diag_sources --hdr2
84299 (
84300         event_id
84301       , ledger_id
84302       , sla_ledger_id
84303       , description_language
84304       , object_name
84305       , object_type_code
84306       , line_number
84307       , source_application_id
84308       , source_type_code
84309       , source_code
84310       , source_value
84311       , source_meaning
84312       , created_by
84313       , creation_date
84314       , last_update_date
84315       , last_updated_by
84316       , last_update_login
84317       , program_update_date
84318       , program_application_id
84319       , program_id
84320       , request_id
84321 )
84322 SELECT
84323         event_id
84324       , p_target_ledger_id
84325       , p_sla_ledger_id
84326       , p_language
84327       , object_name
84328       , object_type_code
84329       , line_number
84330       , source_application_id
84331       , source_type_code
84332       , source_code
84333       , SUBSTR(source_value ,1,1996)
84334       , SUBSTR(source_meaning ,1,200)
84335       , xla_environment_pkg.g_Usr_Id
84336       , TRUNC(SYSDATE)
84337       , TRUNC(SYSDATE)
84338       , xla_environment_pkg.g_Usr_Id
84339       , xla_environment_pkg.g_Login_Id
84340       , TRUNC(SYSDATE)
84341       , xla_environment_pkg.g_Prog_Appl_Id
84342       , xla_environment_pkg.g_Prog_Id
84343       , xla_environment_pkg.g_Req_Id
84344   FROM (
84345        SELECT xet.event_id                  event_id
84346             , 0                          line_number
84347             , CASE r
84348                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
84349                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
84350                 
84351                ELSE null
84352               END                           object_name
84353             , CASE r
84354                 WHEN 1 THEN 'HEADER' 
84358               END                           object_type_code
84355                 WHEN 2 THEN 'HEADER' 
84356                 
84357                 ELSE null
84359             , CASE r
84360                 WHEN 1 THEN '275' 
84361                 WHEN 2 THEN '275' 
84362                 
84363                 ELSE null
84364               END                           source_application_id
84365             , 'S'             source_type_code
84366             , CASE r
84367                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
84368                 WHEN 2 THEN 'GL_DATE' 
84369                 
84370                 ELSE null
84371               END                           source_code
84372             , CASE r
84373                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
84374                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
84375                 
84376                 ELSE null
84377               END                           source_value
84378             , null              source_meaning
84379          FROM xla_events_gt     xet  
84380       , PA_XLA_EXP_HEADER_V  h2
84381              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
84382          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
84383            AND xet.event_class_code = C_EVENT_CLASS_CODE
84384               AND h2.event_id = xet.event_id
84385 
84386 )
84387 ;
84388 --
84389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84390 
84391       trace
84392          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
84393          ,p_level    => C_LEVEL_STATEMENT
84394          ,p_module   => l_log_module);
84395 
84396 END IF;
84397 --
84398 
84399 
84400 
84401 --
84402 INSERT INTO xla_diag_sources  --line2
84403 (
84404         event_id
84405       , ledger_id
84406       , sla_ledger_id
84407       , description_language
84408       , object_name
84409       , object_type_code
84410       , line_number
84411       , source_application_id
84412       , source_type_code
84413       , source_code
84414       , source_value
84415       , source_meaning
84416       , created_by
84417       , creation_date
84418       , last_update_date
84419       , last_updated_by
84420       , last_update_login
84421       , program_update_date
84422       , program_application_id
84423       , program_id
84424       , request_id
84425 )
84426 SELECT  event_id
84427       , p_target_ledger_id
84428       , p_sla_ledger_id
84429       , p_language
84430       , object_name
84431       , object_type_code
84432       , line_number
84433       , source_application_id
84434       , source_type_code
84435       , source_code
84436       , SUBSTR(source_value,1,1996)
84437       , SUBSTR(source_meaning ,1,200)
84438       , xla_environment_pkg.g_Usr_Id
84439       , TRUNC(SYSDATE)
84440       , TRUNC(SYSDATE)
84441       , xla_environment_pkg.g_Usr_Id
84442       , xla_environment_pkg.g_Login_Id
84443       , TRUNC(SYSDATE)
84444       , xla_environment_pkg.g_Prog_Appl_Id
84445       , xla_environment_pkg.g_Prog_Id
84446       , xla_environment_pkg.g_Req_Id
84447   FROM (
84448        SELECT xet.event_id                  event_id
84449             , l1.line_number                 line_number
84450             , CASE r
84451                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
84452                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
84453                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
84454                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
84455                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
84456                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
84457                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
84458                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
84459                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
84460                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
84461                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
84462                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
84463                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
84464                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
84465                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
84466                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
84467                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
84468                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
84469                 
84470                ELSE null
84471               END                           object_name
84472             , CASE r
84473                 WHEN 1 THEN 'LINE' 
84474                 WHEN 2 THEN 'LINE' 
84475                 WHEN 3 THEN 'LINE' 
84476                 WHEN 4 THEN 'LINE' 
84477                 WHEN 5 THEN 'LINE' 
84478                 WHEN 6 THEN 'LINE' 
84479                 WHEN 7 THEN 'LINE' 
84480                 WHEN 8 THEN 'LINE' 
84481                 WHEN 9 THEN 'LINE' 
84482                 WHEN 10 THEN 'LINE' 
84483                 WHEN 11 THEN 'LINE' 
84484                 WHEN 12 THEN 'LINE' 
84485                 WHEN 13 THEN 'LINE' 
84486                 WHEN 14 THEN 'LINE' 
84487                 WHEN 15 THEN 'LINE' 
84488                 WHEN 16 THEN 'LINE' 
84489                 WHEN 17 THEN 'LINE' 
84490                 WHEN 18 THEN 'LINE' 
84491                 
84492                 ELSE null
84493               END                           object_type_code
84494             , CASE r
84495                 WHEN 1 THEN '275' 
84496                 WHEN 2 THEN '275' 
84497                 WHEN 3 THEN '275' 
84498                 WHEN 4 THEN '275' 
84499                 WHEN 5 THEN '275' 
84500                 WHEN 6 THEN '275' 
84501                 WHEN 7 THEN '275' 
84502                 WHEN 8 THEN '275' 
84503                 WHEN 9 THEN '275' 
84504                 WHEN 10 THEN '275' 
84508                 WHEN 14 THEN '275' 
84505                 WHEN 11 THEN '275' 
84506                 WHEN 12 THEN '275' 
84507                 WHEN 13 THEN '275' 
84509                 WHEN 15 THEN '275' 
84510                 WHEN 16 THEN '275' 
84511                 WHEN 17 THEN '275' 
84512                 WHEN 18 THEN '275' 
84513                 
84514                 ELSE null
84515               END                           source_application_id
84516             , 'S'             source_type_code
84517             , CASE r
84518                 WHEN 1 THEN 'COST_CCID' 
84519                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
84520                 WHEN 3 THEN 'ADJ_COST_CCID' 
84521                 WHEN 4 THEN 'COST_CLEARING_CCID' 
84522                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
84523                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
84524                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
84525                 WHEN 8 THEN 'ENTERED_RAW_COST' 
84526                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
84527                 WHEN 10 THEN 'ACCT_RAW_COST' 
84528                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
84529                 WHEN 12 THEN 'EXCHANGE_RATE' 
84530                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
84531                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
84532                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
84533                 WHEN 16 THEN 'LINE_NUMBER' 
84534                 WHEN 17 THEN 'LINE_TYPE' 
84535                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
84536                 
84537                 ELSE null
84538               END                           source_code
84539             , CASE r
84540                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
84541                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
84542                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
84543                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
84544                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
84545                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
84546                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
84547                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
84548                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
84549                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
84550                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
84551                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
84552                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
84553                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
84554                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
84555                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
84556                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
84557                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
84558                 
84559                 ELSE null
84560               END                           source_value
84561             , CASE r
84562                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
84563                           103371
84564                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
84565                          ,'ALLOW_OVERRIDE_CCID_FLAG'
84566                          ,'S'
84567                          ,275)
84568                 WHEN 17 THEN fvl34.meaning
84569                 
84570                 ELSE null
84571               END               source_meaning
84572          FROM  xla_events_gt     xet  
84573         , PA_XLA_CDL_LINES_V  l1
84574   , fnd_lookup_values    fvl34
84575             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
84576         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
84577           AND xet.event_class_code = C_EVENT_CLASS_CODE
84578             AND l1.event_id          = xet.event_id
84579    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
84580   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
84581   AND fvl34.view_application_id(+) = 275
84582   AND fvl34.language(+)            = USERENV('LANG')
84583   
84584 )
84585 ;
84586 --
84587 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84588 
84589       trace
84590          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
84591          ,p_level    => C_LEVEL_STATEMENT
84592          ,p_module   => l_log_module);
84593 
84594 END IF;
84595 
84596 
84597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84598       trace
84599          (p_msg      => 'END of insert_sources_130'
84600          ,p_level    => C_LEVEL_PROCEDURE
84601          ,p_module   => l_log_module);
84602 END IF;
84603 EXCEPTION
84604   WHEN xla_exceptions_pkg.application_exception THEN
84605       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
84606             trace
84607                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
84608                ,p_level    => C_LEVEL_EXCEPTION
84609                ,p_module   => l_log_module);
84610       END IF;
84611       RAISE;
84612   WHEN OTHERS THEN
84613       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
84614             trace
84615                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
84616                ,p_level    => C_LEVEL_EXCEPTION
84617                ,p_module   => l_log_module);
84618        END IF;
84619        xla_exceptions_pkg.raise_message
84620            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_130');
84621 END insert_sources_130;
84622 --
84623 
84624 ---------------------------------------
84625 --
84626 -- PRIVATE FUNCTION
84627 --         EventClass_130
84628 --
84629 ----------------------------------------
84630 --
84631 FUNCTION EventClass_130
84632        (p_application_id         IN NUMBER
84633        ,p_base_ledger_id         IN NUMBER
84634        ,p_target_ledger_id       IN NUMBER
84635        ,p_language               IN VARCHAR2
84639        ,p_pad_end_date           IN DATE
84636        ,p_currency_code          IN VARCHAR2
84637        ,p_sla_ledger_id          IN NUMBER
84638        ,p_pad_start_date         IN DATE
84640        ,p_primary_ledger_id      IN NUMBER)
84641 RETURN BOOLEAN IS
84642 --
84643 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ALL';
84644 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USG_COST';
84645 
84646 l_calculate_acctd_flag   VARCHAR2(1) :='N';
84647 l_calculate_g_l_flag     VARCHAR2(1) :='N';
84648 --
84649 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84650 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84651 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84652 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84653 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84654 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84655 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84656 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84657 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84658 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84659 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84660 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84661 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84662 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84663 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84664 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84665 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84666 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84667 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84668 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84669 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84670 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84671 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
84672 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84673 
84674 l_event_id                             NUMBER;
84675 l_previous_event_id                    NUMBER;
84676 l_first_event_id                       NUMBER;
84677 l_last_event_id                        NUMBER;
84678 
84679 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
84680 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
84681 --
84682 --
84683 l_result                    BOOLEAN := TRUE;
84684 l_rows                      NUMBER  := 1000;
84685 l_event_type_name           VARCHAR2(80) := 'All';
84686 l_event_class_name          VARCHAR2(80) := 'Usage Cost';
84687 l_description               VARCHAR2(4000);
84688 l_transaction_reversal      NUMBER;
84689 l_ae_header_id              NUMBER;
84690 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
84691 l_log_module                VARCHAR2(240);
84692 --
84693 l_acct_reversal_source      VARCHAR2(30);
84694 l_trx_reversal_source       VARCHAR2(30);
84695 
84696 l_continue_with_lines       BOOLEAN := TRUE;
84697 --
84698 l_acc_rev_gl_date_source    DATE;                      -- 4262811
84699 --
84700 type t_array_event_id is table of number index by binary_integer;
84701 
84702 l_rec_array_event                    t_rec_array_event;
84703 l_null_rec_array_event               t_rec_array_event;
84704 l_array_ae_header_id                 xla_number_array_type;
84705 l_actual_flag                        VARCHAR2(1) := NULL;
84706 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
84707 l_balance_type_code                  VARCHAR2(1) :=NULL;
84708 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
84709 
84710 --
84711 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
84712 --
84713 
84714 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
84715 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
84716 
84717 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
84718 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
84719 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
84720 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
84721 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
84722 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
84723 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
84724 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
84725 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
84726 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
84727 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
84728 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
84729 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
84730 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
84731 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
84732 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
84736 l_array_source_32              t_array_source_32;
84733 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
84734 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
84735 
84737 l_array_source_87              t_array_source_87;
84738 
84739 l_array_source_3      t_array_source_3;
84740 l_array_source_4      t_array_source_4;
84741 l_array_source_5      t_array_source_5;
84742 l_array_source_6      t_array_source_6;
84743 l_array_source_7      t_array_source_7;
84744 l_array_source_22      t_array_source_22;
84745 l_array_source_23      t_array_source_23;
84746 l_array_source_24      t_array_source_24;
84747 l_array_source_25      t_array_source_25;
84748 l_array_source_26      t_array_source_26;
84749 l_array_source_27      t_array_source_27;
84750 l_array_source_28      t_array_source_28;
84751 l_array_source_29      t_array_source_29;
84752 l_array_source_30      t_array_source_30;
84753 l_array_source_31      t_array_source_31;
84754 l_array_source_33      t_array_source_33;
84755 l_array_source_34      t_array_source_34;
84756 l_array_source_34_meaning      t_array_lookup_meaning;
84757 l_array_source_35      t_array_source_35;
84758 
84759 --
84760 CURSOR header_cur
84761 IS
84762 SELECT /*+ leading(xet) cardinality(xet,1) */
84763 -- Event Class Code: USG_COST
84764     xet.entity_id
84765    ,xet.legal_entity_id
84766    ,xet.entity_code
84767    ,xet.transaction_number
84768    ,xet.event_id
84769    ,xet.event_class_code
84770    ,xet.event_type_code
84771    ,xet.event_number
84772    ,xet.event_date
84773    ,xet.transaction_date
84774    ,xet.reference_num_1
84775    ,xet.reference_num_2
84776    ,xet.reference_num_3
84777    ,xet.reference_num_4
84778    ,xet.reference_char_1
84779    ,xet.reference_char_2
84780    ,xet.reference_char_3
84781    ,xet.reference_char_4
84782    ,xet.reference_date_1
84783    ,xet.reference_date_2
84784    ,xet.reference_date_3
84785    ,xet.reference_date_4
84786    ,xet.event_created_by
84787    ,xet.budgetary_control_flag 
84788   , h2.EXPENDITURE_ITEM_ID    source_32
84789   , h2.GL_DATE    source_87
84790   FROM xla_events_gt     xet 
84791   , PA_XLA_EXP_HEADER_V  h2
84792  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
84793    and xet.event_class_code = C_EVENT_CLASS_CODE
84794    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
84795 
84796  ORDER BY event_id
84797 ;
84798 
84799 
84800 --
84801 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
84802 IS
84803 SELECT  /*+ leading(xet) cardinality(xet,1) */
84804 -- Event Class Code: USG_COST
84805     xet.entity_id
84806    ,xet.legal_entity_id
84807    ,xet.entity_code
84808    ,xet.transaction_number
84809    ,xet.event_id
84810    ,xet.event_class_code
84811    ,xet.event_type_code
84812    ,xet.event_number
84813    ,xet.event_date
84814    ,xet.transaction_date
84815    ,xet.reference_num_1
84816    ,xet.reference_num_2
84817    ,xet.reference_num_3
84818    ,xet.reference_num_4
84819    ,xet.reference_char_1
84820    ,xet.reference_char_2
84821    ,xet.reference_char_3
84822    ,xet.reference_char_4
84823    ,xet.reference_date_1
84824    ,xet.reference_date_2
84825    ,xet.reference_date_3
84826    ,xet.reference_date_4
84827    ,xet.event_created_by
84828    ,xet.budgetary_control_flag
84829  , l1.LINE_NUMBER  
84830   , l1.COST_CCID    source_3
84831   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
84832   , l1.ADJ_COST_CCID    source_5
84833   , l1.COST_CLEARING_CCID    source_6
84834   , l1.ADJ_COST_CLEARING_CCID    source_7
84835   , l1.REVERSING_LINE_FLAG    source_22
84836   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
84837   , l1.ENTERED_RAW_COST    source_24
84838   , l1.ENTERED_CURRENCY_CODE    source_25
84839   , l1.ACCT_RAW_COST    source_26
84840   , l1.EXCHANGE_RATE_DATE    source_27
84841   , l1.EXCHANGE_RATE    source_28
84842   , l1.EXCHANGE_RATE_TYPE    source_29
84843   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
84844   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
84845   , l1.LINE_NUMBER    source_33
84846   , l1.LINE_TYPE    source_34
84847   , fvl34.meaning   source_34_meaning
84848   , l1.LINE_NUM_REVERSED    source_35
84849   FROM xla_events_gt     xet 
84850   , PA_XLA_CDL_LINES_V  l1
84851   , fnd_lookup_values    fvl34
84852  WHERE xet.event_id between x_first_event_id and x_last_event_id
84853    and xet.event_date between p_pad_start_date and p_pad_end_date
84854    and xet.event_class_code = C_EVENT_CLASS_CODE
84855    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
84856    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
84857   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
84858   AND fvl34.view_application_id(+) = 275
84859   AND fvl34.language(+)            = USERENV('LANG')
84860   ;
84861 
84862 --
84863 BEGIN
84864 IF g_log_enabled THEN
84865    l_log_module := C_DEFAULT_MODULE||'.EventClass_130';
84866 END IF;
84867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84868    trace
84869       (p_msg      => 'BEGIN of EventClass_130'
84870       ,p_level    => C_LEVEL_PROCEDURE
84871       ,p_module   => l_log_module);
84872 END IF;
84873 
84874 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84875    trace
84876       (p_msg      => 'p_application_id = '||p_application_id||
84877                      ' - p_base_ledger_id = '||p_base_ledger_id||
84878                      ' - p_target_ledger_id  = '||p_target_ledger_id||
84879                      ' - p_language = '||p_language||
84880                      ' - p_currency_code = '||p_currency_code||
84881                      ' - p_sla_ledger_id = '||p_sla_ledger_id
84882       ,p_level    => C_LEVEL_STATEMENT
84886 -- initialze arrays
84883       ,p_module   => l_log_module);
84884 END IF;
84885 --
84887 --
84888 g_array_event.DELETE;
84889 l_rec_array_event := l_null_rec_array_event;
84890 --
84891 --------------------------------------
84892 -- 4262811 Initialze MPA Line Number
84893 --------------------------------------
84894 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
84895 
84896 --
84897 
84898 --
84899 OPEN header_cur;
84900 --
84901 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84902    trace
84903    (p_msg      => 'SQL - FETCH header_cur'
84904    ,p_level    => C_LEVEL_STATEMENT
84905    ,p_module   => l_log_module);
84906 END IF;
84907 --
84908 LOOP
84909 FETCH header_cur BULK COLLECT INTO
84910         l_array_entity_id
84911       , l_array_legal_entity_id
84912       , l_array_entity_code
84913       , l_array_transaction_num
84914       , l_array_event_id
84915       , l_array_class_code
84916       , l_array_event_type
84917       , l_array_event_number
84918       , l_array_event_date
84919       , l_array_transaction_date
84920       , l_array_reference_num_1
84921       , l_array_reference_num_2
84922       , l_array_reference_num_3
84923       , l_array_reference_num_4
84924       , l_array_reference_char_1
84925       , l_array_reference_char_2
84926       , l_array_reference_char_3
84927       , l_array_reference_char_4
84928       , l_array_reference_date_1
84929       , l_array_reference_date_2
84930       , l_array_reference_date_3
84931       , l_array_reference_date_4
84932       , l_array_event_created_by
84933       , l_array_budgetary_control_flag 
84934       , l_array_source_32
84935       , l_array_source_87
84936       LIMIT l_rows;
84937 --
84938 IF (C_LEVEL_EVENT >= g_log_level) THEN
84939    trace
84940    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
84941    ,p_level    => C_LEVEL_EVENT
84942    ,p_module   => l_log_module);
84943 END IF;
84944 --
84945 EXIT WHEN l_array_entity_id.COUNT = 0;
84946 
84947 -- initialize arrays
84948 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
84949 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
84950 
84951 --
84952 -- Bug 4458708
84953 --
84954 XLA_AE_LINES_PKG.g_LineNumber := 0;
84955 
84956 
84957 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
84958 g_last_hdr_idx := l_array_event_id.LAST;
84959 --
84960 -- loop for the headers. Each iteration is for each header extract row
84961 -- fetched in header cursor
84962 --
84963 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
84964 
84965 --
84966 -- set event info as cache for other routines to refer event attributes
84967 --
84968 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
84969    (p_application_id           => p_application_id
84970    ,p_primary_ledger_id        => p_primary_ledger_id
84971    ,p_base_ledger_id           => p_base_ledger_id
84972    ,p_target_ledger_id         => p_target_ledger_id
84973    ,p_entity_id                => l_array_entity_id(hdr_idx)
84974    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
84975    ,p_entity_code              => l_array_entity_code(hdr_idx)
84976    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
84977    ,p_event_id                 => l_array_event_id(hdr_idx)
84978    ,p_event_class_code         => l_array_class_code(hdr_idx)
84979    ,p_event_type_code          => l_array_event_type(hdr_idx)
84980    ,p_event_number             => l_array_event_number(hdr_idx)
84981    ,p_event_date               => l_array_event_date(hdr_idx)
84982    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
84983    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
84984    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
84985    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
84986    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
84987    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
84988    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
84989    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
84990    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
84991    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
84992    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
84993    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
84994    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
84995    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
84996    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
84997 
84998 --
84999 -- set the status of entry to C_VALID (0)
85000 --
85001 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
85002 
85003 --
85004 -- initialize a row for ae header
85005 --
85006 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
85007 
85008 l_event_id := l_array_event_id(hdr_idx);
85009 
85010 --
85011 -- storing the hdr_idx for event. May be used by line cursor.
85012 --
85013 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
85014 
85015 --
85016 -- store sources from header extract. This can be improved to
85017 -- store only those sources from header extract that may be used in lines
85018 --
85019 
85020 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
85021 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
85022 
85023 --
85024 -- initilaize the status of ae headers for diffrent balance types
85025 -- the status is initialised to C_NOT_CREATED (2)
85026 --
85030 
85027 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
85028 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
85029 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
85031 --
85032 -- call api to validate and store accounting attributes for header
85033 --
85034 
85035 ------------------------------------------------------------
85036 -- Accrual Reversal : to get date for Standard Source (NONE)
85037 ------------------------------------------------------------
85038 l_acc_rev_gl_date_source := NULL;
85039 
85040      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
85041       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
85042 
85043 
85044 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
85045 
85046 XLA_AE_HEADER_PKG.SetJeCategoryName;
85047 
85048 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
85049 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
85050 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
85051 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
85052 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
85053 
85054 
85055 -- No header level analytical criteria
85056 
85057 --
85058 --accounting attribute enhancement, bug 3612931
85059 --
85060 l_trx_reversal_source := SUBSTR(NULL, 1,30);
85061 
85062 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
85063    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
85064 
85065    xla_accounting_err_pkg.build_message
85066       (p_appli_s_name            => 'XLA'
85067       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
85068       ,p_token_1                 => 'ACCT_ATTR_NAME'
85069       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
85070       ,p_token_2                 => 'PRODUCT_NAME'
85071       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
85072       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
85073       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
85074       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
85075 
85076 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
85077    --
85078    -- following sets the accounting attributes needed to reverse
85079    -- accounting for a distributeion
85080    --
85081    xla_ae_lines_pkg.SetTrxReversalAttrs
85082       (p_event_id              => l_event_id
85083       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
85084       ,p_trx_reversal_source   => l_trx_reversal_source);
85085 
85086 END IF;
85087 
85088 
85089 ----------------------------------------------------------------
85090 -- 4262811 -  update the header statuses to invalid in need be
85091 ----------------------------------------------------------------
85092 --
85093 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
85094 
85095 
85096   -----------------------------------------------
85097   -- No accrual reversal for the event class/type
85098   -----------------------------------------------
85099 ----------------------------------------------------------------
85100 
85101 --
85102 -- this ends the header loop iteration for one bulk fetch
85103 --
85104 END LOOP;
85105 
85106 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
85107 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
85108 
85109 --
85110 -- insert dummy rows into lines gt table that were created due to
85111 -- transaction reversals
85112 --
85113 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
85114    l_result := XLA_AE_LINES_PKG.InsertLines;
85115 END IF;
85116 
85117 --
85118 -- reset the temp_line_num for each set of events fetched from header
85119 -- cursor rather than doing it for each new event in line cursor
85120 -- Bug 3939231
85121 --
85122 xla_ae_lines_pkg.g_temp_line_num := 0;
85123 
85124 
85125 
85126 --
85127 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
85128 --
85129 --
85130 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85131 
85132       trace
85133          (p_msg      => 'SQL - FETCH line_cur'
85134          ,p_level    => C_LEVEL_STATEMENT
85135          ,p_module   => l_log_module);
85136 
85137 END IF;
85138 --
85139 --
85140 LOOP
85141   --
85142   FETCH line_cur BULK COLLECT INTO
85143         l_array_entity_id
85144       , l_array_legal_entity_id
85145       , l_array_entity_code
85146       , l_array_transaction_num
85147       , l_array_event_id
85148       , l_array_class_code
85149       , l_array_event_type
85150       , l_array_event_number
85151       , l_array_event_date
85152       , l_array_transaction_date
85153       , l_array_reference_num_1
85154       , l_array_reference_num_2
85155       , l_array_reference_num_3
85156       , l_array_reference_num_4
85157       , l_array_reference_char_1
85158       , l_array_reference_char_2
85159       , l_array_reference_char_3
85160       , l_array_reference_char_4
85161       , l_array_reference_date_1
85162       , l_array_reference_date_2
85163       , l_array_reference_date_3
85164       , l_array_reference_date_4
85165       , l_array_event_created_by
85166       , l_array_budgetary_control_flag
85167       , l_array_extract_line_num 
85171       , l_array_source_6
85168       , l_array_source_3
85169       , l_array_source_4
85170       , l_array_source_5
85172       , l_array_source_7
85173       , l_array_source_22
85174       , l_array_source_23
85175       , l_array_source_24
85176       , l_array_source_25
85177       , l_array_source_26
85178       , l_array_source_27
85179       , l_array_source_28
85180       , l_array_source_29
85181       , l_array_source_30
85182       , l_array_source_31
85183       , l_array_source_33
85184       , l_array_source_34
85185       , l_array_source_34_meaning
85186       , l_array_source_35
85187       LIMIT l_rows;
85188 
85189   --
85190   IF (C_LEVEL_EVENT >= g_log_level) THEN
85191             trace
85192                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
85193                ,p_level    => C_LEVEL_EVENT
85194                ,p_module   => l_log_module);
85195   END IF;
85196   --
85197   EXIT WHEN l_array_entity_id.count = 0;
85198 
85199   XLA_AE_LINES_PKG.g_rec_lines := null;
85200 
85201 --
85202 -- Bug 4458708
85203 --
85204 XLA_AE_LINES_PKG.g_LineNumber := 0;
85205 --
85206 --
85207 
85208 FOR Idx IN 1..l_array_event_id.count LOOP
85209    --
85210    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
85211    --
85212    l_event_id := l_array_event_id(idx);  -- 5648433
85213 
85214    --
85215    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
85216    --
85217 
85218    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
85219              (g_array_event(l_event_id).array_value_num('header_index'))
85220          ,'N'
85221          ) <> 'Y'
85222    THEN
85223       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85224          trace
85225             (p_msg      => 'Trancaction revesal option is not Y '
85226             ,p_level    => C_LEVEL_STATEMENT
85227             ,p_module   => l_log_module);
85228       END IF;
85229 
85230 --
85231 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
85232 --
85233 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
85234 --
85235 -- set event info as cache for other routines to refer event attributes
85236 --
85237 
85238 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
85239    l_previous_event_id := l_event_id;
85240 
85241    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
85242       (p_application_id           => p_application_id
85243       ,p_primary_ledger_id        => p_primary_ledger_id
85244       ,p_base_ledger_id           => p_base_ledger_id
85245       ,p_target_ledger_id         => p_target_ledger_id
85246       ,p_entity_id                => l_array_entity_id(Idx)
85247       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
85248       ,p_entity_code              => l_array_entity_code(Idx)
85249       ,p_transaction_num          => l_array_transaction_num(Idx)
85250       ,p_event_id                 => l_array_event_id(Idx)
85251       ,p_event_class_code         => l_array_class_code(Idx)
85252       ,p_event_type_code          => l_array_event_type(Idx)
85253       ,p_event_number             => l_array_event_number(Idx)
85254       ,p_event_date               => l_array_event_date(Idx)
85255       ,p_transaction_date         => l_array_transaction_date(Idx)
85256       ,p_reference_num_1          => l_array_reference_num_1(Idx)
85257       ,p_reference_num_2          => l_array_reference_num_2(Idx)
85258       ,p_reference_num_3          => l_array_reference_num_3(Idx)
85259       ,p_reference_num_4          => l_array_reference_num_4(Idx)
85260       ,p_reference_char_1         => l_array_reference_char_1(Idx)
85261       ,p_reference_char_2         => l_array_reference_char_2(Idx)
85262       ,p_reference_char_3         => l_array_reference_char_3(Idx)
85263       ,p_reference_char_4         => l_array_reference_char_4(Idx)
85264       ,p_reference_date_1         => l_array_reference_date_1(Idx)
85265       ,p_reference_date_2         => l_array_reference_date_2(Idx)
85266       ,p_reference_date_3         => l_array_reference_date_3(Idx)
85267       ,p_reference_date_4         => l_array_reference_date_4(Idx)
85268       ,p_event_created_by         => l_array_event_created_by(Idx)
85269       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
85270        --
85271 END IF;
85272 
85273 
85274 
85275 --
85276 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
85277 
85278 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
85279 
85280 IF l_continue_with_lines THEN
85281    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
85282       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
85283 
85284       xla_accounting_err_pkg.build_message
85285          (p_appli_s_name            => 'XLA'
85286          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
85287          ,p_token_1                 => 'LINE_NUMBER'
85288          ,p_value_1                 => l_array_extract_line_num(Idx)
85289          ,p_token_2                 => 'PRODUCT_NAME'
85290          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
85291          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
85292          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
85293          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
85294 
85295    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
85296       --
85297       -- following sets the accounting attributes needed to reverse
85298       -- accounting for a distributeion
85299       --
85300 
85301       --
85302       -- 5217187
85303       --
85307       --
85304       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
85305       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
85306                                        g_array_event(l_event_id).array_value_num('header_index'));
85308       --
85309 
85310       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
85311       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
85312       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
85313       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
85314       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
85315       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
85316       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
85317       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
85318       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
85319       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
85320       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
85321       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
85322       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
85323       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
85324       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
85325       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
85326       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
85327       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
85328       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
85329       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
85330       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
85331       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
85332       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
85333       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
85334       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
85335       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
85336       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
85337       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
85338       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
85339       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
85340       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
85341       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
85342       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
85343       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
85344       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
85345       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
85346       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
85347       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
85348       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
85349       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
85350       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
85351       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
85352       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
85353       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
85354       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
85355       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
85356       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
85357       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
85358 
85359 
85360       xla_ae_lines_pkg.SetAcctReversalAttrs
85361          (p_event_id             => l_event_id
85362          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
85363          ,p_calculate_acctd_flag => l_calculate_acctd_flag
85364          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
85365    END IF;
85366 
85367    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
85368        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
85369 
85370 --
85371 AcctLineType_42 (
85372  p_application_id  => p_application_id
85373  ,p_event_id     => l_event_id
85374  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85375  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85376  ,p_actual_flag => l_actual_flag
85377  ,p_balance_type_code => l_balance_type_code
85378  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85379  
85380  , p_source_3 => l_array_source_3(Idx)
85381  , p_source_4 => l_array_source_4(Idx)
85382  , p_source_5 => l_array_source_5(Idx)
85383  , p_source_6 => l_array_source_6(Idx)
85384  , p_source_22 => l_array_source_22(Idx)
85385  , p_source_23 => l_array_source_23(Idx)
85386  , p_source_24 => l_array_source_24(Idx)
85387  , p_source_25 => l_array_source_25(Idx)
85388  , p_source_26 => l_array_source_26(Idx)
85389  , p_source_27 => l_array_source_27(Idx)
85390  , p_source_28 => l_array_source_28(Idx)
85391  , p_source_29 => l_array_source_29(Idx)
85392  , p_source_30 => l_array_source_30(Idx)
85393  , p_source_31 => l_array_source_31(Idx)
85394  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
85395  , p_source_33 => l_array_source_33(Idx)
85396  , p_source_34 => l_array_source_34(Idx)
85397  , p_source_34_meaning => l_array_source_34_meaning(Idx)
85398  , p_source_35 => l_array_source_35(Idx)
85399  );
85400 If(l_balance_type_code = 'A') THEN
85404 --
85401   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85402 END IF;
85403 
85405 
85406 
85407 --
85408 AcctLineType_53 (
85409  p_application_id  => p_application_id
85410  ,p_event_id     => l_event_id
85411  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85412  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85413  ,p_actual_flag => l_actual_flag
85414  ,p_balance_type_code => l_balance_type_code
85415  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85416  
85417  , p_source_3 => l_array_source_3(Idx)
85418  , p_source_4 => l_array_source_4(Idx)
85419  , p_source_6 => l_array_source_6(Idx)
85420  , p_source_7 => l_array_source_7(Idx)
85421  , p_source_22 => l_array_source_22(Idx)
85422  , p_source_23 => l_array_source_23(Idx)
85423  , p_source_24 => l_array_source_24(Idx)
85424  , p_source_25 => l_array_source_25(Idx)
85425  , p_source_26 => l_array_source_26(Idx)
85426  , p_source_27 => l_array_source_27(Idx)
85427  , p_source_28 => l_array_source_28(Idx)
85428  , p_source_29 => l_array_source_29(Idx)
85429  , p_source_30 => l_array_source_30(Idx)
85430  , p_source_31 => l_array_source_31(Idx)
85431  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
85432  , p_source_33 => l_array_source_33(Idx)
85433  , p_source_34 => l_array_source_34(Idx)
85434  , p_source_34_meaning => l_array_source_34_meaning(Idx)
85435  , p_source_35 => l_array_source_35(Idx)
85436  );
85437 If(l_balance_type_code = 'A') THEN
85438   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85439 END IF;
85440 
85441 --
85442 
85443       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
85444       -- or secondary ledger that has different currency with primary
85445       -- or alc that is calculated by sla
85446       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
85447             (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'))
85448 
85449 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
85450 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
85451           AND (l_actual_flag = 'A')) THEN
85452         XLA_AE_LINES_PKG.CreateGainOrLossLines(
85453           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
85454          ,p_application_id   => p_application_id
85455          ,p_amb_context_code => 'DEFAULT'
85456          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
85457          ,p_event_class_code => C_EVENT_CLASS_CODE
85458          ,p_event_type_code  => C_EVENT_TYPE_CODE
85459          
85460          ,p_gain_ccid        => -1
85461          ,p_loss_ccid        => -1
85462 
85463          ,p_actual_flag      => l_actual_flag
85464          ,p_enc_flag         => null
85465          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
85466          ,p_enc_g_l_ref      => null
85467          );
85468       END IF;
85469    END IF;
85470 END IF;
85471 
85472    ELSE
85473       --
85474       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
85475       --
85476       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85477          trace
85478             (p_msg      => 'Trancaction revesal option is Y'
85479             ,p_level    => C_LEVEL_STATEMENT
85480             ,p_module   => l_log_module);
85481       END IF;
85482    END IF;
85483 
85484 END LOOP;
85485 l_result := XLA_AE_LINES_PKG.InsertLines ;
85486 end loop;
85487 close line_cur;
85488 
85489 
85490 --
85491 -- insert headers into xla_ae_headers_gt table
85492 --
85493 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
85494 
85495 -- insert into errors table here.
85496 
85497 END LOOP;
85498 
85499 --
85500 -- 4865292
85501 --
85502 -- Compare g_hdr_extract_count with event count in
85503 -- CreateHeadersAndLines.
85504 --
85505 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
85506 
85507 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85508    trace (p_msg     => '# rows extracted from header extract objects '
85509                     || ' (running total): '
85510                     || g_hdr_extract_count
85511          ,p_level   => C_LEVEL_STATEMENT
85512          ,p_module  => l_log_module);
85513 END IF;
85514 
85515 CLOSE header_cur;
85516 --
85517 
85518 --
85519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85520    trace
85521       (p_msg      => 'END of EventClass_130'
85522       ,p_level    => C_LEVEL_PROCEDURE
85523       ,p_module   => l_log_module);
85524 END IF;
85525 --
85526 RETURN l_result;
85527 EXCEPTION
85528 WHEN xla_exceptions_pkg.application_exception THEN
85529    
85530 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
85531 
85532    
85533 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
85534 
85535    RAISE;
85536 WHEN OTHERS THEN
85537    xla_exceptions_pkg.raise_message
85538       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_130');
85539 END EventClass_130;
85540 --
85541 
85542 ---------------------------------------
85543 --
85544 -- PRIVATE PROCEDURE
85545 --         insert_sources_131
85546 --
85547 ----------------------------------------
85548 --
85549 PROCEDURE insert_sources_131(
85550                                 p_target_ledger_id       IN NUMBER
85551                               , p_language               IN VARCHAR2
85552                               , p_sla_ledger_id          IN NUMBER
85553                               , p_pad_start_date         IN DATE
85554                               , p_pad_end_date           IN DATE
85558 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ADJ_ALL';
85555                          )
85556 IS
85557 
85559 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST_ADJ';
85560 p_apps_owner                   VARCHAR2(30);
85561 l_log_module                   VARCHAR2(240);
85562 BEGIN
85563 IF g_log_enabled THEN
85564       l_log_module := C_DEFAULT_MODULE||'.insert_sources_131';
85565 END IF;
85566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85567 
85568       trace
85569          (p_msg      => 'BEGIN of insert_sources_131'
85570          ,p_level    => C_LEVEL_PROCEDURE
85571          ,p_module   => l_log_module);
85572 
85573 END IF;
85574 
85575 -- select APPS owner
85576 SELECT oracle_username
85577   INTO p_apps_owner
85578   FROM fnd_oracle_userid
85579  WHERE read_only_flag = 'U'
85580 ;
85581 
85582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85583       trace
85584          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
85585                         ' - p_language = '||p_language||
85586                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
85587                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
85588                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
85589                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
85590          ,p_level    => C_LEVEL_STATEMENT
85591          ,p_module   => l_log_module);
85592 END IF;
85593 
85594 
85595 --
85596 INSERT INTO xla_diag_sources --hdr2
85597 (
85598         event_id
85599       , ledger_id
85600       , sla_ledger_id
85601       , description_language
85602       , object_name
85603       , object_type_code
85604       , line_number
85605       , source_application_id
85606       , source_type_code
85607       , source_code
85608       , source_value
85609       , source_meaning
85610       , created_by
85611       , creation_date
85612       , last_update_date
85613       , last_updated_by
85614       , last_update_login
85615       , program_update_date
85616       , program_application_id
85617       , program_id
85618       , request_id
85619 )
85620 SELECT
85621         event_id
85622       , p_target_ledger_id
85623       , p_sla_ledger_id
85624       , p_language
85625       , object_name
85626       , object_type_code
85627       , line_number
85628       , source_application_id
85629       , source_type_code
85630       , source_code
85631       , SUBSTR(source_value ,1,1996)
85632       , SUBSTR(source_meaning ,1,200)
85633       , xla_environment_pkg.g_Usr_Id
85634       , TRUNC(SYSDATE)
85635       , TRUNC(SYSDATE)
85636       , xla_environment_pkg.g_Usr_Id
85637       , xla_environment_pkg.g_Login_Id
85638       , TRUNC(SYSDATE)
85639       , xla_environment_pkg.g_Prog_Appl_Id
85640       , xla_environment_pkg.g_Prog_Id
85641       , xla_environment_pkg.g_Req_Id
85642   FROM (
85643        SELECT xet.event_id                  event_id
85644             , 0                          line_number
85645             , CASE r
85646                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
85647                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
85648                 
85649                ELSE null
85650               END                           object_name
85651             , CASE r
85652                 WHEN 1 THEN 'HEADER' 
85653                 WHEN 2 THEN 'HEADER' 
85654                 
85655                 ELSE null
85656               END                           object_type_code
85657             , CASE r
85658                 WHEN 1 THEN '275' 
85659                 WHEN 2 THEN '275' 
85660                 
85661                 ELSE null
85662               END                           source_application_id
85663             , 'S'             source_type_code
85664             , CASE r
85665                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
85666                 WHEN 2 THEN 'GL_DATE' 
85667                 
85668                 ELSE null
85669               END                           source_code
85670             , CASE r
85671                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
85672                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
85673                 
85674                 ELSE null
85675               END                           source_value
85676             , null              source_meaning
85677          FROM xla_events_gt     xet  
85678       , PA_XLA_EXP_HEADER_V  h2
85679              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
85680          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
85681            AND xet.event_class_code = C_EVENT_CLASS_CODE
85682               AND h2.event_id = xet.event_id
85683 
85684 )
85685 ;
85686 --
85687 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85688 
85689       trace
85690          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
85691          ,p_level    => C_LEVEL_STATEMENT
85692          ,p_module   => l_log_module);
85693 
85694 END IF;
85695 --
85696 
85697 
85698 
85699 --
85700 INSERT INTO xla_diag_sources  --line2
85701 (
85702         event_id
85703       , ledger_id
85704       , sla_ledger_id
85705       , description_language
85706       , object_name
85707       , object_type_code
85708       , line_number
85709       , source_application_id
85710       , source_type_code
85711       , source_code
85712       , source_value
85713       , source_meaning
85714       , created_by
85715       , creation_date
85716       , last_update_date
85717       , last_updated_by
85718       , last_update_login
85722       , request_id
85719       , program_update_date
85720       , program_application_id
85721       , program_id
85723 )
85724 SELECT  event_id
85725       , p_target_ledger_id
85726       , p_sla_ledger_id
85727       , p_language
85728       , object_name
85729       , object_type_code
85730       , line_number
85731       , source_application_id
85732       , source_type_code
85733       , source_code
85734       , SUBSTR(source_value,1,1996)
85735       , SUBSTR(source_meaning ,1,200)
85736       , xla_environment_pkg.g_Usr_Id
85737       , TRUNC(SYSDATE)
85738       , TRUNC(SYSDATE)
85739       , xla_environment_pkg.g_Usr_Id
85740       , xla_environment_pkg.g_Login_Id
85741       , TRUNC(SYSDATE)
85742       , xla_environment_pkg.g_Prog_Appl_Id
85743       , xla_environment_pkg.g_Prog_Id
85744       , xla_environment_pkg.g_Req_Id
85745   FROM (
85746        SELECT xet.event_id                  event_id
85747             , l1.line_number                 line_number
85748             , CASE r
85749                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
85750                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
85751                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
85752                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
85753                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
85754                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
85755                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
85756                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
85757                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
85758                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
85759                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
85760                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
85761                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
85762                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
85763                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
85764                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
85765                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
85766                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
85767                 
85768                ELSE null
85769               END                           object_name
85770             , CASE r
85771                 WHEN 1 THEN 'LINE' 
85772                 WHEN 2 THEN 'LINE' 
85773                 WHEN 3 THEN 'LINE' 
85774                 WHEN 4 THEN 'LINE' 
85775                 WHEN 5 THEN 'LINE' 
85776                 WHEN 6 THEN 'LINE' 
85777                 WHEN 7 THEN 'LINE' 
85778                 WHEN 8 THEN 'LINE' 
85779                 WHEN 9 THEN 'LINE' 
85780                 WHEN 10 THEN 'LINE' 
85781                 WHEN 11 THEN 'LINE' 
85782                 WHEN 12 THEN 'LINE' 
85783                 WHEN 13 THEN 'LINE' 
85784                 WHEN 14 THEN 'LINE' 
85785                 WHEN 15 THEN 'LINE' 
85786                 WHEN 16 THEN 'LINE' 
85787                 WHEN 17 THEN 'LINE' 
85788                 WHEN 18 THEN 'LINE' 
85789                 
85790                 ELSE null
85791               END                           object_type_code
85792             , CASE r
85793                 WHEN 1 THEN '275' 
85794                 WHEN 2 THEN '275' 
85795                 WHEN 3 THEN '275' 
85796                 WHEN 4 THEN '275' 
85797                 WHEN 5 THEN '275' 
85798                 WHEN 6 THEN '275' 
85799                 WHEN 7 THEN '275' 
85800                 WHEN 8 THEN '275' 
85801                 WHEN 9 THEN '275' 
85802                 WHEN 10 THEN '275' 
85803                 WHEN 11 THEN '275' 
85804                 WHEN 12 THEN '275' 
85805                 WHEN 13 THEN '275' 
85806                 WHEN 14 THEN '275' 
85807                 WHEN 15 THEN '275' 
85808                 WHEN 16 THEN '275' 
85809                 WHEN 17 THEN '275' 
85810                 WHEN 18 THEN '275' 
85811                 
85812                 ELSE null
85813               END                           source_application_id
85814             , 'S'             source_type_code
85815             , CASE r
85816                 WHEN 1 THEN 'COST_CCID' 
85817                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
85818                 WHEN 3 THEN 'ADJ_COST_CCID' 
85819                 WHEN 4 THEN 'COST_CLEARING_CCID' 
85820                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
85821                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
85822                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
85823                 WHEN 8 THEN 'ENTERED_RAW_COST' 
85824                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
85825                 WHEN 10 THEN 'ACCT_RAW_COST' 
85826                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
85827                 WHEN 12 THEN 'EXCHANGE_RATE' 
85828                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
85829                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
85830                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
85831                 WHEN 16 THEN 'LINE_NUMBER' 
85832                 WHEN 17 THEN 'LINE_TYPE' 
85833                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
85834                 
85835                 ELSE null
85836               END                           source_code
85837             , CASE r
85838                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
85839                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
85840                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
85841                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
85842                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
85843                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
85844                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
85845                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
85846                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
85847                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
85848                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
85849                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
85853                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
85850                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
85851                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
85852                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
85854                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
85855                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
85856                 
85857                 ELSE null
85858               END                           source_value
85859             , CASE r
85860                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
85861                           103371
85862                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
85863                          ,'ALLOW_OVERRIDE_CCID_FLAG'
85864                          ,'S'
85865                          ,275)
85866                 WHEN 17 THEN fvl34.meaning
85867                 
85868                 ELSE null
85869               END               source_meaning
85870          FROM  xla_events_gt     xet  
85871         , PA_XLA_CDL_LINES_V  l1
85872   , fnd_lookup_values    fvl34
85873             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
85874         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
85875           AND xet.event_class_code = C_EVENT_CLASS_CODE
85876             AND l1.event_id          = xet.event_id
85877    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
85878   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
85879   AND fvl34.view_application_id(+) = 275
85880   AND fvl34.language(+)            = USERENV('LANG')
85881   
85882 )
85883 ;
85884 --
85885 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85886 
85887       trace
85888          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
85889          ,p_level    => C_LEVEL_STATEMENT
85890          ,p_module   => l_log_module);
85891 
85892 END IF;
85893 
85894 
85895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85896       trace
85897          (p_msg      => 'END of insert_sources_131'
85898          ,p_level    => C_LEVEL_PROCEDURE
85899          ,p_module   => l_log_module);
85900 END IF;
85901 EXCEPTION
85902   WHEN xla_exceptions_pkg.application_exception THEN
85903       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
85904             trace
85905                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
85906                ,p_level    => C_LEVEL_EXCEPTION
85907                ,p_module   => l_log_module);
85908       END IF;
85909       RAISE;
85910   WHEN OTHERS THEN
85911       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
85912             trace
85913                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
85914                ,p_level    => C_LEVEL_EXCEPTION
85915                ,p_module   => l_log_module);
85916        END IF;
85917        xla_exceptions_pkg.raise_message
85918            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_131');
85919 END insert_sources_131;
85920 --
85921 
85922 ---------------------------------------
85923 --
85924 -- PRIVATE FUNCTION
85925 --         EventClass_131
85926 --
85927 ----------------------------------------
85928 --
85929 FUNCTION EventClass_131
85930        (p_application_id         IN NUMBER
85931        ,p_base_ledger_id         IN NUMBER
85932        ,p_target_ledger_id       IN NUMBER
85933        ,p_language               IN VARCHAR2
85934        ,p_currency_code          IN VARCHAR2
85935        ,p_sla_ledger_id          IN NUMBER
85936        ,p_pad_start_date         IN DATE
85937        ,p_pad_end_date           IN DATE
85938        ,p_primary_ledger_id      IN NUMBER)
85939 RETURN BOOLEAN IS
85940 --
85941 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ADJ_ALL';
85942 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST_ADJ';
85943 
85944 l_calculate_acctd_flag   VARCHAR2(1) :='N';
85945 l_calculate_g_l_flag     VARCHAR2(1) :='N';
85946 --
85947 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85948 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85949 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85950 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85951 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85952 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85953 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85954 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85955 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85956 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85957 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85958 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85959 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85960 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85961 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85962 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85963 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85964 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85965 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85966 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85967 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85968 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85969 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
85970 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85971 
85975 l_last_event_id                        NUMBER;
85972 l_event_id                             NUMBER;
85973 l_previous_event_id                    NUMBER;
85974 l_first_event_id                       NUMBER;
85976 
85977 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
85978 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
85979 --
85980 --
85981 l_result                    BOOLEAN := TRUE;
85982 l_rows                      NUMBER  := 1000;
85983 l_event_type_name           VARCHAR2(80) := 'All';
85984 l_event_class_name          VARCHAR2(80) := 'Work in Process Cost Adjustment';
85985 l_description               VARCHAR2(4000);
85986 l_transaction_reversal      NUMBER;
85987 l_ae_header_id              NUMBER;
85988 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
85989 l_log_module                VARCHAR2(240);
85990 --
85991 l_acct_reversal_source      VARCHAR2(30);
85992 l_trx_reversal_source       VARCHAR2(30);
85993 
85994 l_continue_with_lines       BOOLEAN := TRUE;
85995 --
85996 l_acc_rev_gl_date_source    DATE;                      -- 4262811
85997 --
85998 type t_array_event_id is table of number index by binary_integer;
85999 
86000 l_rec_array_event                    t_rec_array_event;
86001 l_null_rec_array_event               t_rec_array_event;
86002 l_array_ae_header_id                 xla_number_array_type;
86003 l_actual_flag                        VARCHAR2(1) := NULL;
86004 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
86005 l_balance_type_code                  VARCHAR2(1) :=NULL;
86006 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
86007 
86008 --
86009 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
86010 --
86011 
86012 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
86013 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
86014 
86015 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
86016 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
86017 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
86018 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
86019 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
86020 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
86021 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
86022 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
86023 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
86024 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
86025 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
86026 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
86027 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
86028 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
86029 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
86030 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
86031 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
86032 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
86033 
86034 l_array_source_32              t_array_source_32;
86035 l_array_source_87              t_array_source_87;
86036 
86037 l_array_source_3      t_array_source_3;
86038 l_array_source_4      t_array_source_4;
86039 l_array_source_5      t_array_source_5;
86040 l_array_source_6      t_array_source_6;
86041 l_array_source_7      t_array_source_7;
86042 l_array_source_22      t_array_source_22;
86043 l_array_source_23      t_array_source_23;
86044 l_array_source_24      t_array_source_24;
86045 l_array_source_25      t_array_source_25;
86046 l_array_source_26      t_array_source_26;
86047 l_array_source_27      t_array_source_27;
86048 l_array_source_28      t_array_source_28;
86049 l_array_source_29      t_array_source_29;
86050 l_array_source_30      t_array_source_30;
86051 l_array_source_31      t_array_source_31;
86052 l_array_source_33      t_array_source_33;
86053 l_array_source_34      t_array_source_34;
86054 l_array_source_34_meaning      t_array_lookup_meaning;
86055 l_array_source_35      t_array_source_35;
86056 
86057 --
86058 CURSOR header_cur
86059 IS
86060 SELECT /*+ leading(xet) cardinality(xet,1) */
86061 -- Event Class Code: WIP_COST_ADJ
86062     xet.entity_id
86063    ,xet.legal_entity_id
86064    ,xet.entity_code
86065    ,xet.transaction_number
86066    ,xet.event_id
86067    ,xet.event_class_code
86068    ,xet.event_type_code
86069    ,xet.event_number
86070    ,xet.event_date
86071    ,xet.transaction_date
86072    ,xet.reference_num_1
86073    ,xet.reference_num_2
86074    ,xet.reference_num_3
86075    ,xet.reference_num_4
86076    ,xet.reference_char_1
86077    ,xet.reference_char_2
86078    ,xet.reference_char_3
86079    ,xet.reference_char_4
86080    ,xet.reference_date_1
86081    ,xet.reference_date_2
86082    ,xet.reference_date_3
86083    ,xet.reference_date_4
86084    ,xet.event_created_by
86085    ,xet.budgetary_control_flag 
86086   , h2.EXPENDITURE_ITEM_ID    source_32
86087   , h2.GL_DATE    source_87
86088   FROM xla_events_gt     xet 
86089   , PA_XLA_EXP_HEADER_V  h2
86090  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
86094  ORDER BY event_id
86091    and xet.event_class_code = C_EVENT_CLASS_CODE
86092    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
86093 
86095 ;
86096 
86097 
86098 --
86099 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
86100 IS
86101 SELECT  /*+ leading(xet) cardinality(xet,1) */
86102 -- Event Class Code: WIP_COST_ADJ
86103     xet.entity_id
86104    ,xet.legal_entity_id
86105    ,xet.entity_code
86106    ,xet.transaction_number
86107    ,xet.event_id
86108    ,xet.event_class_code
86109    ,xet.event_type_code
86110    ,xet.event_number
86111    ,xet.event_date
86112    ,xet.transaction_date
86113    ,xet.reference_num_1
86114    ,xet.reference_num_2
86115    ,xet.reference_num_3
86116    ,xet.reference_num_4
86117    ,xet.reference_char_1
86118    ,xet.reference_char_2
86119    ,xet.reference_char_3
86120    ,xet.reference_char_4
86121    ,xet.reference_date_1
86122    ,xet.reference_date_2
86123    ,xet.reference_date_3
86124    ,xet.reference_date_4
86125    ,xet.event_created_by
86126    ,xet.budgetary_control_flag
86127  , l1.LINE_NUMBER  
86128   , l1.COST_CCID    source_3
86129   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
86130   , l1.ADJ_COST_CCID    source_5
86131   , l1.COST_CLEARING_CCID    source_6
86132   , l1.ADJ_COST_CLEARING_CCID    source_7
86133   , l1.REVERSING_LINE_FLAG    source_22
86134   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
86135   , l1.ENTERED_RAW_COST    source_24
86136   , l1.ENTERED_CURRENCY_CODE    source_25
86137   , l1.ACCT_RAW_COST    source_26
86138   , l1.EXCHANGE_RATE_DATE    source_27
86139   , l1.EXCHANGE_RATE    source_28
86140   , l1.EXCHANGE_RATE_TYPE    source_29
86141   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
86142   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
86143   , l1.LINE_NUMBER    source_33
86144   , l1.LINE_TYPE    source_34
86145   , fvl34.meaning   source_34_meaning
86146   , l1.LINE_NUM_REVERSED    source_35
86147   FROM xla_events_gt     xet 
86148   , PA_XLA_CDL_LINES_V  l1
86149   , fnd_lookup_values    fvl34
86150  WHERE xet.event_id between x_first_event_id and x_last_event_id
86151    and xet.event_date between p_pad_start_date and p_pad_end_date
86152    and xet.event_class_code = C_EVENT_CLASS_CODE
86153    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
86154    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
86155   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
86156   AND fvl34.view_application_id(+) = 275
86157   AND fvl34.language(+)            = USERENV('LANG')
86158   ;
86159 
86160 --
86161 BEGIN
86162 IF g_log_enabled THEN
86163    l_log_module := C_DEFAULT_MODULE||'.EventClass_131';
86164 END IF;
86165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86166    trace
86167       (p_msg      => 'BEGIN of EventClass_131'
86168       ,p_level    => C_LEVEL_PROCEDURE
86169       ,p_module   => l_log_module);
86170 END IF;
86171 
86172 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86173    trace
86174       (p_msg      => 'p_application_id = '||p_application_id||
86175                      ' - p_base_ledger_id = '||p_base_ledger_id||
86176                      ' - p_target_ledger_id  = '||p_target_ledger_id||
86177                      ' - p_language = '||p_language||
86178                      ' - p_currency_code = '||p_currency_code||
86179                      ' - p_sla_ledger_id = '||p_sla_ledger_id
86180       ,p_level    => C_LEVEL_STATEMENT
86181       ,p_module   => l_log_module);
86182 END IF;
86183 --
86184 -- initialze arrays
86185 --
86186 g_array_event.DELETE;
86187 l_rec_array_event := l_null_rec_array_event;
86188 --
86189 --------------------------------------
86190 -- 4262811 Initialze MPA Line Number
86191 --------------------------------------
86192 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
86193 
86194 --
86195 
86196 --
86197 OPEN header_cur;
86198 --
86199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86200    trace
86201    (p_msg      => 'SQL - FETCH header_cur'
86202    ,p_level    => C_LEVEL_STATEMENT
86203    ,p_module   => l_log_module);
86204 END IF;
86205 --
86206 LOOP
86207 FETCH header_cur BULK COLLECT INTO
86208         l_array_entity_id
86209       , l_array_legal_entity_id
86210       , l_array_entity_code
86211       , l_array_transaction_num
86212       , l_array_event_id
86213       , l_array_class_code
86214       , l_array_event_type
86215       , l_array_event_number
86216       , l_array_event_date
86217       , l_array_transaction_date
86218       , l_array_reference_num_1
86219       , l_array_reference_num_2
86220       , l_array_reference_num_3
86221       , l_array_reference_num_4
86222       , l_array_reference_char_1
86223       , l_array_reference_char_2
86224       , l_array_reference_char_3
86225       , l_array_reference_char_4
86226       , l_array_reference_date_1
86227       , l_array_reference_date_2
86228       , l_array_reference_date_3
86229       , l_array_reference_date_4
86230       , l_array_event_created_by
86231       , l_array_budgetary_control_flag 
86232       , l_array_source_32
86233       , l_array_source_87
86234       LIMIT l_rows;
86235 --
86236 IF (C_LEVEL_EVENT >= g_log_level) THEN
86237    trace
86238    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
86239    ,p_level    => C_LEVEL_EVENT
86240    ,p_module   => l_log_module);
86241 END IF;
86242 --
86243 EXIT WHEN l_array_entity_id.COUNT = 0;
86244 
86245 -- initialize arrays
86246 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
86247 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
86248 
86249 --
86250 -- Bug 4458708
86251 --
86255 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
86252 XLA_AE_LINES_PKG.g_LineNumber := 0;
86253 
86254 
86256 g_last_hdr_idx := l_array_event_id.LAST;
86257 --
86258 -- loop for the headers. Each iteration is for each header extract row
86259 -- fetched in header cursor
86260 --
86261 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
86262 
86263 --
86264 -- set event info as cache for other routines to refer event attributes
86265 --
86266 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
86267    (p_application_id           => p_application_id
86268    ,p_primary_ledger_id        => p_primary_ledger_id
86269    ,p_base_ledger_id           => p_base_ledger_id
86270    ,p_target_ledger_id         => p_target_ledger_id
86271    ,p_entity_id                => l_array_entity_id(hdr_idx)
86272    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
86273    ,p_entity_code              => l_array_entity_code(hdr_idx)
86274    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
86275    ,p_event_id                 => l_array_event_id(hdr_idx)
86276    ,p_event_class_code         => l_array_class_code(hdr_idx)
86277    ,p_event_type_code          => l_array_event_type(hdr_idx)
86278    ,p_event_number             => l_array_event_number(hdr_idx)
86279    ,p_event_date               => l_array_event_date(hdr_idx)
86280    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
86281    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
86282    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
86283    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
86284    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
86285    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
86286    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
86287    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
86288    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
86289    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
86290    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
86291    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
86292    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
86293    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
86294    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
86295 
86296 --
86297 -- set the status of entry to C_VALID (0)
86298 --
86299 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
86300 
86301 --
86302 -- initialize a row for ae header
86303 --
86304 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
86305 
86306 l_event_id := l_array_event_id(hdr_idx);
86307 
86308 --
86309 -- storing the hdr_idx for event. May be used by line cursor.
86310 --
86311 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
86312 
86313 --
86314 -- store sources from header extract. This can be improved to
86315 -- store only those sources from header extract that may be used in lines
86316 --
86317 
86318 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
86319 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
86320 
86321 --
86322 -- initilaize the status of ae headers for diffrent balance types
86323 -- the status is initialised to C_NOT_CREATED (2)
86324 --
86325 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86326 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86327 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86328 
86329 --
86330 -- call api to validate and store accounting attributes for header
86331 --
86332 
86333 ------------------------------------------------------------
86334 -- Accrual Reversal : to get date for Standard Source (NONE)
86335 ------------------------------------------------------------
86336 l_acc_rev_gl_date_source := NULL;
86337 
86338      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
86339       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
86340 
86341 
86342 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
86343 
86344 XLA_AE_HEADER_PKG.SetJeCategoryName;
86345 
86346 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
86347 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
86348 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
86349 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
86350 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
86351 
86352 
86353 -- No header level analytical criteria
86354 
86355 --
86356 --accounting attribute enhancement, bug 3612931
86357 --
86358 l_trx_reversal_source := SUBSTR(NULL, 1,30);
86359 
86360 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
86361    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
86362 
86363    xla_accounting_err_pkg.build_message
86364       (p_appli_s_name            => 'XLA'
86365       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
86366       ,p_token_1                 => 'ACCT_ATTR_NAME'
86367       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
86368       ,p_token_2                 => 'PRODUCT_NAME'
86369       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
86370       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
86374 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
86371       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
86372       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
86373 
86375    --
86376    -- following sets the accounting attributes needed to reverse
86377    -- accounting for a distributeion
86378    --
86379    xla_ae_lines_pkg.SetTrxReversalAttrs
86380       (p_event_id              => l_event_id
86381       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
86382       ,p_trx_reversal_source   => l_trx_reversal_source);
86383 
86384 END IF;
86385 
86386 
86387 ----------------------------------------------------------------
86388 -- 4262811 -  update the header statuses to invalid in need be
86389 ----------------------------------------------------------------
86390 --
86391 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
86392 
86393 
86394   -----------------------------------------------
86395   -- No accrual reversal for the event class/type
86396   -----------------------------------------------
86397 ----------------------------------------------------------------
86398 
86399 --
86400 -- this ends the header loop iteration for one bulk fetch
86401 --
86402 END LOOP;
86403 
86404 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
86405 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
86406 
86407 --
86408 -- insert dummy rows into lines gt table that were created due to
86409 -- transaction reversals
86410 --
86411 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
86412    l_result := XLA_AE_LINES_PKG.InsertLines;
86413 END IF;
86414 
86415 --
86416 -- reset the temp_line_num for each set of events fetched from header
86417 -- cursor rather than doing it for each new event in line cursor
86418 -- Bug 3939231
86419 --
86420 xla_ae_lines_pkg.g_temp_line_num := 0;
86421 
86422 
86423 
86424 --
86425 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
86426 --
86427 --
86428 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86429 
86430       trace
86431          (p_msg      => 'SQL - FETCH line_cur'
86432          ,p_level    => C_LEVEL_STATEMENT
86433          ,p_module   => l_log_module);
86434 
86435 END IF;
86436 --
86437 --
86438 LOOP
86439   --
86440   FETCH line_cur BULK COLLECT INTO
86441         l_array_entity_id
86442       , l_array_legal_entity_id
86443       , l_array_entity_code
86444       , l_array_transaction_num
86445       , l_array_event_id
86446       , l_array_class_code
86447       , l_array_event_type
86448       , l_array_event_number
86449       , l_array_event_date
86450       , l_array_transaction_date
86451       , l_array_reference_num_1
86452       , l_array_reference_num_2
86453       , l_array_reference_num_3
86454       , l_array_reference_num_4
86455       , l_array_reference_char_1
86456       , l_array_reference_char_2
86457       , l_array_reference_char_3
86458       , l_array_reference_char_4
86459       , l_array_reference_date_1
86460       , l_array_reference_date_2
86461       , l_array_reference_date_3
86462       , l_array_reference_date_4
86463       , l_array_event_created_by
86464       , l_array_budgetary_control_flag
86465       , l_array_extract_line_num 
86466       , l_array_source_3
86467       , l_array_source_4
86468       , l_array_source_5
86469       , l_array_source_6
86470       , l_array_source_7
86471       , l_array_source_22
86472       , l_array_source_23
86473       , l_array_source_24
86474       , l_array_source_25
86475       , l_array_source_26
86476       , l_array_source_27
86477       , l_array_source_28
86478       , l_array_source_29
86479       , l_array_source_30
86480       , l_array_source_31
86481       , l_array_source_33
86482       , l_array_source_34
86483       , l_array_source_34_meaning
86484       , l_array_source_35
86485       LIMIT l_rows;
86486 
86487   --
86488   IF (C_LEVEL_EVENT >= g_log_level) THEN
86489             trace
86490                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
86491                ,p_level    => C_LEVEL_EVENT
86492                ,p_module   => l_log_module);
86493   END IF;
86494   --
86495   EXIT WHEN l_array_entity_id.count = 0;
86496 
86497   XLA_AE_LINES_PKG.g_rec_lines := null;
86498 
86499 --
86500 -- Bug 4458708
86501 --
86502 XLA_AE_LINES_PKG.g_LineNumber := 0;
86503 --
86504 --
86505 
86506 FOR Idx IN 1..l_array_event_id.count LOOP
86507    --
86508    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
86509    --
86510    l_event_id := l_array_event_id(idx);  -- 5648433
86511 
86512    --
86513    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
86514    --
86515 
86516    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
86517              (g_array_event(l_event_id).array_value_num('header_index'))
86518          ,'N'
86519          ) <> 'Y'
86520    THEN
86521       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86522          trace
86523             (p_msg      => 'Trancaction revesal option is not Y '
86524             ,p_level    => C_LEVEL_STATEMENT
86525             ,p_module   => l_log_module);
86526       END IF;
86527 
86528 --
86529 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
86530 --
86531 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
86532 --
86536 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
86533 -- set event info as cache for other routines to refer event attributes
86534 --
86535 
86537    l_previous_event_id := l_event_id;
86538 
86539    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
86540       (p_application_id           => p_application_id
86541       ,p_primary_ledger_id        => p_primary_ledger_id
86542       ,p_base_ledger_id           => p_base_ledger_id
86543       ,p_target_ledger_id         => p_target_ledger_id
86544       ,p_entity_id                => l_array_entity_id(Idx)
86545       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
86546       ,p_entity_code              => l_array_entity_code(Idx)
86547       ,p_transaction_num          => l_array_transaction_num(Idx)
86548       ,p_event_id                 => l_array_event_id(Idx)
86549       ,p_event_class_code         => l_array_class_code(Idx)
86550       ,p_event_type_code          => l_array_event_type(Idx)
86551       ,p_event_number             => l_array_event_number(Idx)
86552       ,p_event_date               => l_array_event_date(Idx)
86553       ,p_transaction_date         => l_array_transaction_date(Idx)
86554       ,p_reference_num_1          => l_array_reference_num_1(Idx)
86555       ,p_reference_num_2          => l_array_reference_num_2(Idx)
86556       ,p_reference_num_3          => l_array_reference_num_3(Idx)
86557       ,p_reference_num_4          => l_array_reference_num_4(Idx)
86558       ,p_reference_char_1         => l_array_reference_char_1(Idx)
86559       ,p_reference_char_2         => l_array_reference_char_2(Idx)
86560       ,p_reference_char_3         => l_array_reference_char_3(Idx)
86561       ,p_reference_char_4         => l_array_reference_char_4(Idx)
86562       ,p_reference_date_1         => l_array_reference_date_1(Idx)
86563       ,p_reference_date_2         => l_array_reference_date_2(Idx)
86564       ,p_reference_date_3         => l_array_reference_date_3(Idx)
86565       ,p_reference_date_4         => l_array_reference_date_4(Idx)
86566       ,p_event_created_by         => l_array_event_created_by(Idx)
86567       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
86568        --
86569 END IF;
86570 
86571 
86572 
86573 --
86574 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
86575 
86576 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
86577 
86578 IF l_continue_with_lines THEN
86579    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
86580       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
86581 
86582       xla_accounting_err_pkg.build_message
86583          (p_appli_s_name            => 'XLA'
86584          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
86585          ,p_token_1                 => 'LINE_NUMBER'
86586          ,p_value_1                 => l_array_extract_line_num(Idx)
86587          ,p_token_2                 => 'PRODUCT_NAME'
86588          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
86589          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
86590          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
86591          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
86592 
86593    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
86594       --
86595       -- following sets the accounting attributes needed to reverse
86596       -- accounting for a distributeion
86597       --
86598 
86599       --
86600       -- 5217187
86601       --
86602       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
86603       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
86604                                        g_array_event(l_event_id).array_value_num('header_index'));
86605       --
86606       --
86607 
86608       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
86609       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
86610       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
86611       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
86612       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
86613       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
86614       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
86615       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
86616       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
86617       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
86618       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
86619       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
86620       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
86621       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
86622       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
86623       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
86624       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
86625       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
86626       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
86627       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
86628       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
86629       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
86630       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
86631       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
86632       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
86633       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
86637       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
86634       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
86635       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
86636       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
86638       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
86639       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
86640       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
86641       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
86642       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
86643       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
86644       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
86645       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
86646       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
86647       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
86648       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
86649       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
86650       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
86651       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
86652       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
86653       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
86654       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
86655       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
86656 
86657 
86658       xla_ae_lines_pkg.SetAcctReversalAttrs
86659          (p_event_id             => l_event_id
86660          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
86661          ,p_calculate_acctd_flag => l_calculate_acctd_flag
86662          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
86663    END IF;
86664 
86665    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
86666        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
86667 
86668 --
86669 AcctLineType_52 (
86670  p_application_id  => p_application_id
86671  ,p_event_id     => l_event_id
86672  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86673  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86674  ,p_actual_flag => l_actual_flag
86675  ,p_balance_type_code => l_balance_type_code
86676  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86677  
86678  , p_source_3 => l_array_source_3(Idx)
86679  , p_source_4 => l_array_source_4(Idx)
86680  , p_source_5 => l_array_source_5(Idx)
86681  , p_source_6 => l_array_source_6(Idx)
86682  , p_source_22 => l_array_source_22(Idx)
86683  , p_source_23 => l_array_source_23(Idx)
86684  , p_source_24 => l_array_source_24(Idx)
86685  , p_source_25 => l_array_source_25(Idx)
86686  , p_source_26 => l_array_source_26(Idx)
86687  , p_source_27 => l_array_source_27(Idx)
86688  , p_source_28 => l_array_source_28(Idx)
86689  , p_source_29 => l_array_source_29(Idx)
86690  , p_source_30 => l_array_source_30(Idx)
86691  , p_source_31 => l_array_source_31(Idx)
86692  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
86693  , p_source_33 => l_array_source_33(Idx)
86694  , p_source_34 => l_array_source_34(Idx)
86695  , p_source_34_meaning => l_array_source_34_meaning(Idx)
86696  , p_source_35 => l_array_source_35(Idx)
86697  );
86698 If(l_balance_type_code = 'A') THEN
86699   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86700 END IF;
86701 
86702 --
86703 
86704 
86705 --
86706 AcctLineType_62 (
86707  p_application_id  => p_application_id
86708  ,p_event_id     => l_event_id
86709  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86710  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86711  ,p_actual_flag => l_actual_flag
86712  ,p_balance_type_code => l_balance_type_code
86713  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86714  
86715  , p_source_3 => l_array_source_3(Idx)
86716  , p_source_4 => l_array_source_4(Idx)
86717  , p_source_6 => l_array_source_6(Idx)
86718  , p_source_7 => l_array_source_7(Idx)
86719  , p_source_22 => l_array_source_22(Idx)
86720  , p_source_23 => l_array_source_23(Idx)
86721  , p_source_24 => l_array_source_24(Idx)
86722  , p_source_25 => l_array_source_25(Idx)
86723  , p_source_26 => l_array_source_26(Idx)
86724  , p_source_27 => l_array_source_27(Idx)
86725  , p_source_28 => l_array_source_28(Idx)
86726  , p_source_29 => l_array_source_29(Idx)
86727  , p_source_30 => l_array_source_30(Idx)
86728  , p_source_31 => l_array_source_31(Idx)
86729  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
86730  , p_source_33 => l_array_source_33(Idx)
86731  , p_source_34 => l_array_source_34(Idx)
86732  , p_source_34_meaning => l_array_source_34_meaning(Idx)
86733  , p_source_35 => l_array_source_35(Idx)
86734  );
86735 If(l_balance_type_code = 'A') THEN
86736   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86737 END IF;
86738 
86739 --
86740 
86741       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
86742       -- or secondary ledger that has different currency with primary
86743       -- or alc that is calculated by sla
86744       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
86745             (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'))
86746 
86747 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
86748 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
86749           AND (l_actual_flag = 'A')) THEN
86750         XLA_AE_LINES_PKG.CreateGainOrLossLines(
86754          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
86751           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
86752          ,p_application_id   => p_application_id
86753          ,p_amb_context_code => 'DEFAULT'
86755          ,p_event_class_code => C_EVENT_CLASS_CODE
86756          ,p_event_type_code  => C_EVENT_TYPE_CODE
86757          
86758          ,p_gain_ccid        => -1
86759          ,p_loss_ccid        => -1
86760 
86761          ,p_actual_flag      => l_actual_flag
86762          ,p_enc_flag         => null
86763          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
86764          ,p_enc_g_l_ref      => null
86765          );
86766       END IF;
86767    END IF;
86768 END IF;
86769 
86770    ELSE
86771       --
86772       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
86773       --
86774       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86775          trace
86776             (p_msg      => 'Trancaction revesal option is Y'
86777             ,p_level    => C_LEVEL_STATEMENT
86778             ,p_module   => l_log_module);
86779       END IF;
86780    END IF;
86781 
86782 END LOOP;
86783 l_result := XLA_AE_LINES_PKG.InsertLines ;
86784 end loop;
86785 close line_cur;
86786 
86787 
86788 --
86789 -- insert headers into xla_ae_headers_gt table
86790 --
86791 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
86792 
86793 -- insert into errors table here.
86794 
86795 END LOOP;
86796 
86797 --
86798 -- 4865292
86799 --
86800 -- Compare g_hdr_extract_count with event count in
86801 -- CreateHeadersAndLines.
86802 --
86803 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
86804 
86805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86806    trace (p_msg     => '# rows extracted from header extract objects '
86807                     || ' (running total): '
86808                     || g_hdr_extract_count
86809          ,p_level   => C_LEVEL_STATEMENT
86810          ,p_module  => l_log_module);
86811 END IF;
86812 
86813 CLOSE header_cur;
86814 --
86815 
86816 --
86817 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86818    trace
86819       (p_msg      => 'END of EventClass_131'
86820       ,p_level    => C_LEVEL_PROCEDURE
86821       ,p_module   => l_log_module);
86822 END IF;
86823 --
86824 RETURN l_result;
86825 EXCEPTION
86826 WHEN xla_exceptions_pkg.application_exception THEN
86827    
86828 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
86829 
86830    
86831 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
86832 
86833    RAISE;
86834 WHEN OTHERS THEN
86835    xla_exceptions_pkg.raise_message
86836       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_131');
86837 END EventClass_131;
86838 --
86839 
86840 ---------------------------------------
86841 --
86842 -- PRIVATE PROCEDURE
86843 --         insert_sources_132
86844 --
86845 ----------------------------------------
86846 --
86847 PROCEDURE insert_sources_132(
86848                                 p_target_ledger_id       IN NUMBER
86849                               , p_language               IN VARCHAR2
86850                               , p_sla_ledger_id          IN NUMBER
86851                               , p_pad_start_date         IN DATE
86852                               , p_pad_end_date           IN DATE
86853                          )
86854 IS
86855 
86856 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ALL';
86857 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST';
86858 p_apps_owner                   VARCHAR2(30);
86859 l_log_module                   VARCHAR2(240);
86860 BEGIN
86861 IF g_log_enabled THEN
86862       l_log_module := C_DEFAULT_MODULE||'.insert_sources_132';
86863 END IF;
86864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86865 
86866       trace
86867          (p_msg      => 'BEGIN of insert_sources_132'
86868          ,p_level    => C_LEVEL_PROCEDURE
86869          ,p_module   => l_log_module);
86870 
86871 END IF;
86872 
86873 -- select APPS owner
86874 SELECT oracle_username
86875   INTO p_apps_owner
86876   FROM fnd_oracle_userid
86877  WHERE read_only_flag = 'U'
86878 ;
86879 
86880 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86881       trace
86882          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
86883                         ' - p_language = '||p_language||
86884                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
86885                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
86886                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
86887                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
86888          ,p_level    => C_LEVEL_STATEMENT
86889          ,p_module   => l_log_module);
86890 END IF;
86891 
86892 
86893 --
86894 INSERT INTO xla_diag_sources --hdr2
86895 (
86896         event_id
86897       , ledger_id
86898       , sla_ledger_id
86899       , description_language
86900       , object_name
86901       , object_type_code
86902       , line_number
86903       , source_application_id
86904       , source_type_code
86905       , source_code
86906       , source_value
86907       , source_meaning
86908       , created_by
86909       , creation_date
86910       , last_update_date
86911       , last_updated_by
86912       , last_update_login
86913       , program_update_date
86914       , program_application_id
86915       , program_id
86916       , request_id
86917 )
86918 SELECT
86919         event_id
86920       , p_target_ledger_id
86924       , object_type_code
86921       , p_sla_ledger_id
86922       , p_language
86923       , object_name
86925       , line_number
86926       , source_application_id
86927       , source_type_code
86928       , source_code
86929       , SUBSTR(source_value ,1,1996)
86930       , SUBSTR(source_meaning ,1,200)
86931       , xla_environment_pkg.g_Usr_Id
86932       , TRUNC(SYSDATE)
86933       , TRUNC(SYSDATE)
86934       , xla_environment_pkg.g_Usr_Id
86935       , xla_environment_pkg.g_Login_Id
86936       , TRUNC(SYSDATE)
86937       , xla_environment_pkg.g_Prog_Appl_Id
86938       , xla_environment_pkg.g_Prog_Id
86939       , xla_environment_pkg.g_Req_Id
86940   FROM (
86941        SELECT xet.event_id                  event_id
86942             , 0                          line_number
86943             , CASE r
86944                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
86945                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
86946                 
86947                ELSE null
86948               END                           object_name
86949             , CASE r
86950                 WHEN 1 THEN 'HEADER' 
86951                 WHEN 2 THEN 'HEADER' 
86952                 
86953                 ELSE null
86954               END                           object_type_code
86955             , CASE r
86956                 WHEN 1 THEN '275' 
86957                 WHEN 2 THEN '275' 
86958                 
86959                 ELSE null
86960               END                           source_application_id
86961             , 'S'             source_type_code
86962             , CASE r
86963                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
86964                 WHEN 2 THEN 'GL_DATE' 
86965                 
86966                 ELSE null
86967               END                           source_code
86968             , CASE r
86969                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
86970                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
86971                 
86972                 ELSE null
86973               END                           source_value
86974             , null              source_meaning
86975          FROM xla_events_gt     xet  
86976       , PA_XLA_EXP_HEADER_V  h2
86977              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
86978          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
86979            AND xet.event_class_code = C_EVENT_CLASS_CODE
86980               AND h2.event_id = xet.event_id
86981 
86982 )
86983 ;
86984 --
86985 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86986 
86987       trace
86988          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
86989          ,p_level    => C_LEVEL_STATEMENT
86990          ,p_module   => l_log_module);
86991 
86992 END IF;
86993 --
86994 
86995 
86996 
86997 --
86998 INSERT INTO xla_diag_sources  --line2
86999 (
87000         event_id
87001       , ledger_id
87002       , sla_ledger_id
87003       , description_language
87004       , object_name
87005       , object_type_code
87006       , line_number
87007       , source_application_id
87008       , source_type_code
87009       , source_code
87010       , source_value
87011       , source_meaning
87012       , created_by
87013       , creation_date
87014       , last_update_date
87015       , last_updated_by
87016       , last_update_login
87017       , program_update_date
87018       , program_application_id
87019       , program_id
87020       , request_id
87021 )
87022 SELECT  event_id
87023       , p_target_ledger_id
87024       , p_sla_ledger_id
87025       , p_language
87026       , object_name
87027       , object_type_code
87028       , line_number
87029       , source_application_id
87030       , source_type_code
87031       , source_code
87032       , SUBSTR(source_value,1,1996)
87033       , SUBSTR(source_meaning ,1,200)
87034       , xla_environment_pkg.g_Usr_Id
87035       , TRUNC(SYSDATE)
87036       , TRUNC(SYSDATE)
87037       , xla_environment_pkg.g_Usr_Id
87038       , xla_environment_pkg.g_Login_Id
87039       , TRUNC(SYSDATE)
87040       , xla_environment_pkg.g_Prog_Appl_Id
87041       , xla_environment_pkg.g_Prog_Id
87042       , xla_environment_pkg.g_Req_Id
87043   FROM (
87044        SELECT xet.event_id                  event_id
87045             , l1.line_number                 line_number
87046             , CASE r
87047                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
87048                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
87049                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
87050                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
87051                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
87052                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
87053                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
87054                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
87055                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
87056                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
87057                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
87058                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
87059                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
87060                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
87061                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
87062                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
87063                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
87064                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
87065                 
87066                ELSE null
87067               END                           object_name
87068             , CASE r
87069                 WHEN 1 THEN 'LINE' 
87070                 WHEN 2 THEN 'LINE' 
87071                 WHEN 3 THEN 'LINE' 
87072                 WHEN 4 THEN 'LINE' 
87076                 WHEN 8 THEN 'LINE' 
87073                 WHEN 5 THEN 'LINE' 
87074                 WHEN 6 THEN 'LINE' 
87075                 WHEN 7 THEN 'LINE' 
87077                 WHEN 9 THEN 'LINE' 
87078                 WHEN 10 THEN 'LINE' 
87079                 WHEN 11 THEN 'LINE' 
87080                 WHEN 12 THEN 'LINE' 
87081                 WHEN 13 THEN 'LINE' 
87082                 WHEN 14 THEN 'LINE' 
87083                 WHEN 15 THEN 'LINE' 
87084                 WHEN 16 THEN 'LINE' 
87085                 WHEN 17 THEN 'LINE' 
87086                 WHEN 18 THEN 'LINE' 
87087                 
87088                 ELSE null
87089               END                           object_type_code
87090             , CASE r
87091                 WHEN 1 THEN '275' 
87092                 WHEN 2 THEN '275' 
87093                 WHEN 3 THEN '275' 
87094                 WHEN 4 THEN '275' 
87095                 WHEN 5 THEN '275' 
87096                 WHEN 6 THEN '275' 
87097                 WHEN 7 THEN '275' 
87098                 WHEN 8 THEN '275' 
87099                 WHEN 9 THEN '275' 
87100                 WHEN 10 THEN '275' 
87101                 WHEN 11 THEN '275' 
87102                 WHEN 12 THEN '275' 
87103                 WHEN 13 THEN '275' 
87104                 WHEN 14 THEN '275' 
87105                 WHEN 15 THEN '275' 
87106                 WHEN 16 THEN '275' 
87107                 WHEN 17 THEN '275' 
87108                 WHEN 18 THEN '275' 
87109                 
87110                 ELSE null
87111               END                           source_application_id
87112             , 'S'             source_type_code
87113             , CASE r
87114                 WHEN 1 THEN 'COST_CCID' 
87115                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
87116                 WHEN 3 THEN 'ADJ_COST_CCID' 
87117                 WHEN 4 THEN 'COST_CLEARING_CCID' 
87118                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
87119                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
87120                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
87121                 WHEN 8 THEN 'ENTERED_RAW_COST' 
87122                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
87123                 WHEN 10 THEN 'ACCT_RAW_COST' 
87124                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
87125                 WHEN 12 THEN 'EXCHANGE_RATE' 
87126                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
87127                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
87128                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
87129                 WHEN 16 THEN 'LINE_NUMBER' 
87130                 WHEN 17 THEN 'LINE_TYPE' 
87131                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
87132                 
87133                 ELSE null
87134               END                           source_code
87135             , CASE r
87136                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
87137                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
87138                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
87139                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
87140                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
87141                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
87142                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
87143                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
87144                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
87145                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
87146                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
87147                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
87148                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
87149                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
87150                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
87151                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
87152                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
87153                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
87154                 
87155                 ELSE null
87156               END                           source_value
87157             , CASE r
87158                 WHEN 2 THEN XLA_00275_AAD_S_000004_PKG.GetMeaning(
87159                           103371
87160                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
87161                          ,'ALLOW_OVERRIDE_CCID_FLAG'
87162                          ,'S'
87163                          ,275)
87164                 WHEN 17 THEN fvl34.meaning
87165                 
87166                 ELSE null
87167               END               source_meaning
87168          FROM  xla_events_gt     xet  
87169         , PA_XLA_CDL_LINES_V  l1
87170   , fnd_lookup_values    fvl34
87171             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
87172         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
87173           AND xet.event_class_code = C_EVENT_CLASS_CODE
87174             AND l1.event_id          = xet.event_id
87175    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
87176   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
87177   AND fvl34.view_application_id(+) = 275
87178   AND fvl34.language(+)            = USERENV('LANG')
87179   
87180 )
87181 ;
87182 --
87183 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87184 
87185       trace
87186          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
87187          ,p_level    => C_LEVEL_STATEMENT
87188          ,p_module   => l_log_module);
87189 
87190 END IF;
87191 
87192 
87193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87194       trace
87195          (p_msg      => 'END of insert_sources_132'
87196          ,p_level    => C_LEVEL_PROCEDURE
87197          ,p_module   => l_log_module);
87198 END IF;
87199 EXCEPTION
87200   WHEN xla_exceptions_pkg.application_exception THEN
87201       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
87202             trace
87206       END IF;
87203                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
87204                ,p_level    => C_LEVEL_EXCEPTION
87205                ,p_module   => l_log_module);
87207       RAISE;
87208   WHEN OTHERS THEN
87209       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
87210             trace
87211                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
87212                ,p_level    => C_LEVEL_EXCEPTION
87213                ,p_module   => l_log_module);
87214        END IF;
87215        xla_exceptions_pkg.raise_message
87216            (p_location => 'XLA_00275_AAD_S_000004_PKG.insert_sources_132');
87217 END insert_sources_132;
87218 --
87219 
87220 ---------------------------------------
87221 --
87222 -- PRIVATE FUNCTION
87223 --         EventClass_132
87224 --
87225 ----------------------------------------
87226 --
87227 FUNCTION EventClass_132
87228        (p_application_id         IN NUMBER
87229        ,p_base_ledger_id         IN NUMBER
87230        ,p_target_ledger_id       IN NUMBER
87231        ,p_language               IN VARCHAR2
87232        ,p_currency_code          IN VARCHAR2
87233        ,p_sla_ledger_id          IN NUMBER
87234        ,p_pad_start_date         IN DATE
87235        ,p_pad_end_date           IN DATE
87236        ,p_primary_ledger_id      IN NUMBER)
87237 RETURN BOOLEAN IS
87238 --
87239 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ALL';
87240 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST';
87241 
87242 l_calculate_acctd_flag   VARCHAR2(1) :='N';
87243 l_calculate_g_l_flag     VARCHAR2(1) :='N';
87244 --
87245 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87246 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87247 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87248 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87249 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87250 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87251 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87252 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87253 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87254 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87255 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87256 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87257 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87258 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87259 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87260 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87261 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87262 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87263 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87264 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87265 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87266 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87267 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
87268 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87269 
87270 l_event_id                             NUMBER;
87271 l_previous_event_id                    NUMBER;
87272 l_first_event_id                       NUMBER;
87273 l_last_event_id                        NUMBER;
87274 
87275 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
87276 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
87277 --
87278 --
87279 l_result                    BOOLEAN := TRUE;
87280 l_rows                      NUMBER  := 1000;
87281 l_event_type_name           VARCHAR2(80) := 'All';
87282 l_event_class_name          VARCHAR2(80) := 'Work in Process Cost';
87283 l_description               VARCHAR2(4000);
87284 l_transaction_reversal      NUMBER;
87285 l_ae_header_id              NUMBER;
87286 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
87287 l_log_module                VARCHAR2(240);
87288 --
87289 l_acct_reversal_source      VARCHAR2(30);
87290 l_trx_reversal_source       VARCHAR2(30);
87291 
87292 l_continue_with_lines       BOOLEAN := TRUE;
87293 --
87294 l_acc_rev_gl_date_source    DATE;                      -- 4262811
87295 --
87296 type t_array_event_id is table of number index by binary_integer;
87297 
87298 l_rec_array_event                    t_rec_array_event;
87299 l_null_rec_array_event               t_rec_array_event;
87300 l_array_ae_header_id                 xla_number_array_type;
87301 l_actual_flag                        VARCHAR2(1) := NULL;
87302 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
87303 l_balance_type_code                  VARCHAR2(1) :=NULL;
87304 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
87305 
87306 --
87307 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
87308 --
87309 
87310 TYPE t_array_source_32 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
87311 TYPE t_array_source_87 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
87312 
87313 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
87314 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
87315 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
87316 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
87320 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
87317 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
87318 TYPE t_array_source_22 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
87319 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
87321 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
87322 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
87323 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
87324 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
87325 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
87326 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
87327 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
87328 TYPE t_array_source_33 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
87329 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
87330 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
87331 
87332 l_array_source_32              t_array_source_32;
87333 l_array_source_87              t_array_source_87;
87334 
87335 l_array_source_3      t_array_source_3;
87336 l_array_source_4      t_array_source_4;
87337 l_array_source_5      t_array_source_5;
87338 l_array_source_6      t_array_source_6;
87339 l_array_source_7      t_array_source_7;
87340 l_array_source_22      t_array_source_22;
87341 l_array_source_23      t_array_source_23;
87342 l_array_source_24      t_array_source_24;
87343 l_array_source_25      t_array_source_25;
87344 l_array_source_26      t_array_source_26;
87345 l_array_source_27      t_array_source_27;
87346 l_array_source_28      t_array_source_28;
87347 l_array_source_29      t_array_source_29;
87348 l_array_source_30      t_array_source_30;
87349 l_array_source_31      t_array_source_31;
87350 l_array_source_33      t_array_source_33;
87351 l_array_source_34      t_array_source_34;
87352 l_array_source_34_meaning      t_array_lookup_meaning;
87353 l_array_source_35      t_array_source_35;
87354 
87355 --
87356 CURSOR header_cur
87357 IS
87358 SELECT /*+ leading(xet) cardinality(xet,1) */
87359 -- Event Class Code: WIP_COST
87360     xet.entity_id
87361    ,xet.legal_entity_id
87362    ,xet.entity_code
87363    ,xet.transaction_number
87364    ,xet.event_id
87365    ,xet.event_class_code
87366    ,xet.event_type_code
87367    ,xet.event_number
87368    ,xet.event_date
87369    ,xet.transaction_date
87370    ,xet.reference_num_1
87371    ,xet.reference_num_2
87372    ,xet.reference_num_3
87373    ,xet.reference_num_4
87374    ,xet.reference_char_1
87375    ,xet.reference_char_2
87376    ,xet.reference_char_3
87377    ,xet.reference_char_4
87378    ,xet.reference_date_1
87379    ,xet.reference_date_2
87380    ,xet.reference_date_3
87381    ,xet.reference_date_4
87382    ,xet.event_created_by
87383    ,xet.budgetary_control_flag 
87384   , h2.EXPENDITURE_ITEM_ID    source_32
87385   , h2.GL_DATE    source_87
87386   FROM xla_events_gt     xet 
87387   , PA_XLA_EXP_HEADER_V  h2
87388  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
87389    and xet.event_class_code = C_EVENT_CLASS_CODE
87390    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
87391 
87392  ORDER BY event_id
87393 ;
87394 
87395 
87396 --
87397 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
87398 IS
87399 SELECT  /*+ leading(xet) cardinality(xet,1) */
87400 -- Event Class Code: WIP_COST
87401     xet.entity_id
87402    ,xet.legal_entity_id
87403    ,xet.entity_code
87404    ,xet.transaction_number
87405    ,xet.event_id
87406    ,xet.event_class_code
87407    ,xet.event_type_code
87408    ,xet.event_number
87409    ,xet.event_date
87410    ,xet.transaction_date
87411    ,xet.reference_num_1
87412    ,xet.reference_num_2
87413    ,xet.reference_num_3
87414    ,xet.reference_num_4
87415    ,xet.reference_char_1
87416    ,xet.reference_char_2
87417    ,xet.reference_char_3
87418    ,xet.reference_char_4
87419    ,xet.reference_date_1
87420    ,xet.reference_date_2
87421    ,xet.reference_date_3
87422    ,xet.reference_date_4
87423    ,xet.event_created_by
87424    ,xet.budgetary_control_flag
87425  , l1.LINE_NUMBER  
87426   , l1.COST_CCID    source_3
87427   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_4
87428   , l1.ADJ_COST_CCID    source_5
87429   , l1.COST_CLEARING_CCID    source_6
87430   , l1.ADJ_COST_CLEARING_CCID    source_7
87431   , l1.REVERSING_LINE_FLAG    source_22
87432   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_23
87433   , l1.ENTERED_RAW_COST    source_24
87434   , l1.ENTERED_CURRENCY_CODE    source_25
87435   , l1.ACCT_RAW_COST    source_26
87436   , l1.EXCHANGE_RATE_DATE    source_27
87437   , l1.EXCHANGE_RATE    source_28
87438   , l1.EXCHANGE_RATE_TYPE    source_29
87439   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_30
87440   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_31
87441   , l1.LINE_NUMBER    source_33
87442   , l1.LINE_TYPE    source_34
87443   , fvl34.meaning   source_34_meaning
87444   , l1.LINE_NUM_REVERSED    source_35
87445   FROM xla_events_gt     xet 
87446   , PA_XLA_CDL_LINES_V  l1
87447   , fnd_lookup_values    fvl34
87448  WHERE xet.event_id between x_first_event_id and x_last_event_id
87449    and xet.event_date between p_pad_start_date and p_pad_end_date
87450    and xet.event_class_code = C_EVENT_CLASS_CODE
87454   AND fvl34.view_application_id(+) = 275
87451    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
87452    AND fvl34.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
87453   AND fvl34.lookup_code(+)         = l1.LINE_TYPE
87455   AND fvl34.language(+)            = USERENV('LANG')
87456   ;
87457 
87458 --
87459 BEGIN
87460 IF g_log_enabled THEN
87461    l_log_module := C_DEFAULT_MODULE||'.EventClass_132';
87462 END IF;
87463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87464    trace
87465       (p_msg      => 'BEGIN of EventClass_132'
87466       ,p_level    => C_LEVEL_PROCEDURE
87467       ,p_module   => l_log_module);
87468 END IF;
87469 
87470 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87471    trace
87472       (p_msg      => 'p_application_id = '||p_application_id||
87473                      ' - p_base_ledger_id = '||p_base_ledger_id||
87474                      ' - p_target_ledger_id  = '||p_target_ledger_id||
87475                      ' - p_language = '||p_language||
87476                      ' - p_currency_code = '||p_currency_code||
87477                      ' - p_sla_ledger_id = '||p_sla_ledger_id
87478       ,p_level    => C_LEVEL_STATEMENT
87479       ,p_module   => l_log_module);
87480 END IF;
87481 --
87482 -- initialze arrays
87483 --
87484 g_array_event.DELETE;
87485 l_rec_array_event := l_null_rec_array_event;
87486 --
87487 --------------------------------------
87488 -- 4262811 Initialze MPA Line Number
87489 --------------------------------------
87490 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
87491 
87492 --
87493 
87494 --
87495 OPEN header_cur;
87496 --
87497 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87498    trace
87499    (p_msg      => 'SQL - FETCH header_cur'
87500    ,p_level    => C_LEVEL_STATEMENT
87501    ,p_module   => l_log_module);
87502 END IF;
87503 --
87504 LOOP
87505 FETCH header_cur BULK COLLECT INTO
87506         l_array_entity_id
87507       , l_array_legal_entity_id
87508       , l_array_entity_code
87509       , l_array_transaction_num
87510       , l_array_event_id
87511       , l_array_class_code
87512       , l_array_event_type
87513       , l_array_event_number
87514       , l_array_event_date
87515       , l_array_transaction_date
87516       , l_array_reference_num_1
87517       , l_array_reference_num_2
87518       , l_array_reference_num_3
87519       , l_array_reference_num_4
87520       , l_array_reference_char_1
87521       , l_array_reference_char_2
87522       , l_array_reference_char_3
87523       , l_array_reference_char_4
87524       , l_array_reference_date_1
87525       , l_array_reference_date_2
87526       , l_array_reference_date_3
87527       , l_array_reference_date_4
87528       , l_array_event_created_by
87529       , l_array_budgetary_control_flag 
87530       , l_array_source_32
87531       , l_array_source_87
87532       LIMIT l_rows;
87533 --
87534 IF (C_LEVEL_EVENT >= g_log_level) THEN
87535    trace
87536    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
87537    ,p_level    => C_LEVEL_EVENT
87538    ,p_module   => l_log_module);
87539 END IF;
87540 --
87541 EXIT WHEN l_array_entity_id.COUNT = 0;
87542 
87543 -- initialize arrays
87544 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
87545 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
87546 
87547 --
87548 -- Bug 4458708
87549 --
87550 XLA_AE_LINES_PKG.g_LineNumber := 0;
87551 
87552 
87553 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
87554 g_last_hdr_idx := l_array_event_id.LAST;
87555 --
87556 -- loop for the headers. Each iteration is for each header extract row
87557 -- fetched in header cursor
87558 --
87559 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
87560 
87561 --
87562 -- set event info as cache for other routines to refer event attributes
87563 --
87564 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
87565    (p_application_id           => p_application_id
87566    ,p_primary_ledger_id        => p_primary_ledger_id
87567    ,p_base_ledger_id           => p_base_ledger_id
87568    ,p_target_ledger_id         => p_target_ledger_id
87569    ,p_entity_id                => l_array_entity_id(hdr_idx)
87570    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
87571    ,p_entity_code              => l_array_entity_code(hdr_idx)
87572    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
87573    ,p_event_id                 => l_array_event_id(hdr_idx)
87574    ,p_event_class_code         => l_array_class_code(hdr_idx)
87575    ,p_event_type_code          => l_array_event_type(hdr_idx)
87576    ,p_event_number             => l_array_event_number(hdr_idx)
87577    ,p_event_date               => l_array_event_date(hdr_idx)
87578    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
87579    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
87580    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
87581    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
87582    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
87583    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
87584    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
87585    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
87586    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
87587    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
87588    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
87589    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
87590    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
87591    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
87595 -- set the status of entry to C_VALID (0)
87592    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
87593 
87594 --
87596 --
87597 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
87598 
87599 --
87600 -- initialize a row for ae header
87601 --
87602 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
87603 
87604 l_event_id := l_array_event_id(hdr_idx);
87605 
87606 --
87607 -- storing the hdr_idx for event. May be used by line cursor.
87608 --
87609 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
87610 
87611 --
87612 -- store sources from header extract. This can be improved to
87613 -- store only those sources from header extract that may be used in lines
87614 --
87615 
87616 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
87617 g_array_event(l_event_id).array_value_date('source_87') := l_array_source_87(hdr_idx);
87618 
87619 --
87620 -- initilaize the status of ae headers for diffrent balance types
87621 -- the status is initialised to C_NOT_CREATED (2)
87622 --
87623 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87624 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87625 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87626 
87627 --
87628 -- call api to validate and store accounting attributes for header
87629 --
87630 
87631 ------------------------------------------------------------
87632 -- Accrual Reversal : to get date for Standard Source (NONE)
87633 ------------------------------------------------------------
87634 l_acc_rev_gl_date_source := NULL;
87635 
87636      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
87637       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_87');
87638 
87639 
87640 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
87641 
87642 XLA_AE_HEADER_PKG.SetJeCategoryName;
87643 
87644 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
87645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
87646 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
87647 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
87648 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
87649 
87650 
87651 -- No header level analytical criteria
87652 
87653 --
87654 --accounting attribute enhancement, bug 3612931
87655 --
87656 l_trx_reversal_source := SUBSTR(NULL, 1,30);
87657 
87658 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
87659    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
87660 
87661    xla_accounting_err_pkg.build_message
87662       (p_appli_s_name            => 'XLA'
87663       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
87664       ,p_token_1                 => 'ACCT_ATTR_NAME'
87665       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
87666       ,p_token_2                 => 'PRODUCT_NAME'
87667       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
87668       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
87669       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
87670       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
87671 
87672 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
87673    --
87674    -- following sets the accounting attributes needed to reverse
87675    -- accounting for a distributeion
87676    --
87677    xla_ae_lines_pkg.SetTrxReversalAttrs
87678       (p_event_id              => l_event_id
87679       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
87680       ,p_trx_reversal_source   => l_trx_reversal_source);
87681 
87682 END IF;
87683 
87684 
87685 ----------------------------------------------------------------
87686 -- 4262811 -  update the header statuses to invalid in need be
87687 ----------------------------------------------------------------
87688 --
87689 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
87690 
87691 
87692   -----------------------------------------------
87693   -- No accrual reversal for the event class/type
87694   -----------------------------------------------
87695 ----------------------------------------------------------------
87696 
87697 --
87698 -- this ends the header loop iteration for one bulk fetch
87699 --
87700 END LOOP;
87701 
87702 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
87703 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
87704 
87705 --
87706 -- insert dummy rows into lines gt table that were created due to
87707 -- transaction reversals
87708 --
87709 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
87710    l_result := XLA_AE_LINES_PKG.InsertLines;
87711 END IF;
87712 
87713 --
87714 -- reset the temp_line_num for each set of events fetched from header
87715 -- cursor rather than doing it for each new event in line cursor
87716 -- Bug 3939231
87717 --
87718 xla_ae_lines_pkg.g_temp_line_num := 0;
87719 
87720 
87721 
87722 --
87723 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
87724 --
87725 --
87726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87727 
87728       trace
87729          (p_msg      => 'SQL - FETCH line_cur'
87730          ,p_level    => C_LEVEL_STATEMENT
87734 --
87731          ,p_module   => l_log_module);
87732 
87733 END IF;
87735 --
87736 LOOP
87737   --
87738   FETCH line_cur BULK COLLECT INTO
87739         l_array_entity_id
87740       , l_array_legal_entity_id
87741       , l_array_entity_code
87742       , l_array_transaction_num
87743       , l_array_event_id
87744       , l_array_class_code
87745       , l_array_event_type
87746       , l_array_event_number
87747       , l_array_event_date
87748       , l_array_transaction_date
87749       , l_array_reference_num_1
87750       , l_array_reference_num_2
87751       , l_array_reference_num_3
87752       , l_array_reference_num_4
87753       , l_array_reference_char_1
87754       , l_array_reference_char_2
87755       , l_array_reference_char_3
87756       , l_array_reference_char_4
87757       , l_array_reference_date_1
87758       , l_array_reference_date_2
87759       , l_array_reference_date_3
87760       , l_array_reference_date_4
87761       , l_array_event_created_by
87762       , l_array_budgetary_control_flag
87763       , l_array_extract_line_num 
87764       , l_array_source_3
87765       , l_array_source_4
87766       , l_array_source_5
87767       , l_array_source_6
87768       , l_array_source_7
87769       , l_array_source_22
87770       , l_array_source_23
87771       , l_array_source_24
87772       , l_array_source_25
87773       , l_array_source_26
87774       , l_array_source_27
87775       , l_array_source_28
87776       , l_array_source_29
87777       , l_array_source_30
87778       , l_array_source_31
87779       , l_array_source_33
87780       , l_array_source_34
87781       , l_array_source_34_meaning
87782       , l_array_source_35
87783       LIMIT l_rows;
87784 
87785   --
87786   IF (C_LEVEL_EVENT >= g_log_level) THEN
87787             trace
87788                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
87789                ,p_level    => C_LEVEL_EVENT
87790                ,p_module   => l_log_module);
87791   END IF;
87792   --
87793   EXIT WHEN l_array_entity_id.count = 0;
87794 
87795   XLA_AE_LINES_PKG.g_rec_lines := null;
87796 
87797 --
87798 -- Bug 4458708
87799 --
87800 XLA_AE_LINES_PKG.g_LineNumber := 0;
87801 --
87802 --
87803 
87804 FOR Idx IN 1..l_array_event_id.count LOOP
87805    --
87806    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
87807    --
87808    l_event_id := l_array_event_id(idx);  -- 5648433
87809 
87810    --
87811    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
87812    --
87813 
87814    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
87815              (g_array_event(l_event_id).array_value_num('header_index'))
87816          ,'N'
87817          ) <> 'Y'
87818    THEN
87819       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87820          trace
87821             (p_msg      => 'Trancaction revesal option is not Y '
87822             ,p_level    => C_LEVEL_STATEMENT
87823             ,p_module   => l_log_module);
87824       END IF;
87825 
87826 --
87827 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
87828 --
87829 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
87830 --
87831 -- set event info as cache for other routines to refer event attributes
87832 --
87833 
87834 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
87835    l_previous_event_id := l_event_id;
87836 
87837    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
87838       (p_application_id           => p_application_id
87839       ,p_primary_ledger_id        => p_primary_ledger_id
87840       ,p_base_ledger_id           => p_base_ledger_id
87841       ,p_target_ledger_id         => p_target_ledger_id
87842       ,p_entity_id                => l_array_entity_id(Idx)
87843       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
87844       ,p_entity_code              => l_array_entity_code(Idx)
87845       ,p_transaction_num          => l_array_transaction_num(Idx)
87846       ,p_event_id                 => l_array_event_id(Idx)
87847       ,p_event_class_code         => l_array_class_code(Idx)
87848       ,p_event_type_code          => l_array_event_type(Idx)
87849       ,p_event_number             => l_array_event_number(Idx)
87850       ,p_event_date               => l_array_event_date(Idx)
87851       ,p_transaction_date         => l_array_transaction_date(Idx)
87852       ,p_reference_num_1          => l_array_reference_num_1(Idx)
87853       ,p_reference_num_2          => l_array_reference_num_2(Idx)
87854       ,p_reference_num_3          => l_array_reference_num_3(Idx)
87855       ,p_reference_num_4          => l_array_reference_num_4(Idx)
87856       ,p_reference_char_1         => l_array_reference_char_1(Idx)
87857       ,p_reference_char_2         => l_array_reference_char_2(Idx)
87858       ,p_reference_char_3         => l_array_reference_char_3(Idx)
87859       ,p_reference_char_4         => l_array_reference_char_4(Idx)
87860       ,p_reference_date_1         => l_array_reference_date_1(Idx)
87861       ,p_reference_date_2         => l_array_reference_date_2(Idx)
87862       ,p_reference_date_3         => l_array_reference_date_3(Idx)
87863       ,p_reference_date_4         => l_array_reference_date_4(Idx)
87864       ,p_event_created_by         => l_array_event_created_by(Idx)
87865       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
87866        --
87867 END IF;
87868 
87869 
87870 
87871 --
87872 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
87873 
87874 l_acct_reversal_source := SUBSTR(l_array_source_22(Idx), 1,30);
87875 
87876 IF l_continue_with_lines THEN
87880       xla_accounting_err_pkg.build_message
87877    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
87878       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
87879 
87881          (p_appli_s_name            => 'XLA'
87882          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
87883          ,p_token_1                 => 'LINE_NUMBER'
87884          ,p_value_1                 => l_array_extract_line_num(Idx)
87885          ,p_token_2                 => 'PRODUCT_NAME'
87886          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
87887          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
87888          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
87889          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
87890 
87891    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
87892       --
87893       -- following sets the accounting attributes needed to reverse
87894       -- accounting for a distributeion
87895       --
87896 
87897       --
87898       -- 5217187
87899       --
87900       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
87901       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
87902                                        g_array_event(l_event_id).array_value_num('header_index'));
87903       --
87904       --
87905 
87906       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
87907       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_22(Idx);
87908       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
87909       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_23(Idx);
87910       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
87911       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_6(Idx));
87912       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
87913       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_24(Idx);
87914       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
87915       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_25(Idx);
87916       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
87917       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_26(Idx);
87918       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
87919       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_27(Idx);
87920       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
87921       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_28(Idx);
87922       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
87923       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_29(Idx);
87924       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
87925       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_30(Idx);
87926       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
87927       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_3(Idx));
87928       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
87929       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_24(Idx);
87930       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
87931       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_25(Idx);
87932       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
87933       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_26(Idx);
87934       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
87935       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_27(Idx);
87936       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
87937       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_28(Idx);
87938       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
87939       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_29(Idx);
87940       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
87941       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_31(Idx);
87942       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
87943       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_32');
87944       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
87945       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_33(Idx);
87946       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
87947       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_34(Idx);
87948       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
87949       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_32');
87950       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
87951       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_35(Idx);
87952       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
87953       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_34(Idx);
87954 
87955 
87956       xla_ae_lines_pkg.SetAcctReversalAttrs
87957          (p_event_id             => l_event_id
87958          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
87959          ,p_calculate_acctd_flag => l_calculate_acctd_flag
87960          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
87961    END IF;
87962 
87963    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
87964        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
87965 
87966 --
87967 AcctLineType_41 (
87968  p_application_id  => p_application_id
87969  ,p_event_id     => l_event_id
87970  ,p_calculate_acctd_flag => l_calculate_acctd_flag
87974  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
87971  ,p_calculate_g_l_flag => l_calculate_g_l_flag
87972  ,p_actual_flag => l_actual_flag
87973  ,p_balance_type_code => l_balance_type_code
87975  
87976  , p_source_3 => l_array_source_3(Idx)
87977  , p_source_4 => l_array_source_4(Idx)
87978  , p_source_5 => l_array_source_5(Idx)
87979  , p_source_6 => l_array_source_6(Idx)
87980  , p_source_22 => l_array_source_22(Idx)
87981  , p_source_23 => l_array_source_23(Idx)
87982  , p_source_24 => l_array_source_24(Idx)
87983  , p_source_25 => l_array_source_25(Idx)
87984  , p_source_26 => l_array_source_26(Idx)
87985  , p_source_27 => l_array_source_27(Idx)
87986  , p_source_28 => l_array_source_28(Idx)
87987  , p_source_29 => l_array_source_29(Idx)
87988  , p_source_30 => l_array_source_30(Idx)
87989  , p_source_31 => l_array_source_31(Idx)
87990  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
87991  , p_source_33 => l_array_source_33(Idx)
87992  , p_source_34 => l_array_source_34(Idx)
87993  , p_source_34_meaning => l_array_source_34_meaning(Idx)
87994  , p_source_35 => l_array_source_35(Idx)
87995  );
87996 If(l_balance_type_code = 'A') THEN
87997   l_actual_gain_loss_ref := l_gain_or_loss_ref;
87998 END IF;
87999 
88000 --
88001 
88002 
88003 --
88004 AcctLineType_58 (
88005  p_application_id  => p_application_id
88006  ,p_event_id     => l_event_id
88007  ,p_calculate_acctd_flag => l_calculate_acctd_flag
88008  ,p_calculate_g_l_flag => l_calculate_g_l_flag
88009  ,p_actual_flag => l_actual_flag
88010  ,p_balance_type_code => l_balance_type_code
88011  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
88012  
88013  , p_source_3 => l_array_source_3(Idx)
88014  , p_source_4 => l_array_source_4(Idx)
88015  , p_source_6 => l_array_source_6(Idx)
88016  , p_source_7 => l_array_source_7(Idx)
88017  , p_source_22 => l_array_source_22(Idx)
88018  , p_source_23 => l_array_source_23(Idx)
88019  , p_source_24 => l_array_source_24(Idx)
88020  , p_source_25 => l_array_source_25(Idx)
88021  , p_source_26 => l_array_source_26(Idx)
88022  , p_source_27 => l_array_source_27(Idx)
88023  , p_source_28 => l_array_source_28(Idx)
88024  , p_source_29 => l_array_source_29(Idx)
88025  , p_source_30 => l_array_source_30(Idx)
88026  , p_source_31 => l_array_source_31(Idx)
88027  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
88028  , p_source_33 => l_array_source_33(Idx)
88029  , p_source_34 => l_array_source_34(Idx)
88030  , p_source_34_meaning => l_array_source_34_meaning(Idx)
88031  , p_source_35 => l_array_source_35(Idx)
88032  );
88033 If(l_balance_type_code = 'A') THEN
88034   l_actual_gain_loss_ref := l_gain_or_loss_ref;
88035 END IF;
88036 
88037 --
88038 
88039       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
88040       -- or secondary ledger that has different currency with primary
88041       -- or alc that is calculated by sla
88042       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
88043             (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'))
88044 
88045 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
88046 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
88047           AND (l_actual_flag = 'A')) THEN
88048         XLA_AE_LINES_PKG.CreateGainOrLossLines(
88049           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
88050          ,p_application_id   => p_application_id
88051          ,p_amb_context_code => 'DEFAULT'
88052          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
88053          ,p_event_class_code => C_EVENT_CLASS_CODE
88054          ,p_event_type_code  => C_EVENT_TYPE_CODE
88055          
88056          ,p_gain_ccid        => -1
88057          ,p_loss_ccid        => -1
88058 
88059          ,p_actual_flag      => l_actual_flag
88060          ,p_enc_flag         => null
88061          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
88062          ,p_enc_g_l_ref      => null
88063          );
88064       END IF;
88065    END IF;
88066 END IF;
88067 
88068    ELSE
88069       --
88070       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
88071       --
88072       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88073          trace
88074             (p_msg      => 'Trancaction revesal option is Y'
88075             ,p_level    => C_LEVEL_STATEMENT
88076             ,p_module   => l_log_module);
88077       END IF;
88078    END IF;
88079 
88080 END LOOP;
88081 l_result := XLA_AE_LINES_PKG.InsertLines ;
88082 end loop;
88083 close line_cur;
88084 
88085 
88086 --
88087 -- insert headers into xla_ae_headers_gt table
88088 --
88089 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
88090 
88091 -- insert into errors table here.
88092 
88093 END LOOP;
88094 
88095 --
88096 -- 4865292
88097 --
88098 -- Compare g_hdr_extract_count with event count in
88099 -- CreateHeadersAndLines.
88100 --
88101 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
88102 
88103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88104    trace (p_msg     => '# rows extracted from header extract objects '
88105                     || ' (running total): '
88106                     || g_hdr_extract_count
88107          ,p_level   => C_LEVEL_STATEMENT
88108          ,p_module  => l_log_module);
88109 END IF;
88110 
88111 CLOSE header_cur;
88112 --
88113 
88114 --
88115 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88116    trace
88117       (p_msg      => 'END of EventClass_132'
88118       ,p_level    => C_LEVEL_PROCEDURE
88122 RETURN l_result;
88119       ,p_module   => l_log_module);
88120 END IF;
88121 --
88123 EXCEPTION
88124 WHEN xla_exceptions_pkg.application_exception THEN
88125    
88126 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
88127 
88128    
88129 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
88130 
88131    RAISE;
88132 WHEN OTHERS THEN
88133    xla_exceptions_pkg.raise_message
88134       (p_location => 'XLA_00275_AAD_S_000004_PKG.EventClass_132');
88135 END EventClass_132;
88136 --
88137 
88138 --
88139 --+============================================+
88140 --|                                            |
88141 --|  PRIVATE FUNCTION                          |
88142 --|                                            |
88143 --+============================================+
88144 --
88145 FUNCTION CreateHeadersAndLines
88146        (p_application_id         IN NUMBER
88147        ,p_base_ledger_id         IN NUMBER
88148        ,p_target_ledger_id       IN NUMBER
88149        ,p_pad_start_date         IN DATE
88150        ,p_pad_end_date           IN DATE
88151        ,p_primary_ledger_id      IN NUMBER)
88152 RETURN BOOLEAN IS
88153 l_created                   BOOLEAN:=FALSE;
88154 l_event_id                  NUMBER;
88155 l_event_date                DATE;
88156 l_language                  VARCHAR2(30);
88157 l_currency_code             VARCHAR2(30);
88158 l_sla_ledger_id             NUMBER;
88159 l_log_module                VARCHAR2(240);
88160 
88161 BEGIN
88162 --
88163 IF g_log_enabled THEN
88164    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
88165 END IF;
88166 --
88167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88168    trace
88169       (p_msg      => 'BEGIN of CreateHeadersAndLines'
88170       ,p_level    => C_LEVEL_PROCEDURE
88171       ,p_module   => l_log_module);
88172 END IF;
88173 
88174 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
88175 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
88176 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
88177 
88178 --
88179 -- initialize array of lines with NULL
88180 --
88181 xla_ae_lines_pkg.SetNullLine;
88182 
88183 --
88184 -- initialize header extract count -- Bug 4865292
88185 --
88186 g_hdr_extract_count:= 0;
88187 
88188 
88189 l_created := EventClass_110(
88190    p_application_id         => p_application_id
88191  , p_base_ledger_id         => p_base_ledger_id
88192  , p_target_ledger_id       => p_target_ledger_id
88193  , p_language               => l_language
88194  , p_currency_code          => l_currency_code
88195  , p_sla_ledger_id          => l_sla_ledger_id
88196  , p_pad_start_date         => p_pad_start_date
88197  , p_pad_end_date           => p_pad_end_date
88198  , p_primary_ledger_id      => p_primary_ledger_id
88199 );
88200 
88201 
88202 
88203      IF ( g_diagnostics_mode ='Y' ) THEN
88204 
88205          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88206           trace
88207               (p_msg      => 'CALL Transaction Objects Diagnostics'
88208               ,p_level    => C_LEVEL_STATEMENT
88209               ,p_module   => l_log_module);
88210 
88211          END IF;
88212 
88213          insert_sources_110(
88214                           p_target_ledger_id => p_target_ledger_id
88215                         , p_language         => l_language
88216                         , p_sla_ledger_id    => l_sla_ledger_id
88217                         , p_pad_start_date   => p_pad_start_date
88218                         , p_pad_end_date     => p_pad_end_date
88219                           );
88220 
88221      END IF;
88222 
88223 l_created := EventClass_111(
88224    p_application_id         => p_application_id
88225  , p_base_ledger_id         => p_base_ledger_id
88226  , p_target_ledger_id       => p_target_ledger_id
88227  , p_language               => l_language
88228  , p_currency_code          => l_currency_code
88229  , p_sla_ledger_id          => l_sla_ledger_id
88230  , p_pad_start_date         => p_pad_start_date
88231  , p_pad_end_date           => p_pad_end_date
88232  , p_primary_ledger_id      => p_primary_ledger_id
88233 );
88234 
88235 
88236 
88237      IF ( g_diagnostics_mode ='Y' ) THEN
88238 
88239          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88240           trace
88241               (p_msg      => 'CALL Transaction Objects Diagnostics'
88242               ,p_level    => C_LEVEL_STATEMENT
88243               ,p_module   => l_log_module);
88244 
88245          END IF;
88246 
88247          insert_sources_111(
88248                           p_target_ledger_id => p_target_ledger_id
88249                         , p_language         => l_language
88250                         , p_sla_ledger_id    => l_sla_ledger_id
88251                         , p_pad_start_date   => p_pad_start_date
88252                         , p_pad_end_date     => p_pad_end_date
88253                           );
88254 
88255      END IF;
88256 
88257 l_created := EventClass_112(
88258    p_application_id         => p_application_id
88259  , p_base_ledger_id         => p_base_ledger_id
88260  , p_target_ledger_id       => p_target_ledger_id
88261  , p_language               => l_language
88262  , p_currency_code          => l_currency_code
88263  , p_sla_ledger_id          => l_sla_ledger_id
88264  , p_pad_start_date         => p_pad_start_date
88265  , p_pad_end_date           => p_pad_end_date
88266  , p_primary_ledger_id      => p_primary_ledger_id
88267 );
88268 
88269 
88270 
88271      IF ( g_diagnostics_mode ='Y' ) THEN
88272 
88273          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88274           trace
88278 
88275               (p_msg      => 'CALL Transaction Objects Diagnostics'
88276               ,p_level    => C_LEVEL_STATEMENT
88277               ,p_module   => l_log_module);
88279          END IF;
88280 
88281          insert_sources_112(
88282                           p_target_ledger_id => p_target_ledger_id
88283                         , p_language         => l_language
88284                         , p_sla_ledger_id    => l_sla_ledger_id
88285                         , p_pad_start_date   => p_pad_start_date
88286                         , p_pad_end_date     => p_pad_end_date
88287                           );
88288 
88289      END IF;
88290 
88291 l_created := EventClass_113(
88292    p_application_id         => p_application_id
88293  , p_base_ledger_id         => p_base_ledger_id
88294  , p_target_ledger_id       => p_target_ledger_id
88295  , p_language               => l_language
88296  , p_currency_code          => l_currency_code
88297  , p_sla_ledger_id          => l_sla_ledger_id
88298  , p_pad_start_date         => p_pad_start_date
88299  , p_pad_end_date           => p_pad_end_date
88300  , p_primary_ledger_id      => p_primary_ledger_id
88301 );
88302 
88303 
88304 
88305      IF ( g_diagnostics_mode ='Y' ) THEN
88306 
88307          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88308           trace
88309               (p_msg      => 'CALL Transaction Objects Diagnostics'
88310               ,p_level    => C_LEVEL_STATEMENT
88311               ,p_module   => l_log_module);
88312 
88313          END IF;
88314 
88315          insert_sources_113(
88316                           p_target_ledger_id => p_target_ledger_id
88317                         , p_language         => l_language
88318                         , p_sla_ledger_id    => l_sla_ledger_id
88319                         , p_pad_start_date   => p_pad_start_date
88320                         , p_pad_end_date     => p_pad_end_date
88321                           );
88322 
88323      END IF;
88324 
88325 l_created := EventClass_114(
88326    p_application_id         => p_application_id
88327  , p_base_ledger_id         => p_base_ledger_id
88328  , p_target_ledger_id       => p_target_ledger_id
88329  , p_language               => l_language
88330  , p_currency_code          => l_currency_code
88331  , p_sla_ledger_id          => l_sla_ledger_id
88332  , p_pad_start_date         => p_pad_start_date
88333  , p_pad_end_date           => p_pad_end_date
88334  , p_primary_ledger_id      => p_primary_ledger_id
88335 );
88336 
88337 
88338 
88339      IF ( g_diagnostics_mode ='Y' ) THEN
88340 
88341          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88342           trace
88343               (p_msg      => 'CALL Transaction Objects Diagnostics'
88344               ,p_level    => C_LEVEL_STATEMENT
88345               ,p_module   => l_log_module);
88346 
88347          END IF;
88348 
88349          insert_sources_114(
88350                           p_target_ledger_id => p_target_ledger_id
88351                         , p_language         => l_language
88352                         , p_sla_ledger_id    => l_sla_ledger_id
88353                         , p_pad_start_date   => p_pad_start_date
88354                         , p_pad_end_date     => p_pad_end_date
88355                           );
88356 
88357      END IF;
88358 
88359 l_created := EventClass_115(
88360    p_application_id         => p_application_id
88361  , p_base_ledger_id         => p_base_ledger_id
88362  , p_target_ledger_id       => p_target_ledger_id
88363  , p_language               => l_language
88364  , p_currency_code          => l_currency_code
88365  , p_sla_ledger_id          => l_sla_ledger_id
88366  , p_pad_start_date         => p_pad_start_date
88367  , p_pad_end_date           => p_pad_end_date
88368  , p_primary_ledger_id      => p_primary_ledger_id
88369 );
88370 
88371 
88372 
88373      IF ( g_diagnostics_mode ='Y' ) THEN
88374 
88375          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88376           trace
88377               (p_msg      => 'CALL Transaction Objects Diagnostics'
88378               ,p_level    => C_LEVEL_STATEMENT
88379               ,p_module   => l_log_module);
88380 
88381          END IF;
88382 
88383          insert_sources_115(
88384                           p_target_ledger_id => p_target_ledger_id
88385                         , p_language         => l_language
88386                         , p_sla_ledger_id    => l_sla_ledger_id
88387                         , p_pad_start_date   => p_pad_start_date
88388                         , p_pad_end_date     => p_pad_end_date
88389                           );
88390 
88391      END IF;
88392 
88393 l_created := EventClass_116(
88394    p_application_id         => p_application_id
88395  , p_base_ledger_id         => p_base_ledger_id
88396  , p_target_ledger_id       => p_target_ledger_id
88397  , p_language               => l_language
88398  , p_currency_code          => l_currency_code
88399  , p_sla_ledger_id          => l_sla_ledger_id
88400  , p_pad_start_date         => p_pad_start_date
88401  , p_pad_end_date           => p_pad_end_date
88402  , p_primary_ledger_id      => p_primary_ledger_id
88403 );
88404 
88405 
88406 
88407      IF ( g_diagnostics_mode ='Y' ) THEN
88408 
88409          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88410           trace
88411               (p_msg      => 'CALL Transaction Objects Diagnostics'
88412               ,p_level    => C_LEVEL_STATEMENT
88413               ,p_module   => l_log_module);
88414 
88415          END IF;
88416 
88417          insert_sources_116(
88418                           p_target_ledger_id => p_target_ledger_id
88419                         , p_language         => l_language
88423                           );
88420                         , p_sla_ledger_id    => l_sla_ledger_id
88421                         , p_pad_start_date   => p_pad_start_date
88422                         , p_pad_end_date     => p_pad_end_date
88424 
88425      END IF;
88426 
88427 l_created := EventClass_117(
88428    p_application_id         => p_application_id
88429  , p_base_ledger_id         => p_base_ledger_id
88430  , p_target_ledger_id       => p_target_ledger_id
88431  , p_language               => l_language
88432  , p_currency_code          => l_currency_code
88433  , p_sla_ledger_id          => l_sla_ledger_id
88434  , p_pad_start_date         => p_pad_start_date
88435  , p_pad_end_date           => p_pad_end_date
88436  , p_primary_ledger_id      => p_primary_ledger_id
88437 );
88438 
88439 
88440 
88441      IF ( g_diagnostics_mode ='Y' ) THEN
88442 
88443          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88444           trace
88445               (p_msg      => 'CALL Transaction Objects Diagnostics'
88446               ,p_level    => C_LEVEL_STATEMENT
88447               ,p_module   => l_log_module);
88448 
88449          END IF;
88450 
88451          insert_sources_117(
88452                           p_target_ledger_id => p_target_ledger_id
88453                         , p_language         => l_language
88454                         , p_sla_ledger_id    => l_sla_ledger_id
88455                         , p_pad_start_date   => p_pad_start_date
88456                         , p_pad_end_date     => p_pad_end_date
88457                           );
88458 
88459      END IF;
88460 
88461 l_created := EventClass_118(
88462    p_application_id         => p_application_id
88463  , p_base_ledger_id         => p_base_ledger_id
88464  , p_target_ledger_id       => p_target_ledger_id
88465  , p_language               => l_language
88466  , p_currency_code          => l_currency_code
88467  , p_sla_ledger_id          => l_sla_ledger_id
88468  , p_pad_start_date         => p_pad_start_date
88469  , p_pad_end_date           => p_pad_end_date
88470  , p_primary_ledger_id      => p_primary_ledger_id
88471 );
88472 
88473 
88474 
88475      IF ( g_diagnostics_mode ='Y' ) THEN
88476 
88477          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88478           trace
88479               (p_msg      => 'CALL Transaction Objects Diagnostics'
88480               ,p_level    => C_LEVEL_STATEMENT
88481               ,p_module   => l_log_module);
88482 
88483          END IF;
88484 
88485          insert_sources_118(
88486                           p_target_ledger_id => p_target_ledger_id
88487                         , p_language         => l_language
88488                         , p_sla_ledger_id    => l_sla_ledger_id
88489                         , p_pad_start_date   => p_pad_start_date
88490                         , p_pad_end_date     => p_pad_end_date
88491                           );
88492 
88493      END IF;
88494 
88495 l_created := EventClass_119(
88496    p_application_id         => p_application_id
88497  , p_base_ledger_id         => p_base_ledger_id
88498  , p_target_ledger_id       => p_target_ledger_id
88499  , p_language               => l_language
88500  , p_currency_code          => l_currency_code
88501  , p_sla_ledger_id          => l_sla_ledger_id
88502  , p_pad_start_date         => p_pad_start_date
88503  , p_pad_end_date           => p_pad_end_date
88504  , p_primary_ledger_id      => p_primary_ledger_id
88505 );
88506 
88507 
88508 
88509      IF ( g_diagnostics_mode ='Y' ) THEN
88510 
88511          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88512           trace
88513               (p_msg      => 'CALL Transaction Objects Diagnostics'
88514               ,p_level    => C_LEVEL_STATEMENT
88515               ,p_module   => l_log_module);
88516 
88517          END IF;
88518 
88519          insert_sources_119(
88520                           p_target_ledger_id => p_target_ledger_id
88521                         , p_language         => l_language
88522                         , p_sla_ledger_id    => l_sla_ledger_id
88523                         , p_pad_start_date   => p_pad_start_date
88524                         , p_pad_end_date     => p_pad_end_date
88525                           );
88526 
88527      END IF;
88528 
88529 l_created := EventClass_120(
88530    p_application_id         => p_application_id
88531  , p_base_ledger_id         => p_base_ledger_id
88532  , p_target_ledger_id       => p_target_ledger_id
88533  , p_language               => l_language
88534  , p_currency_code          => l_currency_code
88535  , p_sla_ledger_id          => l_sla_ledger_id
88536  , p_pad_start_date         => p_pad_start_date
88537  , p_pad_end_date           => p_pad_end_date
88538  , p_primary_ledger_id      => p_primary_ledger_id
88539 );
88540 
88541 
88542 
88543      IF ( g_diagnostics_mode ='Y' ) THEN
88544 
88545          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88546           trace
88547               (p_msg      => 'CALL Transaction Objects Diagnostics'
88548               ,p_level    => C_LEVEL_STATEMENT
88549               ,p_module   => l_log_module);
88550 
88551          END IF;
88552 
88553          insert_sources_120(
88554                           p_target_ledger_id => p_target_ledger_id
88555                         , p_language         => l_language
88556                         , p_sla_ledger_id    => l_sla_ledger_id
88557                         , p_pad_start_date   => p_pad_start_date
88558                         , p_pad_end_date     => p_pad_end_date
88559                           );
88560 
88561      END IF;
88562 
88563 l_created := EventClass_121(
88564    p_application_id         => p_application_id
88565  , p_base_ledger_id         => p_base_ledger_id
88569  , p_sla_ledger_id          => l_sla_ledger_id
88566  , p_target_ledger_id       => p_target_ledger_id
88567  , p_language               => l_language
88568  , p_currency_code          => l_currency_code
88570  , p_pad_start_date         => p_pad_start_date
88571  , p_pad_end_date           => p_pad_end_date
88572  , p_primary_ledger_id      => p_primary_ledger_id
88573 );
88574 
88575 
88576 
88577      IF ( g_diagnostics_mode ='Y' ) THEN
88578 
88579          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88580           trace
88581               (p_msg      => 'CALL Transaction Objects Diagnostics'
88582               ,p_level    => C_LEVEL_STATEMENT
88583               ,p_module   => l_log_module);
88584 
88585          END IF;
88586 
88587          insert_sources_121(
88588                           p_target_ledger_id => p_target_ledger_id
88589                         , p_language         => l_language
88590                         , p_sla_ledger_id    => l_sla_ledger_id
88591                         , p_pad_start_date   => p_pad_start_date
88592                         , p_pad_end_date     => p_pad_end_date
88593                           );
88594 
88595      END IF;
88596 
88597 l_created := EventClass_122(
88598    p_application_id         => p_application_id
88599  , p_base_ledger_id         => p_base_ledger_id
88600  , p_target_ledger_id       => p_target_ledger_id
88601  , p_language               => l_language
88602  , p_currency_code          => l_currency_code
88603  , p_sla_ledger_id          => l_sla_ledger_id
88604  , p_pad_start_date         => p_pad_start_date
88605  , p_pad_end_date           => p_pad_end_date
88606  , p_primary_ledger_id      => p_primary_ledger_id
88607 );
88608 
88609 
88610 
88611      IF ( g_diagnostics_mode ='Y' ) THEN
88612 
88613          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88614           trace
88615               (p_msg      => 'CALL Transaction Objects Diagnostics'
88616               ,p_level    => C_LEVEL_STATEMENT
88617               ,p_module   => l_log_module);
88618 
88619          END IF;
88620 
88621          insert_sources_122(
88622                           p_target_ledger_id => p_target_ledger_id
88623                         , p_language         => l_language
88624                         , p_sla_ledger_id    => l_sla_ledger_id
88625                         , p_pad_start_date   => p_pad_start_date
88626                         , p_pad_end_date     => p_pad_end_date
88627                           );
88628 
88629      END IF;
88630 
88631 l_created := EventClass_123(
88632    p_application_id         => p_application_id
88633  , p_base_ledger_id         => p_base_ledger_id
88634  , p_target_ledger_id       => p_target_ledger_id
88635  , p_language               => l_language
88636  , p_currency_code          => l_currency_code
88637  , p_sla_ledger_id          => l_sla_ledger_id
88638  , p_pad_start_date         => p_pad_start_date
88639  , p_pad_end_date           => p_pad_end_date
88640  , p_primary_ledger_id      => p_primary_ledger_id
88641 );
88642 
88643 
88644 
88645      IF ( g_diagnostics_mode ='Y' ) THEN
88646 
88647          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88648           trace
88649               (p_msg      => 'CALL Transaction Objects Diagnostics'
88650               ,p_level    => C_LEVEL_STATEMENT
88651               ,p_module   => l_log_module);
88652 
88653          END IF;
88654 
88655          insert_sources_123(
88656                           p_target_ledger_id => p_target_ledger_id
88657                         , p_language         => l_language
88658                         , p_sla_ledger_id    => l_sla_ledger_id
88659                         , p_pad_start_date   => p_pad_start_date
88660                         , p_pad_end_date     => p_pad_end_date
88661                           );
88662 
88663      END IF;
88664 
88665 l_created := EventClass_124(
88666    p_application_id         => p_application_id
88667  , p_base_ledger_id         => p_base_ledger_id
88668  , p_target_ledger_id       => p_target_ledger_id
88669  , p_language               => l_language
88670  , p_currency_code          => l_currency_code
88671  , p_sla_ledger_id          => l_sla_ledger_id
88672  , p_pad_start_date         => p_pad_start_date
88673  , p_pad_end_date           => p_pad_end_date
88674  , p_primary_ledger_id      => p_primary_ledger_id
88675 );
88676 
88677 
88678 
88679      IF ( g_diagnostics_mode ='Y' ) THEN
88680 
88681          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88682           trace
88683               (p_msg      => 'CALL Transaction Objects Diagnostics'
88684               ,p_level    => C_LEVEL_STATEMENT
88685               ,p_module   => l_log_module);
88686 
88687          END IF;
88688 
88689          insert_sources_124(
88690                           p_target_ledger_id => p_target_ledger_id
88691                         , p_language         => l_language
88692                         , p_sla_ledger_id    => l_sla_ledger_id
88693                         , p_pad_start_date   => p_pad_start_date
88694                         , p_pad_end_date     => p_pad_end_date
88695                           );
88696 
88697      END IF;
88698 
88699 l_created := EventClass_125(
88700    p_application_id         => p_application_id
88701  , p_base_ledger_id         => p_base_ledger_id
88702  , p_target_ledger_id       => p_target_ledger_id
88703  , p_language               => l_language
88704  , p_currency_code          => l_currency_code
88705  , p_sla_ledger_id          => l_sla_ledger_id
88706  , p_pad_start_date         => p_pad_start_date
88707  , p_pad_end_date           => p_pad_end_date
88708  , p_primary_ledger_id      => p_primary_ledger_id
88709 );
88710 
88711 
88712 
88716           trace
88713      IF ( g_diagnostics_mode ='Y' ) THEN
88714 
88715          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88717               (p_msg      => 'CALL Transaction Objects Diagnostics'
88718               ,p_level    => C_LEVEL_STATEMENT
88719               ,p_module   => l_log_module);
88720 
88721          END IF;
88722 
88723          insert_sources_125(
88724                           p_target_ledger_id => p_target_ledger_id
88725                         , p_language         => l_language
88726                         , p_sla_ledger_id    => l_sla_ledger_id
88727                         , p_pad_start_date   => p_pad_start_date
88728                         , p_pad_end_date     => p_pad_end_date
88729                           );
88730 
88731      END IF;
88732 
88733 l_created := EventClass_126(
88734    p_application_id         => p_application_id
88735  , p_base_ledger_id         => p_base_ledger_id
88736  , p_target_ledger_id       => p_target_ledger_id
88737  , p_language               => l_language
88738  , p_currency_code          => l_currency_code
88739  , p_sla_ledger_id          => l_sla_ledger_id
88740  , p_pad_start_date         => p_pad_start_date
88741  , p_pad_end_date           => p_pad_end_date
88742  , p_primary_ledger_id      => p_primary_ledger_id
88743 );
88744 
88745 
88746 
88747      IF ( g_diagnostics_mode ='Y' ) THEN
88748 
88749          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88750           trace
88751               (p_msg      => 'CALL Transaction Objects Diagnostics'
88752               ,p_level    => C_LEVEL_STATEMENT
88753               ,p_module   => l_log_module);
88754 
88755          END IF;
88756 
88757          insert_sources_126(
88758                           p_target_ledger_id => p_target_ledger_id
88759                         , p_language         => l_language
88760                         , p_sla_ledger_id    => l_sla_ledger_id
88761                         , p_pad_start_date   => p_pad_start_date
88762                         , p_pad_end_date     => p_pad_end_date
88763                           );
88764 
88765      END IF;
88766 
88767 l_created := EventClass_127(
88768    p_application_id         => p_application_id
88769  , p_base_ledger_id         => p_base_ledger_id
88770  , p_target_ledger_id       => p_target_ledger_id
88771  , p_language               => l_language
88772  , p_currency_code          => l_currency_code
88773  , p_sla_ledger_id          => l_sla_ledger_id
88774  , p_pad_start_date         => p_pad_start_date
88775  , p_pad_end_date           => p_pad_end_date
88776  , p_primary_ledger_id      => p_primary_ledger_id
88777 );
88778 
88779 
88780 
88781      IF ( g_diagnostics_mode ='Y' ) THEN
88782 
88783          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88784           trace
88785               (p_msg      => 'CALL Transaction Objects Diagnostics'
88786               ,p_level    => C_LEVEL_STATEMENT
88787               ,p_module   => l_log_module);
88788 
88789          END IF;
88790 
88791          insert_sources_127(
88792                           p_target_ledger_id => p_target_ledger_id
88793                         , p_language         => l_language
88794                         , p_sla_ledger_id    => l_sla_ledger_id
88795                         , p_pad_start_date   => p_pad_start_date
88796                         , p_pad_end_date     => p_pad_end_date
88797                           );
88798 
88799      END IF;
88800 
88801 l_created := EventClass_128(
88802    p_application_id         => p_application_id
88803  , p_base_ledger_id         => p_base_ledger_id
88804  , p_target_ledger_id       => p_target_ledger_id
88805  , p_language               => l_language
88806  , p_currency_code          => l_currency_code
88807  , p_sla_ledger_id          => l_sla_ledger_id
88808  , p_pad_start_date         => p_pad_start_date
88809  , p_pad_end_date           => p_pad_end_date
88810  , p_primary_ledger_id      => p_primary_ledger_id
88811 );
88812 
88813 
88814 
88815      IF ( g_diagnostics_mode ='Y' ) THEN
88816 
88817          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88818           trace
88819               (p_msg      => 'CALL Transaction Objects Diagnostics'
88820               ,p_level    => C_LEVEL_STATEMENT
88821               ,p_module   => l_log_module);
88822 
88823          END IF;
88824 
88825          insert_sources_128(
88826                           p_target_ledger_id => p_target_ledger_id
88827                         , p_language         => l_language
88828                         , p_sla_ledger_id    => l_sla_ledger_id
88829                         , p_pad_start_date   => p_pad_start_date
88830                         , p_pad_end_date     => p_pad_end_date
88831                           );
88832 
88833      END IF;
88834 
88835 l_created := EventClass_129(
88836    p_application_id         => p_application_id
88837  , p_base_ledger_id         => p_base_ledger_id
88838  , p_target_ledger_id       => p_target_ledger_id
88839  , p_language               => l_language
88840  , p_currency_code          => l_currency_code
88841  , p_sla_ledger_id          => l_sla_ledger_id
88842  , p_pad_start_date         => p_pad_start_date
88843  , p_pad_end_date           => p_pad_end_date
88844  , p_primary_ledger_id      => p_primary_ledger_id
88845 );
88846 
88847 
88848 
88849      IF ( g_diagnostics_mode ='Y' ) THEN
88850 
88851          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88852           trace
88853               (p_msg      => 'CALL Transaction Objects Diagnostics'
88854               ,p_level    => C_LEVEL_STATEMENT
88855               ,p_module   => l_log_module);
88856 
88857          END IF;
88858 
88859          insert_sources_129(
88863                         , p_pad_start_date   => p_pad_start_date
88860                           p_target_ledger_id => p_target_ledger_id
88861                         , p_language         => l_language
88862                         , p_sla_ledger_id    => l_sla_ledger_id
88864                         , p_pad_end_date     => p_pad_end_date
88865                           );
88866 
88867      END IF;
88868 
88869 l_created := EventClass_130(
88870    p_application_id         => p_application_id
88871  , p_base_ledger_id         => p_base_ledger_id
88872  , p_target_ledger_id       => p_target_ledger_id
88873  , p_language               => l_language
88874  , p_currency_code          => l_currency_code
88875  , p_sla_ledger_id          => l_sla_ledger_id
88876  , p_pad_start_date         => p_pad_start_date
88877  , p_pad_end_date           => p_pad_end_date
88878  , p_primary_ledger_id      => p_primary_ledger_id
88879 );
88880 
88881 
88882 
88883      IF ( g_diagnostics_mode ='Y' ) THEN
88884 
88885          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88886           trace
88887               (p_msg      => 'CALL Transaction Objects Diagnostics'
88888               ,p_level    => C_LEVEL_STATEMENT
88889               ,p_module   => l_log_module);
88890 
88891          END IF;
88892 
88893          insert_sources_130(
88894                           p_target_ledger_id => p_target_ledger_id
88895                         , p_language         => l_language
88896                         , p_sla_ledger_id    => l_sla_ledger_id
88897                         , p_pad_start_date   => p_pad_start_date
88898                         , p_pad_end_date     => p_pad_end_date
88899                           );
88900 
88901      END IF;
88902 
88903 l_created := EventClass_131(
88904    p_application_id         => p_application_id
88905  , p_base_ledger_id         => p_base_ledger_id
88906  , p_target_ledger_id       => p_target_ledger_id
88907  , p_language               => l_language
88908  , p_currency_code          => l_currency_code
88909  , p_sla_ledger_id          => l_sla_ledger_id
88910  , p_pad_start_date         => p_pad_start_date
88911  , p_pad_end_date           => p_pad_end_date
88912  , p_primary_ledger_id      => p_primary_ledger_id
88913 );
88914 
88915 
88916 
88917      IF ( g_diagnostics_mode ='Y' ) THEN
88918 
88919          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88920           trace
88921               (p_msg      => 'CALL Transaction Objects Diagnostics'
88922               ,p_level    => C_LEVEL_STATEMENT
88923               ,p_module   => l_log_module);
88924 
88925          END IF;
88926 
88927          insert_sources_131(
88928                           p_target_ledger_id => p_target_ledger_id
88929                         , p_language         => l_language
88930                         , p_sla_ledger_id    => l_sla_ledger_id
88931                         , p_pad_start_date   => p_pad_start_date
88932                         , p_pad_end_date     => p_pad_end_date
88933                           );
88934 
88935      END IF;
88936 
88937 l_created := EventClass_132(
88938    p_application_id         => p_application_id
88939  , p_base_ledger_id         => p_base_ledger_id
88940  , p_target_ledger_id       => p_target_ledger_id
88941  , p_language               => l_language
88942  , p_currency_code          => l_currency_code
88943  , p_sla_ledger_id          => l_sla_ledger_id
88944  , p_pad_start_date         => p_pad_start_date
88945  , p_pad_end_date           => p_pad_end_date
88946  , p_primary_ledger_id      => p_primary_ledger_id
88947 );
88948 
88949 
88950 
88951      IF ( g_diagnostics_mode ='Y' ) THEN
88952 
88953          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88954           trace
88955               (p_msg      => 'CALL Transaction Objects Diagnostics'
88956               ,p_level    => C_LEVEL_STATEMENT
88957               ,p_module   => l_log_module);
88958 
88959          END IF;
88960 
88961          insert_sources_132(
88962                           p_target_ledger_id => p_target_ledger_id
88963                         , p_language         => l_language
88964                         , p_sla_ledger_id    => l_sla_ledger_id
88965                         , p_pad_start_date   => p_pad_start_date
88966                         , p_pad_end_date     => p_pad_end_date
88967                           );
88968 
88969      END IF;
88970 
88971 
88972  --
88973  -- Bug 4865292
88974  -- When the number of events and that of header extract do not match,
88975  -- set the no header extract flag to indicate there are some issues
88976  -- in header extract.
88977  --
88978  -- Event count context is set in xla_accounting_pkg.unit_processor.
88979  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
88980  -- to report it as a general error.
88981  --
88982  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
88983  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
88984 
88985      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88986         trace
88987           (p_msg      => '# of extracted headers and events does not match'
88988           ,p_level    => C_LEVEL_STATEMENT
88989           ,p_module   => l_log_module);
88990 
88991         trace
88992           (p_msg      => '# of extracted headers: '
88993                          ||g_hdr_extract_count
88994           ,p_level    => C_LEVEL_STATEMENT
88995           ,p_module   => l_log_module);
88996 
88997         trace
88998           (p_msg      => '# of events in xla_events_gt: '
88999                          ||xla_context_pkg.get_event_count_context
89000           ,p_level    => C_LEVEL_STATEMENT
89001           ,p_module   => l_log_module);
89002 
89003         trace
89007           ,p_module   => l_log_module);
89004           (p_msg      => 'Event No Header Extract Context: '
89005                          ||xla_context_pkg.get_event_nohdr_context
89006           ,p_level    => C_LEVEL_STATEMENT
89008 
89009      END IF;
89010 
89011 
89012      xla_context_pkg.set_event_nohdr_context
89013        (p_nohdr_extract_flag => 'Y'
89014        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
89015 
89016      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89017         trace
89018           (p_msg      => 'No Header Extract Flag is set to Y'
89019           ,p_level    => C_LEVEL_STATEMENT
89020           ,p_module   => l_log_module);
89021      END IF;
89022 
89023  END IF;
89024 
89025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89026    trace
89027       (p_msg      => 'END of CreateHeadersAndLines'
89028       ,p_level    => C_LEVEL_PROCEDURE
89029       ,p_module   => l_log_module);
89030 END IF;
89031 
89032 RETURN l_created;
89033 EXCEPTION
89034 WHEN xla_exceptions_pkg.application_exception THEN
89035    RAISE;
89036 WHEN OTHERS THEN
89037    xla_exceptions_pkg.raise_message
89038       (p_location => 'XLA_00275_AAD_S_000004_PKG.CreateHeadersAndLines');
89039 END CreateHeadersAndLines;
89040 --
89041 --
89042 
89043 --
89044 --+============================================+
89045 --|                                            |
89046 --|  PUBLIC FUNCTION                           |
89047 --|                                            |
89048 --+============================================+
89049 --
89050 FUNCTION CreateJournalEntries
89051        (p_application_id         IN NUMBER
89052        ,p_base_ledger_id         IN NUMBER
89053        ,p_pad_start_date         IN DATE
89054        ,p_pad_end_date           IN DATE
89055        ,p_primary_ledger_id      IN NUMBER)
89056 RETURN NUMBER IS
89057 l_log_module                   VARCHAR2(240);
89058 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
89059 l_temp_result                  BOOLEAN;
89060 l_result                       NUMBER;
89061 BEGIN
89062 --
89063 IF g_log_enabled THEN
89064    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
89065 END IF;
89066 --
89067 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89068    trace
89069       (p_msg      => 'BEGIN of CreateJournalEntries'||
89070                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
89071       ,p_level    => C_LEVEL_PROCEDURE
89072       ,p_module   => l_log_module);
89073 
89074 END IF;
89075 
89076 --
89077 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
89078 
89079 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89080    trace
89081       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
89082       ,p_level    => C_LEVEL_STATEMENT
89083       ,p_module   => l_log_module);
89084 END IF;
89085 --
89086 xla_ae_journal_entry_pkg.SetProductAcctDefinition
89087    (p_product_rule_code      => 'PA_STANDARD_ACCOUNTING'
89088    ,p_product_rule_type_code => 'S'
89089    ,p_product_rule_version   => ''
89090    ,p_product_rule_name      => 'Projects Standard Accounting'
89091    ,p_amb_context_code       => 'DEFAULT'
89092    );
89093 
89094 l_array_ledgers :=
89095    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
89096       (p_base_ledger_id  => p_base_ledger_id);
89097 
89098 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
89099    l_temp_result :=
89100       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
89101          (p_application_id           => p_application_id
89102          ,p_base_ledger_id           => p_base_ledger_id
89103          ,p_target_ledger_id         => l_array_ledgers(Idx)
89104          ,p_primary_ledger_id        => p_primary_ledger_id
89105          ,p_pad_start_date           => p_pad_start_date
89106          ,p_pad_end_date             => p_pad_end_date);
89107 
89108    l_temp_result :=
89109       l_temp_result AND
89110       CreateHeadersAndLines
89111          (p_application_id             => p_application_id
89112          ,p_base_ledger_id             => p_base_ledger_id
89113          ,p_target_ledger_id           => l_array_ledgers(Idx)
89114          ,p_pad_start_date             => p_pad_start_date
89115          ,p_pad_end_date               => p_pad_end_date
89116          ,p_primary_ledger_id          => p_primary_ledger_id
89117          );
89118 END LOOP;
89119 
89120 
89121 IF (g_diagnostics_mode = 'Y' AND
89122     C_LEVEL_UNEXPECTED >= g_log_level AND
89123     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
89124 
89125    xla_accounting_dump_pkg.acctg_event_extract_log(
89126     p_application_id  => p_application_id
89127     ,p_request_id     => xla_environment_pkg.g_Req_Id
89128    );
89129 
89130 END IF;
89131 
89132 CASE l_temp_result
89133   WHEN TRUE THEN l_result := 0;
89134   ELSE l_result := 2;
89135 END CASE;
89136 
89137 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89138    trace
89139       (p_msg      => 'return value. = '||TO_CHAR(l_result)
89140       ,p_level    => C_LEVEL_PROCEDURE
89141       ,p_module   => l_log_module);
89142    trace
89143       (p_msg      => 'END of CreateJournalEntries '
89144       ,p_level    => C_LEVEL_PROCEDURE
89145       ,p_module   => l_log_module);
89146 END IF;
89147 
89148 RETURN l_result;
89149 EXCEPTION
89150 WHEN xla_exceptions_pkg.application_exception THEN
89151    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89152    trace
89153       (p_msg      => 'ERROR. = '||sqlerrm
89154       ,p_level    => C_LEVEL_PROCEDURE
89155       ,p_module   => l_log_module);
89156    END IF;
89157    RAISE;
89158 WHEN OTHERS THEN
89159    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89160    trace
89164    END IF;
89161       (p_msg      => 'ERROR. = '||sqlerrm
89162       ,p_level    => C_LEVEL_PROCEDURE
89163       ,p_module   => l_log_module);
89165    xla_exceptions_pkg.raise_message
89166       (p_location => 'XLA_00275_AAD_S_000004_PKG.CreateJournalEntries');
89167 END CreateJournalEntries;
89168 --
89169 --=============================================================================
89170 --
89171 --
89172 --
89173 --
89174 --
89175 --
89176 --
89177 --
89178 --
89179 --
89180 --
89181 --
89182 --
89183 --
89184 --
89185 --
89186 --
89187 --
89188 --
89189 --
89190 --
89191 --
89192 --=============================================================================
89193 --=============================================================================
89194 --          *********** Initialization routine **********
89195 --=============================================================================
89196 
89197 BEGIN
89198    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
89199    g_log_enabled    := fnd_log.test
89200                           (log_level  => g_log_level
89201                           ,module     => C_DEFAULT_MODULE);
89202 
89203    IF NOT g_log_enabled  THEN
89204       g_log_level := C_LEVEL_LOG_DISABLED;
89205    END IF;
89206 --
89207 END XLA_00275_AAD_S_000004_PKG;
89208 --